Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9109)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9110)
@@ -532,5 +532,5 @@
 	EpsvelEnum,
 	MeanvelEnum,
-	ParameteroutputEnum,
+	Fake30Enum,
 	OutputfilenameEnum,
 	WaterfractionEnum,
@@ -542,5 +542,8 @@
 	QmuMassFluxNumProfilesEnum,
 	PartEnum,
-	MaxSteadystateIterationsEnum
+	MaxSteadystateIterationsEnum,
+	RequestedOutputsEnum,
+	BasalFrictionEnum,
+	ViscousHeatingEnum
 };
 
Index: /issm/trunk/src/c/Makefile.am
===================================================================
--- /issm/trunk/src/c/Makefile.am	(revision 9109)
+++ /issm/trunk/src/c/Makefile.am	(revision 9110)
@@ -666,4 +666,6 @@
 					./modules/Responsex/Responsex.h\
 					./modules/Responsex/Responsex.cpp\
+					./modules/RequestedOutputsx/RequestedOutputsx.h\
+					./modules/RequestedOutputsx/RequestedOutputsx.cpp\
 					./modules/Scotchx/Scotchx.cpp\
 					./modules/Scotchx/Scotchx.h\
@@ -1341,4 +1343,6 @@
 					./modules/Responsex/Responsex.h\
 					./modules/Responsex/Responsex.cpp\
+					./modules/RequestedOutputsx/RequestedOutputsx.h\
+					./modules/RequestedOutputsx/RequestedOutputsx.cpp\
 					./modules/Solverx/Solverx.cpp\
 					./modules/Solverx/Solverx.h\
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9109)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9110)
@@ -473,5 +473,5 @@
 		case EpsvelEnum : return "Epsvel";
 		case MeanvelEnum : return "Meanvel";
-		case ParameteroutputEnum : return "Parameteroutput";
+		case Fake30Enum : return "Fake30";
 		case OutputfilenameEnum : return "Outputfilename";
 		case WaterfractionEnum : return "Waterfraction";
@@ -484,4 +484,7 @@
 		case PartEnum : return "Part";
 		case MaxSteadystateIterationsEnum : return "MaxSteadystateIterations";
+		case RequestedOutputsEnum : return "RequestedOutputs";
+		case BasalFrictionEnum : return "BasalFriction";
+		case ViscousHeatingEnum : return "ViscousHeating";
 		default : return "unknown";
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9109)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9110)
@@ -18,6 +18,6 @@
 	Parameters* parameters = NULL;
 
-	char**   parameteroutput=NULL;
-	int      numparameters=0;
+	double*     requestedoutputs=NULL;
+	int      numoutputs=0;
 	
 	if(*pparameters)return; //do not create parameters twice!
@@ -81,9 +81,10 @@
 	xfree((void**)&iomodel->riftinfo); 
 
+
+	/*Requested output?*/
+	IoModelFetchData(&requestedoutputs,&numoutputs,NULL,iomodel_handle,RequestedOutputsEnum);
+	parameters->AddObject(new IntVecParam(RequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
 	
-	/*Deal with parametr outputs: */
-	IoModelFetchData(&parameteroutput,&numparameters,iomodel_handle,ParameteroutputEnum);
-	if(numparameters) parameters->AddObject(new StringArrayParam(ParameteroutputEnum,parameteroutput,numparameters));
-
 	/*Before returning, create parameters in case we are running Qmu or control types runs: */
 	CreateParametersControl(&parameters,iomodel,iomodel_handle,solution_type,analysis_type);
Index: /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 9110)
+++ /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 9110)
@@ -0,0 +1,37 @@
+/*!\file RequestedOutputsx
+ * \brief: compute outputs that were requested specifically for this solution, such as BasalStress, StrainHeating, etc ...
+ */
+
+#include "../../modules/modules.h"
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../toolkits/toolkits.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+
+void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int step, double time){
+
+
+	int  i,o;
+	int  numoutputs        = 0;
+	int *requested_outputs = NULL;
+	int  output_enum;
+	Element* element=NULL;
+
+	/*retrieve parameters: */
+	parameters->FindParam(&requested_outputs,&numoutputs,RequestedOutputsEnum);
+
+	if(numoutputs){
+		for(o=0;o<numoutputs;o++){
+			output_enum=requested_outputs[o];
+			/*create this output in the element inputs, and then transfer to results: */
+			for(i=0;i<elements->Size();i++){
+				element=(Element*)elements->GetObjectByOffset(i);
+				element->RequestedOutput(output_enum,step,time);
+			}
+		}
+	}
+		
+	/*Free ressources:*/
+	xfree((void**)&requested_outputs);
+
+}
Index: /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h
===================================================================
--- /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 9110)
+++ /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 9110)
@@ -0,0 +1,14 @@
+/*!\file:  RequestedOutputsx.h
+ * \brief header file for  requesting outputs
+ */ 
+
+#ifndef _REQUESTED_OUTPUTSX_H_
+#define _REQUESTED_OUTPUTSX_H_
+
+#include "../../Container/Container.h"
+
+/* local prototypes: */
+void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int step=1, double time=0);
+
+#endif  /* _INPUTTORESULTX_H */
+
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9109)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9110)
@@ -471,5 +471,5 @@
 	else if (strcmp(name,"Epsvel")==0) return EpsvelEnum;
 	else if (strcmp(name,"Meanvel")==0) return MeanvelEnum;
