Index: /issm/trunk/src/c/parallel/ControlInitialization.cpp
===================================================================
--- /issm/trunk/src/c/parallel/ControlInitialization.cpp	(revision 1828)
+++ /issm/trunk/src/c/parallel/ControlInitialization.cpp	(revision 1829)
@@ -13,5 +13,5 @@
 #include "../issm.h"
 
-void ControlInitialization(FemModel** pmodel, FemModel* fems, ParameterInputs* inputs){
+void ControlInitialization(Model* model, ParameterInputs* inputs){
 
 	extern int my_rank;
@@ -53,9 +53,9 @@
 
 	/*recover fem models: */
-	fem_dh=fems+0;
-	fem_dv=fems+1;
-	fem_ds=fems+2;
-	fem_dhu=fems+3;
-	fem_sl=fems+4;
+	fem_dh=model->DiagnosticHorizontal();
+	fem_dv=model->DiagnosticVertical();
+	fem_ds=model->DiagnosticStokes();
+	fem_dhu=model->DiagnosticHutter();
+	fem_sl=model->Slope();
 
 	//first recover parameters common to all solutions
@@ -75,5 +75,5 @@
 	/*if no Stokes, assign output and return*/
 	if (!isstokes){
-		*pmodel=fem_dh;
+		model->SetActive(fem_dh);
 		return;
 	}
@@ -97,5 +97,5 @@
 	//horizontal velocity
 	if(debug)_printf_("%s\n"," computing horizontal velocities...");
-	diagnostic_core_nonlinear(&ug,NULL,NULL,NULL, fem_dh,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
+	diagnostic_core_nonlinear(&ug,NULL,NULL,fem_dh,inputs,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
 	if(debug)_printf_("%s\n"," extruding horizontal velocities...");
 	VecDuplicatePatch(&ug_horiz,ug); FieldExtrudex( ug_horiz,fem_dh->elements,fem_dh->nodes, fem_dh->loads,fem_dh-> materials,"velocity",1);
@@ -138,5 +138,5 @@
 	if(debug)_printf_("%s\n"," computing stokes velocities and pressure ...");
 	VecFree(&ug);
-	diagnostic_core_nonlinear(&ug,NULL,NULL,NULL, fem_ds,inputs,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
+	diagnostic_core_nonlinear(&ug,NULL,NULL,NULL,fem_ds,inputs,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
 	VecFree(&pg);
 
@@ -146,4 +146,4 @@
 
 	/*Assign output*/
-	*pmodel=fem_ds;
+	model->SetActive(fem_ds);
 }
