Index: /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11826)
+++ /issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h	(revision 11827)
@@ -385,4 +385,5 @@
 	/*}}}*/
 	/*Results{{{1*/
+	SaveResultsEnum,
 	BoolElementResultEnum,
 	BoolExternalResultEnum,
@@ -399,4 +400,5 @@
 	PetscVecExternalResultEnum,
 	StringExternalResultEnum,
+	StepEnum,
 	TimeEnum,
 	TriaP1ElementResultEnum,
Index: /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/io/Matlab/FetchMatlabData.cpp	(revision 11827)
@@ -603,10 +603,9 @@
 		if (mxIsClass(pfield,"double")){
 			
-			/*could be  DOUBLE, DOUBLEVEC or DOUBLEMAT, depends on dimensions: */
 			M=mxGetM(pfield);
 			N=mxGetN(pfield);
 
 			if (M==0 | N==0){
-				_error_("%s%i (%s) %s%i%s%i%s","array in parameters structure field ",count,name," is of size (",M,",",N,")");
+				_error_("array in parameters structure field %s is of size 0",name);
 			}
 			if (M==1 && N==1){
@@ -643,4 +642,22 @@
 
 		}
+		else if (mxIsClass(pfield,"logical")){
+
+			M=mxGetM(pfield);
+			N=mxGetN(pfield);
+
+			if (M==0 | N==0){
+				_error_("array in parameters structure field %s is of size 0",name);
+			}
+			if (M==1 && N==1){
+				/*we have a simple bool: */
+				param= new BoolParam(enum_type,*mxGetLogicals(pfield));
+				parameters->AddObject(param);
+
+			}
+			else{
+				_error_("Matrices of Booleans not supported yet in parameters");
+			}
+		}
 		else if (mxIsClass(pfield,"char")){
 			/* we have a string parameter:*/
@@ -718,10 +735,9 @@
 			}
 		}
-		else _error_("%s%i","unknow type in parameters structure field ",i);
+		else _error_("Parameters structure field %s has a format that is not supported: %s",name,mxGetClassName(pfield));
 	}
 
 	/*Assign output pointers:*/
 	*pparameters=parameters;
-
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 11827)
@@ -371,4 +371,5 @@
 		case P1Enum : return "P1";
 		case P1DGEnum : return "P1DG";
+		case SaveResultsEnum : return "SaveResults";
 		case BoolElementResultEnum : return "BoolElementResult";
 		case BoolExternalResultEnum : return "BoolExternalResult";
@@ -385,4 +386,5 @@
 		case PetscVecExternalResultEnum : return "PetscVecExternalResult";
 		case StringExternalResultEnum : return "StringExternalResult";
+		case StepEnum : return "Step";
 		case TimeEnum : return "Time";
 		case TriaP1ElementResultEnum : return "TriaP1ElementResult";
Index: /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.cpp	(revision 11827)
@@ -9,12 +9,17 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-void InputToResultx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type,int step, double time){
+void InputToResultx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type){
 
 	/*intermediary:*/
-	int      i;
+	int      step;
+	double   time;
 	Element *element = NULL;
 
+	/*Get time and step*/
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+
 	/*Go through elemnets, and ask each element to transfer the enum_type input into the results dataset, with step and time information: */
-	for(i=0;i<elements->Size();i++){
+	for(int i=0;i<elements->Size();i++){
 
 		element=(Element*)elements->GetObjectByOffset(i);
Index: /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.h	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.h	(revision 11827)
@@ -9,6 +9,5 @@
 
 /* local prototypes: */
-void InputToResultx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type,int step=1, double time=0);
+void InputToResultx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters,int enum_type);
 
 #endif  /* _INPUTTORESULTX_H */
-
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 11827)
@@ -93,7 +93,11 @@
 	parameters->AddObject(new IntParam(AnalysisTypeEnum,analysis_type));
 	parameters->AddObject(new IntParam(AnalysisCounterEnum,analysis_counter));
-	parameters->AddObject(new DoubleParam(TimeEnum,0.0));  //start at time 0 by default for all solutions
+	parameters->AddObject(new DoubleParam(TimeEnum,0.0));  //start at time 0 by default for all solutions FIXME: to be deleted
+	parameters->AddObject(new IntParam(StepEnum,1));  //start at time 0 by default for all solutions FIXME: to be deleted
 