-	else if (strcmp(name,"Parameteroutput")==0) return ParameteroutputEnum;
+	else if (strcmp(name,"Fake30")==0) return Fake30Enum;
 	else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
 	else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
@@ -482,4 +482,7 @@
 	else if (strcmp(name,"Part")==0) return PartEnum;
 	else if (strcmp(name,"MaxSteadystateIterations")==0) return MaxSteadystateIterationsEnum;
+	else if (strcmp(name,"RequestedOutputs")==0) return RequestedOutputsEnum;
+	else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
+	else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
 	else _error_("Enum %s not found",name);
 
Index: /issm/trunk/src/c/modules/modules.h
===================================================================
--- /issm/trunk/src/c/modules/modules.h	(revision 9109)
+++ /issm/trunk/src/c/modules/modules.h	(revision 9110)
@@ -91,4 +91,5 @@
 #include "./Reducevectorgtosx/Reducevectorgtosx.h"
 #include "./Reducevectorgtofx/Reducevectorgtofx.h"
+#include "./RequestedOutputsx/RequestedOutputsx.h"
 #include "./Responsex/Responsex.h"
 #include "./RheologyBbarx/RheologyBbarx.h"
Index: /issm/trunk/src/c/objects/Elements/Element.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Element.h	(revision 9109)
+++ /issm/trunk/src/c/objects/Elements/Element.h	(revision 9110)
@@ -67,4 +67,5 @@
 		virtual void   ControlInputScaleGradient(int enum_type, double scale)=0;
 		virtual void   ProcessResultsUnits(void)=0;
+		virtual void   RequestedOutput(int output_enum,int step,double time)=0;
 		virtual void   MinVel(double* pminvel, bool process_units)=0;
 		virtual void   MaxVel(double* pmaxvel, bool process_units)=0;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9109)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9110)
@@ -341,4 +341,59 @@
 	*(bed_normal+1)=-normal[1]/normal_norm;
 	*(bed_normal+2)=-normal[2]/normal_norm;
+}
+/*}}}*/
+/*FUNCTION Penta::BasalFrictionCreateInput {{{1*/
+void Penta::BasalFrictionCreateInput(void){
+
+	/*Constants*/
+	const int  numdof=NUMVERTICES*NDOF1;
+
+	/*Intermediaries */
+	int        count,ig;
+	int        drag_type;
+	double     basalfriction[NUMVERTICES]={0,0,0,0,0,0};
+	double alpha2,vx,vy;
+	Friction*  friction=NULL;
+	GaussPenta* gauss=NULL;
+
+
+	/* Basal friction can only be found at the base of an ice sheet: */
+	if (!IsOnBed() || IsOnShelf()){
+		//empty friction: 
+		this->inputs->AddInput(new PentaVertexInput(BasalFrictionEnum,&basalfriction[0]));
+		return;
+	}
+
+	/*Retrieve all inputs and parameters*/
+	Input* vx_input=inputs->GetInput(VxEnum);                         _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum);                         _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum);                         _assert_(vz_input);
+
+
+	/*Build friction element, needed later: */
+	inputs->GetParameterValue(&drag_type,DragTypeEnum);
+	if (drag_type!=2)_error_(" non-viscous friction not supported yet!");
+	friction=new Friction("3d",inputs,matpar,DiagnosticHorizAnalysisEnum);
+
+	/* Start looping on the number of gauss 2d (nodes on the bedrock) */
+	gauss=new GaussPenta(0,1,2,2);
+	count=0;
+	for(ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);
+		vx_input->GetParameterValue(&vx,gauss);
+		vy_input->GetParameterValue(&vy,gauss);
+		basalfriction[count]=alpha2*(pow(vx,2.0)+pow(vy,2.0));
+		count++;
+	}
+	
+	/*Create PentaVertex input, which will hold the basal friction:*/
+	this->inputs->AddInput(new PentaVertexInput(BasalFrictionEnum,&basalfriction[0]));
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
 }
 /*}}}*/
