Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 16239)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 16240)
@@ -487,4 +487,5 @@
 					      ./modules/ModelProcessorx/Stressbalance/CreateConstraintsStressbalance.cpp \
 					      ./modules/ModelProcessorx/Stressbalance/CreateLoadsStressbalance.cpp\
+							./modules/ModelProcessorx/Stressbalance/CreateParametersStressbalance.cpp\
 					      ./modules/ModelProcessorx/StressbalanceVertical/UpdateElementsStressbalanceVertical.cpp\
 					      ./modules/ModelProcessorx/StressbalanceVertical/CreateNodesStressbalanceVertical.cpp \
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16239)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16240)
@@ -46,17 +46,5 @@
 	/*Copy some constants from iomodel */
 	parameters->AddObject(iomodel->CopyConstantObject(MeshDimensionEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsSIAEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsSSAEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsL1L2Enum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsHOEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsFSEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(FlowequationFeFSEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRestolEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceReltolEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceAbstolEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceIsnewtonEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceMaxiterEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalancePenaltyFactorEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SteadystateMaxiterEnum));
@@ -83,8 +71,4 @@
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyThresholdEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyLockEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRiftPenaltyThresholdEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceFSreconditioningEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceShelfDampeningEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceViscosityOvershootEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsWaitonlockEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(MeshNumberofelementsEnum));
@@ -148,10 +132,4 @@
 	parameters->AddObject(new BoolParam(SaveResultsEnum,true));
 
-	/*Requested outputs*/
-	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,StressbalanceRequestedOutputsEnum);
-	parameters->AddObject(new IntParam(StressbalanceNumRequestedOutputsEnum,numoutputs));
-	if(numoutputs)parameters->AddObject(new IntVecParam(StressbalanceRequestedOutputsEnum,requestedoutputs,numoutputs));
-	iomodel->DeleteData(requestedoutputs,StressbalanceRequestedOutputsEnum);
-
 	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,TransientRequestedOutputsEnum);
 	parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
@@ -231,5 +209,5 @@
 	/*}}}*/
 
-	/*Solution specific parameters (FIXME: extend to other params)*/
+	/*Solution specific parameters*/
 	#ifdef _HAVE_HYDROLOGY_
 	CreateParametersHydrologyShreve(&parameters,iomodel,solution_type,analysis_type);
@@ -251,4 +229,9 @@
 	#endif
 
+	#ifdef _HAVE_STRESSBALANCE_
+	CreateParametersStressbalance(&parameters,iomodel,solution_type,analysis_type);
+	#endif
+
+
 	/*Now, deal with toolkits options, which need to be put into the parameters dataset: */
 	ParseToolkitsOptionsx(parameters,toolkitsoptionsfid);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 16239)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp	(revision 16240)
@@ -11,36 +11,31 @@
 void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type){
 
-	/*variable declarations: {{{*/
-	int i;
-	Parameters* parameters = NULL;
-
-	int*     part=NULL;
-	double*  dpart=NULL;
-
-	char**  responsedescriptors=NULL;
-	int     numresponsedescriptors;
-	char**  variabledescriptors=NULL;
-	int     numvariabledescriptors;
-	char*   descriptor=NULL;
-	double* dakota_parameter=NULL;
+	/*variable declarations*/
+	int          i;
+	Parameters  *parameters             = NULL;
+	int         *part                   = NULL;
+	double      *dpart                  = NULL;
+	char       **responsedescriptors    = NULL;
+	int          numresponsedescriptors;
+	char       **variabledescriptors    = NULL;
+	int          numvariabledescriptors;
+	char        *descriptor             = NULL;
+	double      *dakota_parameter       = NULL;
 
 	//qmu files
-	char* qmuinname=NULL;
-	char* qmuerrname=NULL;
-	char* qmuoutname=NULL;
+	char *qmuinname  = NULL;
+	char *qmuerrname = NULL;
+	char *qmuoutname = NULL;
 
 	//descriptors:
 	char tag[50];
 
-	bool     dakota_analysis=false;
-	char*    name=NULL;
-	int      numberofresponses;
-	int      nrows;
-	int      ncols;
-
-	/*}}}*/
+	bool  dakota_analysis   = false;
+	char *name              = NULL;
+	int   numberofresponses;
+	int   nrows,ncols;
 
 	/*recover parameters : */
-	parameters=*pparameters;
+	parameters = *pparameters;
 
 	/*recover parameters: */
@@ -52,5 +47,5 @@
 		iomodel->Constant(&numberofresponses,QmuNumberofresponsesEnum);
 
-		/*name of qmu input, error and output files:{{{*/
+		/*name of qmu input, error and output files*/
 		qmuinname=xNew<char>((strlen(rootpath)+strlen(name)+strlen(".qmu.in")+1));
 		sprintf(qmuinname,"%s%s%s",rootpath,name,".qmu.in");
@@ -64,6 +59,6 @@
 		sprintf(qmuerrname,"%s%s%s",rootpath,name,".qmu.err");
 		parameters->AddObject(new   StringParam(QmuErrNameEnum,qmuerrname));
-		/*}}}*/
-		/*Fetch variable descriptors: {{{*/
+
+		/*Fetch variable descriptors*/
 		iomodel->FetchData(&variabledescriptors,&numvariabledescriptors,QmuVariabledescriptorsEnum);
 
@@ -71,6 +66,5 @@
 		parameters->AddObject(new StringArrayParam(QmuVariabledescriptorsEnum,variabledescriptors,numvariabledescriptors));
 
-		/*}}}*/
-		/*Fetch response descriptors: {{{*/
+		/*Fetch response descriptors*/
 		iomodel->FetchData(&responsedescriptors,&numresponsedescriptors,QmuResponsedescriptorsEnum);
 
@@ -78,13 +72,10 @@
 		parameters->AddObject(new StringArrayParam(QmuResponsedescriptorsEnum,responsedescriptors,numresponsedescriptors));
 		parameters->AddObject(new    IntParam(QmuNumberofresponsesEnum,numberofresponses));
-		/*}}}*/
-		/*Deal with partitioning: {{{*/
+
+		/*Deal with partitioning*/
 		/*partition vertices in iomodel->qmu_npart parts, unless a partition is already present: */
-
 		parameters->AddObject(iomodel->CopyConstantObject(QmuNumberofpartitionsEnum));
 		iomodel->FetchData(&dpart,NULL,NULL,QmuPartitionEnum);
-
 		if(!dpart){
-
 			/*Partition elements and vertices and nodes: */
 			ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel);
@@ -94,9 +85,7 @@
 		}
 		parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,iomodel->numberofvertices));