-	/*Requested output?*/
+	/*By default, save all results*/
+	parameters->AddObject(new BoolParam(SaveResultsEnum,true));
+
+	/*Requested outputs*/
 	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,DiagnosticRequestedOutputsEnum);
 	parameters->AddObject(new IntParam(DiagnosticNumRequestedOutputsEnum,numoutputs));
Index: /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.cpp	(revision 11827)
@@ -17,7 +17,7 @@
 		
 #ifdef _SERIAL_
-void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Results** presults){
+void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Results* results){
 #else 
-void OutputResultsx(                    Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Results** presults){
+void OutputResultsx(                    Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads, Materials* materials, Parameters* parameters,Results* results){
 #endif
 
@@ -29,5 +29,4 @@
 	int         solutiontype;
 	char*       solutiontypestring      = NULL;
-	Results    *results                 = NULL;
 	bool        dakota_analysis         = false;
 	
@@ -38,7 +37,4 @@
 	int          nfields=0;
 	#endif
-
-	/*recover results dataset: */
-	results=*presults;
 
 	/*retrieve parameters: */
@@ -115,6 +111,3 @@
 		*/
 	#endif
-
-	/*Assign output pointers:*/
-	*presults=results;
 }
Index: /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/OutputResultsx/OutputResultsx.h	(revision 11827)
@@ -16,7 +16,7 @@
 #ifdef _SERIAL_
 #include <mex.h>
-void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters, Results** presults);
+void OutputResultsx(mxArray** pdataref, Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters, Results* results);
 #else
-void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters, Results** presults);
+void OutputResultsx(Elements* elements, Nodes* nodes, Vertices* vertices, Loads* loads,  Materials* materials, Parameters* parameters, Results* results);
 #endif
 