@@ -5146,5 +5201,7 @@
 	if (enum_type==RheologyBbarEnum) input=this->matice->inputs->GetInput(RheologyBEnum);
 	else input=this->inputs->GetInput(enum_type);
-	if (!input) _error_("Input %s not found in penta->inputs",EnumToStringx(enum_type));
+	//if (!input) _error_("Input %s not found in penta->inputs",EnumToStringx(enum_type)); why error out? if the requested input does not exist, we should still 
+	//try and output whatever we can instead of just failing.
+	if(!input)return;
 
 	/*If we don't find it, no big deal, just don't do the transfer. Otherwise, build a new Result 
@@ -7027,4 +7084,45 @@
 	/*Affect value to the reduced matrix */
 	for(i=0;i<24;i++) *(Pe_reduced+i)=Pi[i]-Pright[i];
+}
+/*}}}*/
+/*FUNCTION Penta::RequestedOutput{{{1*/
+void Penta::RequestedOutput(int output_enum,int step,double time){
+			
+	if(IsInput(output_enum)){
+		/*just transfer this input to results, and we are done: */
+		InputToResult(output_enum,step,time);
+	}
+	else{
+		/*this input does not exist, compute it, and then transfer to results: */
+		switch(output_enum){
+			case BasalFrictionEnum:
+
+				/*create input: */
+				BasalFrictionCreateInput();
+
+				/*transfer to results :*/
+				InputToResult(output_enum,step,time);
+
+				/*erase input: */
+				inputs->DeleteInput(output_enum);
+				break;
+			case ViscousHeatingEnum:
+
+				/*create input: */
+				ViscousHeatingCreateInput();
+
+				/*transfer to results :*/
+				InputToResult(output_enum,step,time);
+
+				/*erase input: */
+				inputs->DeleteInput(output_enum);
+				break;
+
+			default:
+				/*do nothing, no need to derail the computation because one of the outputs requested cannot be found: */
+				break;
+		}
+	}
+
 }
 /*}}}*/
@@ -7614,2 +7712,45 @@
 }
 /*}}}*/
+/*FUNCTION Penta::ViscousHeatingCreateInput {{{1*/
+void Penta::ViscousHeatingCreateInput(void){
+
+	/*Constants*/
+	const int  numdof=NUMVERTICES*NDOF1;
+
+	/*Intermediaries*/
+	int    iv;
+	double phi;
+	double viscosity;
+	double xyz_list[NUMVERTICES][3];
+	double epsilon[6];
+	double     viscousheating[NUMVERTICES]={0,0,0,0,0,0};
+	GaussPenta *gauss=NULL;
+
+	/*Initialize Element vector*/
+	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
+	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+	Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);
+
+	/*loop over vertices: */
+	gauss=new GaussPenta();
+	for (int iv=0;iv<NUMVERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+		this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);
+		matice->GetViscosity3dStokes(&viscosity,&epsilon[0]);
+		GetPhi(&phi, &epsilon[0], viscosity);
+
+		viscousheating[iv]=phi;
+	}
+
+	/*Create PentaVertex input, which will hold the basal friction:*/
+	this->inputs->AddInput(new PentaVertexInput(ViscousHeatingEnum,&viscousheating[0]));
+
+	/*Clean up and return*/
+	delete gauss;
+}
+/*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 9109)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 9110)
@@ -75,4 +75,5 @@
 		/*Element virtual functions definitions: {{{1*/
 		void   AverageOntoPartition(Vec partition_contributions,Vec partition_areas,double* vertex_response,double* qmu_part);
+		void   BasalFrictionCreateInput(void);
 		void   ComputeBasalStress(Vec sigma_b);
 		void   ComputeStrainRate(Vec eps);