-		/*}}}*/
-		/*Deal with data needed because of qmu variables: {{{*/
 
+		/*Deal with data needed because of qmu variables*/
 		for(i=0;i<numvariabledescriptors;i++){
-
 			if (strncmp(variabledescriptors[i],"scaled_",7)==0){
 				/*Ok, we are dealing with a variable that is distributed over nodes. Recover the name of the variable (ex: scaled_Thickness): */
@@ -105,6 +94,4 @@
 				/*Recover data: */
 				iomodel->FetchData(&dakota_parameter,&nrows,&ncols,StringToEnumx(tag));
-
-				/*Add to parameters: */
 				if(nrows==iomodel->numberofvertices){
 					parameters->AddObject(new DoubleMatParam(StringToEnumx(tag),dakota_parameter,nrows,ncols));
@@ -113,11 +100,9 @@
 					parameters->AddObject(new DoubleTransientMatParam(StringToEnumx(tag),dakota_parameter,nrows,ncols));
 				}
-
-				/*Free ressources:*/
 				xDelete<double>(dakota_parameter);
 			}
 		}
-		/*}}}*/
-		/*Free data: {{{*/
+
+		/*clean-up*/
 		for(i=0;i<numresponsedescriptors;i++){
 			descriptor=responsedescriptors[i];
@@ -125,5 +110,4 @@
 		}
 		xDelete<char*>(responsedescriptors);
-
 		for(i=0;i<numvariabledescriptors;i++){
 			descriptor=variabledescriptors[i];
@@ -136,6 +120,5 @@
 		xDelete<char>(qmuerrname);
 		xDelete<char>(qmuoutname);
-		/*}}}*/
-	} //if(dakota_analysis)
+	}
 
 	/*Free data*/
@@ -143,4 +126,4 @@
 
 	/*Assign output pointer: */
-	*pparameters=parameters;
+	*pparameters = parameters;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16239)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 16240)
@@ -19,4 +19,5 @@
 void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
 void CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type);
+void CreateParametersStressbalance(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
 void CreateParametersHydrologyShreve(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
 void CreateParametersHydrologyDCInefficient(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateParametersStressbalance.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateParametersStressbalance.cpp	(revision 16240)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/Stressbalance/CreateParametersStressbalance.cpp	(revision 16240)
@@ -0,0 +1,44 @@
+/*!\file: CreateParametersStressbalance.cpp
+ * \brief driver for creating parameters dataset, for control analysis.
+ */ 
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void CreateParametersStressbalance(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type){
+
+	/*Intermediaries*/
+	int         numoutputs;
+	IssmDouble *requestedoutputs = NULL;
+
+	/*Get parameters: */
+	Parameters *parameters=*pparameters;
+
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsSIAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsSSAEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsL1L2Enum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsHOEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(FlowequationFeFSEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRestolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceIsnewtonEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceMaxiterEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalancePenaltyFactorEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceRiftPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceFSreconditioningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceShelfDampeningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceViscosityOvershootEnum));
+
+	/*Requested outputs*/
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,StressbalanceRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(StressbalanceNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(StressbalanceRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(requestedoutputs,StressbalanceRequestedOutputsEnum);
+
+	/*Assign output pointer: */
+	*pparameters = parameters;
+}
