Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16739)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16740)
@@ -1931,19 +1931,13 @@
 		else if(M==iomodel->numberofvertices+1){
 			/*create transient input: */
-			for(t=0;t<N;t++){ //N is the number of times
-
-				/*create input values: */
-				for(i=0;i<6;i++){
-					row=penta_vertex_ids[i]-1;
-					nodeinputs[i]=(IssmDouble)vector[N*row+t];
-				}
-
-				/*time? :*/
-				time=(IssmDouble)vector[(M-1)*N+t];
-
-				if(t==0)transientinput=new TransientInput(vector_enum);
-				transientinput->AddTimeInput(new PentaInput(vector_enum,nodeinputs,P1Enum),time);
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			transientinput=new TransientInput(vector_enum,times,N);
+			for(t=0;t<N;t++){
+				for(i=0;i<NUMVERTICES;i++) nodeinputs[i]=vector[N*(penta_vertex_ids[i]-1)+t];
+				transientinput->AddTimeInput(new PentaInput(vector_enum,nodeinputs,P1Enum));
 			}
 			this->inputs->AddInput(transientinput);
+			xDelete<IssmDouble>(times);
 		}
 		else _error_("nodal vector is either numberofvertices (" << iomodel->numberofvertices << "), or numberofvertices+1 long. Field provided is " << M << " long. Enum " << EnumToStringx(vector_enum));
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16739)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16740)
@@ -2095,19 +2095,13 @@
 		else if(M==iomodel->numberofvertices+1){
 			/*create transient input: */
-			for(t=0;t<N;t++){ //N is the number of times
-
-				/*create input values: */
-				for(i=0;i<3;i++){
-					row=tria_vertex_ids[i]-1;
-					nodeinputs[i]=vector[N*row+t];
-				}
-
-				/*time? :*/
-				time=vector[(M-1)*N+t];
-
-				if(t==0) transientinput=new TransientInput(vector_enum);
-				transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs,P1Enum),time);
+			IssmDouble* times = xNew<IssmDouble>(N);
+			for(t=0;t<N;t++) times[t] = vector[(M-1)*N+t];
+			transientinput=new TransientInput(vector_enum,times,N);
+			for(t=0;t<N;t++){
+				for(i=0;i<NUMVERTICES;i++) nodeinputs[i]=vector[N*(tria_vertex_ids[i]-1)+t];
+				transientinput->AddTimeInput(new TriaInput(vector_enum,nodeinputs,P1Enum));
 			}
 			this->inputs->AddInput(transientinput);
+			xDelete<IssmDouble>(times);
 		}
 		else _error_("nodal vector is either numberofvertices or numberofvertices+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 16739)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 16740)
@@ -39,4 +39,19 @@
 }
 /*}}}*/
+/*FUNCTION TransientInput::TransientInput(int in_enum_type,IssmDouble* timesin,int N){{{*/
+TransientInput::TransientInput(int in_enum_type,IssmDouble* timesin,int N){
+
+	/*Set Enum*/
+	enum_type=in_enum_type;
+
+	/*Allocate values and timesteps, and copy: */
+	this->numtimesteps=N;
+	this->timesteps=xNew<IssmDouble>(N);
+	xMemCpy(this->timesteps,timesin,N);
+
+	inputs = new Inputs();
+	this->parameters=NULL;
+}
+/*}}}*/
 /*FUNCTION TransientInput::~TransientInput{{{*/
 TransientInput::~TransientInput(){
@@ -66,5 +81,5 @@
 	_printf_("---inputs: \n"); 
 	for(i=0;i<this->numtimesteps;i++){
-		_printf_("   time: " << this->timesteps[i] << "  \n");
+		_printf_("   time: " << this->timesteps[i]<<"  ");
 		((Input*)this->inputs->GetObjectByOffset(i))->Echo();
 	}
@@ -314,4 +329,12 @@
 }
 /*}}}*/
+/*FUNCTION TransientInput::AddTimeInput{{{*/
+void TransientInput::AddTimeInput(Input* input){
+
+	_assert_(this->inputs->Size()<this->numtimesteps);
+	inputs->AddObject(input);
+
+}
+/*}}}*/
 /*FUNCTION TransientInput::GetResultInterpolation{{{*/
 int  TransientInput::GetResultInterpolation(void){
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h	(revision 16739)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.h	(revision 16740)
@@ -26,6 +26,8 @@
 		TransientInput();
 		TransientInput(int enum_type);
+		TransientInput(int in_enum_type,IssmDouble* times,int N);
 		~TransientInput();
 		void AddTimeInput(Input* input,IssmDouble time);
+		void AddTimeInput(Input* input);
 		/*}}}*/
 		/*Object virtual functions definitions:{{{*/