@@ -120,4 +121,5 @@
 		void   ShelfSync();
 		double RheologyBbarAbsGradient(bool process_units,int weight_index);
+		void   RequestedOutput(int output_enum,int step,double time);
 		double ThicknessAbsGradient(bool process_units,int weight_index);
 		void   MigrateGroundingLine();
@@ -143,4 +145,5 @@
 		int*   GetHorizontalNeighboorSids(void);
 		double RheologyBbarx(void);
+		void   ViscousHeatingCreateInput(void);
 		/*}}}*/
 		/*Penta specific routines:{{{1*/
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9109)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9110)
@@ -4679,4 +4679,22 @@
 }
 /*}}}*/
+/*FUNCTION Tria::RequestedOutput{{{1*/
+void Tria::RequestedOutput(int output_enum,int step,double time){
+
+	if(IsInput(output_enum)){
+		/*just transfer this input to results, and we are done: */
+		InputToResult(output_enum,step,time);
+	}
+	else{
+		/*this input does not exist, compute it, and then transfer to results: */
+		switch(output_enum){
+			default:
+				/*do nothing, no need to derail the computation because one of the outputs requested cannot be found: */
+				break;
+		}
+	}
+
+}
+/*}}}*/
 /*FUNCTION Tria::SetClone {{{1*/
 void  Tria::SetClone(int* minranks){
Index: /issm/trunk/src/c/objects/Elements/Tria.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.h	(revision 9109)
+++ /issm/trunk/src/c/objects/Elements/Tria.h	(revision 9110)
@@ -128,4 +128,5 @@
 		void   MinVy(double* pminvy, bool process_units);
 		void   MinVz(double* pminvz, bool process_units);
+		void   RequestedOutput(int output_enum,int step,double time);
 		double RheologyBbarAbsGradient(bool process_units,int weight_index);
 		double ThicknessAbsMisfit(     bool process_units,int weight_index);
Index: /issm/trunk/src/c/objects/Params/IntVecParam.h
===================================================================
--- /issm/trunk/src/c/objects/Params/IntVecParam.h	(revision 9109)
+++ /issm/trunk/src/c/objects/Params/IntVecParam.h	(revision 9110)
@@ -54,5 +54,5 @@
 		void  GetParameterValue(int* pinteger){_error_("IntVec param of enum %i (%s) cannot return an integer",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(int** pintarray,int* pM);
-		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("IntVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
+		void  GetParameterValue(int** pintarray,int* pM,int* pN){_error_("IntVec param of enum %i (%s) cannot return a matrix",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(double* pdouble){_error_("IntVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));}
 		void  GetParameterValue(char** pstring){_error_("IntVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 9109)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 9110)
@@ -24,4 +24,6 @@
 	bool   control_analysis;
 	int    solution_type;
+	int    numoutputs=0;
+	int*   requested_outputs    = NULL;
 
 
@@ -34,4 +36,5 @@
 	femmodel->parameters->FindParam(&control_analysis,ControlAnalysisEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&requested_outputs,&numoutputs,RequestedOutputsEnum);
 
 	/*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/
@@ -88,4 +91,9 @@
 		InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,PressureEnum);
 		if(dim==3) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VzEnum);
+		if(numoutputs)RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
 	}
+
+	/*Free ressources:*/
+	xfree((void**)&requested_outputs);
+
 }
Index: /issm/trunk/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 9109)
+++ /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 9110)
@@ -22,4 +22,6 @@
 	int max_steadystate_iterations;
 	bool control_analysis;
+	int    numoutputs=0;
+	int*   requested_outputs    = NULL;
 	
 	/* recover parameters:*/
@@ -28,4 +30,5 @@
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&max_steadystate_iterations,MaxSteadystateIterationsEnum);
+	femmodel->parameters->FindParam(&requested_outputs,&numoutputs,RequestedOutputsEnum);
 
 	/*intialize counters: */
@@ -69,4 +72,9 @@
 		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,BasalMeltingRateEnum);
+		if(numoutputs)RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
 	}
+
+	/*Free ressources:*/
+	xfree((void**)&requested_outputs);
+
 }
Index: /issm/trunk/src/m/classes/model.m
===================================================================
--- /issm/trunk/src/m/classes/model.m	(revision 9109)
+++ /issm/trunk/src/m/classes/model.m	(revision 9110)
@@ -236,5 +236,5 @@
 		 num_cm_responses                    = {0,true,'Integer'};
 		 %Output
-		 parameteroutput                     = {{},true,'StringArray'};
+		 requested_outputs                    = {{},true,'DoubleMat',3};
 		 viscousheating                      = {NaN,false};
 		 pressure_elem                       = {NaN,false};
Index: /issm/trunk/src/m/enum/BasalFrictionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BasalFrictionEnum.m	(revision 9110)
+++ /issm/trunk/src/m/enum/BasalFrictionEnum.m	(revision 9110)
@@ -0,0 +1,11 @@
+function macro=BasalFrictionEnum()
+%BASALFRICTIONENUM - Enum of BasalFriction
+%
+%   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=BasalFrictionEnum()
+
+macro=StringToEnum('BasalFriction');
Index: /issm/trunk/src/m/enum/Fake29Enum.m
===================================================================
--- /issm/trunk/src/m/enum/Fake29Enum.m	(revision 9110)
+++ /issm/trunk/src/m/enum/Fake29Enum.m	(revision 9110)
@@ -0,0 +1,11 @@
+function macro=Fake29Enum()
+%FAKE29ENUM - Enum of Fake29
+%
+%   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=Fake29Enum()
+
+macro=StringToEnum('Fake29');
Index: /issm/trunk/src/m/enum/Fake30Enum.m
===================================================================
--- /issm/trunk/src/m/enum/Fake30Enum.m	(revision 9110)
+++ /issm/trunk/src/m/enum/Fake30Enum.m	(revision 9110)
@@ -0,0 +1,11 @@
+function macro=Fake30Enum()
+%FAKE30ENUM - Enum of Fake30
+%
+%   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=Fake30Enum()
+
+macro=StringToEnum('Fake30');
Index: sm/trunk/src/m/enum/ParameteroutputEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ParameteroutputEnum.m	(revision 9109)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ParameteroutputEnum()
-%PARAMETEROUTPUTENUM - Enum of Parameteroutput
-%
-%   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=ParameteroutputEnum()
-
-macro=StringToEnum('Parameteroutput');
Index: /issm/trunk/src/m/enum/RequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RequestedOutputsEnum.m	(revision 9110)
+++ /issm/trunk/src/m/enum/RequestedOutputsEnum.m	(revision 9110)
@@ -0,0 +1,11 @@
+function macro=RequestedOutputsEnum()
+%REQUESTEDOUTPUTSENUM - Enum of RequestedOutputs
+%
+%   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=RequestedOutputsEnum()
+
+macro=StringToEnum('RequestedOutputs');
Index: /issm/trunk/src/m/enum/ViscousHeatingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ViscousHeatingEnum.m	(revision 9110)
+++ /issm/trunk/src/m/enum/ViscousHeatingEnum.m	(revision 9110)
@@ -0,0 +1,11 @@
+function macro=ViscousHeatingEnum()
+%VISCOUSHEATINGENUM - Enum of ViscousHeating
+%
+%   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=ViscousHeatingEnum()
+
+macro=StringToEnum('ViscousHeating');
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9109)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9110)
@@ -101,4 +101,7 @@
 fields={'diagnostic_ref'};
 checksize(md,fields,[md.numberofnodes 6]);
+if(size(md.requested_outputs,2)~=1),
+	message(['model ' md.name ' requested outputs should be a column vector']);
+end
 %}}}
 %THICKNESS = SURFACE - BED {{{1
@@ -259,7 +262,7 @@
 	end
 	if ~md.qmu_relax,
-		if md.eps_rel>1.1*10^-5,
-			message(['model not consistent: for qmu analysis, eps_rel should be least than 10^-5, 10^-15 being a better value']);
-		end
+		%if md.eps_rel>1.1*10^-5,
+		%	message(['model not consistent: for qmu analysis, eps_rel should be least than 10^-5, 10^-15 being a better value']);
+		%end
 	end
 end
Index: /issm/trunk/src/m/usr/larour/Alias/cdice2.m
===================================================================
--- /issm/trunk/src/m/usr/larour/Alias/cdice2.m	(revision 9110)
+++ /issm/trunk/src/m/usr/larour/Alias/cdice2.m	(revision 9110)
@@ -0,0 +1,1 @@
+cd([issmdir '/projects/LarourIceSat2Proposal']);