Index: /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 11827)
@@ -9,14 +9,19 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step, double time){
+void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs){
 
-	int  i,j;
-	int  output_enum;
-	double output_value;
-	Element* element=NULL;
+	int      output_enum;
+	int      step;
+	double   time;
+	double   output_value;
+	Element *element      = NULL;
 
-	/*retrieve parameters: */
+	/*Get time and step*/
+	parameters->FindParam(&step,StepEnum);
+	parameters->FindParam(&time,TimeEnum);
+
+	/*retrieve Inputs*/
 	if(numoutputs){
-		for(i=0;i<numoutputs;i++){
+		for(int i=0;i<numoutputs;i++){
 			output_enum=requested_outputs[i];
 
@@ -29,5 +34,5 @@
 				default:
 					/*create this output in the element inputs, and then transfer to results:*/
-					for(j=0;j<elements->Size();j++){
+					for(int j=0;j<elements->Size();j++){
 						element=(Element*)elements->GetObjectByOffset(j);
 						element->RequestedOutput(output_enum,step,time);
Index: /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 11827)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step=1, double time=0);
+void RequestedOutputsx(Results* results,Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs);
 
 #endif  /* _INPUTTORESULTX_H */
Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11827)
@@ -378,13 +378,14 @@
 	      else if (strcmp(name,"P1")==0) return P1Enum;
 	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum;
 	      else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
 	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
 	      else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
 	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
-	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
+	      if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	      else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
 	      else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
 	      else if (strcmp(name,"J")==0) return JEnum;
@@ -395,4 +396,5 @@
 	      else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;
 	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+	      else if (strcmp(name,"Step")==0) return StepEnum;
 	      else if (strcmp(name,"Time")==0) return TimeEnum;
 	      else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;
Index: /issm/trunk-jpl/src/c/solutions/adjointbalancethickness_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/adjointbalancethickness_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/adjointbalancethickness_core.cpp	(revision 11827)
@@ -16,9 +16,9 @@
 	
 	/*parameters: */
-	bool control_analysis;
+	bool save_results;
 	int  solution_type;
 
 	/*retrieve parameters:*/
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -37,5 +37,5 @@
 	
 	/*Save results*/
-	if(solution_type==AdjointSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointEnum);
Index: /issm/trunk-jpl/src/c/solutions/adjointdiagnostic_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/adjointdiagnostic_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/adjointdiagnostic_core.cpp	(revision 11827)
@@ -17,5 +17,5 @@
 	/*parameters: */
 	bool isstokes;
-	bool control_analysis;
+	bool save_results;
 	bool conserve_loads   = true;
 	int  solution_type;
@@ -23,5 +23,5 @@
 	/*retrieve parameters:*/
 	femmodel->parameters->FindParam(&isstokes,FlowequationIsstokesEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -40,5 +40,5 @@
 	
 	/*Save results*/
-	if(solution_type==AdjointSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,AdjointxEnum);
Index: /issm/trunk-jpl/src/c/solutions/balancethickness_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/balancethickness_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/balancethickness_core.cpp	(revision 11827)
@@ -18,5 +18,5 @@
 	int  dim;
 	int  solution_type;
-	bool control_analysis;
+	bool save_results;
 
 	/*activate formulation: */
@@ -25,5 +25,5 @@
 	/*recover parameters: */
 	femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -31,5 +31,5 @@
 	solver_linear(femmodel);
 
-	if(solution_type==BalancethicknessSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
Index: /issm/trunk-jpl/src/c/solutions/bedslope_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/bedslope_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/bedslope_core.cpp	(revision 11827)
@@ -17,10 +17,10 @@
 	bool isstokes;
 	bool ishutter;
-	bool control_analysis;
+	bool save_results;
 	int  solution_type;
 
 	/*Recover some parameters: */
 	femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -33,5 +33,5 @@
 	solver_linear(femmodel);
 	
-	if(solution_type==BedSlopeSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedSlopeXEnum);
Index: /issm/trunk-jpl/src/c/solutions/control_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/control_core.cpp	(revision 11827)
@@ -59,4 +59,5 @@
 	femmodel->parameters->FindParam(&isstokes,FlowequationIsstokesEnum);
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
 
 	/*out of solution_type, figure out solution core and adjoint function pointer*/
@@ -66,5 +67,5 @@
 	/*Launch once a complete solution to set up all inputs*/
 	_printf_(VerboseControl(),"%s\n","   preparing initial solution");
-	if (isstokes) solutioncore(femmodel);
+	if(isstokes) solutioncore(femmodel);
 
 	/*Initialize responses: */
@@ -108,5 +109,5 @@
 
 	_printf_(VerboseControl(),"%s\n","   preparing final solution");
-	femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
 	solutioncore(femmodel);
 
@@ -125,6 +126,3 @@
 	xfree((void**)&cm_jump);
 	xfree((void**)&J);
-	
-	/*control_core might be used in Qmu, so leave everything similar to where it started: */
-	femmodel->parameters->SetParam(true,InversionIscontrolEnum);
 }
Index: /issm/trunk-jpl/src/c/solutions/controlrestart.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/controlrestart.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/controlrestart.cpp	(revision 11827)
@@ -29,5 +29,5 @@
 
 		/*write to disk: */
-		OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,&femmodel->results);
+		OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
 	}
 
Index: /issm/trunk-jpl/src/c/solutions/controltao_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/controltao_core.cpp	(revision 11827)
@@ -49,4 +49,5 @@
 	femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);
 	femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);
+	femmodel->parameters->SetParam(false,SaveResultsEnum);
 	maxiter=nsteps*(int)dummy[0]; xfree((void**)&dummy);
 
@@ -88,5 +89,5 @@
 	/*Finalize*/
 	_printf_(VerboseControl(),"%s\n","   preparing final solution");
-	femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore
+	femmodel->parameters->SetParam(true,SaveResultsEnum);
 	void (*solutioncore)(FemModel*)=NULL;
 	CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
Index: /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/diagnostic_core.cpp	(revision 11827)
@@ -24,5 +24,5 @@
 	bool  conserve_loads    = true;
 	bool  modify_loads      = true;
-	bool  control_analysis;
+	bool  save_results;
 	int   solution_type;
 	int   numoutputs        = 0;
@@ -36,5 +36,5 @@
 	femmodel->parameters->FindParam(&isnewton,DiagnosticIsnewtonEnum);
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&numoutputs,DiagnosticNumRequestedOutputsEnum);
@@ -94,5 +94,5 @@
 
 
-	if(solution_type==DiagnosticSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
Index: /issm/trunk-jpl/src/c/solutions/enthalpy_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/enthalpy_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/enthalpy_core.cpp	(revision 11827)
@@ -15,12 +15,10 @@
 void enthalpy_core(FemModel* femmodel){
 
-	int i;
-
 	/*intermediary*/
-	bool   control_analysis;
+	bool   save_results;
 	int    solution_type;
 
 	//first recover parameters common to all solutions
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -28,5 +26,5 @@
 	enthalpy_core_step(femmodel);
 
-	if(solution_type==EnthalpySolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum);
@@ -34,4 +32,3 @@
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum);
 	}
