Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 9342)
+++ /issm/trunk/src/c/Makefile.am	(revision 9343)
@@ -569,6 +569,4 @@
 					./modules/Gradjx/Gradjx.h\
 					./modules/Gradjx/Gradjx.cpp\
-					./modules/IoModelToInputsx/IoModelToInputsx.h\
-					./modules/IoModelToInputsx/IoModelToInputsx.cpp\
 					./modules/IoModelToConstraintsx/IoModelToConstraintsx.h\
 					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
@@ -1257,6 +1255,4 @@
 					./modules/Gradjx/Gradjx.h\
 					./modules/Gradjx/Gradjx.cpp\
-					./modules/IoModelToInputsx/IoModelToInputsx.h\
-					./modules/IoModelToInputsx/IoModelToInputsx.cpp\
 					./modules/IoModelToConstraintsx/IoModelToConstraintsx.h\
 					./modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp\
Index: /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp	(revision 9343)
@@ -29,20 +29,20 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAccumulationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAblationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceMassBalanceEnum);
-	IoModelToInputsx(elements,iomodel,DhdtEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAccumulationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAblationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,DhdtEnum);
 
 	if (iomodel->dim==3){
-		IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-		IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
+		iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+		iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
 	}
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp	(revision 9343)
@@ -29,11 +29,11 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
 
 	if (iomodel->dim==3){
-		IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-		IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
+		iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+		iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
 	}
 	
Index: /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp	(revision 9343)
@@ -28,7 +28,7 @@
 	iomodel->FetchData(&iomodel->elements,NULL,NULL,ElementsEnum);
 
-	IoModelToInputsx(elements,iomodel,VxObsEnum);
-	IoModelToInputsx(elements,iomodel,VyObsEnum); 
-	IoModelToInputsx(elements,iomodel,ThicknessObsEnum);
+	iomodel->FetchDataToInput(elements,VxObsEnum);
+	iomodel->FetchDataToInput(elements,VyObsEnum); 
+	iomodel->FetchDataToInput(elements,ThicknessObsEnum);
 
 	iomodel->FetchData(&iomodel->control_type,NULL,NULL,ControlTypeEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp	(revision 9343)
@@ -34,34 +34,34 @@
 
 	/*Create inputs: */
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,ThicknessCoeffEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,DragCoefficientEnum);
-	IoModelToInputsx(elements,iomodel,DragPEnum);
-	IoModelToInputsx(elements,iomodel,DragQEnum);
-	IoModelToInputsx(elements,iomodel,DragTypeEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,RheologyBEnum);
-	IoModelToInputsx(elements,iomodel,RheologyNEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum,VxObsEnum,0);
-	IoModelToInputsx(elements,iomodel,VyEnum,VyObsEnum,0);
-	IoModelToInputsx(elements,iomodel,BathymetryEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,ThicknessCoeffEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
+	iomodel->FetchDataToInput(elements,DragPEnum);
+	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,DragTypeEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,RheologyBEnum);
+	iomodel->FetchDataToInput(elements,RheologyNEnum);
+	iomodel->FetchDataToInput(elements,VxEnum,VxObsEnum,0);
+	iomodel->FetchDataToInput(elements,VyEnum,VyObsEnum,0);
+	iomodel->FetchDataToInput(elements,BathymetryEnum);
 
 	if (iomodel->dim==3){
-		IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-		IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-		IoModelToInputsx(elements,iomodel,VzEnum);
-		IoModelToInputsx(elements,iomodel,SurfaceAccumulationRateEnum);
-		IoModelToInputsx(elements,iomodel,SurfaceAblationRateEnum);
-		IoModelToInputsx(elements,iomodel,SurfaceMassBalanceEnum);
-		IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-		IoModelToInputsx(elements,iomodel,NodeOnStokesEnum);
+		iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+		iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+		iomodel->FetchDataToInput(elements,VzEnum);
+		iomodel->FetchDataToInput(elements,SurfaceAccumulationRateEnum);
+		iomodel->FetchDataToInput(elements,SurfaceAblationRateEnum);
+		iomodel->FetchDataToInput(elements,SurfaceMassBalanceEnum);
+		iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+		iomodel->FetchDataToInput(elements,NodeOnStokesEnum);
 	}
 
 	if(iomodel->control_analysis){
-		IoModelToInputsx(elements,iomodel,VxObsEnum);
-		IoModelToInputsx(elements,iomodel,VyObsEnum);
+		iomodel->FetchDataToInput(elements,VxObsEnum);
+		iomodel->FetchDataToInput(elements,VyObsEnum);
 	}
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp	(revision 9343)
@@ -33,7 +33,7 @@
 	}
 	
