Index: ../trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp
===================================================================
--- ../trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 18362)
+++ ../trunk-jpl/src/c/solutionsequences/solutionsequence_fct.cpp	(revision 18363)
@@ -389,16 +389,13 @@
 	VecToMPISerial(&u_serial   ,u       ,IssmComm::GetComm());
 	VecToMPISerial(&ml_serial  ,Ml_petsc,IssmComm::GetComm());
 
-	/*Push uL to elements*/
-	InputUpdateFromSolutionx(femmodel,u_serial);
-
 	/*Anti diffusive fluxes*/
 	Vec         Fbar            = NULL;
 	IssmDouble *Ri_minus_serial = NULL;
 	IssmDouble *Ri_plus_serial  = NULL;
 	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);
 	xDelete<IssmDouble>(Ri_plus_serial);
Index: ../trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 18362)
+++ ../trunk-jpl/src/c/classes/FemModel.cpp	(revision 18363)
@@ -1124,7 +1124,7 @@
 	*pdiv=total_divergence;
 
 }/*}}}*/
-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*/
 	int configuration_type;
@@ -1143,7 +1143,7 @@
 
 	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);
 	}
 
 	/*Synchronize all CPUs*/
Index: ../trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- ../trunk-jpl/src/c/classes/Elements/Element.h	(revision 18362)
+++ ../trunk-jpl/src/c/classes/Elements/Element.h	(revision 18363)
@@ -84,7 +84,7 @@
 		void       GetInputListOnNodesVelocity(IssmDouble* pvalue,int enumtype);
 		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);
 		void       GetInputValue(IssmDouble* pvalue,int enum_type);
Index: ../trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18362)
+++ ../trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 18363)
@@ -723,16 +723,27 @@
 	delete gauss;
 }
 /*}}}*/
-void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,int input_enum){/*{{{*/
+void       Element::GetInputLocalMinMaxOnNodes(IssmDouble* min,IssmDouble* max,IssmDouble* ug){/*{{{*/
 
-	Input* input = GetInput(input_enum);
-	if(!input){
-		_error_("Input "<<EnumToStringx(input_enum)<<" not found");
+
+	/*Get number of nodes for this element*/
+	int numnodes = this->GetNumberOfNodes();
+
+	/*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)];
 	}
 
-	int numnodes = this->GetNumberOfNodes();
-	IssmDouble input_min = input->Min();
-	IssmDouble input_max = input->Max();
+
+	/*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;
 		if(max[nodes[i]->GetDof(0,GsetEnum)]<input_max) max[nodes[i]->GetDof(0,GsetEnum)] = input_max;
Index: ../trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- ../trunk-jpl/src/c/classes/FemModel.h	(revision 18362)
+++ ../trunk-jpl/src/c/classes/FemModel.h	(revision 18363)
@@ -60,7 +60,7 @@
 		void SetCurrentConfiguration(int configuration_type,int analysis_type);
 
 		/*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);
 		void MaxAbsVyx(IssmDouble* presponse);