-
 }
Index: /issm/trunk-jpl/src/c/solutions/hydrology_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/hydrology_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/hydrology_core.cpp	(revision 11827)
@@ -21,5 +21,5 @@
 	double starttime,final_time;
 	double dt;
-	bool   control_analysis;
+	bool   save_results;
 	int    solution_type;
 	int    output_frequency;
@@ -29,5 +29,5 @@
 	femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
 	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
@@ -54,17 +54,14 @@
 		hydrology_core_step(femmodel,i,time);
 
-		if(solution_type==HydrologySolutionEnum && !control_analysis && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
-			
+		if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
 			_printf_(VerboseSolution(),"   saving results \n");
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum,i+1,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVxEnum,i+1,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVyEnum,i+1,time);
+			//InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum,i+1,time);
+			//InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVxEnum,i+1,time);
+			//InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVyEnum,i+1,time);
 			
 			/*unload results*/
 			_printf_(VerboseSolution(),"   saving temporary results\n");
-			OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,&femmodel->results);
-
+			OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
 		}
-
 	}
 }
Index: /issm/trunk-jpl/src/c/solutions/issm.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/issm.cpp	(revision 11827)
@@ -114,5 +114,5 @@
 
 	_printf_(true,"write results to disk:\n");
-	OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,&femmodel->results);
+	OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
 
 	/*Close output and petsc options file and write lock file if requested*/
Index: /issm/trunk-jpl/src/c/solutions/prognostic_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/prognostic_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/prognostic_core.cpp	(revision 11827)
@@ -16,5 +16,5 @@
 	/*parameters: */
 	int solution_type;
-	bool control_analysis;
+	bool save_results;
 
 	/*activate formulation: */
@@ -22,5 +22,5 @@
 	
 	/*recover parameters: */
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -28,9 +28,7 @@
 	solver_linear(femmodel);
 		
-	if(solution_type==PrognosticSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
 	}
-	
 }
-
Index: /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/steadystate_core.cpp	(revision 11827)
@@ -25,5 +25,5 @@
 
 	/*parameters: */
-	bool control_analysis,isenthalpy;
+	bool save_results,isenthalpy;
 	int  dim;
 	int  solution_type;
@@ -34,5 +34,5 @@
 	/* recover parameters:*/
 	femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&maxiter,SteadystateMaxiterEnum);
@@ -81,5 +81,5 @@
 	}
 	
-	if(solution_type==SteadystateSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
Index: /issm/trunk-jpl/src/c/solutions/surfaceslope_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/surfaceslope_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/surfaceslope_core.cpp	(revision 11827)
@@ -17,10 +17,10 @@
 	bool isstokes;
 	bool ishutter;
-	bool control_analysis;
+	bool save_results;
 	int solution_type;
 
 	/*Recover some parameters: */
 	femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 
@@ -33,5 +33,5 @@
 	solver_linear(femmodel);
 	
-	if(solution_type==SurfaceSlopeSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"saving results:\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceSlopeXEnum);
Index: /issm/trunk-jpl/src/c/solutions/thermal_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/thermal_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/thermal_core.cpp	(revision 11827)
@@ -19,10 +19,10 @@
 	/*intermediary*/
 	double melting_offset;
-	bool   control_analysis;
+	bool   save_results;
 	int    solution_type;
 	bool   dakota_analysis  = false;
 
 	//first recover parameters common to all solutions
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
@@ -36,9 +36,8 @@
 	thermal_core_step(femmodel);
 
-	if(solution_type==ThermalSolutionEnum && !control_analysis){
+	if(save_results){
 		_printf_(VerboseSolution(),"   saving results\n");
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum);
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum);
 	}
-
 }
Index: /issm/trunk-jpl/src/c/solutions/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/c/solutions/transient_core.cpp	(revision 11827)
@@ -24,6 +24,6 @@
 	/*parameters: */
 	double starttime,finaltime,dt,yts;
