Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16186)
@@ -66,5 +66,4 @@
 		virtual void   InputToResult(int enum_type,int step,IssmDouble time)=0;
 		virtual void   InputDuplicate(int original_enum,int new_enum)=0;
-		virtual void   InputCreate(IssmDouble scalar,int name,int code)=0;
 		virtual void   InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code)=0;
 		virtual void   RequestedOutput(int output_enum,int step,IssmDouble time)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16186)
@@ -1859,23 +1859,4 @@
 	/*ArtificialNoise: */
 	input->ArtificialNoise(min,max);
-}
-/*}}}*/
-/*FUNCTION Penta::InputCreate(IssmDouble scalar,int enum,int code);{{{*/
-void Penta::InputCreate(IssmDouble scalar,int name,int code){
-
-	/*Check that name is an element input*/
-	if (!IsInput(name)) return;
-
-	if ((code==5) || (code==1)){ //boolean
-		this->inputs->AddInput(new BoolInput(name,reCast<bool,IssmDouble>(scalar)));
-	}
-	else if ((code==6) || (code==2)){ //integer
-		this->inputs->AddInput(new IntInput(name,reCast<int,IssmDouble>(scalar)));
-	}
-	else if ((code==7) || (code==3)){ //IssmDouble
-		this->inputs->AddInput(new DoubleInput(name,scalar));
-	}
-	else _error_("could not recognize nature of vector from code " << code);
-
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16186)
@@ -94,5 +94,4 @@
 		int    Sid();
 		void   InputArtificialNoise(int enum_type,IssmDouble min, IssmDouble max);
-		void   InputCreate(IssmDouble scalar,int name,int code);
 		void   InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
 		void   InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16186)
@@ -1466,6 +1466,7 @@
 /*FUNCTION Tria::InputUpdateFromConstant(int value, int name);{{{*/
 void  Tria::InputUpdateFromConstant(int constant, int name){
+
 	/*Check that name is an element input*/
-	if (!IsInput(name)) return;
+	if(!IsInput(name)) return;
 
 	/*update input*/
@@ -1475,6 +1476,7 @@
 /*FUNCTION Tria::InputUpdateFromConstant(IssmDouble value, int name);{{{*/
 void  Tria::InputUpdateFromConstant(IssmDouble constant, int name){
+
 	/*Check that name is an element input*/
-	if (!IsInput(name)) return;
+	if(!IsInput(name)) return;
 
 	/*update input*/
@@ -1484,6 +1486,7 @@
 /*FUNCTION Tria::InputUpdateFromConstant(bool value, int name);{{{*/
 void  Tria::InputUpdateFromConstant(bool constant, int name){
+
 	/*Check that name is an element input*/
-	if (!IsInput(name)) return;
+	if(!IsInput(name)) return;
 
 	/*update input*/
@@ -1762,5 +1765,4 @@
 void  Tria::InputUpdateFromVector(IssmDouble* vector, int name, int type){
 
-
 	/*Check that name is an element input*/
 	if (!IsInput(name)) return;
@@ -1833,23 +1835,4 @@
 	xDelete<int>(doflist);
 	xDelete<IssmDouble>(values);
-
-}
-/*}}}*/
-/*FUNCTION Tria::InputCreate(IssmDouble scalar,int enum,int code);{{{*/
-void Tria::InputCreate(IssmDouble scalar,int name,int code){
-
-	/*Check that name is an element input*/
-	if (!IsInput(name)) return;
-
-	if ((code==5) || (code==1)){ //boolean
-		this->inputs->AddInput(new BoolInput(name,reCast<bool>(scalar)));
-	}
-	else if ((code==6) || (code==2)){ //integer
-		this->inputs->AddInput(new IntInput(name,reCast<int>(scalar)));
-	}
-	else if ((code==7) || (code==3)){ //IssmDouble
-		this->inputs->AddInput(new DoubleInput(name,scalar));
-	}
-	else _error_("could not recognize nature of vector from code " << code);
 
 }
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16186)
@@ -91,5 +91,4 @@
 		void        GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp);
 		void        InputArtificialNoise(int enum_type,IssmDouble min, IssmDouble max);
-		void        InputCreate(IssmDouble scalar,int name,int code);
 		void        InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
 		void        InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum);
Index: /issm/trunk-jpl/src/c/classes/IoModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16185)
+++ /issm/trunk-jpl/src/c/classes/IoModel.cpp	(revision 16186)
@@ -1048,5 +1048,5 @@
 	IssmDouble  scalar;
 	char       *string           = NULL;
-	IssmDouble *IssmDoublevector = NULL;
+	IssmDouble *doublearray = NULL;
 	int         M,N;
 
@@ -1060,39 +1060,21 @@
 		case 1: //boolean constant.  {{{
 			this->FetchData(&boolean,vector_enum);
