Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27938)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27939)
@@ -1903,8 +1903,10 @@
 		/*Are we in transient or static? */
 		if(M==1){
-			values[0]=vector[0];
+			_assert_(N==1);
 			this->SetElementInput(inputs,vector_enum,vector[0]);
 		}
+
 		else if(M==iomodel->numberofvertices){
+			_assert_(N==1);
 			for(int i=0;i<NUM_VERTICES;i++) values[i]=vector[vertexids[i]-1];
 			this->SetElementInput(inputs,NUM_VERTICES,vertexlids,values,vector_enum);
@@ -1956,8 +1958,29 @@
 	else if(vector_type==2){ //element vector
 
-		IssmDouble value;
-
 		/*Are we in transient or static? */
-		if(M==iomodel->numberofelements){
+		if(M==1){
+			_assert_(N==1);
+			this->SetElementInput(inputs,vector_enum,vector[0]);
+		}
+		else if(M==2){
+			/*create transient input: */
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+
+			inputs->SetTransientInput(vector_enum,times,N);
+			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
+
+			for(int t=0;t<N;t++){
+				IssmDouble value=vector[t]; //values are on the first line, times are on the second line
+				switch(this->ObjectEnum()){
+					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum); break;
+					case PentaEnum: transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum); break;
+					default: _error_("Not implemented yet");
+				}
+			}
+			xDelete<IssmDouble>(times);
+		}
+		else if(M==iomodel->numberofelements){
+			_assert_(N==1);
 			if (code==5){ //boolean
 				this->SetBoolInput(inputs,vector_enum,reCast<bool>(vector[this->Sid()]));
@@ -1978,5 +2001,5 @@
 			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
 			for(int t=0;t<N;t++){
-				value=vector[N*this->Sid()+t];
+				IssmDouble value=vector[N*this->Sid()+t];
 				switch(this->ObjectEnum()){
 					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum); break;
@@ -1987,22 +2010,5 @@
 			xDelete<IssmDouble>(times);
 		}
-		else if(M==2){
-			/*create transient input: */
-			IssmDouble* times = xNew<IssmDouble>(N);
-			for(int t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
-
-			inputs->SetTransientInput(vector_enum,times,N);
-			TransientInput* transientinput = inputs->GetTransientInput(vector_enum);
-
-			for(int t=0;t<N;t++){
-				value=vector[t]; //values are on the first line, times are on the second line
-				switch(this->ObjectEnum()){
-					case TriaEnum:  transientinput->AddTriaTimeInput( t,1,&(this->lid),&value,P0Enum); break;
-					case PentaEnum: transientinput->AddPentaTimeInput(t,1,&(this->lid),&value,P0Enum); break;
-					default: _error_("Not implemented yet");
-				}
-			}
-			xDelete<IssmDouble>(times);
-		}
+
 		else _error_("element vector is either numberofelements or numberofelements+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
 	}
