Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18362)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18363)
@@ -724,14 +724,25 @@
 }
 /*}}}*/
-void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,int input_enum){/*{{{*/
-
-	Input* input = GetInput(input_enum);
-	if(!input){
-		_error_("Input "<<EnumToStringx(input_enum)<<" not found");
-	}
-
+void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug){/*{{{*/
+
+
+	/*Get number of nodes for this element*/
 	int numnodes = this->GetNumberOfNodes();
-	IssmDouble input_min = input->Min();
-	IssmDouble input_max = input->Max();
+
+	/*Some checks to avoid segmentation faults*/
+	_assert_(ug);
+	_assert_(numnodes>0);
+	_assert_(nodes);
+
+	/*Get element minimum/maximum*/
+	IssmDouble input_min = ug[nodes[0]->GetDof(0,GsetEnum)];
+	IssmDouble input_max = input_min;
+	for(int i=1;i<numnodes;i++){
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] < input_min) input_min = ug[nodes[i]->GetDof(0,GsetEnum)];
+		if(ug[nodes[i]->GetDof(0,GsetEnum)] > input_max) input_max = ug[nodes[i]->GetDof(0,GsetEnum)];
+	}
+
+
+	/*Second loop to reassign min and max with local extrema*/
 	for(int i=0;i<numnodes;i++){
 		if(min[nodes[i]->GetDof(0,GsetEnum)]>input_min) min[nodes[i]->GetDof(0,GsetEnum)] = input_min;
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 18362)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 18363)
@@ -85,5 +85,5 @@
 		void       GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
 		void       GetInputListOnVertices(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue);
-		void       GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,int input_enum);
+		void       GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug);
 		void       GetInputValue(bool* pvalue,int enum_type);
 		void       GetInputValue(int* pvalue,int enum_type);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 18362)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 18363)
@@ -1125,5 +1125,5 @@
 
 }/*}}}*/
-void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,int input_enum){/*{{{*/
+void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug){/*{{{*/
 
 	/*Get vector sizes for current configuration*/
@@ -1144,5 +1144,5 @@
 	for(int i=0;i<this->elements->Size();i++){
 		Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
-		element->GetInputLocalMinMaxOnNodes(uLmin_local,uLmax_local,input_enum);
+		element->GetInputLocalMinMaxOnNodes(uLmin_local,uLmax_local,ug);
 	}
 
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 18362)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 18363)
@@ -61,5 +61,5 @@
 
 		/*Modules*/ 
-		void GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,int input_enum);
+		void GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug);
 		void MassFluxx(IssmDouble* presponse);
 		void MaxAbsVxx(IssmDouble* presponse);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 18362)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 18363)
@@ -390,7 +390,4 @@
 	VecToMPISerial(&ml_serial  ,Ml_petsc,IssmComm::GetComm());
 
-	/*Push uL to elements*/
-	InputUpdateFromSolutionx(femmodel,u_serial);
-
 	/*Anti diffusive fluxes*/
 	Vec         Fbar            = NULL;
@@ -399,5 +396,5 @@
 	IssmDouble *ulmin           = NULL;
 	IssmDouble *ulmax           = NULL;
-	femmodel->GetInputLocalMinMaxOnNodesx(&ulmin,&ulmax,ThicknessEnum);
+	femmodel->GetInputLocalMinMaxOnNodesx(&ulmin,&ulmax,u_serial);
 	CreateRis(&Ri_plus_serial,&Ri_minus_serial,Mc_petsc,D_petsc,ml_serial,u,u_serial,udot_serial,ulmin,ulmax,deltat);
 	CreateFbar(&Fbar,Ri_plus_serial,Ri_minus_serial,Mc_petsc,D_petsc,udot_serial,u_serial,u);