-	bool   control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy;
-	bool   dakota_analysis=false;
+	bool   isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy;
+	bool   save_results,dakota_analysis;
 	bool   time_adapt=false;
 	int    solution_type;
@@ -43,5 +43,4 @@
 	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
-	femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
 	femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
@@ -87,6 +86,12 @@
 		time+=dt;
 		femmodel->parameters->SetParam(time,TimeEnum);
+		femmodel->parameters->SetParam(step,StepEnum);
 
 		_printf_(VerboseSolution(),"iteration %i/%g  time [yr]: %-7.3g (time step: %.2g)\n",step,floor((finaltime-time)/dt)+step,time/yts,dt/yts);
+		if(step%output_frequency==0 || time==finaltime)
+		 save_results=true;
+		else
+		 save_results=false;
+		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
 
 		if(isthermal && dim==3){
@@ -129,27 +134,15 @@
 		}
 
-		//save should be done by the analysis... see control_core
-		if(solution_type==TransientSolutionEnum && !control_analysis && (step%output_frequency==0 || time==finaltime)){
-			_printf_(VerboseSolution(),"   saving results\n");
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzMeshEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum,step,time);
-			if(dim==3) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum,step,time);
-			if(isdiagnostic)InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VelEnum,step,time);
-			if(isdiagnostic)InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time);
-			if(dim==3 && isthermal) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,step,time);
-			if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum,step,time);
-			if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EnthalpyEnum,step,time);
-			if(!isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum,step,time);
-			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum,step,time);
-			RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs,step,time);
+		/*unload results*/
+		if(save_results){
+			_printf_(VerboseSolution(),"   saving transient results\n");
+			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceEnum);
+			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum);
+			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum);
+			InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum);
+			RequestedOutputsx(femmodel->results,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);
 
-			/*unload results*/
 			_printf_(VerboseSolution(),"   saving temporary results\n");
-			OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,&femmodel->results);
+			OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
 		}
 	}
Index: /issm/trunk-jpl/src/m/enum/SaveResultsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SaveResultsEnum.m	(revision 11827)
+++ /issm/trunk-jpl/src/m/enum/SaveResultsEnum.m	(revision 11827)
@@ -0,0 +1,11 @@
+function macro=SaveResultsEnum()
+%SAVERESULTSENUM - Enum of SaveResults
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=SaveResultsEnum()
+
+macro=StringToEnum('SaveResults');
Index: /issm/trunk-jpl/src/m/enum/StepEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/StepEnum.m	(revision 11827)
+++ /issm/trunk-jpl/src/m/enum/StepEnum.m	(revision 11827)
@@ -0,0 +1,11 @@
+function macro=StepEnum()
+%STEPENUM - Enum of Step
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=StepEnum()
+
+macro=StringToEnum('Step');
Index: /issm/trunk-jpl/src/m/model/plot/plotmodel.m
===================================================================
--- /issm/trunk-jpl/src/m/model/plot/plotmodel.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/model/plot/plotmodel.m	(revision 11827)
@@ -48,4 +48,5 @@
 		for i=1:numberofplots,
 			plot_manager(getfieldvalue(options.list{i},'model',md),options.list{i},subplotwidth,nlines,ncols,i);
+			cbfreeze;
 		end
 	catch me,
Index: /issm/trunk-jpl/src/m/solutions/adjointbalancethickness_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/adjointbalancethickness_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/adjointbalancethickness_core.m	(revision 11827)
@@ -6,5 +6,5 @@
 
 	%recover parameters common to all solutions
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -24,5 +24,5 @@
 	%Save results
 	femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
-	if(solution_type==AdjointSolutionEnum & ~control_analysis)
+	if(save_results),
 		issmprintf(VerboseSolution,'   saving results');
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointEnum);
Index: /issm/trunk-jpl/src/m/solutions/adjointdiagnostic_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/adjointdiagnostic_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/adjointdiagnostic_core.m	(revision 11827)
@@ -8,5 +8,5 @@
 	isstokes=femmodel.parameters.FlowequationIsstokes;
 	dim=femmodel.parameters.MeshDimension;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 	conserve_loads=true;
@@ -26,5 +26,5 @@
 
 	%save results