-
-			/*Add boolean constant input to all elements: */
-			counter=0;
-			for (i=0;i<numberofelements;i++){
-				if(this->my_elements[i]){
-					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					element->InputCreate((IssmDouble)boolean,vector_enum,code);
-					counter++;
-				}
+			for(i=0;i<elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(boolean,vector_enum);
 			}
 			break; /*}}}*/
 		case 2: //integer constant.  {{{
 			this->FetchData(&integer,vector_enum);
-
-			/*Add integer constant input to all elements: */
-			counter=0;
-			for (i=0;i<numberofelements;i++){
-				if(this->my_elements[i]){
-					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					element->InputCreate((IssmDouble)integer,vector_enum,code);
-					counter++;
-				}
+			for(i=0;i<elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(integer,vector_enum);
 			}
 			break; /*}}}*/
 		case 3: //IssmDouble constant.  {{{
 			this->FetchData(&scalar,vector_enum);
-
-			/*Add IssmDouble constant input to all elements: */
-			counter=0;
-			for (i=0;i<numberofelements;i++){
-				if(this->my_elements[i]){
-					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					element->InputCreate(scalar,vector_enum,code); 
-					counter++;
-				}
+			for(i=0;i<elements->Size();i++){
+				Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
+				element->InputUpdateFromConstant(scalar,vector_enum);
 			}
 			break; /*}}}*/
@@ -1100,7 +1082,7 @@
 
 			/*Fetch vector:*/
-			this->FetchData(&IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode
+			this->FetchData(&doublearray,&M,&N,vector_enum); //we still have a doublearray, because it might include times in transient mode
 			/*Check we got something, otherwise fetch default: */
-			if(IssmDoublevector){
+			if(doublearray){
 				defaulting=false;  //we are not defaulting, because  we do have a vector
 			}
@@ -1109,6 +1091,6 @@
 				if(default_vector_enum!=NoneEnum){
 					/*yes. fetch it: */
-					this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
-					if(IssmDoublevector){
+					this->FetchData(&doublearray,&M,&N,default_vector_enum);
+					if(doublearray){
 						defaulting=false;  //we are not defaulting, because  we do have a vector
 					}
@@ -1129,6 +1111,6 @@
 				if(this->my_elements[i]){
 					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
-					else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					if(defaulting) element->InputUpdateFromConstant(reCast<bool>(default_value),vector_enum); 
+					else           element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
 					counter++;
 				}
@@ -1138,7 +1120,7 @@
 
 			/*Fetch vector:*/
-			this->FetchData(&IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode
+			this->FetchData(&doublearray,&M,&N,vector_enum); //we still have a doublearray, because it might include times in transient mode
 			/*Check we got something, otherwise fetch default: */
-			if(IssmDoublevector){
+			if(doublearray){
 				defaulting=false;  //we are not defaulting, because  we do have a vector
 			}
@@ -1147,6 +1129,6 @@
 				if(default_vector_enum!=NoneEnum){
 					/*yes. fetch it: */
-					this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
-					if(IssmDoublevector){
+					this->FetchData(&doublearray,&M,&N,default_vector_enum);
+					if(doublearray){
 						defaulting=false;  //we are not defaulting, because  we do have a vector
 					}
@@ -1167,6 +1149,6 @@
 				if(this->my_elements[i]){
 					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
-					else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					if(defaulting) element->InputUpdateFromConstant(reCast<int>(default_value),vector_enum); 
+					else           element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
 					counter++;
 				}
@@ -1176,7 +1158,7 @@
 
 			/*Fetch vector:*/
-			this->FetchData(&IssmDoublevector,&M,&N,vector_enum);
+			this->FetchData(&doublearray,&M,&N,vector_enum);
 			/*Check we got something, otherwise fetch default: */
-			if(IssmDoublevector){
+			if(doublearray){
 				defaulting=false;  //we are not defaulting, because  we do have a vector
 			}
@@ -1185,6 +1167,6 @@
 				if(default_vector_enum!=NoneEnum){
 					/*yes. fetch it: */
-					this->FetchData(&IssmDoublevector,&M,&N,default_vector_enum);
-					if(IssmDoublevector){
+					this->FetchData(&doublearray,&M,&N,default_vector_enum);
+					if(doublearray){
 						defaulting=false;  //we are not defaulting, because  we do have a vector
 					}
@@ -1205,6 +1187,6 @@
 				if(this->my_elements[i]){
 					Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter));
-					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
-					else           element->InputCreate(IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					if(defaulting) element->InputUpdateFromConstant(default_value,vector_enum); 
+					else           element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
 					counter++;
 				}
@@ -1218,5 +1200,5 @@
 	}
 	/*Free ressources. Pay attention to not freeing an AD mode independent variable though!:*/
-	if (!this->independents[vector_enum] && !this->independents[default_vector_enum]) xDelete<IssmDouble>(IssmDoublevector);
+	if (!this->independents[vector_enum] && !this->independents[default_vector_enum]) xDelete<IssmDouble>(doublearray);
 	xDelete<char>(string);
 }
