Index: /issm/trunk/src/c/Container/DataSet.cpp
===================================================================
--- /issm/trunk/src/c/Container/DataSet.cpp	(revision 8794)
+++ /issm/trunk/src/c/Container/DataSet.cpp	(revision 8795)
@@ -246,4 +246,10 @@
 				dataset->AddObject(pentavertexforcing);}
 				break;
+			case TransientInputEnum:{
+				TransientInput* transientinput=NULL;
+				transientinput=new TransientInput();
+				transientinput->Demarshall(&marshalled_dataset);
+				dataset->AddObject(transientinput);}
+				break;
 			case ControlInputEnum:{
 			   ControlInput* controlinputinput=NULL;
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 8794)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 8795)
@@ -461,5 +461,6 @@
 	IntMatParamEnum,
 	RheologyBbarAbsGradientEnum,
-	DragCoefficientAbsGradientEnum
+	DragCoefficientAbsGradientEnum,
+	TransientInputEnum
 };
 
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 8794)
+++ /issm/trunk/src/c/Makefile.am	(revision 8795)
@@ -222,4 +222,6 @@
 					./objects/Inputs/DatasetInput.h\
 					./objects/Inputs/DatasetInput.cpp\
+					./objects/Inputs/TransientInput.h\
+					./objects/Inputs/TransientInput.cpp\
 					./objects/Elements/Penta.h\
 					./objects/Elements/Penta.cpp\
@@ -908,4 +910,6 @@
 					./objects/Inputs/DatasetInput.h\
 					./objects/Inputs/DatasetInput.cpp\
+					./objects/Inputs/TransientInput.h\
+					./objects/Inputs/TransientInput.cpp\
 					./objects/Elements/Penta.h\
 					./objects/Elements/Penta.cpp\
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 8794)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 8795)
@@ -405,4 +405,5 @@
 		case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient";
 		case DragCoefficientAbsGradientEnum : return "DragCoefficientAbsGradient";
+		case TransientInputEnum : return "TransientInput";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 8794)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 8795)
@@ -403,4 +403,5 @@
 	else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
 	else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 8794)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 8795)
@@ -7489,8 +7489,14 @@
 
 	if(step==0){
-		/*This is the first time we are trying to replace the smb penta vertex input by a smb pentav vertex 
-		 *forcing, which is essentially a penta vertex input that can vary with time. So first, if there is already 
-		 an input with enum FieldEnum, squash it: */
-		this->inputs->AddInput(new PentaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters));
+
+		/*This is the first time we are trying to replace the smb tria vertex input by a smb triav vertex 
+		 *forcing, which is essentially a tria vertex input that can vary with time. So first, if there is already 
+		 *an input with enum FieldEnum, squash it: */
+		TransientInput* transientinput = new TransientInput(FieldEnum);
+
+		PentaVertexInput* pentavertexinput = new PentaVertexInput(FieldEnum,&nodeinputs[0]);
+		transientinput->AddTimeInput(pentavertexinput,time);
+		this->inputs->AddInput(transientinput);
+
 	}
 	else{
@@ -7498,9 +7504,10 @@
 		/*Ok, we can't write over the existing forcing that was created in previous step 0. Find the input, and add 
 		 *values for this time step: */
-		PentaVertexForcing* forcing=(PentaVertexForcing*)inputs->GetInput(FieldEnum); _assert_(forcing);
-		forcing->AddTimeValues(&nodeinputs[0],step,time);
-
-	}
-
+		TransientInput* transientinput=(TransientInput*)inputs->GetInput(FieldEnum); _assert_(transientinput);
+
+		PentaVertexInput* pentavertexinput = new PentaVertexInput(FieldEnum,&nodeinputs[0]);
+		transientinput->AddTimeInput(pentavertexinput,time);
+
+	}
 
 }
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 8794)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 8795)
@@ -5432,5 +5432,5 @@
 
 	/*recover forcing for this time step: */
-	for(i=0;i<3;i++)nodeinputs[i]=iomodel->forcing[tria_vertex_ids[i]-1];
+	for(i=0;i<3;i++) nodeinputs[i]=iomodel->forcing[tria_vertex_ids[i]-1];
 
 	/*process units: */
@@ -5438,8 +5438,14 @@
 
 	if(step==0){
+
 		/*This is the first time we are trying to replace the smb tria vertex input by a smb triav vertex 
 		 *forcing, which is essentially a tria vertex input that can vary with time. So first, if there is already 
-		 an input with enum FieldEnum, squash it: */
-		this->inputs->AddInput(new TriaVertexForcing(FieldEnum,nodeinputs,time,iomodel->forcing_numtimesteps,this->parameters));
+		 * an input with enum FieldEnum, squash it: */
+		TransientInput* transientinput = new TransientInput(FieldEnum);
+
+		TriaVertexInput* triavertexinput = new TriaVertexInput(FieldEnum,&nodeinputs[0]);
+		transientinput->AddTimeInput(triavertexinput,time);
+		this->inputs->AddInput(transientinput);
+
 	}
 	else{
@@ -5447,10 +5453,10 @@
 		/*Ok, we can't write over the existing forcing that was created in previous step 0. Find the input, and add 
 		 *values for this time step: */
-		TriaVertexForcing* forcing=(TriaVertexForcing*)inputs->GetInput(FieldEnum); _assert_(forcing);
-
-		forcing->AddTimeValues(&nodeinputs[0],step,time);
-
-	}
-
+		TransientInput* transientinput=(TransientInput*)inputs->GetInput(FieldEnum); _assert_(transientinput);
+
+		TriaVertexInput* triavertexinput = new TriaVertexInput(FieldEnum,&nodeinputs[0]);
+		transientinput->AddTimeInput(triavertexinput,time);
+
+	}
 
 }
Index: /issm/trunk/src/c/objects/objects.h
===================================================================
--- /issm/trunk/src/c/objects/objects.h	(revision 8794)
+++ /issm/trunk/src/c/objects/objects.h	(revision 8795)
@@ -90,4 +90,5 @@
 #include "./Inputs/ControlInput.h"
 #include "./Inputs/DatasetInput.h"
+#include "./Inputs/TransientInput.h"
 
 /*ElementResults: */
