Index: /issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.cpp	(revision 26867)
+++ /issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.cpp	(revision 26868)
@@ -75,5 +75,12 @@
 /*}}}*/
 void Cfsurfacelogvel::Marshall(MarshallHandle* marshallhandle){/*{{{*/
-	_error_("not implemented yet!"); 
+	int object_enum=CfsurfacelogvelEnum;
+	marshallhandle->call(object_enum);
+
+	marshallhandle->call(this->definitionenum);
+	marshallhandle->call(this->name);
+	marshallhandle->call(this->datatime);
+	marshallhandle->call(this->timepassedflag);
+	marshallhandle->call(this->misfit);
 } 
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26867)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TransientInput.cpp	(revision 26868)
@@ -125,4 +125,6 @@
 void TransientInput::Marshall(MarshallHandle* marshallhandle){ /*{{{*/
 
+	bool isnull;
+
 	int object_enum = TransientInputEnum;
    marshallhandle->call(object_enum);
@@ -149,26 +151,36 @@
 	if(marshallhandle->OperationNumber()!=MARSHALLING_LOAD){
 		for(int i=0;i<this->numtimesteps;i++){
-			_assert_(this->inputs[i]);
-			object_enum = this->inputs[i]->ObjectEnum();
-			marshallhandle->call(object_enum);
-			this->inputs[i]->Marshall(marshallhandle);
+
+			//_assert_(this->inputs[i]);
+			isnull = false;
+			if(!this->inputs[i]) isnull = true;
+			marshallhandle->call(isnull);
+
+			if(!isnull){
+				object_enum = this->inputs[i]->ObjectEnum();
+				marshallhandle->call(object_enum);
+				this->inputs[i]->Marshall(marshallhandle);
+			}
 		}
 	}
 	else{
 		for(int i=0;i<this->numtimesteps;i++){
-			marshallhandle->call(object_enum);
-
-			if(object_enum==TriaInputEnum){
-				TriaInput* triainput2=new TriaInput();
-				triainput2->Marshall(marshallhandle);
-				this->inputs[i]=triainput2;
-			}
-			else if(object_enum==PentaInputEnum){
-				PentaInput* pentainput2=new PentaInput();
-				pentainput2->Marshall(marshallhandle);
-				this->inputs[i]=pentainput2;
-			}
-			else{
-				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+			marshallhandle->call(isnull);
+			if(!isnull){
+				marshallhandle->call(object_enum);
+
+				if(object_enum==TriaInputEnum){
+					TriaInput* triainput2=new TriaInput();
+					triainput2->Marshall(marshallhandle);
+					this->inputs[i]=triainput2;
+				}
+				else if(object_enum==PentaInputEnum){
+					PentaInput* pentainput2=new PentaInput();
+					pentainput2->Marshall(marshallhandle);
+					this->inputs[i]=pentainput2;
+				}
+				else{
+					_error_("input "<<EnumToStringx(object_enum)<<" not supported");
+				}
 			}
 		}
Index: /issm/trunk-jpl/src/c/datastructures/DataSet.cpp
===================================================================
--- /issm/trunk-jpl/src/c/datastructures/DataSet.cpp	(revision 26867)
+++ /issm/trunk-jpl/src/c/datastructures/DataSet.cpp	(revision 26868)
@@ -261,4 +261,9 @@
 				this->AddObject(cfsurf);
 			}
+			else if(obj_enum==CfsurfacelogvelEnum){
+				Cfsurfacelogvel* cfsurf=new Cfsurfacelogvel();
+				cfsurf->Marshall(marshallhandle);
+				this->AddObject(cfsurf);
+			}
 			else if(obj_enum==MassfluxatgateEnum){
 				Massfluxatgate<IssmDouble>* massfluxgate=new Massfluxatgate<IssmDouble>();
