Index: /issm/trunk/src/c/objects/Inputs/BoolInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/BoolInput.h	(revision 5513)
@@ -60,4 +60,5 @@
 		void SquareMin(double* psquaremin, bool process_units,Parameters* parameters);
 		void ConstrainMin(double minimum){ISSMERROR("not implemented yet");};
+		double InfinityNorm(void){ISSMERROR("InfinityNorm not implemented for booleans");};
 		void Scale(double scale_factor);
 		void AXPY(Input* xinput,double scalar);
Index: /issm/trunk/src/c/objects/Inputs/DoubleInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/DoubleInput.h	(revision 5513)
@@ -62,4 +62,5 @@
 		void AXPY(Input* xinput,double scalar);
 		void Constrain(double cm_min, double cm_max);
+		double InfinityNorm(void){ISSMERROR("not implemented yet");};
 		void Extrude(void){ISSMERROR("not supported yet");};
 		void VerticallyIntegrate(Input* thickness_input);
Index: /issm/trunk/src/c/objects/Inputs/Input.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/Input.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/Input.h	(revision 5513)
@@ -36,10 +36,8 @@
 		virtual void GetVyStrainRate3dPattyn(double* epsilonvy,double* xyz_list, double* gauss)=0;
 		virtual void ChangeEnum(int newenumtype)=0;
-		
-		virtual Input* SpawnTriaInput(int* indices)=0;
-		virtual Input* PointwiseDivide(Input* inputB)=0;
-		virtual ElementResult* SpawnResult(int step, double time)=0;
+
 		virtual void SquareMin(double* psquaremin, bool process_units,Parameters* parameters)=0;
 		virtual void ConstrainMin(double minimum)=0;
+		virtual double InfinityNorm(void)=0;
 		virtual void Scale(double scale_factor)=0;
 		virtual void AXPY(Input* xinput,double scalar)=0;
@@ -49,4 +47,9 @@
 		virtual void GetVectorFromInputs(Vec vector,int* doflist)=0;
 		virtual void GetValuesPtr(double** pvalues,int* pnum_values)=0;
+		
+		virtual Input* SpawnTriaInput(int* indices)=0;
+		virtual Input* PointwiseDivide(Input* inputB)=0;
+		virtual ElementResult* SpawnResult(int step, double time)=0;
+
 		/*}}}*/
 
Index: /issm/trunk/src/c/objects/Inputs/IntInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/IntInput.h	(revision 5513)
@@ -63,4 +63,5 @@
 		void AXPY(Input* xinput,double scalar);
 		void Constrain(double cm_min, double cm_max);
+		double InfinityNorm(void){ISSMERROR("InfinityNorm not implemented for integers");};
 		void Extrude(void){ISSMERROR("not supported yet");};
 		void VerticallyIntegrate(Input* thickness_input){ISSMERROR("not supported yet");};
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.cpp	(revision 5513)
@@ -438,4 +438,15 @@
 }
 /*}}}*/
+/*FUNCTION PentaVertexInput::InfinityNorm{{{1*/
+double PentaVertexInput::InfinityNorm(void){
+
+	/*Output*/
+	const int numgrids=6;
+	double norm=0;
+
+	for(int i=0;i<numgrids;i++) if(fabs(values[i])>norm) norm=fabs(values[i]);
+	return norm;
+}
+/*}}}*/
 /*FUNCTION PentaVertexInput::Scale{{{1*/
 void PentaVertexInput::Scale(double scale_factor){
Index: /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/PentaVertexInput.h	(revision 5513)
@@ -64,4 +64,5 @@
 		void AXPY(Input* xinput,double scalar);
 		void Constrain(double cm_min, double cm_max);
+		double InfinityNorm(void);
 		void Extrude(void);
 		void VerticallyIntegrate(Input* thickness_input);
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.cpp	(revision 5513)
@@ -290,4 +290,15 @@
 }
 /*}}}*/
+/*FUNCTION TriaVertexInput::InfinityNorm{{{1*/
+double TriaVertexInput::InfinityNorm(void){
+
+	/*Output*/
+	double norm=0;
+	const int numgrids=3;
+
+	for(int i=0;i<numgrids;i++) if(fabs(values[i])>norm) norm=fabs(values[i]);
+	return norm;
+}
+/*}}}*/
 /*FUNCTION TriaVertexInput::Scale{{{1*/
 void TriaVertexInput::Scale(double scale_factor){
Index: /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h
===================================================================
--- /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 5512)
+++ /issm/trunk/src/c/objects/Inputs/TriaVertexInput.h	(revision 5513)
@@ -64,4 +64,5 @@
 		void AXPY(Input* xinput,double scalar);
 		void Constrain(double cm_min, double cm_max);
+		double InfinityNorm(void);
 		void Extrude(void){ISSMERROR("not supported yet");};
 		void VerticallyIntegrate(Input* thickness_input){ISSMERROR("not supported yet");};