-	IoModelToInputsx(elements,iomodel,NodeOnHutterEnum);
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,ThicknessCoeffEnum);
+	iomodel->FetchDataToInput(elements,NodeOnHutterEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,ThicknessCoeffEnum);
 	
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp	(revision 9343)
@@ -32,18 +32,18 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,ThicknessCoeffEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAccumulationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAblationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceMassBalanceEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,ThicknessCoeffEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAccumulationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAblationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
 
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp	(revision 9343)
@@ -32,24 +32,24 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,DragCoefficientEnum);
-	IoModelToInputsx(elements,iomodel,DragPEnum);
-	IoModelToInputsx(elements,iomodel,DragQEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,ElementsTypeEnum);
-	IoModelToInputsx(elements,iomodel,RheologyBEnum);
-	IoModelToInputsx(elements,iomodel,RheologyNEnum);
-	IoModelToInputsx(elements,iomodel,PressureEnum);
-	IoModelToInputsx(elements,iomodel,TemperatureEnum);
-	IoModelToInputsx(elements,iomodel,WaterfractionEnum);
-	IoModelToInputsx(elements,iomodel,GeothermalfluxEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
-	IoModelToInputsx(elements,iomodel,VzEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
+	iomodel->FetchDataToInput(elements,DragPEnum);
+	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,ElementsTypeEnum);
+	iomodel->FetchDataToInput(elements,RheologyBEnum);
+	iomodel->FetchDataToInput(elements,RheologyNEnum);
+	iomodel->FetchDataToInput(elements,PressureEnum);
+	iomodel->FetchDataToInput(elements,TemperatureEnum);
+	iomodel->FetchDataToInput(elements,WaterfractionEnum);
+	iomodel->FetchDataToInput(elements,GeothermalfluxEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
+	iomodel->FetchDataToInput(elements,VzEnum);
 	
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp	(revision 9343)
@@ -29,25 +29,25 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,DragCoefficientEnum);
-	IoModelToInputsx(elements,iomodel,DragPEnum);
-	IoModelToInputsx(elements,iomodel,DragQEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,ElementsTypeEnum);
-	IoModelToInputsx(elements,iomodel,RheologyBEnum);
-	IoModelToInputsx(elements,iomodel,RheologyNEnum);
-	IoModelToInputsx(elements,iomodel,PressureEnum);
-	IoModelToInputsx(elements,iomodel,TemperatureEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-	IoModelToInputsx(elements,iomodel,WatercolumnEnum);
-	IoModelToInputsx(elements,iomodel,GeothermalfluxEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
-	IoModelToInputsx(elements,iomodel,VzEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
+	iomodel->FetchDataToInput(elements,DragPEnum);
+	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,ElementsTypeEnum);
+	iomodel->FetchDataToInput(elements,RheologyBEnum);
+	iomodel->FetchDataToInput(elements,RheologyNEnum);
+	iomodel->FetchDataToInput(elements,PressureEnum);
+	iomodel->FetchDataToInput(elements,TemperatureEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,WatercolumnEnum);
+	iomodel->FetchDataToInput(elements,GeothermalfluxEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
+	iomodel->FetchDataToInput(elements,VzEnum);
 
 	elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp	(revision 9343)
@@ -33,22 +33,22 @@
 
 	/*Create inputs: */
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,DragCoefficientEnum);
-	IoModelToInputsx(elements,iomodel,DragPEnum);
-	IoModelToInputsx(elements,iomodel,DragQEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,ElementsTypeEnum);
-	IoModelToInputsx(elements,iomodel,RheologyBEnum);
-	IoModelToInputsx(elements,iomodel,RheologyNEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAccumulationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAblationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceMassBalanceEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-	IoModelToInputsx(elements,iomodel,PressureEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
+	iomodel->FetchDataToInput(elements,DragPEnum);
+	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,ElementsTypeEnum);
+	iomodel->FetchDataToInput(elements,RheologyBEnum);
+	iomodel->FetchDataToInput(elements,RheologyNEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAccumulationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAblationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,PressureEnum);
 	
 	/*Free data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 9343)
@@ -29,26 +29,26 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAccumulationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceAblationRateEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceMassBalanceEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateEnum);
-	IoModelToInputsx(elements,iomodel,BasalMeltingRateCorrectionEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAccumulationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceAblationRateEnum);
+	iomodel->FetchDataToInput(elements,SurfaceMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateEnum);
+	iomodel->FetchDataToInput(elements,BasalMeltingRateCorrectionEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
 
 	if(iomodel->prognostic_DG){
-		IoModelToInputsx(elements,iomodel,SpcthicknessEnum); //for DG, we need the spc in the element
+		iomodel->FetchDataToInput(elements,SpcthicknessEnum); //for DG, we need the spc in the element
 	}
 	
 	if (iomodel->dim==3){
-		IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-		IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-		IoModelToInputsx(elements,iomodel,PressureEnum);
-		IoModelToInputsx(elements,iomodel,TemperatureEnum);
+		iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+		iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+		iomodel->FetchDataToInput(elements,PressureEnum);
+		iomodel->FetchDataToInput(elements,TemperatureEnum);
 	}
 	
Index: /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp	(revision 9343)
@@ -29,11 +29,11 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
 	
 	if (iomodel->dim==3){
-		IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-		IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
+		iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+		iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
 	}
 	
Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9342)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 9343)
@@ -32,24 +32,24 @@
 	}
 
-	IoModelToInputsx(elements,iomodel,ThicknessEnum);
-	IoModelToInputsx(elements,iomodel,SurfaceEnum);
-	IoModelToInputsx(elements,iomodel,BedEnum);
-	IoModelToInputsx(elements,iomodel,DragCoefficientEnum);
-	IoModelToInputsx(elements,iomodel,DragPEnum);
-	IoModelToInputsx(elements,iomodel,DragQEnum);
-	IoModelToInputsx(elements,iomodel,DragTypeEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnIceShelfEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnBedEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnSurfaceEnum);
-	IoModelToInputsx(elements,iomodel,ElementOnWaterEnum);
-	IoModelToInputsx(elements,iomodel,ElementsTypeEnum);
-	IoModelToInputsx(elements,iomodel,RheologyBEnum);
-	IoModelToInputsx(elements,iomodel,RheologyNEnum);
-	IoModelToInputsx(elements,iomodel,PressureEnum);
-	IoModelToInputsx(elements,iomodel,TemperatureEnum);
-	IoModelToInputsx(elements,iomodel,GeothermalfluxEnum);
-	IoModelToInputsx(elements,iomodel,VxEnum);
-	IoModelToInputsx(elements,iomodel,VyEnum);
-	IoModelToInputsx(elements,iomodel,VzEnum);
+	iomodel->FetchDataToInput(elements,ThicknessEnum);
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,DragCoefficientEnum);
+	iomodel->FetchDataToInput(elements,DragPEnum);
+	iomodel->FetchDataToInput(elements,DragQEnum);
+	iomodel->FetchDataToInput(elements,DragTypeEnum);
+	iomodel->FetchDataToInput(elements,ElementOnIceShelfEnum);
+	iomodel->FetchDataToInput(elements,ElementOnBedEnum);
+	iomodel->FetchDataToInput(elements,ElementOnSurfaceEnum);
+	iomodel->FetchDataToInput(elements,ElementOnWaterEnum);
+	iomodel->FetchDataToInput(elements,ElementsTypeEnum);
+	iomodel->FetchDataToInput(elements,RheologyBEnum);
+	iomodel->FetchDataToInput(elements,RheologyNEnum);
+	iomodel->FetchDataToInput(elements,PressureEnum);
+	iomodel->FetchDataToInput(elements,TemperatureEnum);
+	iomodel->FetchDataToInput(elements,GeothermalfluxEnum);
+	iomodel->FetchDataToInput(elements,VxEnum);
+	iomodel->FetchDataToInput(elements,VyEnum);
+	iomodel->FetchDataToInput(elements,VzEnum);
 	
 	if(iomodel->qmu_analysis)elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum);
Index: /issm/trunk/src/c/objects/IoModel.cpp
===================================================================
--- /issm/trunk/src/c/objects/IoModel.cpp	(revision 9342)
+++ /issm/trunk/src/c/objects/IoModel.cpp	(revision 9343)
@@ -843,2 +843,194 @@
 }
 /*}}}*/
+/*FUNCTION IoModel::FetchDataToInput(Elements* elements,IoModel* iomodel,int vector_enum,int default_vector_enum,double default_value{{{1*/
+void IoModel::FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum,double default_value){
+	
+
+	/*intermediary: */
+	int     i;
+	bool    defaulting    = false;
+	bool    transient     = false;
+
+	FILE   *fid           = NULL;
+	int     code          = 0;
+	int     vector_layout = 0;
+	int     counter;
+	int     nods;
+	int     nel;
+
+
+	/*variables being fetched: */
+	bool    boolean;
+	int     integer;
+	double  scalar;
+	char   *string        = NULL;
+	double *doublevector  = NULL;
+	int     M,N;
+
+	/*First of, find the record for the enum, and get code  of data type: */
+	fid=this->SetFilePointerToData(&code, &vector_layout,vector_enum);
+
+	switch(code){
+		case 1: //boolean constant.  {{{2
+			this->FetchData(&boolean,vector_enum);
+
+			/*Add boolean constant input to all elements: */
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					element->InputCreate((double)boolean,vector_enum,code); 
+					counter++;
+				}
+			}
+			break; /*}}}*/
+		case 2: //integer constant.  {{{2
+			this->FetchData(&integer,vector_enum);
+
+			/*Add integer constant input to all elements: */
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					element->InputCreate((double)integer,vector_enum,code); 
+					counter++;
+				}
+			}
+			break; /*}}}*/
+		case 3: //double constant.  {{{2
+			this->FetchData(&scalar,vector_enum);
+
+			/*Add double constant input to all elements: */
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					element->InputCreate(scalar,vector_enum,code); 
+					counter++;
+				}
+			}
+			break; /*}}}*/
+		case 5: //boolean vector.  {{{2
+
+			/*Fetch vector:*/
+			this->FetchData(&doublevector,&M,&N,vector_enum); //we still have a doublevector, because it might include times in transient mode
+			/*Check we got something, otherwise fetch default: */
+			if(doublevector){ 
+				defaulting=false;  //we are not defaulting, because  we do have a vector
+			}
+			else{
+				/*do we have a default enum to go fetch? */
+				if(default_vector_enum!=NoneEnum){
+					/*yes. fetch it: */
+					this->FetchData(&doublevector,&M,&N,default_vector_enum);
+					if(doublevector){
+						defaulting=false;  //we are not defaulting, because  we do have a vector
+					}
+					else{
+						/*even the default vector is non existent. we are defaulting to the default value: */
+						defaulting=true;
+					}
+				}
+				else{
+					/*we are left with the default value: */
+					defaulting=true;
+				}
+			}
+
+			/*Create inputs:*/
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
+					else           element->InputCreate(doublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					counter++;
+				}
+			}
+			break; /*}}}*/
+		case 6: //int vector.  {{{2
+
+			/*Fetch vector:*/
+			this->FetchData(&doublevector,&M,&N,vector_enum); //we still have a doublevector, because it might include times in transient mode
+			/*Check we got something, otherwise fetch default: */
+			if(doublevector){ 
+				defaulting=false;  //we are not defaulting, because  we do have a vector
+			}
+			else{
+				/*do we have a default enum to go fetch? */
+				if(default_vector_enum!=NoneEnum){
+					/*yes. fetch it: */
+					this->FetchData(&doublevector,&M,&N,default_vector_enum);
+					if(doublevector){
+						defaulting=false;  //we are not defaulting, because  we do have a vector
+					}
+					else{
+						/*even the default vector is non existent. we are defaulting to the default value: */
+						defaulting=true;
+					}
+				}
+				else{
+					/*we are left with the default value: */
+					defaulting=true;
+				}
+			}
+
+			/*Create inputs:*/
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
+					else           element->InputCreate(doublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					counter++;
+				}
+			}
+			break; /*}}}*/
+		case 7: //double vector.  {{{2
+
+			/*Fetch vector:*/
+			this->FetchData(&doublevector,&M,&N,vector_enum);
+			/*Check we got something, otherwise fetch default: */
+			if(doublevector){ 
+				defaulting=false;  //we are not defaulting, because  we do have a vector
+			}
+			else{
+				/*do we have a default enum to go fetch? */
+				if(default_vector_enum!=NoneEnum){
+					/*yes. fetch it: */
+					this->FetchData(&doublevector,&M,&N,default_vector_enum);
+					if(doublevector){
+						defaulting=false;  //we are not defaulting, because  we do have a vector
+					}
+					else{
+						/*even the default vector is non existent. we are defaulting to the default value: */
+						defaulting=true;
+					}
+				}
+				else{
+					/*we are left with the default value: */
+					defaulting=true;
+				}
+			}
+
+			/*Create inputs:*/
+			counter=0;
+			for (i=0;i<this->numberofelements;i++){
+				if(this->my_elements[i]){
+					Element* element=(Element*)elements->GetObjectByOffset(counter);
+					if(defaulting) element->InputCreate(default_value,vector_enum,code); 
+					else           element->InputCreate(doublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.
+					counter++;
+				}
+			}
+
+			break; /*}}}*/
+		default: /*{{{2*/
+			_error_("%s%i%s","data code ",code," not supported yet!");
+			break;
+			/*}}}*/
+	}
+	/*Free ressources:*/
+	xfree((void**)&doublevector);
+	xfree((void**)&string);
+}
Index: /issm/trunk/src/c/objects/IoModel.h
===================================================================
--- /issm/trunk/src/c/objects/IoModel.h	(revision 9342)
+++ /issm/trunk/src/c/objects/IoModel.h	(revision 9343)
@@ -9,10 +9,11 @@
 
 #include "../include/include.h"
-
+#include "../EnumDefinitions/EnumDefinitions.h"
+
+class Elements;
 class IoModel {
 
 	private: 
 		FILE* fid; //pointer to input file
-
 	public:
 		/*Data: {{{1*/
@@ -241,4 +242,5 @@
 		void  FetchData(double*** pmatrixarray,int** pmdims,int** pndims, int* pnumrecords,int data_enum);
 		FILE* SetFilePointerToData(int* pcode,int* pvector_type, int data_enum);
+		void  FetchDataToInput(Elements* elements,int vector_enum,int default_vector_enum=NoneEnum,double default_value=0);
 		/*}}}*/
 