-	if(solution_type==AdjointSolutionEnum & ~control_analysis)
+	if(save_results),
 		issmprintf(VerboseSolution,'   saving results');
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,AdjointxEnum);
Index: /issm/trunk-jpl/src/m/solutions/balancethickness_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/balancethickness_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/balancethickness_core.m	(revision 11827)
@@ -7,5 +7,5 @@
 	%recover parameters common to all solutions
 	dim=femmodel.parameters.MeshDimension;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -16,5 +16,5 @@
 	femmodel=solver_linear(femmodel);
 
-	if (solution_type==BalancethicknessSolutionEnum & ~control_analysis),
+	if (save_results),
 		issmprintf(VerboseSolution,'   saving results');
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum);
Index: /issm/trunk-jpl/src/m/solutions/bedslope_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/bedslope_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/bedslope_core.m	(revision 11827)
@@ -8,5 +8,5 @@
 	%Recover some parameters:
 	dim=femmodel.parameters.MeshDimension;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -19,5 +19,5 @@
 	femmodel=solver_linear(femmodel);
 	
-	if (solution_type==BedSlopeSolutionEnum & ~control_analysis),
+	if (save_results),
 		issmprintf(VerboseSolution,'   saving results');
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedSlopeXEnum);
Index: /issm/trunk-jpl/src/m/solutions/control_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/control_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/control_core.m	(revision 11827)
@@ -19,4 +19,5 @@
 	dim=femmodel.parameters.MeshDimension;
 	isstokes=femmodel.parameters.FlowequationIsstokes;
+	femmodel.parameters.SaveResults=false;
 
 	%Initialise options with maxiter
@@ -75,5 +76,5 @@
 	%generate output
 	issmprintf(VerboseControl,'   preparing final velocity solution');
-	femmodel.parameters.InversionIscontrol=0;
+	femmodel.parameters.SaveResults=true;
 	eval(['femmodel=' solutioncore '(femmodel);']);
 
Index: /issm/trunk-jpl/src/m/solutions/diagnostic_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/diagnostic_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/diagnostic_core.m	(revision 11827)
@@ -17,5 +17,5 @@
 	isnewton=femmodel.parameters.DiagnosticIsnewton;
 	dakota_analysis=femmodel.parameters.QmuIsdakota;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -75,5 +75,5 @@
 	end
 
-	if (solution_type==DiagnosticSolutionEnum & ~control_analysis)
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum);
Index: /issm/trunk-jpl/src/m/solutions/enthalpy_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/enthalpy_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/enthalpy_core.m	(revision 11827)
@@ -6,5 +6,5 @@
 
 	%recover parameters common to all solutions
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -12,5 +12,5 @@
 	femmodel=enthalpy_core_step(femmodel); 
 
-	if (solution_type==EnthalpySolutionEnum & ~control_analysis),
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,EnthalpyEnum);
Index: /issm/trunk-jpl/src/m/solutions/prognostic_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/prognostic_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/prognostic_core.m	(revision 11827)
@@ -6,5 +6,5 @@
 
 	%recover parameters common to all solutions
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -15,5 +15,5 @@
 	femmodel=solver_linear(femmodel);
 	
-	if (solution_type==PrognosticSolutionEnum & ~control_analysis)
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum);
Index: /issm/trunk-jpl/src/m/solutions/steadystate_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/steadystate_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/steadystate_core.m	(revision 11827)
@@ -8,5 +8,5 @@
 	%recover parameters common to all solutions
 	dim=femmodel.parameters.MeshDimension;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 	isenthalpy=femmodel.parameters.ThermalIsenthalpy;
@@ -43,5 +43,5 @@
 	end
 
-	if (solution_type==SteadystateSolutionEnum & ~control_analysis),
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum);
Index: /issm/trunk-jpl/src/m/solutions/surfaceslope_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/surfaceslope_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/surfaceslope_core.m	(revision 11827)
@@ -8,5 +8,5 @@
 	%Recover some parameters:
 	dim=femmodel.parameters.MeshDimension;
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -18,5 +18,5 @@
 	femmodel=solver_linear(femmodel);
 	
-	if (solution_type==SurfaceSlopeSolutionEnum),
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceSlopeXEnum);
Index: /issm/trunk-jpl/src/m/solutions/thermal_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/thermal_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/thermal_core.m	(revision 11827)
@@ -7,5 +7,5 @@
 
 	%recover parameters common to all solutions
-	control_analysis=femmodel.parameters.InversionIscontrol;
+	save_results=femmodel.parameters.SaveResults;
 	solution_type=femmodel.parameters.SolutionType;
 
@@ -13,5 +13,5 @@
 	femmodel=thermal_core_step(femmodel); 
 
-	if (solution_type==ThermalSolutionEnum & ~control_analysis),
+	if (save_results),
 		issmprintf(VerboseSolution,'\n%s',['   saving results']);
 		femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,TemperatureEnum);
Index: /issm/trunk-jpl/src/m/solutions/transient_core.m
===================================================================
--- /issm/trunk-jpl/src/m/solutions/transient_core.m	(revision 11826)
+++ /issm/trunk-jpl/src/m/solutions/transient_core.m	(revision 11827)
@@ -11,5 +11,4 @@
 	dt=femmodel.parameters.TimesteppingTimeStep;
 	yts=femmodel.parameters.ConstantsYts;
-	control_analysis=femmodel.parameters.InversionIscontrol;
 	solution_type=femmodel.parameters.SolutionType;
 	output_frequency=femmodel.parameters.SettingsOutputFrequency;
@@ -54,6 +53,13 @@
 		time=time+dt;
 		femmodel.parameters.Time=time;
+		femmodel.parameters.Step=step;
 
 		issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr] ',time/yts,' iteration number: ',step,'/',floor((finaltime-starttime)/dt));
+		if(mod(step,output_frequency)==0 | time==ndt),
+			save_results=true;
+		else
+			save_results=false;
+		end
+		femmodel.parameters.SaveResults=save_results;
 
 		if (isthermal & dim==3)
@@ -85,18 +91,8 @@
 		end
 
-		if (solution_type==TransientSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time==finaltime)),
-			issmprintf(VerboseSolution,'\n%s',['   saving results']);
-			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum,step,time);
-			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VyEnum,step,time);
-			if (dim==3), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VzEnum,step,time); end
-			if (isdiagnostic), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VelEnum,step,time); end
-			if (isdiagnostic), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,PressureEnum,step,time); end
-			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,ThicknessEnum,step,time);
+		if (save_results),
+			issmprintf(VerboseSolution,'\n%s',['   saving transient results']);
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceEnum,step,time);
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedEnum,step,time);
-			if (dim==3 & isthermal), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,TemperatureEnum,step,time);end
-			if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,WaterfractionEnum,step,time);end
-			if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,EnthalpyEnum,step,time);end
-			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BasalforcingsMeltingRateEnum,step,time);
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceforcingsMassBalanceEnum,step,time);
 			femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,MaskElementonfloatingiceEnum,step,time);
Index: /issm/trunk-jpl/src/mex/InputToResult/InputToResult.cpp
===================================================================
--- /issm/trunk-jpl/src/mex/InputToResult/InputToResult.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/mex/InputToResult/InputToResult.cpp	(revision 11827)
@@ -42,16 +42,6 @@
 	loads->     Configure(elements, loads, nodes,vertices, materials,parameters);
 
-	if(nrhs==9){
-		FetchMatlabData(&step,STEP);
-		FetchMatlabData(&time,TIME);
-
-		/*!Call core code: */
-		InputToResultx( elements, nodes, vertices, loads, materials,parameters,enum_type, step,time);
-	}
-	else{
-
-		/*!Call core code: */
-		InputToResultx( elements, nodes, vertices, loads, materials,parameters,enum_type);
-	}
+	/*Call core code: */
+	InputToResultx( elements, nodes, vertices, loads, materials,parameters,enum_type);
 
 	/*write output : */
Index: /issm/trunk-jpl/src/mex/OutputResults/OutputResults.cpp
===================================================================
--- /issm/trunk-jpl/src/mex/OutputResults/OutputResults.cpp	(revision 11826)
+++ /issm/trunk-jpl/src/mex/OutputResults/OutputResults.cpp	(revision 11827)
@@ -43,5 +43,5 @@
 
 	/*Call "x" code layer: */
-	OutputResultsx(&dataref, elements,nodes,vertices,loads,materials,parameters,&results);
+	OutputResultsx(&dataref, elements,nodes,vertices,loads,materials,parameters,results);
 
 	/*write output datasets: */
