Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9678)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9679)
@@ -42,4 +42,5 @@
 	ThermalPenaltyFactorEnum,
 	ThermalRequestedOutputsEnum,
+	ThermalNumRequestedOutputsEnum,
 	MiscellaneousNameEnum, //FIXME: only used by qmu, should not be marshalled (already in queueing script)
 	TimesteppingTimeStepEnum,
@@ -53,4 +54,5 @@
 	PrognosticPenaltyFactorEnum,
 	PrognosticRequestedOutputsEnum,
+	PrognosticNumRequestedOutputsEnum,
 	MaterialsRheologyBEnum,
 	MaterialsRheologyBbarEnum,
@@ -83,4 +85,5 @@
 	BalancethicknessStabilizationEnum,
 	BalancethicknessRequestedOutputsEnum,
+	BalancethicknessNumRequestedOutputsEnum,
 	FlowequationIshutterEnum,
 	FlowequationIsmacayealpattynEnum,
@@ -92,4 +95,5 @@
 	FlowequationBordermacayealEnum,
 	SteadystateRequestedOutputsEnum,
+	SteadystateNumRequestedOutputsEnum,
 	SteadystateReltolEnum,
 	SteadystateMaxiterEnum,
@@ -99,4 +103,23 @@
 	TransientIsgroundinglineEnum,
 	TransientRequestedOutputsEnum,
+	TransientNumRequestedOutputsEnum,
+	DiagnosticSpcvxEnum,
+	DiagnosticSpcvyEnum,
+	DiagnosticSpcvzEnum,
+	DiagnosticStokesreconditioningEnum,
+	DiagnosticIcefrontEnum,
+	DiagnosticReferentialEnum,
+	DiagnosticVertexPairingEnum,
+	DiagnosticPenaltyFactorEnum,
+	DiagnosticAbstolEnum,
+	DiagnosticReltolEnum,
+	DiagnosticRestolEnum,
+	DiagnosticMaxiterEnum,
+	DiagnosticShelfDampeningEnum,
+	DiagnosticRiftPenaltyLockEnum,
+	DiagnosticRiftPenaltyThresholdEnum,
+	DiagnosticRequestedOutputsEnum,
+	DiagnosticNumRequestedOutputsEnum,
+	DiagnosticViscosityOvershootEnum,
 	/*}}}*/
 	/*Datasets {{{1*/
@@ -277,5 +300,4 @@
 	NodeonsurfaceEnum,
 	NumberNodeToElementConnectivityEnum,
-	PenaltyOffsetEnum,
 	PressureEnum,
 	PressurePicardEnum,
@@ -284,5 +306,4 @@
 	ResetPenaltiesEnum,
 	SegmentOnIceShelfEnum,
-	ShelfDampeningEnum,
 	SurfaceAreaEnum,
 	SurfaceEnum,
@@ -298,5 +319,4 @@
 	VelEnum,
 	VelObsEnum,
-	ViscosityOvershootEnum,
 	VxAverageEnum,
 	VxEnum,
@@ -387,10 +407,5 @@
 	ControlSteadyEnum,
 	DimEnum,
-	EpsAbsEnum,
 	EpsCmEnum,
-	EpsRelEnum,
-	EpsResEnum,
-	MaxNonlinearIterationsEnum,
-	MinMechanicalConstraintsEnum,
 	NumberOfElementsEnum,
 	NumberOfVerticesEnum,
@@ -446,13 +461,7 @@
 	NumberOfElements2DEnum,
 	NumControlTypeEnum,
-	SpcvyEnum,
 	YEnum,
-	PenaltiesEnum,
-	PressureloadEnum,
-	SpcvzEnum,
 	NumberOfNodes2DEnum,
 	ZEnum,
-	PenaltyLockEnum,
-	SpcvxEnum,
 	UpperelementsEnum,
 	EdgesEnum,
@@ -462,6 +471,4 @@
 	ElementconnectivityEnum,
 	NumlayersEnum,
-	DiagnosticRefEnum,
-	StokesreconditioningEnum,
 	LowerelementsEnum,
 	NstepsEnum,
@@ -474,7 +481,4 @@
 	WaitonlockEnum,
 	NumberOfResponsesEnum,
-
-	RequestedOutputsEnum,
-	NumRequestedOutputsEnum,
 	BasalFrictionEnum,
 	ViscousHeatingEnum,
Index: /issm/trunk/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp
===================================================================
--- /issm/trunk/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ConstraintsStatex/ConstraintsStatex.cpp	(revision 9679)
@@ -27,5 +27,5 @@
 
 	/*recover parameters: */
-	parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
+	parameters->FindParam(&min_mechanical_constraints,DiagnosticRiftPenaltyThresholdEnum);
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9679)
@@ -46,4 +46,5 @@
 		case ThermalPenaltyFactorEnum : return "ThermalPenaltyFactor";
 		case ThermalRequestedOutputsEnum : return "ThermalRequestedOutputs";
+		case ThermalNumRequestedOutputsEnum : return "ThermalNumRequestedOutputs";
 		case MiscellaneousNameEnum : return "MiscellaneousName";
 		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
@@ -57,4 +58,5 @@
 		case PrognosticPenaltyFactorEnum : return "PrognosticPenaltyFactor";
 		case PrognosticRequestedOutputsEnum : return "PrognosticRequestedOutputs";
+		case PrognosticNumRequestedOutputsEnum : return "PrognosticNumRequestedOutputs";
 		case MaterialsRheologyBEnum : return "MaterialsRheologyB";
 		case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar";
@@ -87,4 +89,5 @@
 		case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
 		case BalancethicknessRequestedOutputsEnum : return "BalancethicknessRequestedOutputs";
+		case BalancethicknessNumRequestedOutputsEnum : return "BalancethicknessNumRequestedOutputs";
 		case FlowequationIshutterEnum : return "FlowequationIshutter";
 		case FlowequationIsmacayealpattynEnum : return "FlowequationIsmacayealpattyn";
@@ -96,4 +99,5 @@
 		case FlowequationBordermacayealEnum : return "FlowequationBordermacayeal";
 		case SteadystateRequestedOutputsEnum : return "SteadystateRequestedOutputs";
+		case SteadystateNumRequestedOutputsEnum : return "SteadystateNumRequestedOutputs";
 		case SteadystateReltolEnum : return "SteadystateReltol";
 		case SteadystateMaxiterEnum : return "SteadystateMaxiter";
@@ -103,4 +107,23 @@
 		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
 		case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
+		case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
+		case DiagnosticSpcvxEnum : return "DiagnosticSpcvx";
+		case DiagnosticSpcvyEnum : return "DiagnosticSpcvy";
+		case DiagnosticSpcvzEnum : return "DiagnosticSpcvz";
+		case DiagnosticStokesreconditioningEnum : return "DiagnosticStokesreconditioning";
+		case DiagnosticIcefrontEnum : return "DiagnosticIcefront";
+		case DiagnosticReferentialEnum : return "DiagnosticReferential";
+		case DiagnosticVertexPairingEnum : return "DiagnosticVertexPairing";
+		case DiagnosticPenaltyFactorEnum : return "DiagnosticPenaltyFactor";
+		case DiagnosticAbstolEnum : return "DiagnosticAbstol";
+		case DiagnosticReltolEnum : return "DiagnosticReltol";
+		case DiagnosticRestolEnum : return "DiagnosticRestol";
+		case DiagnosticMaxiterEnum : return "DiagnosticMaxiter";
+		case DiagnosticShelfDampeningEnum : return "DiagnosticShelfDampening";
+		case DiagnosticRiftPenaltyLockEnum : return "DiagnosticRiftPenaltyLock";
+		case DiagnosticRiftPenaltyThresholdEnum : return "DiagnosticRiftPenaltyThreshold";
+		case DiagnosticRequestedOutputsEnum : return "DiagnosticRequestedOutputs";
+		case DiagnosticNumRequestedOutputsEnum : return "DiagnosticNumRequestedOutputs";
+		case DiagnosticViscosityOvershootEnum : return "DiagnosticViscosityOvershoot";
 		case ConstraintsEnum : return "Constraints";
 		case ElementsEnum : return "Elements";
@@ -244,5 +267,4 @@
 		case NodeonsurfaceEnum : return "Nodeonsurface";
 		case NumberNodeToElementConnectivityEnum : return "NumberNodeToElementConnectivity";
-		case PenaltyOffsetEnum : return "PenaltyOffset";
 		case PressureEnum : return "Pressure";
 		case PressurePicardEnum : return "PressurePicard";
@@ -251,5 +273,4 @@
 		case ResetPenaltiesEnum : return "ResetPenalties";
 		case SegmentOnIceShelfEnum : return "SegmentOnIceShelf";
-		case ShelfDampeningEnum : return "ShelfDampening";
 		case SurfaceAreaEnum : return "SurfaceArea";
 		case SurfaceEnum : return "Surface";
@@ -265,5 +286,4 @@
 		case VelEnum : return "Vel";
 		case VelObsEnum : return "VelObs";
-		case ViscosityOvershootEnum : return "ViscosityOvershoot";
 		case VxAverageEnum : return "VxAverage";
 		case VxEnum : return "Vx";
@@ -339,10 +359,5 @@
 		case ControlSteadyEnum : return "ControlSteady";
 		case DimEnum : return "Dim";
-		case EpsAbsEnum : return "EpsAbs";
 		case EpsCmEnum : return "EpsCm";
-		case EpsRelEnum : return "EpsRel";
-		case EpsResEnum : return "EpsRes";
-		case MaxNonlinearIterationsEnum : return "MaxNonlinearIterations";
-		case MinMechanicalConstraintsEnum : return "MinMechanicalConstraints";
 		case NumberOfElementsEnum : return "NumberOfElements";
 		case NumberOfVerticesEnum : return "NumberOfVertices";
@@ -390,13 +405,7 @@
 		case NumberOfElements2DEnum : return "NumberOfElements2D";
 		case NumControlTypeEnum : return "NumControlType";
-		case SpcvyEnum : return "Spcvy";
 		case YEnum : return "Y";
-		case PenaltiesEnum : return "Penalties";
-		case PressureloadEnum : return "Pressureload";
-		case SpcvzEnum : return "Spcvz";
 		case NumberOfNodes2DEnum : return "NumberOfNodes2D";
 		case ZEnum : return "Z";
-		case PenaltyLockEnum : return "PenaltyLock";
-		case SpcvxEnum : return "Spcvx";
 		case UpperelementsEnum : return "Upperelements";
 		case EdgesEnum : return "Edges";
@@ -406,6 +415,4 @@
 		case ElementconnectivityEnum : return "Elementconnectivity";
 		case NumlayersEnum : return "Numlayers";
-		case DiagnosticRefEnum : return "DiagnosticRef";
-		case StokesreconditioningEnum : return "Stokesreconditioning";
 		case LowerelementsEnum : return "Lowerelements";
 		case NstepsEnum : return "Nsteps";
@@ -418,6 +425,4 @@
 		case WaitonlockEnum : return "Waitonlock";
 		case NumberOfResponsesEnum : return "NumberOfResponses";
-		case RequestedOutputsEnum : return "RequestedOutputs";
-		case NumRequestedOutputsEnum : return "NumRequestedOutputs";
 		case BasalFrictionEnum : return "BasalFriction";
 		case ViscousHeatingEnum : return "ViscousHeating";
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9679)
@@ -30,8 +30,8 @@
 	parameters->AddObject(iomodel->CopyConstantObject(FlowequationIsstokesEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(OutputFrequencyEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(EpsResEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(EpsRelEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(EpsAbsEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(MaxNonlinearIterationsEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticRestolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticReltolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticAbstolEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticMaxiterEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SteadystateMaxiterEnum));
@@ -43,5 +43,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(PrognosticHydrostaticAdjustmentEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(PrognosticStabilizationEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(PenaltyOffsetEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticPenaltyFactorEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyFactorEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(SettingsLowmemEnum));
@@ -55,8 +55,8 @@
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyThresholdEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyLockEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(MinMechanicalConstraintsEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(StokesreconditioningEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(ShelfDampeningEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(ViscosityOvershootEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticRiftPenaltyThresholdEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticStokesreconditioningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticShelfDampeningEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(DiagnosticViscosityOvershootEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(WaitonlockEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(NumberOfElementsEnum));
@@ -76,7 +76,27 @@
 
 	/*Requested output?*/
-	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,RequestedOutputsEnum);
-	parameters->AddObject(new IntParam(NumRequestedOutputsEnum,numoutputs));
-	if(numoutputs)parameters->AddObject(new IntVecParam(RequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,DiagnosticRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(DiagnosticNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(DiagnosticRequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,PrognosticRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(PrognosticNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(PrognosticRequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,ThermalRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(ThermalNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(ThermalRequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,TransientRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(TransientNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(TransientRequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,SteadystateRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(SteadystateNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(SteadystateRequestedOutputsEnum,requestedoutputs,numoutputs));
+	xfree((void**)&requestedoutputs);
+	iomodel->FetchData(&requestedoutputs,&numoutputs,NULL,BalancethicknessRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(BalancethicknessNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new IntVecParam(BalancethicknessRequestedOutputsEnum,requestedoutputs,numoutputs));
 	xfree((void**)&requestedoutputs);
 	
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp	(revision 9679)
@@ -44,5 +44,5 @@
 	iomodel->Constant(&g,ConstantsGEnum);
 	iomodel->Constant(&rho_ice,MaterialsRhoIceEnum);
-	iomodel->Constant(&stokesreconditioning,StokesreconditioningEnum);
+	iomodel->Constant(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	iomodel->Constant(&isstokes,FlowequationIsstokesEnum);
 	iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum);
@@ -61,7 +61,7 @@
 	
 	/*Constraints: fetch data: */
-	iomodel->FetchData(&spcvx,NULL,NULL,SpcvxEnum);
-	iomodel->FetchData(&spcvy,NULL,NULL,SpcvyEnum);
-	iomodel->FetchData(&spcvz,NULL,NULL,SpcvzEnum);
+	iomodel->FetchData(&spcvx,NULL,NULL,DiagnosticSpcvxEnum);
+	iomodel->FetchData(&spcvy,NULL,NULL,DiagnosticSpcvyEnum);
+	iomodel->FetchData(&spcvz,NULL,NULL,DiagnosticSpcvzEnum);
 	iomodel->FetchData(&nodeonmacayeal,NULL,NULL,FlowequationBordermacayealEnum);
 	if(dim==3)iomodel->FetchData(&nodeonpattyn,NULL,NULL,FlowequationBorderpattynEnum);
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp	(revision 9679)
@@ -60,6 +60,6 @@
 	/*Create pressure loads as boundary conditions. Pay attention to the partitioning if we are running in parallel (the nodes
 	 * referenced by a certain load must belong to the cluster node): */
-	iomodel->FetchData(3,PressureloadEnum,ThicknessEnum,BedEnum);
-	iomodel->FetchData(&pressureload,&numberofpressureloads,NULL,PressureloadEnum);
+	iomodel->FetchData(3,DiagnosticIcefrontEnum,ThicknessEnum,BedEnum);
+	iomodel->FetchData(&pressureload,&numberofpressureloads,NULL,DiagnosticIcefrontEnum);
 	iomodel->FetchData(&elements_type,NULL,NULL,FlowequationElementEquationEnum);
 
@@ -119,5 +119,5 @@
 
 	/*Free data: */
-	iomodel->DeleteData(3,PressureloadEnum,ThicknessEnum,BedEnum);
+	iomodel->DeleteData(3,DiagnosticIcefrontEnum,ThicknessEnum,BedEnum);
 	xfree((void**)&elements_type);
 	xfree((void**)&pressureload);
@@ -149,5 +149,5 @@
 
 	/*Create Penpair for penalties: */
-	iomodel->FetchData(&penalties,&numpenalties,NULL,PenaltiesEnum);
+	iomodel->FetchData(&penalties,&numpenalties,NULL,DiagnosticVertexPairingEnum);
 	
 	for(i=0;i<numpenalties;i++){
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp	(revision 9679)
@@ -46,5 +46,5 @@
 	/*Create nodes: */
 	iomodel->FetchData(9,NodeonbedEnum,NodeonsurfaceEnum,FlowequationBordermacayealEnum,FlowequationBorderstokesEnum,
-				MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MaskVertexonwaterEnum,FlowequationVertexEquationEnum,DiagnosticRefEnum);
+				MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MaskVertexonwaterEnum,FlowequationVertexEquationEnum,DiagnosticReferentialEnum);
 	
 	for (i=0;i<numberofvertices;i++){
@@ -59,5 +59,5 @@
 	/*Clean fetched data: */
 	iomodel->DeleteData(9,NodeonbedEnum,NodeonsurfaceEnum,FlowequationBordermacayealEnum,FlowequationBorderstokesEnum,
-				MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MaskVertexonwaterEnum,FlowequationVertexEquationEnum,DiagnosticRefEnum);
+				MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MaskVertexonwaterEnum,FlowequationVertexEquationEnum,DiagnosticReferentialEnum);
 
 	/*Assign output pointer: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp	(revision 9679)
@@ -42,5 +42,5 @@
 
 	/*Fetch data: */
-	iomodel->FetchData(3,SpcvxEnum,SpcvyEnum,FlowequationVertexEquationEnum);
+	iomodel->FetchData(3,DiagnosticSpcvxEnum,DiagnosticSpcvyEnum,FlowequationVertexEquationEnum);
 
 	/*Initialize conunter*/
@@ -60,11 +60,11 @@
 			}
 			else{
-				if (!isnan(iomodel->Data(SpcvxEnum)[i])){
-					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(SpcvxEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+				if (!isnan(iomodel->Data(DiagnosticSpcvxEnum)[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,iomodel->Data(DiagnosticSpcvxEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
 					count++;
 				}
 
-				if (!isnan(iomodel->Data(SpcvyEnum)[i])){
-					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data(SpcvyEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
+				if (!isnan(iomodel->Data(DiagnosticSpcvyEnum)[i])){
+					constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,iomodel->Data(DiagnosticSpcvyEnum)[i]/yts,DiagnosticHutterAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy
 					count++;
 				}
@@ -74,5 +74,5 @@
 
 	/*Free data: */
-	iomodel->DeleteData(3,SpcvxEnum,SpcvyEnum,FlowequationVertexEquationEnum);
+	iomodel->DeleteData(3,DiagnosticSpcvxEnum,DiagnosticSpcvyEnum,FlowequationVertexEquationEnum);
 	
 	/*Assign output pointer: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp	(revision 9679)
@@ -41,5 +41,5 @@
 
 	/*Fetch data: */
-	iomodel->FetchData(2,SpcvzEnum,FlowequationBorderstokesEnum);
+	iomodel->FetchData(2,DiagnosticSpcvzEnum,FlowequationBorderstokesEnum);
 
 	/*Initialize counter*/
@@ -56,7 +56,7 @@
 				count++;
 			}
-			else if (!isnan(iomodel->Data(SpcvzEnum)[i])){
+			else if (!isnan(iomodel->Data(DiagnosticSpcvzEnum)[i])){
 				constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,
-								iomodel->Data(SpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
+								iomodel->Data(DiagnosticSpcvzEnum)[i]/yts,DiagnosticVertAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx.
 				count++;
 
@@ -66,5 +66,5 @@
 
 	/*Free data: */
-	iomodel->DeleteData(2,SpcvzEnum,FlowequationBorderstokesEnum);
+	iomodel->DeleteData(2,DiagnosticSpcvzEnum,FlowequationBorderstokesEnum);
 
 	cleanup_and_return:
Index: /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 9679)
@@ -130,5 +130,5 @@
 	 * penpair has 2 nodes that are poointing toward 2 vertices.
 	 * The 2 vertices must be in the same cpu as the penpair*/
-	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,PenaltiesEnum);
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,DiagnosticVertexPairingEnum);
 	for(i=0;i<numvertex_pairing;i++){
 		if(my_vertices[(int)vertex_pairing[2*i+0]-1] && !my_vertices[(int)vertex_pairing[2*i+1]-1]){
Index: /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp
===================================================================
--- /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 9678)
+++ /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.cpp	(revision 9679)
@@ -9,17 +9,11 @@
 #include "../../EnumDefinitions/EnumDefinitions.h"
 
-void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int step, double time){
-
+void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, int step, double time){
 
 	int  i,o;
-	int  numoutputs        = 0;
-	int *requested_outputs = NULL;
 	int  output_enum;
 	Element* element=NULL;
 
 	/*retrieve parameters: */
-	parameters->FindParam(&numoutputs,NumRequestedOutputsEnum);
-	if(numoutputs) parameters->FindParam(&requested_outputs,&numoutputs,RequestedOutputsEnum);
-
 	if(numoutputs){
 		for(o=0;o<numoutputs;o++){
@@ -32,7 +26,3 @@
 		}
 	}
-		
-	/*Free ressources:*/
-	xfree((void**)&requested_outputs);
-
 }
Index: /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h
===================================================================
--- /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 9678)
+++ /issm/trunk/src/c/modules/RequestedOutputsx/RequestedOutputsx.h	(revision 9679)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int step=1, double time=0);
+void RequestedOutputsx(Elements* elements,Nodes* nodes,Vertices* vertices,Loads* loads,Materials* materials,Parameters* parameters, int* requested_outputs, int numoutputs, 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 9678)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9679)
@@ -44,4 +44,5 @@
 	else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
 	else if (strcmp(name,"ThermalRequestedOutputs")==0) return ThermalRequestedOutputsEnum;
+	else if (strcmp(name,"ThermalNumRequestedOutputs")==0) return ThermalNumRequestedOutputsEnum;
 	else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
 	else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
@@ -55,4 +56,5 @@
 	else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
 	else if (strcmp(name,"PrognosticRequestedOutputs")==0) return PrognosticRequestedOutputsEnum;
+	else if (strcmp(name,"PrognosticNumRequestedOutputs")==0) return PrognosticNumRequestedOutputsEnum;
 	else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
 	else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
@@ -85,4 +87,5 @@
 	else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
 	else if (strcmp(name,"BalancethicknessRequestedOutputs")==0) return BalancethicknessRequestedOutputsEnum;
+	else if (strcmp(name,"BalancethicknessNumRequestedOutputs")==0) return BalancethicknessNumRequestedOutputsEnum;
 	else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
 	else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
@@ -94,4 +97,5 @@
 	else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
 	else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
 	else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
 	else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
@@ -101,4 +105,23 @@
 	else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
 	else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
+	else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;
+	else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;
+	else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;
+	else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;
+	else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;
+	else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;
+	else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
+	else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;
+	else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;
+	else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;
+	else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;
+	else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;
+	else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;
+	else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;
+	else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;
+	else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;
+	else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;
+	else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
 	else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
 	else if (strcmp(name,"Elements")==0) return ElementsEnum;
@@ -242,5 +265,4 @@
 	else if (strcmp(name,"Nodeonsurface")==0) return NodeonsurfaceEnum;
 	else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
-	else if (strcmp(name,"PenaltyOffset")==0) return PenaltyOffsetEnum;
 	else if (strcmp(name,"Pressure")==0) return PressureEnum;
 	else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
@@ -249,5 +271,4 @@
 	else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
 	else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
-	else if (strcmp(name,"ShelfDampening")==0) return ShelfDampeningEnum;
 	else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
 	else if (strcmp(name,"Surface")==0) return SurfaceEnum;
@@ -263,5 +284,4 @@
 	else if (strcmp(name,"Vel")==0) return VelEnum;
 	else if (strcmp(name,"VelObs")==0) return VelObsEnum;
-	else if (strcmp(name,"ViscosityOvershoot")==0) return ViscosityOvershootEnum;
 	else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
 	else if (strcmp(name,"Vx")==0) return VxEnum;
@@ -337,10 +357,5 @@
 	else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
 	else if (strcmp(name,"Dim")==0) return DimEnum;
-	else if (strcmp(name,"EpsAbs")==0) return EpsAbsEnum;
 	else if (strcmp(name,"EpsCm")==0) return EpsCmEnum;
-	else if (strcmp(name,"EpsRel")==0) return EpsRelEnum;
-	else if (strcmp(name,"EpsRes")==0) return EpsResEnum;
-	else if (strcmp(name,"MaxNonlinearIterations")==0) return MaxNonlinearIterationsEnum;
-	else if (strcmp(name,"MinMechanicalConstraints")==0) return MinMechanicalConstraintsEnum;
 	else if (strcmp(name,"NumberOfElements")==0) return NumberOfElementsEnum;
 	else if (strcmp(name,"NumberOfVertices")==0) return NumberOfVerticesEnum;
@@ -388,13 +403,7 @@
 	else if (strcmp(name,"NumberOfElements2D")==0) return NumberOfElements2DEnum;
 	else if (strcmp(name,"NumControlType")==0) return NumControlTypeEnum;
-	else if (strcmp(name,"Spcvy")==0) return SpcvyEnum;
 	else if (strcmp(name,"Y")==0) return YEnum;
-	else if (strcmp(name,"Penalties")==0) return PenaltiesEnum;
-	else if (strcmp(name,"Pressureload")==0) return PressureloadEnum;
-	else if (strcmp(name,"Spcvz")==0) return SpcvzEnum;
 	else if (strcmp(name,"NumberOfNodes2D")==0) return NumberOfNodes2DEnum;
 	else if (strcmp(name,"Z")==0) return ZEnum;
-	else if (strcmp(name,"PenaltyLock")==0) return PenaltyLockEnum;
-	else if (strcmp(name,"Spcvx")==0) return SpcvxEnum;
 	else if (strcmp(name,"Upperelements")==0) return UpperelementsEnum;
 	else if (strcmp(name,"Edges")==0) return EdgesEnum;
@@ -404,6 +413,4 @@
 	else if (strcmp(name,"Elementconnectivity")==0) return ElementconnectivityEnum;
 	else if (strcmp(name,"Numlayers")==0) return NumlayersEnum;
-	else if (strcmp(name,"DiagnosticRef")==0) return DiagnosticRefEnum;
-	else if (strcmp(name,"Stokesreconditioning")==0) return StokesreconditioningEnum;
 	else if (strcmp(name,"Lowerelements")==0) return LowerelementsEnum;
 	else if (strcmp(name,"Nsteps")==0) return NstepsEnum;
@@ -416,6 +423,4 @@
 	else if (strcmp(name,"Waitonlock")==0) return WaitonlockEnum;
 	else if (strcmp(name,"NumberOfResponses")==0) return NumberOfResponsesEnum;
-	else if (strcmp(name,"RequestedOutputs")==0) return RequestedOutputsEnum;
-	else if (strcmp(name,"NumRequestedOutputs")==0) return NumRequestedOutputsEnum;
 	else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
 	else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9679)
@@ -426,5 +426,5 @@
 
 	/*retrieve some parameters: */
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	
 	if(!IsOnBed()){
@@ -757,5 +757,5 @@
 	/* Get node coordinates and dof list: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	this->parameters->FindParam(&viscosity_overshoot,ViscosityOvershootEnum);
+	this->parameters->FindParam(&viscosity_overshoot,DiagnosticViscosityOvershootEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
@@ -939,5 +939,5 @@
 	/* Get node coordinates and dof list: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
@@ -1030,5 +1030,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
@@ -1285,5 +1285,5 @@
 	/*Retrieve all inputs and parameters*/
 	GetVerticesCoordinates(&xyz_list[0][0], nodes,NUMVERTICES);
-	this->parameters->FindParam(&viscosity_overshoot,ViscosityOvershootEnum);
+	this->parameters->FindParam(&viscosity_overshoot,DiagnosticViscosityOvershootEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
@@ -1427,5 +1427,5 @@
 	inputs->GetParameterValue(&approximation,ApproximationEnum);
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	this->parameters->FindParam(&viscosity_overshoot,ViscosityOvershootEnum);
+	this->parameters->FindParam(&viscosity_overshoot,DiagnosticViscosityOvershootEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);       _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);       _assert_(vy_input);
@@ -1588,5 +1588,5 @@
 	/*Retrieve all inputs and parameters*/
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
@@ -1657,5 +1657,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
@@ -2484,5 +2484,5 @@
 	/*Retrieve all inputs and parameters*/
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);               _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);               _assert_(vy_input);
@@ -2549,5 +2549,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);               _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);               _assert_(vy_input);
@@ -2629,5 +2629,5 @@
 	/*Retrieve all inputs and parameters*/
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);               _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);               _assert_(vy_input);
@@ -2694,5 +2694,5 @@
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
 	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	Input* vx_input=inputs->GetInput(VxEnum);               _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);               _assert_(vy_input);
@@ -3000,5 +3000,5 @@
 
 	/*Retrieve all inputs and parameters*/
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	rho_ice=matpar->GetRhoIce();
 	gravity=matpar->GetG();
@@ -3068,5 +3068,5 @@
 	if(!IsOnBed() || !IsOnShelf()) return NULL;
 	inputs->GetParameterValue(&approximation,ApproximationEnum);
-	this->parameters->FindParam(&shelf_dampening,ShelfDampeningEnum);
+	this->parameters->FindParam(&shelf_dampening,DiagnosticShelfDampeningEnum);
 	if(approximation!=StokesApproximationEnum && approximation!=MacAyealStokesApproximationEnum && approximation!=PattynStokesApproximationEnum) return NULL;
 	ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters,StokesApproximationEnum);
@@ -4194,5 +4194,5 @@
 
 	/*Recondition pressure: */
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 
 	/*Ok, we have vx vy vz and P in values, fill in vx vy vz P arrays: */
@@ -5563,5 +5563,5 @@
 	penta->GetDofList(&doflistm,MacAyealApproximationEnum,GsetEnum);
 	GetDofList(&doflists,StokesApproximationEnum,GsetEnum);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 
 	/*Get node data: */
@@ -5731,5 +5731,5 @@
 	GetDofList(&doflistp,PattynApproximationEnum,GsetEnum);
 	GetDofList(&doflists,StokesApproximationEnum,GsetEnum);
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 
 	/*Get node data: */
@@ -6028,5 +6028,5 @@
 
 	/*Recondition pressure and compute vel: */
-	this->parameters->FindParam(&stokesreconditioning,StokesreconditioningEnum);
+	this->parameters->FindParam(&stokesreconditioning,DiagnosticStokesreconditioningEnum);
 	for(i=0;i<NUMVERTICES;i++) pressure[i]=pressure[i]*stokesreconditioning;
 	for(i=0;i<NUMVERTICES;i++) vel[i]=pow( pow(vx[i],2.0) + pow(vy[i],2.0) + pow(vz[i],2.0) , 0.5);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9679)
@@ -718,5 +718,5 @@
 	Input* vxold_input=inputs->GetInput(VxPicardEnum);      _assert_(vxold_input);
 	Input* vyold_input=inputs->GetInput(VyPicardEnum);      _assert_(vyold_input);
-	this->parameters->FindParam(&viscosity_overshoot,ViscosityOvershootEnum);
+	this->parameters->FindParam(&viscosity_overshoot,DiagnosticViscosityOvershootEnum);
 
 	/* Start  looping on the number of gaussian points: */
Index: /issm/trunk/src/c/objects/Loads/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Loads/Icefront.cpp	(revision 9679)
@@ -64,20 +64,20 @@
 		segment_width=6;
 	}
-	_assert_(iomodel->Data(PressureloadEnum));
-	element=(int)(*(iomodel->Data(PressureloadEnum)+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
+	_assert_(iomodel->Data(DiagnosticIcefrontEnum));
+	element=(int)(*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+segment_width-2)-1); //element is in the penultimate column (node1 node2 ... elem fill)
 
 	/*Build ids for hook constructors: */
-	icefront_eid=(int) *(iomodel->Data(PressureloadEnum)+segment_width*i+segment_width-2); //matlab indexing
+	icefront_eid=(int) *(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+segment_width-2); //matlab indexing
 	icefront_mparid=numberofelements+1; //matlab indexing
 
 	if (in_icefront_type==MacAyeal2dIceFrontEnum || in_icefront_type==MacAyeal3dIceFrontEnum){
-		icefront_node_ids[0]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+0);
-		icefront_node_ids[1]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+1);
+		icefront_node_ids[0]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+0);
+		icefront_node_ids[1]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+1);
 	}
 	else if (in_icefront_type==PattynIceFrontEnum || in_icefront_type==StokesIceFrontEnum){
-		icefront_node_ids[0]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+0);
-		icefront_node_ids[1]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+1);
-		icefront_node_ids[2]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+2);
-		icefront_node_ids[3]=iomodel->nodecounter+(int)*(iomodel->Data(PressureloadEnum)+segment_width*i+3);
+		icefront_node_ids[0]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+0);
+		icefront_node_ids[1]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+1);
+		icefront_node_ids[2]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+2);
+		icefront_node_ids[3]=iomodel->nodecounter+(int)*(iomodel->Data(DiagnosticIcefrontEnum)+segment_width*i+3);
 	}
 	else _error_("in_icefront_type %s not supported yet!",EnumToStringx(in_icefront_type));
@@ -89,5 +89,5 @@
 
 	/*Fill*/
-	icefront_fill=(int)iomodel->Data(PressureloadEnum)[segment_width*i+segment_width-1];
+	icefront_fill=(int)iomodel->Data(DiagnosticIcefrontEnum)[segment_width*i+segment_width-1];
 	
 	/*Ok, we have everything to build the object: */
Index: /issm/trunk/src/c/objects/Loads/Pengrid.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Loads/Pengrid.cpp	(revision 9679)
@@ -548,5 +548,5 @@
 
 	/*Retrieve all inputs and parameters*/
-	parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+	parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum);
 	penta->GetParameterValue(&slope[0],node,BedSlopeXEnum);
 	penta->GetParameterValue(&slope[1],node,BedSlopeYEnum);
Index: /issm/trunk/src/c/objects/Loads/Penpair.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 9679)
@@ -314,5 +314,5 @@
 
 	/*recover parameters: */
-	parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+	parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum);
 
 	//Create elementary matrix: add penalty to 
@@ -341,5 +341,5 @@
 
 	/*recover parameters: */
-	parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+	parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum);
 
 	//Create elementary matrix: add penalty to 
Index: /issm/trunk/src/c/objects/Loads/Riftfront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Riftfront.cpp	(revision 9678)
+++ /issm/trunk/src/c/objects/Loads/Riftfront.cpp	(revision 9679)
@@ -57,5 +57,5 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&numberofelements,NumberOfElementsEnum);
-	iomodel->Constant(&penalty_lock,PenaltyLockEnum);
+	iomodel->Constant(&penalty_lock,DiagnosticRiftPenaltyLockEnum);
 
 	/*Ok, retrieve all the data needed to add a penalty between the two nodes: */
@@ -523,5 +523,5 @@
 
 	/*Get some parameters: */
-	this->parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+	this->parameters->FindParam(&penalty_offset,DiagnosticPenaltyFactorEnum);
 	this->inputs->GetParameterValue(&friction,FrictionEnum);
 	tria1->GetParameterValue(&h[0],nodes[0],ThicknessEnum);
Index: /issm/trunk/src/c/solutions/convergence.cpp
===================================================================
--- /issm/trunk/src/c/solutions/convergence.cpp	(revision 9678)
+++ /issm/trunk/src/c/solutions/convergence.cpp	(revision 9679)
@@ -38,7 +38,7 @@
 
 	/*get convergence options*/
-	parameters->FindParam(&eps_res,EpsResEnum);
-	parameters->FindParam(&eps_rel,EpsRelEnum);
-	parameters->FindParam(&eps_abs,EpsAbsEnum);
+	parameters->FindParam(&eps_res,DiagnosticRestolEnum);
+	parameters->FindParam(&eps_rel,DiagnosticReltolEnum);
+	parameters->FindParam(&eps_abs,DiagnosticAbstolEnum);
 	parameters->FindParam(&yts,ConstantsYtsEnum);
 
Index: /issm/trunk/src/c/solutions/diagnostic_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 9678)
+++ /issm/trunk/src/c/solutions/diagnostic_core.cpp	(revision 9679)
@@ -24,4 +24,6 @@
 	bool   control_analysis;
 	int    solution_type;
+	int    numoutputs         = 0;
+	int    *requested_outputs = NULL;
 
 	/* recover parameters:*/
@@ -87,6 +89,10 @@
 		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);
-		RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+		femmodel->parameters->FindParam(&numoutputs,DiagnosticNumRequestedOutputsEnum);
+		if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,DiagnosticRequestedOutputsEnum);
+		RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);
 	}
 
+	/*Free ressources:*/
+	xfree((void**)&requested_outputs);
 }
Index: /issm/trunk/src/c/solutions/steadystate_core.cpp
===================================================================
--- /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 9678)
+++ /issm/trunk/src/c/solutions/steadystate_core.cpp	(revision 9679)
@@ -22,4 +22,6 @@
 	int maxiter;
 	bool control_analysis;
+	int  numoutputs         = 0;
+	int  *requested_outputs = NULL;
 	
 	/* recover parameters:*/
@@ -69,6 +71,10 @@
 		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);
-		RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
+		femmodel->parameters->FindParam(&numoutputs,SteadystateNumRequestedOutputsEnum);
+		if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SteadystateRequestedOutputsEnum);
+		RequestedOutputsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,requested_outputs,numoutputs);
 	}
 
+	/*Free ressources:*/
+	xfree((void**)&requested_outputs);
 }
Index: /issm/trunk/src/c/solvers/solver_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_nonlinear.cpp	(revision 9678)
+++ /issm/trunk/src/c/solvers/solver_nonlinear.cpp	(revision 9679)
@@ -32,6 +32,6 @@
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
-	femmodel->parameters->FindParam(&max_nonlinear_iterations,MaxNonlinearIterationsEnum);
+	femmodel->parameters->FindParam(&min_mechanical_constraints,DiagnosticRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
 	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	UpdateConstraintsx(femmodel->nodes,femmodel->constraints,femmodel->parameters);
Index: /issm/trunk/src/c/solvers/solver_stokescoupling_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_stokescoupling_nonlinear.cpp	(revision 9678)
+++ /issm/trunk/src/c/solvers/solver_stokescoupling_nonlinear.cpp	(revision 9679)
@@ -33,6 +33,6 @@
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
-	femmodel->parameters->FindParam(&max_nonlinear_iterations,MaxNonlinearIterationsEnum);
+	femmodel->parameters->FindParam(&min_mechanical_constraints,DiagnosticRiftPenaltyThresholdEnum);
+	femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
 	UpdateConstraintsx(femmodel->nodes,femmodel->constraints,femmodel->parameters);
 	
Index: /issm/trunk/src/m/classes/diagnostic.m
===================================================================
--- /issm/trunk/src/m/classes/diagnostic.m	(revision 9679)
+++ /issm/trunk/src/m/classes/diagnostic.m	(revision 9679)
@@ -0,0 +1,102 @@
+%DIAGNOSTIC class definition
+%
+%   Usage:
+%      diagnostic=diagnostic();
+
+classdef diagnostic
+	properties (SetAccess=public) 
+		spcvx                    = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		spcvy                    = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		spcvz                    = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		restol                   = modelfield('default',0,'marshall',true,'format','Double');
+		reltol                   = modelfield('default',0,'marshall',true,'format','Double');
+		abstol                   = modelfield('default',0,'marshall',true,'format','Double');
+		stokesreconditioning     = modelfield('default',0,'marshall',true,'format','Double');
+		viscosity_overshoot      = modelfield('default',0,'marshall',true,'format','Double');
+		icefront                 = modelfield('default',NaN,'marshall',true,'preprocess','marshallicefront','format','DoubleMat','mattype',3);
+		maxiter                  = modelfield('default',0,'marshall',true,'format','Integer');
+		shelf_dampening          = modelfield('default',0,'marshall',true,'format','Integer');
+		vertex_pairing           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+		penalty_factor           = modelfield('default',0,'marshall',true,'format','Double');
+		rift_penalty_lock        = modelfield('default',0,'marshall',true,'format','Integer');
+		rift_penalty_threshold   = modelfield('default',0,'marshall',true,'format','Integer');
+		referential              = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		requested_outputs        = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+	end
+	methods
+		function obj = diagnostic(varargin) % {{{
+			switch nargin
+				case 0
+					obj=setdefaultparameters(obj);
+				case 1
+					in=varargin{1};
+					if (isa(in,'numeric') & in==0),
+						% requesting templates do nothing
+					else
+						error('constructor not supported');
+					end 
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function obj = setdefaultparameters(obj) % {{{
+
+			%first, use the defaults provided by the properties definition above. 
+			fieldnames=fields(obj);
+			for i=1:length(fieldnames),
+				fieldname=fieldnames{i};
+				obj.(fieldname)=obj.(fieldname).default;
+			end
+
+			 %maximum of non-linear iterations.
+			 obj.maxiter=100;
+			 
+			 %Convergence criterion: absolute, relative and residual
+			 obj.restol=10^-4; 
+			 obj.reltol=0.01;
+			 obj.abstol=10;
+			 
+			 obj.stokesreconditioning=10^13;
+			 obj.shelf_dampening=0;
+
+			 %Penalty factor applied kappa=max(stiffness matrix)*10^penalty_factor
+			 obj.penalty_factor=3;
+
+			 %coefficient to update the viscosity between each iteration of
+			 %a diagnostic according to the following formula
+			 %viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
+			 obj.viscosity_overshoot=0;
+
+			 %Stop the iterations of rift if below a threshold
+			 obj.rift_penalty_threshold=0;
+
+			 %in some solutions, it might be needed to stop a run when only
+			 %a few constraints remain unstable. For thermal computation, this
+			 %parameter is often used.
+			 obj.rift_penalty_lock=10;
+
+		end % }}}
+		function disp(obj) % {{{
+
+			disp(sprintf('   Diagnostic solution parameters:'));
+
+			disp(sprintf('\n      %s','Newton convergence criteria:'));
+			fielddisplay(obj,'restol','mechanical equilibrium residue convergence criterion');
+			fielddisplay(obj,'reltol','velocity relative convergence criterion, NaN -> not applied');
+			fielddisplay(obj,'abstol','velocity absolute convergence criterion, NaN -> not applied');
+			fielddisplay(obj,'maxiter','maximum number of nonlinear iterations');
+			fielddisplay(obj,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
+
+			disp(sprintf('\n      boundary conditions:'));
+			fielddisplay(obj,'spcvx','x-axis velocity constraint (NaN means no constraint)');
+			fielddisplay(obj,'spcvy','y-axis velocity constraint (NaN means no constraint)');
+			fielddisplay(obj,'spcvz','z-axis velocity constraint (NaN means no constraint)');
+			fielddisplay(obj,'icefront','segments on ice front list');
+
+			disp(sprintf('\n      %s','Penalties:'));
+			fielddisplay(obj,'penalty_factor','offset used by penalties: penalty = Kmax*10^offset');
+			fielddisplay(obj,'rift_penalty_threshold','threshold for instability of mechanical constraints');
+
+		end % }}}
+	end
+end
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9678)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9679)
@@ -35,4 +35,5 @@
 		 steadystate = modelfield('default',0,'marshall',true);
 		 transient = modelfield('default',0,'marshall',true);
+		 diagnostic = modelfield('default',0,'marshall',true);
 
 		 %FIXME: all other fields should belong to other classes
@@ -62,12 +63,5 @@
 		 hemisphere = modelfield('default',NaN,'marshall',false);
 
-		 %Stokes
-		 stokesreconditioning = modelfield('default',0,'marshall',true,'format','Double');
-		 shelf_dampening      = modelfield('default',0,'marshall',true,'format','Integer');
-
 		 %Penalties
-		 penalties            = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
-		 penalty_offset       = modelfield('default',0,'marshall',true,'format','Double');
-		 penalty_lock         = modelfield('default',0,'marshall',true,'format','Integer');
 		 segments             = modelfield('default',NaN,'marshall',false);
 		 segmentmarkers       = modelfield('default',NaN,'marshall',false);
@@ -93,6 +87,4 @@
 		 %Materials parameters
 
-		 min_mechanical_constraints = modelfield('default',0,'marshall',true,'format','Integer');
-
 		 %Geometrical parameters
 		 surface           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
@@ -104,9 +96,4 @@
 		 %Boundary conditions
 		 nodeonboundary = modelfield('default',NaN,'marshall',false);
-		 pressureload   = modelfield('default',NaN,'marshall',true,'preprocess','marshallpressureload','format','DoubleMat','mattype',3);
-		 spcvx          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 spcvy          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 spcvz          = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
-		 diagnostic_ref = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
 
 		 %Observations 
@@ -118,10 +105,5 @@
 
 		 %Statics parameters
-		 eps_res                  = modelfield('default',0,'marshall',true,'format','Double');
-		 eps_rel                  = modelfield('default',0,'marshall',true,'format','Double');
-		 eps_abs                  = modelfield('default',0,'marshall',true,'format','Double');
-		 max_nonlinear_iterations = modelfield('default',0,'marshall',true,'format','Integer');
 		 connectivity             = modelfield('default',0,'marshall',true,'format','Integer');
-		 viscosity_overshoot      = modelfield('default',0,'marshall',true,'format','Double');
 
 		 %Control
@@ -140,6 +122,5 @@
 		 num_control_type               = modelfield('default',0,'marshall',true,'format','Integer');
 		 num_cm_responses               = modelfield('default',0,'marshall',true,'format','Integer');
-		 %Output
-		 requested_outputs               = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+
 		 %Results fields
 		 output_frequency               = modelfield('default',0,'marshall',true,'format','Integer');
@@ -507,19 +488,8 @@
 			 md.steadystate=steadystate;
 			 md.transient=transient;
+			 md.diagnostic=diagnostic;
 
 			 %Solver parameters
 
-			 %mechanical residue convergence criterion norm(K(uold)uold - F)/norm(F)
-			 md.eps_res=10^-4; %from test233 in nightly runs
-
-			 %relative convergence criterion ((vel(n-1)-vel(n))/vel(n))
-			 md.eps_rel=0.01;
-
-			 %absolute convergence criterion (max(vel(n-1)-vel(n)) (m/year)
-			 md.eps_abs=10;
-
-			 %maximum of non-linear iterations.
-			 md.max_nonlinear_iterations=100;
-			 
 			 %the connectivity is the avergaded number of nodes linked to a
 			 %given node through an edge. This connectivity is used to initially
@@ -529,8 +499,4 @@
 			 md.connectivity=25;
 
-			 %coefficient to update the viscosity between each iteration of
-			 %a diagnostic according to the following formula
-			 %viscosity(n)=viscosity(n)+viscosity_overshoot(viscosity(n)-viscosity(n-1))
-			 md.viscosity_overshoot=0;
 
 			 %parameter used to print temporary results (convergence criterion,
@@ -538,28 +504,7 @@
 			 md.verbose=verbose('solution',true,'qmu',true,'control',true);
 
-			 %Stokes
-			 md.stokesreconditioning=10^13;
-			 md.shelf_dampening=0;
-
-			 %Penalties
-
-			 %the penalty offset is the power used to compute the value
-			 %of the penalty as follows
-			 %kappa=max(stiffness matrix)*10^penalty_offset
-			 md.penalty_offset=3;
-
-			 %in some solutions, it might be needed to stop a run when only
-			 %a few constraints remain unstable. For thermal computation, this
-			 %parameter is often used.
-			 md.penalty_lock=10;
-
 			 %minimum thickness to avoid stiffness singularity, used in
 			 %the parameter file
 			 md.minh=1;
-
-			 %in some cases, it might be needed to stop a run when only
-			 %a few constraints remain unstable. For thermal computation, this
-			 %parameter is often used.
-			 md.min_mechanical_constraints=0;
 
 			 %Control
@@ -624,5 +569,4 @@
 				 if(strcmp(index1.subs,'res')), displayresults(md);return; end
 				 if(strcmp(index1.subs,'obs')), displayobservations(md);return; end
-				 if(strcmp(index1.subs,'diagnostic')), displaydiagnostic(md);return; end
 				 if(strcmp(index1.subs,'control')), displaycontrol(md);return; end
 				 if(strcmp(index1.subs,'parallel')), displayparallel(md);return; end
Index: /issm/trunk/src/m/enum/BalancethicknessNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/BalancethicknessNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/BalancethicknessNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=BalancethicknessNumRequestedOutputsEnum()
+%BALANCETHICKNESSNUMREQUESTEDOUTPUTSENUM - Enum of BalancethicknessNumRequestedOutputs
+%
+%   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=BalancethicknessNumRequestedOutputsEnum()
+
+macro=StringToEnum('BalancethicknessNumRequestedOutputs');
Index: /issm/trunk/src/m/enum/DiagnosticAbstolEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticAbstolEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticAbstolEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticAbstolEnum()
+%DIAGNOSTICABSTOLENUM - Enum of DiagnosticAbstol
+%
+%   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=DiagnosticAbstolEnum()
+
+macro=StringToEnum('DiagnosticAbstol');
Index: /issm/trunk/src/m/enum/DiagnosticIcefrontEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticIcefrontEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticIcefrontEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticIcefrontEnum()
+%DIAGNOSTICICEFRONTENUM - Enum of DiagnosticIcefront
+%
+%   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=DiagnosticIcefrontEnum()
+
+macro=StringToEnum('DiagnosticIcefront');
Index: /issm/trunk/src/m/enum/DiagnosticMaxiterEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticMaxiterEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticMaxiterEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticMaxiterEnum()
+%DIAGNOSTICMAXITERENUM - Enum of DiagnosticMaxiter
+%
+%   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=DiagnosticMaxiterEnum()
+
+macro=StringToEnum('DiagnosticMaxiter');
Index: /issm/trunk/src/m/enum/DiagnosticNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticNumRequestedOutputsEnum()
+%DIAGNOSTICNUMREQUESTEDOUTPUTSENUM - Enum of DiagnosticNumRequestedOutputs
+%
+%   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=DiagnosticNumRequestedOutputsEnum()
+
+macro=StringToEnum('DiagnosticNumRequestedOutputs');
Index: /issm/trunk/src/m/enum/DiagnosticPenaltyFactorEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticPenaltyFactorEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticPenaltyFactorEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticPenaltyFactorEnum()
+%DIAGNOSTICPENALTYFACTORENUM - Enum of DiagnosticPenaltyFactor
+%
+%   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=DiagnosticPenaltyFactorEnum()
+
+macro=StringToEnum('DiagnosticPenaltyFactor');
Index: sm/trunk/src/m/enum/DiagnosticRefEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticRefEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=DiagnosticRefEnum()
-%DIAGNOSTICREFENUM - Enum of DiagnosticRef
-%
-%   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=DiagnosticRefEnum()
-
-macro=StringToEnum('DiagnosticRef');
Index: /issm/trunk/src/m/enum/DiagnosticReferentialEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticReferentialEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticReferentialEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticReferentialEnum()
+%DIAGNOSTICREFERENTIALENUM - Enum of DiagnosticReferential
+%
+%   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=DiagnosticReferentialEnum()
+
+macro=StringToEnum('DiagnosticReferential');
Index: /issm/trunk/src/m/enum/DiagnosticReltolEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticReltolEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticReltolEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticReltolEnum()
+%DIAGNOSTICRELTOLENUM - Enum of DiagnosticReltol
+%
+%   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=DiagnosticReltolEnum()
+
+macro=StringToEnum('DiagnosticReltol');
Index: /issm/trunk/src/m/enum/DiagnosticRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticRequestedOutputsEnum()
+%DIAGNOSTICREQUESTEDOUTPUTSENUM - Enum of DiagnosticRequestedOutputs
+%
+%   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=DiagnosticRequestedOutputsEnum()
+
+macro=StringToEnum('DiagnosticRequestedOutputs');
Index: /issm/trunk/src/m/enum/DiagnosticRestolEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticRestolEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticRestolEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticRestolEnum()
+%DIAGNOSTICRESTOLENUM - Enum of DiagnosticRestol
+%
+%   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=DiagnosticRestolEnum()
+
+macro=StringToEnum('DiagnosticRestol');
Index: /issm/trunk/src/m/enum/DiagnosticRiftPenaltyLockEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticRiftPenaltyLockEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticRiftPenaltyLockEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticRiftPenaltyLockEnum()
+%DIAGNOSTICRIFTPENALTYLOCKENUM - Enum of DiagnosticRiftPenaltyLock
+%
+%   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=DiagnosticRiftPenaltyLockEnum()
+
+macro=StringToEnum('DiagnosticRiftPenaltyLock');
Index: /issm/trunk/src/m/enum/DiagnosticRiftPenaltyThresholdEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticRiftPenaltyThresholdEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticRiftPenaltyThresholdEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticRiftPenaltyThresholdEnum()
+%DIAGNOSTICRIFTPENALTYTHRESHOLDENUM - Enum of DiagnosticRiftPenaltyThreshold
+%
+%   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=DiagnosticRiftPenaltyThresholdEnum()
+
+macro=StringToEnum('DiagnosticRiftPenaltyThreshold');
Index: /issm/trunk/src/m/enum/DiagnosticShelfDampeningEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticShelfDampeningEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticShelfDampeningEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticShelfDampeningEnum()
+%DIAGNOSTICSHELFDAMPENINGENUM - Enum of DiagnosticShelfDampening
+%
+%   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=DiagnosticShelfDampeningEnum()
+
+macro=StringToEnum('DiagnosticShelfDampening');
Index: /issm/trunk/src/m/enum/DiagnosticSpcvxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticSpcvxEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticSpcvxEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticSpcvxEnum()
+%DIAGNOSTICSPCVXENUM - Enum of DiagnosticSpcvx
+%
+%   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=DiagnosticSpcvxEnum()
+
+macro=StringToEnum('DiagnosticSpcvx');
Index: /issm/trunk/src/m/enum/DiagnosticSpcvyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticSpcvyEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticSpcvyEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticSpcvyEnum()
+%DIAGNOSTICSPCVYENUM - Enum of DiagnosticSpcvy
+%
+%   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=DiagnosticSpcvyEnum()
+
+macro=StringToEnum('DiagnosticSpcvy');
Index: /issm/trunk/src/m/enum/DiagnosticSpcvzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticSpcvzEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticSpcvzEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticSpcvzEnum()
+%DIAGNOSTICSPCVZENUM - Enum of DiagnosticSpcvz
+%
+%   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=DiagnosticSpcvzEnum()
+
+macro=StringToEnum('DiagnosticSpcvz');
Index: /issm/trunk/src/m/enum/DiagnosticStokesreconditioningEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticStokesreconditioningEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticStokesreconditioningEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticStokesreconditioningEnum()
+%DIAGNOSTICSTOKESRECONDITIONINGENUM - Enum of DiagnosticStokesreconditioning
+%
+%   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=DiagnosticStokesreconditioningEnum()
+
+macro=StringToEnum('DiagnosticStokesreconditioning');
Index: /issm/trunk/src/m/enum/DiagnosticVertexPairingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticVertexPairingEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticVertexPairingEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticVertexPairingEnum()
+%DIAGNOSTICVERTEXPAIRINGENUM - Enum of DiagnosticVertexPairing
+%
+%   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=DiagnosticVertexPairingEnum()
+
+macro=StringToEnum('DiagnosticVertexPairing');
Index: /issm/trunk/src/m/enum/DiagnosticViscosityOvershootEnum.m
===================================================================
--- /issm/trunk/src/m/enum/DiagnosticViscosityOvershootEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/DiagnosticViscosityOvershootEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=DiagnosticViscosityOvershootEnum()
+%DIAGNOSTICVISCOSITYOVERSHOOTENUM - Enum of DiagnosticViscosityOvershoot
+%
+%   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=DiagnosticViscosityOvershootEnum()
+
+macro=StringToEnum('DiagnosticViscosityOvershoot');
Index: sm/trunk/src/m/enum/EpsAbsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsAbsEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=EpsAbsEnum()
-%EPSABSENUM - Enum of EpsAbs
-%
-%   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=EpsAbsEnum()
-
-macro=StringToEnum('EpsAbs');
Index: sm/trunk/src/m/enum/EpsRelEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsRelEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=EpsRelEnum()
-%EPSRELENUM - Enum of EpsRel
-%
-%   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=EpsRelEnum()
-
-macro=StringToEnum('EpsRel');
Index: sm/trunk/src/m/enum/EpsResEnum.m
===================================================================
--- /issm/trunk/src/m/enum/EpsResEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=EpsResEnum()
-%EPSRESENUM - Enum of EpsRes
-%
-%   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=EpsResEnum()
-
-macro=StringToEnum('EpsRes');
Index: sm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MaxNonlinearIterationsEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MaxNonlinearIterationsEnum()
-%MAXNONLINEARITERATIONSENUM - Enum of MaxNonlinearIterations
-%
-%   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=MaxNonlinearIterationsEnum()
-
-macro=StringToEnum('MaxNonlinearIterations');
Index: sm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/MinMechanicalConstraintsEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=MinMechanicalConstraintsEnum()
-%MINMECHANICALCONSTRAINTSENUM - Enum of MinMechanicalConstraints
-%
-%   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=MinMechanicalConstraintsEnum()
-
-macro=StringToEnum('MinMechanicalConstraints');
Index: sm/trunk/src/m/enum/NumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/NumRequestedOutputsEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=NumRequestedOutputsEnum()
-%NUMREQUESTEDOUTPUTSENUM - Enum of NumRequestedOutputs
-%
-%   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=NumRequestedOutputsEnum()
-
-macro=StringToEnum('NumRequestedOutputs');
Index: sm/trunk/src/m/enum/PenaltiesEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenaltiesEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=PenaltiesEnum()
-%PENALTIESENUM - Enum of Penalties
-%
-%   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=PenaltiesEnum()
-
-macro=StringToEnum('Penalties');
Index: sm/trunk/src/m/enum/PenaltyLockEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenaltyLockEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=PenaltyLockEnum()
-%PENALTYLOCKENUM - Enum of PenaltyLock
-%
-%   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=PenaltyLockEnum()
-
-macro=StringToEnum('PenaltyLock');
Index: sm/trunk/src/m/enum/PenaltyOffsetEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PenaltyOffsetEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=PenaltyOffsetEnum()
-%PENALTYOFFSETENUM - Enum of PenaltyOffset
-%
-%   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=PenaltyOffsetEnum()
-
-macro=StringToEnum('PenaltyOffset');
Index: sm/trunk/src/m/enum/PressureloadEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PressureloadEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=PressureloadEnum()
-%PRESSURELOADENUM - Enum of Pressureload
-%
-%   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=PressureloadEnum()
-
-macro=StringToEnum('Pressureload');
Index: /issm/trunk/src/m/enum/PrognosticNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/PrognosticNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=PrognosticNumRequestedOutputsEnum()
+%PROGNOSTICNUMREQUESTEDOUTPUTSENUM - Enum of PrognosticNumRequestedOutputs
+%
+%   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=PrognosticNumRequestedOutputsEnum()
+
+macro=StringToEnum('PrognosticNumRequestedOutputs');
Index: sm/trunk/src/m/enum/RequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/RequestedOutputsEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-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: sm/trunk/src/m/enum/ShelfDampeningEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ShelfDampeningEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ShelfDampeningEnum()
-%SHELFDAMPENINGENUM - Enum of ShelfDampening
-%
-%   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=ShelfDampeningEnum()
-
-macro=StringToEnum('ShelfDampening');
Index: sm/trunk/src/m/enum/SpcvxEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcvxEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SpcvxEnum()
-%SPCVXENUM - Enum of Spcvx
-%
-%   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=SpcvxEnum()
-
-macro=StringToEnum('Spcvx');
Index: sm/trunk/src/m/enum/SpcvyEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcvyEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SpcvyEnum()
-%SPCVYENUM - Enum of Spcvy
-%
-%   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=SpcvyEnum()
-
-macro=StringToEnum('Spcvy');
Index: sm/trunk/src/m/enum/SpcvzEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SpcvzEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SpcvzEnum()
-%SPCVZENUM - Enum of Spcvz
-%
-%   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=SpcvzEnum()
-
-macro=StringToEnum('Spcvz');
Index: /issm/trunk/src/m/enum/SteadystateNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/SteadystateNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/SteadystateNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=SteadystateNumRequestedOutputsEnum()
+%STEADYSTATENUMREQUESTEDOUTPUTSENUM - Enum of SteadystateNumRequestedOutputs
+%
+%   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=SteadystateNumRequestedOutputsEnum()
+
+macro=StringToEnum('SteadystateNumRequestedOutputs');
Index: sm/trunk/src/m/enum/StokesreconditioningEnum.m
===================================================================
--- /issm/trunk/src/m/enum/StokesreconditioningEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=StokesreconditioningEnum()
-%STOKESRECONDITIONINGENUM - Enum of Stokesreconditioning
-%
-%   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=StokesreconditioningEnum()
-
-macro=StringToEnum('Stokesreconditioning');
Index: /issm/trunk/src/m/enum/ThermalNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ThermalNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/ThermalNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=ThermalNumRequestedOutputsEnum()
+%THERMALNUMREQUESTEDOUTPUTSENUM - Enum of ThermalNumRequestedOutputs
+%
+%   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=ThermalNumRequestedOutputsEnum()
+
+macro=StringToEnum('ThermalNumRequestedOutputs');
Index: /issm/trunk/src/m/enum/TransientNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/TransientNumRequestedOutputsEnum.m	(revision 9679)
+++ /issm/trunk/src/m/enum/TransientNumRequestedOutputsEnum.m	(revision 9679)
@@ -0,0 +1,11 @@
+function macro=TransientNumRequestedOutputsEnum()
+%TRANSIENTNUMREQUESTEDOUTPUTSENUM - Enum of TransientNumRequestedOutputs
+%
+%   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=TransientNumRequestedOutputsEnum()
+
+macro=StringToEnum('TransientNumRequestedOutputs');
Index: sm/trunk/src/m/enum/ViscosityOvershootEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ViscosityOvershootEnum.m	(revision 9678)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=ViscosityOvershootEnum()
-%VISCOSITYOVERSHOOTENUM - Enum of ViscosityOvershoot
-%
-%   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=ViscosityOvershootEnum()
-
-macro=StringToEnum('ViscosityOvershoot');
Index: /issm/trunk/src/m/model/BasinConstrain.m
===================================================================
--- /issm/trunk/src/m/model/BasinConstrain.m	(revision 9678)
+++ /issm/trunk/src/m/model/BasinConstrain.m	(revision 9679)
@@ -48,6 +48,6 @@
 
 %all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
-md.spcvx(vertexnotondomain)=md.vx_obs(vertexnotondomain);
-md.spcvy(vertexnotondomain)=md.vy_obs(vertexnotondomain);
+md.diagnostic.spcvx(vertexnotondomain)=md.vx_obs(vertexnotondomain);
+md.diagnostic.spcvy(vertexnotondomain)=md.vy_obs(vertexnotondomain);
 md.mask.elementonwater(elementnotondomain)=1;
 
@@ -56,8 +56,8 @@
 numpos=unique(md.elements(pos,:));
 nodes=setdiff(1:1:md.numberofnodes,numpos);
-md.spcvx(nodes)=md.vx_obs(nodes);
-md.spcvy(nodes)=md.vy_obs(nodes);
+md.diagnostic.spcvx(nodes)=md.vx_obs(nodes);
+md.diagnostic.spcvy(nodes)=md.vy_obs(nodes);
 
 %make sure icefronts that are completely spc'd are taken out:
-free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))))~=2);
-md.pressureload=md.pressureload(free_segments,:);
+free_segments=find((~isnan(md.diagnostic.spcvx(md.diagnostic.icefront(:,1:2))) + ~isnan(md.diagnostic.spcvy(md.diagnostic.icefront(:,1:2))))~=2);
+md.diagnostic.icefront=md.diagnostic.icefront(free_segments,:);
Index: /issm/trunk/src/m/model/BasinConstrainShelf.m
===================================================================
--- /issm/trunk/src/m/model/BasinConstrainShelf.m	(revision 9678)
+++ /issm/trunk/src/m/model/BasinConstrainShelf.m	(revision 9679)
@@ -48,6 +48,6 @@
 
 %all elements outside the constraint domain are equivalent to water. all nodes outside are spc'd.
-md.spcvx(vertexnotondomain)=md.vx_obs(vertexnotondomain);
-md.spcvy(vertexnotondomain)=md.vy_obs(vertexnotondomain);
+md.diagnostic.spcvx(vertexnotondomain)=md.vx_obs(vertexnotondomain);
+md.diagnostic.spcvy(vertexnotondomain)=md.vy_obs(vertexnotondomain);
 md.mask.elementonwater(elementnotondomain)=1;
 
@@ -56,6 +56,6 @@
 numpos=unique(md.elements(pos,:));
 nodes=setdiff(1:1:md.numberofnodes,numpos);
-md.spcvx(nodes)=md.vx_obs(nodes);
-md.spcvy(nodes)=md.vy_obs(nodes);
+md.diagnostic.spcvx(nodes)=md.vx_obs(nodes);
+md.diagnostic.spcvy(nodes)=md.vy_obs(nodes);
 
 
@@ -63,13 +63,13 @@
 %we spc to the smoothed value, so that control methods don't go berserk trying to figure out what reaction force to apply for the spc to stand.
 pos=find(isnan(md.vel_obs_raw));
-md.spcvx(pos)=md.vx_obs(pos); 
-md.spcvy(pos)=md.vy_obs(pos); 
+md.diagnostic.spcvx(pos)=md.vx_obs(pos); 
+md.diagnostic.spcvy(pos)=md.vy_obs(pos); 
 
 %iceshelves: any vertex on floating ice is spc'd
 pos=find(md.mask.vertexongroundedice);
-md.spcvx(pos)=md.vx_obs(pos); 
-md.spcvy(pos)=md.vy_obs(pos); 
+md.diagnostic.spcvx(pos)=md.vx_obs(pos); 
+md.diagnostic.spcvy(pos)=md.vy_obs(pos); 
 
 %make sure icefronts that are completely spc'd are taken out:
-free_segments=find((~isnan(md.spcvx(md.pressureload(:,1:2))) + ~isnan(md.spcvy(md.pressureload(:,1:2))) )~=2);
-md.pressureload=md.pressureload(free_segments,:);
+free_segments=find((~isnan(md.diagnostic.spcvx(md.diagnostic.icefront(:,1:2))) + ~isnan(md.diagnostic.spcvy(md.diagnostic.icefront(:,1:2))) )~=2);
+md.diagnostic.icefront=md.diagnostic.icefront(free_segments,:);
Index: /issm/trunk/src/m/model/collapse.m
===================================================================
--- /issm/trunk/src/m/model/collapse.m	(revision 9678)
+++ /issm/trunk/src/m/model/collapse.m	(revision 9679)
@@ -52,14 +52,14 @@
 
 %boundary conditions
-md.spcvx=project2d(md,md.spcvx,md.numlayers);
-md.spcvy=project2d(md,md.spcvy,md.numlayers);
-md.spcvz=project2d(md,md.spcvz,md.numlayers);
+md.diagnostic.spcvx=project2d(md,md.diagnostic.spcvx,md.numlayers);
+md.diagnostic.spcvy=project2d(md,md.diagnostic.spcvy,md.numlayers);
+md.diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.numlayers);
 md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.numlayers);
 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.numlayers);
 
 %Extrusion of Neumann BC
-if ~isnan(md.pressureload),
-	numberofneumann2d=size(md.pressureload,1)/md.numlayers;
-	md.pressureload=[md.pressureload(1:numberofneumann2d,1:2) md.pressureload(1:numberofneumann2d,5:6)]; %Add two columns on the first layer 
+if ~isnan(md.diagnostic.icefront),
+	numberofneumann2d=size(md.diagnostic.icefront,1)/md.numlayers;
+	md.diagnostic.icefront=[md.diagnostic.icefront(1:numberofneumann2d,1:2) md.diagnostic.icefront(1:numberofneumann2d,5:6)]; %Add two columns on the first layer 
 end
 
Index: /issm/trunk/src/m/model/contourmassbalance.m
===================================================================
--- /issm/trunk/src/m/model/contourmassbalance.m	(revision 9678)
+++ /issm/trunk/src/m/model/contourmassbalance.m	(revision 9679)
@@ -19,5 +19,5 @@
 %Get segments enveloping contour
 segments=contourenvelope(md,file);
-%md.pressureload=segments; plotmodel(md,'data','pressureload','expdisp',file);
+%md.diagnostic.icefront=segments; plotmodel(md,'data','pressureload','expdisp',file);
 
 %get flag list of elements and nodes inside the contour
Index: /issm/trunk/src/m/model/display/displaybc.m
===================================================================
--- /issm/trunk/src/m/model/display/displaybc.m	(revision 9678)
+++ /issm/trunk/src/m/model/display/displaybc.m	(revision 9679)
@@ -12,7 +12,7 @@
 
 disp(sprintf('\n      diagnostic:'));
-fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)');
-fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)');
-fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)');
+fielddisplay(md,'diagnostic.spcvx','x-axis velocity constraint (NaN means no constraint)');
+fielddisplay(md,'diagnostic.spcvy','y-axis velocity constraint (NaN means no constraint)');
+fielddisplay(md,'diagnostic.spcvz','z-axis velocity constraint (NaN means no constraint)');
 fielddisplay(md,'pressureload','segments on ice front list (0:Air 1:Water 2:Ice)');
 
Index: sm/trunk/src/m/model/display/displaydiagnostic.m
===================================================================
--- /issm/trunk/src/m/model/display/displaydiagnostic.m	(revision 9678)
+++ 	(revision )
@@ -1,37 +1,0 @@
-function displaydiagnostic(md)
-%DISPLAYDIAGNOSTIC - display solution parameters of diagnostic
-%
-%   To avoid clobbering display.m with every field from model md, 
-%   we create this routine that displays the solution parameters
-%   from model md, only if requested.
-%
-%   Usage:
-%      displaydiagnostic(md)
-
-disp(sprintf('   Diagnostic solution parameters:'));
-
-disp(sprintf('\n      %s','Newton convergence criteria:'));
-fielddisplay(md,'eps_res','mechanical equilibrium residue convergence criterion');
-fielddisplay(md,'eps_rel','velocity relative convergence criterion, NaN -> not applied');
-fielddisplay(md,'eps_abs','velocity absolute convergence criterion, NaN -> not applied');
-fielddisplay(md,'max_nonlinear_iterations','maximum number of nonlinear iterations');
-fielddisplay(md,'viscosity_overshoot','over-shooting constant new=new+C*(new-old)');
-
-disp(sprintf('\n      boundary conditions:'));
-fielddisplay(md,'spcvx','x-axis velocity constraint (NaN means no constraint)');
-fielddisplay(md,'spcvy','y-axis velocity constraint (NaN means no constraint)');
-fielddisplay(md,'spcvz','z-axis velocity constraint (NaN means no constraint)');
-fielddisplay(md,'pressureload','segments on ice front list');
-
-disp(sprintf('\n      %s','Penalties:'));
-fielddisplay(md,'penalty_offset','offset used by penalties: penalty = Kmax*10^offset');
-fielddisplay(md,'min_mechanical_constraints','threshold for instability of mechanical constraints');
-
-disp(sprintf('\n      %s','Memory management:'));
-fielddisplay(md,'lowmem','Set to 1 if you are running low on cluster memory');
-fielddisplay(md,'connectivity','element connectivity');
-
-disp(sprintf('\n      %s','Debugging:'));
-fielddisplay(md,'verbose','level of output statements: none -> 0, yes->1,2. Default is 0');
-fielddisplay(md,'element_debug','output debug statements for elementswhen possible yes-> 1, no -> 0. Default is 0');
-fielddisplay(md,'element_debugid','if element_debug on, id of element for which to output messages');
Index: /issm/trunk/src/m/model/extrude.m
===================================================================
--- /issm/trunk/src/m/model/extrude.m	(revision 9678)
+++ /issm/trunk/src/m/model/extrude.m	(revision 9679)
@@ -168,18 +168,18 @@
 
 %boundary conditions
-md.spcvx=project3d(md,'vector',md.spcvx,'type','node');
-md.spcvy=project3d(md,'vector',md.spcvy,'type','node');
-md.spcvz=project3d(md,'vector',md.spcvz,'type','node');
+md.diagnostic.spcvx=project3d(md,'vector',md.diagnostic.spcvx,'type','node');
+md.diagnostic.spcvy=project3d(md,'vector',md.diagnostic.spcvy,'type','node');
+md.diagnostic.spcvz=project3d(md,'vector',md.diagnostic.spcvz,'type','node');
 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.numlayers,'padding',NaN);
 md.prognostic.spcthickness=project3d(md,'vector',md.prognostic.spcthickness,'type','node');
-md.diagnostic_ref=project3d(md,'vector',md.diagnostic_ref,'type','node');
+md.diagnostic.referential=project3d(md,'vector',md.diagnostic.referential,'type','node');
 
 %in 3d, pressureload: [node1 node2 node3 node4 element]
-pressureload_layer1=[md.pressureload(:,1:2)  md.pressureload(:,2)+md.numberofnodes2d  md.pressureload(:,1)+md.numberofnodes2d  md.pressureload(:,3:4)]; %Add two columns on the first layer 
+pressureload_layer1=[md.diagnostic.icefront(:,1:2)  md.diagnostic.icefront(:,2)+md.numberofnodes2d  md.diagnostic.icefront(:,1)+md.numberofnodes2d  md.diagnostic.icefront(:,3:4)]; %Add two columns on the first layer 
 pressureload=[];
 for i=1:numlayers-1,
 	pressureload=[pressureload ;pressureload_layer1(:,1:4)+(i-1)*md.numberofnodes2d pressureload_layer1(:,5)+(i-1)*md.numberofelements2d pressureload_layer1(:,6)];
 end
-md.pressureload=pressureload;
+md.diagnostic.icefront=pressureload;
 
 %connectivity
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9678)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9679)
@@ -71,29 +71,29 @@
 %PRESSURELOAD{{{1
 if (md.dim==2),
-	fields={'pressureload'};
+	fields={'diagnostic.icefront'};
 	checksize(md,fields,[NaN 4]);
 elseif md.dim==3,
-	fields={'pressureload'};
+	fields={'diagnostic.icefront'};
 	checksize(md,fields,[NaN 6]);
 else
 	message('dim should be either 2 3');
 end
-checkvalues(md,{'pressureload(:,end)'},[0 1 2]);
+checkvalues(md,{'diagnostic.icefront(:,end)'},[0 1 2]);
 %}}}
 %NO NAN {{{1
 fields={'numberofelements','numberofnodes','x','y','z','friction.coefficient','friction.p','friction.q',...
 	'materials.rho_ice','materials.rho_water','materials.rheology_B','mask.elementonfloatingice','surface','thickness','bed','constants.g','settings.lowmem','nsteps','maxiter',...
-	'eps_res','max_nonlinear_iterations','materials.rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface','elementconnectivity'};
+	'diagnostic.restol','diagnostic.maxiter','materials.rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface','elementconnectivity'};
 checknan(md,fields);
 %}}}}
 %FIELDS >= 0 {{{1
 fields={'numberofelements','numberofnodes','elements','friction.coefficient','friction.p','friction.q',...
-	'materials.rho_ice','materials.rho_water','materials.rheology_B','mask.elementonfloatingice','thickness','constants.g','eps_res','max_nonlinear_iterations','eps_rel','eps_abs','nsteps','maxiter',...
-	'settings.lowmem','materials.rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface'};
+	'materials.rho_ice','materials.rho_water','materials.rheology_B','mask.elementonfloatingice','thickness','constants.g','diagnostic.restol','diagnostic.maxiter','diagnostic.reltol',...
+	'diagnostic.abstol','nsteps','maxiter','settings.lowmem','materials.rheology_n','nodeonbed','nodeonsurface','elementonbed','elementonsurface'};
 checkgreater(md,fields,0);
 %}}}
 %FIELDS > 0 {{{1
 fields={'numberofelements','numberofnodes','elements','friction.p',...
-	'materials.rho_ice','materials.rho_water','materials.rheology_B','thickness','constants.g','max_nonlinear_iterations','eps_res','eps_rel','eps_abs','maxiter'};
+	'materials.rho_ice','materials.rho_water','materials.rheology_B','thickness','constants.g','diagnostic.maxiter','diagnostic.restol','diagnostic.reltol','diagnostic.abstol','maxiter'};
 checkgreaterstrict(md,fields,0);
 %}}}
@@ -107,8 +107,8 @@
 %}}}
 %OTHER SIZES {{{1
-fields={'diagnostic_ref'};
+fields={'diagnostic.referential'};
 checksize(md,fields,[md.numberofnodes 6]);
-if ~isempty(md.requested_outputs),
-	if(size(md.requested_outputs,2)~=1),
+if ~isempty(md.diagnostic.requested_outputs),
+	if(size(md.diagnostic.requested_outputs,2)~=1),
 		message(['model ' md.miscellaneous.name ' requested outputs should be a column vector']);
 	end
@@ -326,6 +326,6 @@
 
 	%eps: 
-	if isnan(md.eps_rel),
-		message(['model not consistent: for a steadystate computation, eps_rel (relative convergence criterion) must be defined!']);
+	if isnan(md.diagnostic.reltol),
+		message(['model not consistent: for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!']);
 	end
 end
@@ -370,5 +370,5 @@
 			% {{{2
 			%SINGULAR
-			if ~any((~isnan(md.spcvx)+~isnan(md.spcvy))==2),
+			if ~any((~isnan(md.diagnostic.spcvx)+~isnan(md.diagnostic.spcvy))==2),
 				message(['model not consistent: model ' md.miscellaneous.name ' is not well posed (singular). You need at least one node with fixed velocity!'])
 			end
@@ -376,13 +376,13 @@
 			%ROTATED SPC
 			%CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
-			if any(sum(isnan(md.diagnostic_ref),2)~=0 & sum(isnan(md.diagnostic_ref),2)~=6),
-				message(['model not consistent: model ' md.miscellaneous.name ' has problem with rotated spc. Each line of diagnostic_ref should contain either only NaN values or no NaN values']);
+			if any(sum(isnan(md.diagnostic.referential),2)~=0 & sum(isnan(md.diagnostic.referential),2)~=6),
+				message(['model not consistent: model ' md.miscellaneous.name ' has problem with rotated spc. Each line of diagnostic.referential should contain either only NaN values or no NaN values']);
 			end
 			%CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
-			if any(sum(isnan(md.diagnostic_ref),2)==0),
-				pos=find(sum(isnan(md.diagnostic_ref),2)==0);
-				if any(dot(md.diagnostic_ref(pos,1:3),md.diagnostic_ref(pos,4:6))),
-					dot(md.diagnostic_ref(pos,1:3),md.diagnostic_ref(pos,4:6))
-					message(['model not consistent: model ' md.miscellaneous.name ' has problem with rotated spc. Vectors in diagnostic_ref (colums 1 to 3 and 4 to 6) must be orthogonal']);
+			if any(sum(isnan(md.diagnostic.referential),2)==0),
+				pos=find(sum(isnan(md.diagnostic.referential),2)==0);
+				if any(dot(md.diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6))),
+					dot(md.diagnostic.referential(pos,1:3),md.diagnostic.referential(pos,4:6))
+					message(['model not consistent: model ' md.miscellaneous.name ' has problem with rotated spc. Vectors in diagnostic.referential (colums 1 to 3 and 4 to 6) must be orthogonal']);
 				end
 
@@ -390,6 +390,6 @@
 			%CHECK THAT ROTATION IS IN THE (X,Y) PLANE FOR 2D MODELS
 			if md.dim==2,
-				pos=find(sum(isnan(md.diagnostic_ref),2)==0  & md.flowequation.vertex_equation==2);
-				if any(md.diagnostic_ref(pos,3:5)~=0);
+				pos=find(sum(isnan(md.diagnostic.referential),2)==0  & md.flowequation.vertex_equation==2);
+				if any(md.diagnostic.referential(pos,3:5)~=0);
 					message(['model not consistent: model ' md.miscellaneous.name ' has problem with rotated spc. The rotation should be in the (x,y) plane for 2D diagnostic models (nodeonmacayeal)']);
 				end
Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 9678)
+++ /issm/trunk/src/m/model/marshall.m	(revision 9679)
@@ -334,5 +334,5 @@
 function out=marshallverbose(in)
 	out = VerboseToBinary(in);
-function out=marshallpressureload(in)
+function out=marshallicefront(in)
 	out=in;
 	pos=find(in(:,end)==0); out(pos,end)=AirEnum;
Index: /issm/trunk/src/m/model/modelextract.m
===================================================================
--- /issm/trunk/src/m/model/modelextract.m	(revision 9678)
+++ /issm/trunk/src/m/model/modelextract.m	(revision 9679)
@@ -216,11 +216,11 @@
 	nodestoflag1=intersect(orphans_node,pos_node);
 	nodestoflag2=Pnode(nodestoflag1);
-	if numel(md1.spcvx)>1 & numel(md1.spcvy)>2 & numel(md1.spcvz)>2,
+	if numel(md1.diagnostic.spcvx)>1 & numel(md1.diagnostic.spcvy)>2 & numel(md1.diagnostic.spcvz)>2,
 		if numel(md1.vx_obs)>1 & numel(md1.vy_obs)>1
-			md2.spcvx(nodestoflag2)=md2.vx_obs(nodestoflag2); 
-			md2.spcvy(nodestoflag2)=md2.vy_obs(nodestoflag2);
+			md2.diagnostic.spcvx(nodestoflag2)=md2.vx_obs(nodestoflag2); 
+			md2.diagnostic.spcvy(nodestoflag2)=md2.vy_obs(nodestoflag2);
 		else
-			md2.spcvx(nodestoflag2)=NaN;
-			md2.spcvy(nodestoflag2)=NaN;
+			md2.diagnostic.spcvx(nodestoflag2)=NaN;
+			md2.diagnostic.spcvy(nodestoflag2)=NaN;
 			disp(' ')
 			disp('!! modelextract warning: spc values should be checked !!')
@@ -228,5 +228,5 @@
 		end
 		%put 0 for vz
-		md2.spcvz(nodestoflag2)=0;
+		md2.diagnostic.spcvz(nodestoflag2)=0;
 	end
 	if ~isnan(md1.thermal.spctemperature),
Index: /issm/trunk/src/m/model/plot/plot_BC.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_BC.m	(revision 9678)
+++ /issm/trunk/src/m/model/plot/plot_BC.m	(revision 9679)
@@ -7,7 +7,7 @@
 
 %plot dirichlets
-h1=plot(md.x(find(~isnan(md.spcvx))),md.y(find(~isnan(md.spcvx))),'ro','MarkerSize',14,'MarkerFaceColor','r');
-h2=plot(md.x(find(~isnan(md.spcvy))),md.y(find(~isnan(md.spcvy))),'bo','MarkerSize',10,'MarkerFaceColor','b');
-h3=plot(md.x(find(~isnan(md.spcvz))),md.y(find(~isnan(md.spcvz))),'yo','MarkerSize',6 ,'MarkerFaceColor','y');
+h1=plot(md.x(find(~isnan(md.diagnostic.spcvx))),md.y(find(~isnan(md.diagnostic.spcvx))),'ro','MarkerSize',14,'MarkerFaceColor','r');
+h2=plot(md.x(find(~isnan(md.diagnostic.spcvy))),md.y(find(~isnan(md.diagnostic.spcvy))),'bo','MarkerSize',10,'MarkerFaceColor','b');
+h3=plot(md.x(find(~isnan(md.diagnostic.spcvz))),md.y(find(~isnan(md.diagnostic.spcvz))),'yo','MarkerSize',6 ,'MarkerFaceColor','y');
 
 %update legend
Index: /issm/trunk/src/m/model/plot/plot_pressureload.m
===================================================================
--- /issm/trunk/src/m/model/plot/plot_pressureload.m	(revision 9678)
+++ /issm/trunk/src/m/model/plot/plot_pressureload.m	(revision 9679)
@@ -12,5 +12,5 @@
 %process mesh and data
 [x y z elements is2d isplanet]=processmesh(md,[],options);
-pressureload=md.pressureload;
+pressureload=md.diagnostic.icefront;
 
 if (md.dim==2),
Index: /issm/trunk/src/m/model/setflowequation.m
===================================================================
--- /issm/trunk/src/m/model/setflowequation.m	(revision 9678)
+++ /issm/trunk/src/m/model/setflowequation.m	(revision 9679)
@@ -92,5 +92,5 @@
 	nodeonstokes=zeros(md.numberofnodes,1);
 	nodeonstokes(md.elements(find(stokesflag),:))=1;
-	fullspcnodes=double((~isnan(md.spcvx)+~isnan(md.spcvy)+~isnan(md.spcvz))==3 | (nodeonpattyn & nodeonstokes));         %find all the nodes on the boundary of the domain without icefront
+	fullspcnodes=double((~isnan(md.diagnostic.spcvx)+~isnan(md.diagnostic.spcvy)+~isnan(md.diagnostic.spcvz))==3 | (nodeonpattyn & nodeonstokes));         %find all the nodes on the boundary of the domain without icefront
 	fullspcelems=double(sum(fullspcnodes(md.elements),2)==6);         %find all the nodes on the boundary of the domain without icefront
 	stokesflag(find(fullspcelems))=0;
@@ -120,5 +120,5 @@
 
 %Now take care of the coupling between MacAyeal and Pattyn
-md.penalties=[];
+md.diagnostic.vertex_pairing=[];
 nodeonmacayealpattyn=zeros(md.numberofnodes,1);
 nodeonpattynstokes=zeros(md.numberofnodes,1);
@@ -136,5 +136,5 @@
 			penalties=[penalties; [bordernodes2d bordernodes2d+md.numberofnodes2d*(i)]];
 		end
-		md.penalties=penalties;
+		md.diagnostic.vertex_pairing=penalties;
 	end
 elseif strcmpi(coupling_method,'tiling'),
Index: /issm/trunk/src/m/solutions/convergence.m
===================================================================
--- /issm/trunk/src/m/solutions/convergence.m	(revision 9678)
+++ /issm/trunk/src/m/solutions/convergence.m	(revision 9679)
@@ -6,7 +6,7 @@
 %Get convergence options
 yts=parameters.ConstantsYts;
-eps_res=parameters.EpsRes;
-eps_rel=parameters.EpsRel;
-eps_abs=parameters.EpsAbs;
+restol=parameters.DiagnosticRestol;
+reltol=parameters.DiagnosticReltol;
+abstol=parameters.DiagnosticAbstol;
 
 %initialization
@@ -25,14 +25,14 @@
 	error('convergence error message: mechanical equilibrium convergence criterion is NaN!'); 
 end
-if (res<=eps_res),
-	issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' < ',eps_res*100,' %');
+if (res<=restol),
+	issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' < ',restol*100,' %');
 	converged=true;
 else
-	issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' > ',eps_res*100,' %');
+	issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      mechanical equilibrium convergence criterion',res*100,' > ',restol*100,' %');
 	converged=false;
 end
 
 %Relative criterion (optional)
-if ((~isnan(eps_rel)) | (VerboseConvergence())),
+if ((~isnan(reltol)) | (VerboseConvergence())),
 
 	%compute ndu/nu
@@ -45,10 +45,10 @@
 
 	%print criterion
-	if ~isnan(eps_rel),
+	if ~isnan(reltol),
 		if nu, %avoid "dividing by zero" warning
-			if (ndu/nu<=eps_rel),
-				issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' < ',eps_rel*100,' %');
+			if (ndu/nu<=reltol),
+				issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' < ',reltol*100,' %');
 			else
-				issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' > ',eps_rel*100,' %');
+				issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      relative convergence criterion: norm(du)/norm(u)',ndu/nu*100,' > ',reltol*100,' %');
 				converged=false;
 			end
@@ -65,5 +65,5 @@
 
 %Absolute criterion (optional)
-if ((~isnan(eps_abs)) | VerboseConvergence()),
+if ((~isnan(abstol)) | VerboseConvergence()),
 
 	%compute max(du)
@@ -75,9 +75,9 @@
 
 	%print criterion
-	if ~isnan(eps_abs),
-		if (nduinf<=eps_abs),
-			issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' < ',eps_abs,' m/yr');
+	if ~isnan(abstol),
+		if (nduinf<=abstol),
+			issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' < ',abstol,' m/yr');
 		else
-			issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' > ',eps_abs,' m/yr');
+			issmprintf(VerboseConvergence(),'%-60s%g%s%g%s','      absolute convergence criterion: max(du)',nduinf,' > ',abstol,' m/yr');
 			converged=false;
 		end
Index: /issm/trunk/src/m/solvers/solver_nonlinear.m
===================================================================
--- /issm/trunk/src/m/solvers/solver_nonlinear.m	(revision 9678)
+++ /issm/trunk/src/m/solvers/solver_nonlinear.m	(revision 9679)
@@ -6,6 +6,6 @@
 
 	%Branch on partitioning schema requested
-	min_mechanical_constraints=femmodel.parameters.MinMechanicalConstraints;
-	max_nonlinear_iterations=femmodel.parameters.MaxNonlinearIterations;
+	rift_penalty_threshold=femmodel.parameters.DiagnosticRiftPenaltyThreshold;
+	maxiter=femmodel.parameters.DiagnosticMaxiter;
 	configuration_type=femmodel.parameters.ConfigurationType;
 	[femmodel.nodes]=UpdateConstraints(femmodel.nodes,femmodel.constraints,femmodel.parameters);
@@ -51,5 +51,5 @@
 		if ~constraints_converged,
 			if converged,
-				if num_unstable_constraints <= min_mechanical_constraints,
+				if num_unstable_constraints <= rift_penalty_threshold,
 					converged=1;
 				else 
@@ -62,6 +62,6 @@
 		count=count+1;
 		if(converged==1) break; end
-		if(count>max_nonlinear_iterations),
-			issmprintf(true,'%s%i%s','      maximum number of iterations ',max_nonlinear_iterations,' exceeded');
+		if(count>maxiter),
+			issmprintf(true,'%s%i%s','      maximum number of iterations ',maxiter,' exceeded');
 			break;
 		end
Index: /issm/trunk/src/m/utils/BC/SetIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetIceSheetBC.m	(revision 9678)
+++ /issm/trunk/src/m/utils/BC/SetIceSheetBC.m	(revision 9679)
@@ -9,17 +9,17 @@
 %node on Dirichlet
 pos=find(md.nodeonboundary);
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
-md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
+md.diagnostic.referential=NaN*ones(md.numberofnodes,6);
 
 %Dirichlet Values
 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
 	disp('      boundary conditions for diagnostic model: spc set as observed velocities');
-	md.spcvx(pos)=md.vx_obs(pos);
-	md.spcvy(pos)=md.vy_obs(pos);
+	md.diagnostic.spcvx(pos)=md.vx_obs(pos);
+	md.diagnostic.spcvy(pos)=md.vy_obs(pos);
 else
 	disp('      boundary conditions for diagnostic model: spc set as zero');
@@ -28,7 +28,7 @@
 %segment on neumann (Ice Front) -> none
 if (md.dim==2)
-	md.pressureload=zeros(0,4);
+	md.diagnostic.icefront=zeros(0,4);
 else
-	md.pressureload=zeros(0,6);
+	md.diagnostic.icefront=zeros(0,6);
 end
 
Index: /issm/trunk/src/m/utils/BC/SetIceShelfBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetIceShelfBC.m	(revision 9678)
+++ /issm/trunk/src/m/utils/BC/SetIceShelfBC.m	(revision 9679)
@@ -28,17 +28,17 @@
 end
 pos=find(md.nodeonboundary & ~nodeonicefront);
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
-md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
+md.diagnostic.referential=NaN*ones(md.numberofnodes,6);
 
 %Dirichlet Values
 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
 	disp('      boundary conditions for diagnostic model: spc set as observed velocities');
-	md.spcvx(pos)=md.vx_obs(pos);
-	md.spcvy(pos)=md.vy_obs(pos);
+	md.diagnostic.spcvx(pos)=md.vx_obs(pos);
+	md.diagnostic.spcvy(pos)=md.vy_obs(pos);
 else
 	disp('      boundary conditions for diagnostic model: spc set as zero');
@@ -62,5 +62,5 @@
 
 %plug onto model
-md.pressureload=pressureload;
+md.diagnostic.icefront=pressureload;
 
 %Create zeros basalforcings.melting_rate, surfaceforcings.ablation_rate, surfaceforcings.accumulation_rate
Index: /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m	(revision 9678)
+++ /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m	(revision 9679)
@@ -35,17 +35,17 @@
 	warning('SetMarineIceSheetBC warning: ice front all around the glacier, no dirichlet found. Dirichlet must be added manually')
 end
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
-md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
+md.diagnostic.referential=NaN*ones(md.numberofnodes,6);
 
 %Dirichlet Values
 if (length(md.vx_obs)==md.numberofnodes & length(md.vy_obs)==md.numberofnodes)
 	disp('      boundary conditions for diagnostic model: spc set as observed velocities');
-	md.spcvx(pos)=md.vx_obs(pos);
-	md.spcvy(pos)=md.vy_obs(pos);
+	md.diagnostic.spcvx(pos)=md.vx_obs(pos);
+	md.diagnostic.spcvy(pos)=md.vy_obs(pos);
 else
 	disp('      boundary conditions for diagnostic model: spc set as zero');
@@ -72,5 +72,5 @@
 
 %plug onto model
-md.pressureload=pressureload;
+md.diagnostic.icefront=pressureload;
 
 
Index: /issm/trunk/template
===================================================================
--- /issm/trunk/template	(revision 9678)
+++ /issm/trunk/template	(revision 9679)
@@ -61,25 +61,4 @@
 	waterfraction
 }}}
-diagnostic{{{
-	spcvx
-	spcvy
-	spcvz
-	stokesreconditioning
-	shelf_dampening
-	viscosity_overshoot
-	pressureload -> rename icefront?
-	diagnostic_ref -> rename referential?
-	penalties -> rename vertex_pairing
-	penalty_offset -> rename penalty_factor and change to absolute value
-
-	eps_res -> rename following PETSc: restol
-	eps_rel -> rename following PETSc: reltol
-	eps_abs-> rename following PETSc:  abstol
-	max_nonlinear_iterations -> rename maxiter
-
-	penalty_lock -> rename rift_penalty_lock 
-	min_mechanical_constraints -> rename  rift_penalty_threshold
-	requested_outputs
-}}}
 inversion{{{ 
 	private: 
Index: /issm/trunk/test/Miscellaneous/Bump/Bump.par
===================================================================
--- /issm/trunk/test/Miscellaneous/Bump/Bump.par	(revision 9678)
+++ /issm/trunk/test/Miscellaneous/Bump/Bump.par	(revision 9679)
@@ -28,6 +28,6 @@
 %Deal with boundary conditions:
 md=SetIceSheetBC(md);
-md.spcvx=zeros(md.numberofnodes,1);
-md.spcvy=200*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=zeros(md.numberofnodes,1);
+md.diagnostic.spcvy=200*ones(md.numberofnodes,1);
 
 %Parallel options
Index: /issm/trunk/test/NightlyRun/test1101.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1101.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1101.m	(revision 9679)
@@ -21,11 +21,11 @@
 
 	%Create dirichlet on the bed only
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 	pos=find(md.nodeonbed);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
 
 	%Create MPCs to have periodic boundary conditions
@@ -36,5 +36,5 @@
 	posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x));
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1102.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1102.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1102.m	(revision 9679)
@@ -29,7 +29,7 @@
 	%Create dirichlet on the bed only
 	pos=find(md.nodeonbed);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
-	md.spcvz(pos)=0;
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
+	md.diagnostic.spcvz(pos)=0;
 
 	%Create MPCs to have periodic boundary conditions
@@ -42,10 +42,10 @@
 	%posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x) & ~md.nodeonbed);
 
-	%md.penalties=[posx,posx2;posy,posy2];
+	%md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
 	md.eps_abs=NaN;
-	md.eps_rel=NaN;
-	md.eps_res=1;
+	md.diagnostic.reltol=NaN;
+	md.diagnostic.restol=1;
 	md.cluster=generic('name',oshostname(),'np',8);
 	md=solve(md,DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test1103.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1103.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1103.m	(revision 9679)
@@ -19,10 +19,10 @@
 
 	%Create dirichlet on the bed only
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 	pos=find(md.nodeonbed);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
 
 	%Create MPCs to have periodic boundary conditions
@@ -33,5 +33,5 @@
 	posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x));
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1104.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1104.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1104.m	(revision 9679)
@@ -18,11 +18,11 @@
 
 	%Create dirichlet on the bed only
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 	pos=find(md.nodeonbed);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
 
 	%Create MPCs to have periodic boundary conditions
@@ -33,5 +33,5 @@
 	posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x));
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1105.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1105.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1105.m	(revision 9679)
@@ -21,7 +21,7 @@
 
 	%Create MPCs to have periodic boundary conditions
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 	posx=find(md.x==0 & md.y~=0 & md.y~=L);
@@ -31,33 +31,33 @@
 	posy2=find(md.y==L & md.x~=0 & md.x~=L);
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Add spc on the corners
 	pos=find((md.x==0 | md.x==L) & (md.y==0 | md.y==L) & md.nodeonbed);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
 	if(L==5000),
-		md.spcvx(pos)=15.66;
-		md.spcvy(pos)=-0.1967;
+		md.diagnostic.spcvx(pos)=15.66;
+		md.diagnostic.spcvy(pos)=-0.1967;
 	elseif(L==10000),
-		md.spcvx(pos)=16.04;
-		md.spcvy(pos)=-0.1977;
+		md.diagnostic.spcvx(pos)=16.04;
+		md.diagnostic.spcvy(pos)=-0.1977;
 	elseif(L==20000),
-		md.spcvx(pos)=16.53;
-		md.spcvy(pos)=-1.27;
+		md.diagnostic.spcvx(pos)=16.53;
+		md.diagnostic.spcvy(pos)=-1.27;
 	elseif(L==40000),
-		md.spcvx(pos)=17.23;
-		md.spcvy(pos)=-3.17;
+		md.diagnostic.spcvx(pos)=17.23;
+		md.diagnostic.spcvy(pos)=-3.17;
 	elseif(L==80000),
-		md.spcvx(pos)=16.68;
-		md.spcvy(pos)=-2.69;
+		md.diagnostic.spcvx(pos)=16.68;
+		md.diagnostic.spcvy(pos)=-2.69;
 	elseif(L==160000),
-		md.spcvx(pos)=16.03;
-		md.spcvy(pos)=-1.27;
+		md.diagnostic.spcvx(pos)=16.03;
+		md.diagnostic.spcvy(pos)=-1.27;
 	end
 	
 	%Spc the bed at zero for vz
 	pos=find(md.nodeonbed);
-	md.spcvz(pos)=0;
+	md.diagnostic.spcvz(pos)=0;
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1106.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1106.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1106.m	(revision 9679)
@@ -25,5 +25,5 @@
 	%posy2=find(md.y==L & md.x~=0 & md.x~=L);
 
-	%md.penalties=[posx,posx2;posy,posy2];
+	%md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1107.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1107.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1107.m	(revision 9679)
@@ -21,7 +21,7 @@
 
 	%We need one grd on dirichlet: the 4 corners are set to zero
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 	%Create MPCs to have periodic boundary conditions
@@ -32,27 +32,27 @@
 	posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x));
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Add spc on the corners
 	pos=find((md.x==0 | md.x==L) & (md.y==0 | md.y==L) & md.nodeonbed);
-	md.spcvy(:)=0;
-	md.spcvx(pos)=0;
+	md.diagnostic.spcvy(:)=0;
+	md.diagnostic.spcvx(pos)=0;
 	if(L==5000),
-		md.spcvx(pos)=16.0912;
+		md.diagnostic.spcvx(pos)=16.0912;
 	elseif(L==10000),
-		md.spcvx(pos)=16.52;
+		md.diagnostic.spcvx(pos)=16.52;
 	elseif(L==20000),
-		md.spcvx(pos)=17.77;
+		md.diagnostic.spcvx(pos)=17.77;
 	elseif(L==40000),
-		md.spcvx(pos)=19.88;
+		md.diagnostic.spcvx(pos)=19.88;
 	elseif(L==80000),
-		md.spcvx(pos)=18.65;
+		md.diagnostic.spcvx(pos)=18.65;
 	elseif(L==160000),
-		md.spcvx(pos)=16.91;
+		md.diagnostic.spcvx(pos)=16.91;
 	end
 	
 	%Spc the bed at zero for vz
 	pos=find(md.nodeonbed);
-	md.spcvz(pos)=0;
+	md.diagnostic.spcvz(pos)=0;
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1108.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1108.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1108.m	(revision 9679)
@@ -18,12 +18,12 @@
 
 	%We need one grd on dirichlet: the 4 corners are set to zero
-	%md.spcvx=NaN*ones(md.numberofnodes,1);
-	%md.spcvy=NaN*ones(md.numberofnodes,1);
-	%md.spcvz=NaN*ones(md.numberofnodes,1);
+	%md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	%md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	%md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 	
 	%pos=find((md.x==0 | md.x==max(md.x)) & (md.y==0 | md.y==max(md.y)));
-	%md.spcvx(pos)=0;
-	%md.spcvy(pos)=0;
-	%md.spcvz(pos)=0;
+	%md.diagnostic.spcvx(pos)=0;
+	%md.diagnostic.spcvy(pos)=0;
+	%md.diagnostic.spcvz(pos)=0;
 
 	%%Create MPCs to have periodic boundary conditions
@@ -34,5 +34,5 @@
 	%posy2=find(md.y==max(md.y) & md.x~=0 & md.x~=max(md.x));
 
-	%md.penalties=[posx,posx2;posy,posy2];
+	%md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1109.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1109.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1109.m	(revision 9679)
@@ -28,21 +28,21 @@
 	posx=find(md.x==0);
 	posx2=find(md.x==max(md.x));
-	md.penalties=[posx,posx2];
+	md.diagnostic.vertex_pairing=[posx,posx2];
 
 	%Create spcs on the bed 
 	pos=find(md.nodeonbed);
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
-	md.spcvx(pos)=0;
-	md.spcvy(pos)=0;
-	md.spcvz(pos)=0;
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx(pos)=0;
+	md.diagnostic.spcvy(pos)=0;
+	md.diagnostic.spcvz(pos)=0;
 
 	%Remove the spc where there is some sliding (case 3 and 4):
 	if i==3 | i==4,
 		pos=find(md.y/max(md.y)>=0.44 & md.y/max(md.y)<=0.5);
-		md.spcvx(pos)=NaN;
-		md.spcvy(pos)=NaN;
-		md.spcvz(pos)=NaN;
+		md.diagnostic.spcvx(pos)=NaN;
+		md.diagnostic.spcvy(pos)=NaN;
+		md.diagnostic.spcvz(pos)=NaN;
 	end
 
Index: /issm/trunk/test/NightlyRun/test1110.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1110.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1110.m	(revision 9679)
@@ -20,18 +20,18 @@
 	end
 
-	md.spcvx=NaN*ones(md.numberofnodes,1);
-	md.spcvy=NaN*ones(md.numberofnodes,1);
-	md.spcvz=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+	md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 	if (i==1 | i==3),
 		%Create dirichlet on the bed if no slip
 		pos=find(md.nodeonbed);
-		md.spcvx(pos)=0;
-		md.spcvy(pos)=0;
-		md.spcvz(pos)=0;
+		md.diagnostic.spcvx(pos)=0;
+		md.diagnostic.spcvy(pos)=0;
+		md.diagnostic.spcvz(pos)=0;
 	else
 		pos=find(md.nodeonbed & (md.x==0 | md.x==max(md.x)) & (md.y==0 | md.y==max(md.y)));
-		md.spcvx(pos)=100; %because we need a dirichlet somewhere
-		md.spcvy(pos)=0;
-		md.spcvz(pos)=0;
+		md.diagnostic.spcvx(pos)=100; %because we need a dirichlet somewhere
+		md.diagnostic.spcvy(pos)=0;
+		md.diagnostic.spcvz(pos)=0;
 	end
 	pos=find(~md.nodeonbed);
@@ -45,5 +45,5 @@
 	posy2=find(md.y==max(md.y));
 
-	md.penalties=[posx,posx2;posy,posy2];
+	md.diagnostic.vertex_pairing=[posx,posx2;posy,posy2];
 	md.prognostic.vertex_pairing=[posx,posx2;posy,posy2];
 
@@ -52,5 +52,5 @@
 	md.output_frequency=50;
 	md.prognostic.stabilization=1;
-	md.max_nonlinear_iterations=1;
+	md.diagnostic.maxiter=1;
 
 	%Compute the diagnostic
Index: /issm/trunk/test/NightlyRun/test1203.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1203.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1203.m	(revision 9679)
@@ -11,5 +11,5 @@
 %Impose a non zero velocity on the upper boundary condition (y=max(y))
 pos=find(md.y==max(md.y));
-md.spcvy(pos)=400*(((md.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.x(pos)-100000)/25000).^2);
+md.diagnostic.spcvy(pos)=400*(((md.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.x(pos)-100000)/25000).^2);
 
 %Compute solution for MacAyeal's model 
Index: /issm/trunk/test/NightlyRun/test1204.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1204.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1204.m	(revision 9679)
@@ -11,5 +11,5 @@
 %Impose a non zero velocity on the upper boundary condition (y=max(y))
 pos=find(md.y==max(md.y));
-md.spcvy(pos)=400*(((md.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.x(pos)-100000)/25000).^2);
+md.diagnostic.spcvy(pos)=400*(((md.x(pos)-100000)/25000).^2-ones(size(pos,1),1)).*heaviside((1+eps)*ones(size(pos,1),1)-((md.x(pos)-100000)/25000).^2);
 
 %Compute solution for MacAyeal's model 
Index: /issm/trunk/test/NightlyRun/test1205.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1205.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1205.m	(revision 9679)
@@ -23,7 +23,7 @@
 %Spc the nodes on the bed
 pos=find(md.nodeonbed);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
 
 %Now we can solve the problem 
Index: /issm/trunk/test/NightlyRun/test1206.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1206.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1206.m	(revision 9679)
@@ -23,7 +23,7 @@
 %Spc the nodes on the bed
 pos=find(md.nodeonbed);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
 
 %Now we can solve the problem 
Index: /issm/trunk/test/NightlyRun/test1207.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1207.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1207.m	(revision 9679)
@@ -23,7 +23,7 @@
 %Spc the nodes on the bed
 pos=find(md.nodeonbed);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
 
 %Now we can solve the problem 
Index: /issm/trunk/test/NightlyRun/test1208.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1208.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test1208.m	(revision 9679)
@@ -14,7 +14,7 @@
 %Spc the nodes on the bed
 pos=find(md.nodeonbed);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
 
 %Adapt the time steps to the resolution
Index: /issm/trunk/test/NightlyRun/test221.m
===================================================================
--- /issm/trunk/test/NightlyRun/test221.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test221.m	(revision 9679)
@@ -4,5 +4,5 @@
 md=extrude(md,3,1);
 md=setflowequation(md,'stokes','all');
-md.eps_rel=NaN;
+md.diagnostic.reltol=NaN;
 md.cluster=none;
 md=solve(md,TransientSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test222.m
===================================================================
--- /issm/trunk/test/NightlyRun/test222.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test222.m	(revision 9679)
@@ -4,5 +4,5 @@
 md=extrude(md,3,1);
 md=setflowequation(md,'stokes','all');
-md.eps_rel=NaN;
+md.diagnostic.reltol=NaN;
 md.cluster=generic('name',oshostname(),'np',3);
 md=solve(md,TransientSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test232.m
===================================================================
--- /issm/trunk/test/NightlyRun/test232.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test232.m	(revision 9679)
@@ -9,6 +9,6 @@
 md.rifts.riftstruct.fill=MelangeEnum();
 md.rifts.riftstruct.fraction=0;
-md.penalty_lock=2;
-md.min_mechanical_constraints=0;
+md.rift_penalty_lock=2;
+md.rift_penalty_threshold=0;
 md.rifts.riftstruct.fractionincrement=.1;
 md=solve(md,DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test233.m
===================================================================
--- /issm/trunk/test/NightlyRun/test233.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test233.m	(revision 9679)
@@ -10,5 +10,5 @@
 
 %tighten
-md.eps_res=10^-4;
+md.diagnostic.restol=10^-4;
 
 %needed later
@@ -37,24 +37,24 @@
 
 %Boundary conditions:
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 %constrain flanks to 0 normal velocity
 pos=find(md.x==xmin | md.x==xmax);
-md.spcvx(pos)=0;
-md.spcvz(pos)=NaN;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvz(pos)=NaN;
 
 %constrain grounding line to 0 velocity
 pos=find(md.y==ymin);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
 
 %icefront
 nodeonicefront=zeros(md.numberofnodes,1);
 pos=find(md.y==ymax); nodeonicefront(pos)=1;
-pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); pressureload=md.segments(pos,:);
-pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end))];
-md.pressureload=pressureload;
+pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
+diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
+md.diagnostic.icefront=diagnostic.icefront;
 
 md=solve(md,DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk/test/NightlyRun/test234.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test234.m	(revision 9679)
@@ -10,5 +10,5 @@
 
 %tighten
-md.eps_res=10^-4;
+md.diagnostic.restol=10^-4;
 
 %needed later
@@ -37,24 +37,24 @@
 
 %Boundary conditions:
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 %constrain flanks to 0 normal velocity
 pos=find(md.x==xmin | md.x==xmax);
-md.spcvx(pos)=0;
-md.spcvz(pos)=NaN;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvz(pos)=NaN;
 
 %constrain grounding line to 0 velocity
 pos=find(md.y==ymin);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
 
 %icefront
 nodeonicefront=zeros(md.numberofnodes,1);
 pos=find(md.y==ymax); nodeonicefront(pos)=1;
-pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); pressureload=md.segments(pos,:);
-pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end))];
-md.pressureload=pressureload;
+pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
+diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
+md.diagnostic.icefront=diagnostic.icefront;
 
 md=solve(md,DiagnosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test235.m
===================================================================
--- /issm/trunk/test/NightlyRun/test235.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test235.m	(revision 9679)
@@ -34,24 +34,24 @@
 
 %Boundary conditions:
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 %constrain flanks to 0 normal velocity
 pos=find(md.x==xmin | md.x==xmax);
-md.spcvx(pos)=0;
-md.spcvz(pos)=NaN;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvz(pos)=NaN;
 
 %constrain grounding line to 0 velocity
 pos=find(md.y==ymin);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
 
 %icefront
 nodeonicefront=zeros(md.numberofnodes,1);
 pos=find(md.y==ymax); nodeonicefront(pos)=1;
-pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); pressureload=md.segments(pos,:);
-pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end))];
-md.pressureload=pressureload;
+pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
+diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
+md.diagnostic.icefront=diagnostic.icefront;
 
 %partitioning
@@ -77,5 +77,5 @@
 
 %imperative! 
-md.eps_rel=10^-10; %tighten for qmu analysese
+md.diagnostic.reltol=10^-10; %tighten for qmu analysese
 md.qmu.isdakota=1;
 
Index: /issm/trunk/test/NightlyRun/test236.m
===================================================================
--- /issm/trunk/test/NightlyRun/test236.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test236.m	(revision 9679)
@@ -34,24 +34,24 @@
 
 %Boundary conditions:
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 %constrain flanks to 0 normal velocity
 pos=find(md.x==xmin | md.x==xmax);
-md.spcvx(pos)=0;
-md.spcvz(pos)=NaN;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvz(pos)=NaN;
 
 %constrain grounding line to 0 velocity
 pos=find(md.y==ymin);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
 
 %icefront
 nodeonicefront=zeros(md.numberofnodes,1);
 pos=find(md.y==ymax); nodeonicefront(pos)=1;
-pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); pressureload=md.segments(pos,:);
-pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end))];
-md.pressureload=pressureload;
+pos=find(nodeonicefront(md.segments(:,1)) | nodeonicefront(md.segments(:,2))); diagnostic.icefront=md.segments(pos,:);
+diagnostic.icefront=[diagnostic.icefront 1*md.mask.elementonfloatingice(diagnostic.icefront(:,end))];
+md.diagnostic.icefront=diagnostic.icefront;
 
 %partitioning
@@ -77,5 +77,5 @@
 
 %imperative! 
-md.eps_rel=10^-10; %tighten for qmu analysese
+md.diagnostic.reltol=10^-10; %tighten for qmu analysese
 md.qmu.isdakota=1;
 
Index: /issm/trunk/test/NightlyRun/test423.m
===================================================================
--- /issm/trunk/test/NightlyRun/test423.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test423.m	(revision 9679)
@@ -31,5 +31,5 @@
 
 %imperative! 
-md.eps_rel=10^-5; %tighten for qmu analysese
+md.diagnostic.reltol=10^-5; %tighten for qmu analysese
 
 %solve
Index: /issm/trunk/test/NightlyRun/test424.m
===================================================================
--- /issm/trunk/test/NightlyRun/test424.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test424.m	(revision 9679)
@@ -30,5 +30,5 @@
 
 %imperative! 
-md.eps_rel=10^-5; %tighten for qmu analysese
+md.diagnostic.reltol=10^-5; %tighten for qmu analysese
 
 %solve
Index: /issm/trunk/test/NightlyRun/test425.m
===================================================================
--- /issm/trunk/test/NightlyRun/test425.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test425.m	(revision 9679)
@@ -30,5 +30,5 @@
 
 %imperative!
-md.eps_rel=10^-5; %tighten for qmu analyses
+md.diagnostic.reltol=10^-5; %tighten for qmu analyses
 md.qmu.isdakota=1;
 
Index: /issm/trunk/test/NightlyRun/test426.m
===================================================================
--- /issm/trunk/test/NightlyRun/test426.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test426.m	(revision 9679)
@@ -30,5 +30,5 @@
 
 %imperative!
-md.eps_rel=10^-5; %tighten for qmu analyses
+md.diagnostic.reltol=10^-5; %tighten for qmu analyses
 md.qmu.isdakota=1;
 
Index: /issm/trunk/test/NightlyRun/test427.m
===================================================================
--- /issm/trunk/test/NightlyRun/test427.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test427.m	(revision 9679)
@@ -8,7 +8,7 @@
 
 %constrain all velocities to 1 m/yr, in the y-direction
-md.spcvx(:)=0;
-md.spcvy(:)=1;
-md.spcvz(:)=0;
+md.diagnostic.spcvx(:)=0;
+md.diagnostic.spcvy(:)=1;
+md.diagnostic.spcvz(:)=0;
 
 %Dakota options
@@ -44,5 +44,5 @@
 md.qmu.params.interval_type='forward';
 md.qmu.isdakota=1;
-md.eps_rel=10^-5; %tighten for qmu analyses
+md.diagnostic.reltol=10^-5; %tighten for qmu analyses
 
 %solve
Index: /issm/trunk/test/NightlyRun/test428.m
===================================================================
--- /issm/trunk/test/NightlyRun/test428.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test428.m	(revision 9679)
@@ -8,7 +8,7 @@
 
 %constrain all velocities to 1 m/yr, in the y-direction
-md.spcvx=zeros(md.numberofnodes,1);
-md.spcvy=ones(md.numberofnodes,1);
-md.spcvz=zeros(md.numberofnodes,1);
+md.diagnostic.spcvx=zeros(md.numberofnodes,1);
+md.diagnostic.spcvy=ones(md.numberofnodes,1);
+md.diagnostic.spcvz=zeros(md.numberofnodes,1);
 
 %Dakota options
@@ -44,5 +44,5 @@
 md.qmu.params.interval_type='forward';
 md.qmu.isdakota=1;
-md.eps_rel=10^-5; %tighten for qmu analyses
+md.diagnostic.reltol=10^-5; %tighten for qmu analyses
 
 %solve
Index: /issm/trunk/test/NightlyRun/test434.m
===================================================================
--- /issm/trunk/test/NightlyRun/test434.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test434.m	(revision 9679)
@@ -8,7 +8,7 @@
 
 %constrain all velocities to 1 m/yr, in the y-direction
-md.spcvx(:)=0;
-md.spcvy(:)=1;
-md.spcvz(:)=0;
+md.diagnostic.spcvx(:)=0;
+md.diagnostic.spcvy(:)=1;
+md.diagnostic.spcvz(:)=0;
 
 %Dakota options
@@ -47,5 +47,5 @@
 md.qmu.isdakota=1;
 
-md.eps_rel=10^-5; %tighten for qmu analyses
+md.diagnostic.reltol=10^-5; %tighten for qmu analyses
 
 md=solve(md,DiagnosticSolutionEnum,'overwrite','y');
Index: /issm/trunk/test/NightlyRun/test439.m
===================================================================
--- /issm/trunk/test/NightlyRun/test439.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test439.m	(revision 9679)
@@ -29,5 +29,5 @@
 
 %imperative! 
-md.eps_rel=10^-5; %tighten for qmu analysese
+md.diagnostic.reltol=10^-5; %tighten for qmu analysese
 
 %solve
Index: /issm/trunk/test/NightlyRun/test440.m
===================================================================
--- /issm/trunk/test/NightlyRun/test440.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test440.m	(revision 9679)
@@ -29,5 +29,5 @@
 
 %imperative! 
-md.eps_rel=10^-5; %tighten for qmu analysese
+md.diagnostic.reltol=10^-5; %tighten for qmu analysese
 
 %solve
Index: /issm/trunk/test/NightlyRun/test443.m
===================================================================
--- /issm/trunk/test/NightlyRun/test443.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test443.m	(revision 9679)
@@ -5,5 +5,5 @@
 md=setflowequation(md,'stokes','../Exp/SquareHalfRight.exp','fill','macayeal','coupling','tiling');
 md.cluster=none;
-md.eps_rel=0.4;
+md.diagnostic.reltol=0.4;
 md=solve(md,DiagnosticSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test444.m
===================================================================
--- /issm/trunk/test/NightlyRun/test444.m	(revision 9678)
+++ /issm/trunk/test/NightlyRun/test444.m	(revision 9679)
@@ -5,5 +5,5 @@
 md=setflowequation(md,'stokes','../Exp/SquareHalfRight.exp','fill','macayeal');
 md.cluster=generic('name',oshostname(),'np',3);
-md.eps_rel=0.4;
+md.diagnostic.reltol=0.4;
 md=solve(md,DiagnosticSolutionEnum);
 
Index: /issm/trunk/test/Par/79North.par
===================================================================
--- /issm/trunk/test/Par/79North.par	(revision 9678)
+++ /issm/trunk/test/Par/79North.par	(revision 9679)
@@ -30,5 +30,5 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.3;
+md.diagnostic.viscosity_overshoot=0.3;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
@@ -37,8 +37,8 @@
 md.timestepping.time_step=1;
 md.timestepping.final_time=3;
-md.eps_res=0.05;
-md.eps_rel=0.005;
+md.diagnostic.restol=0.05;
+md.diagnostic.reltol=0.005;
 md.steadystate.reltol=0.005;
-md.eps_abs=NaN;
+md.diagnostic.abstol=NaN;
 
 %Boundary conditions:
Index: /issm/trunk/test/Par/ISMIPF.par
===================================================================
--- /issm/trunk/test/Par/ISMIPF.par	(revision 9678)
+++ /issm/trunk/test/Par/ISMIPF.par	(revision 9679)
@@ -21,5 +21,5 @@
 %Create node on boundary fist (because we cannot use mesh)
 md=SetIceSheetBC(md);
-md.spcvx=100*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=100*ones(md.numberofnodes,1);
 md.vx=zeros(md.numberofnodes,1);
 md.vy=zeros(md.numberofnodes,1);
Index: /issm/trunk/test/Par/Pig.par
===================================================================
--- /issm/trunk/test/Par/Pig.par	(revision 9678)
+++ /issm/trunk/test/Par/Pig.par	(revision 9679)
@@ -28,5 +28,5 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.3;
+md.diagnostic.viscosity_overshoot=0.3;
 md.prognostic.stabilization=1;
 md.verbose=verbose(0);
@@ -34,8 +34,8 @@
 md.timestepping.time_step=1;
 md.timestepping.final_time=2;
-md.eps_res=0.05;
-md.eps_rel=1;
+md.diagnostic.restol=0.05;
+md.diagnostic.reltol=1;
 md.steadystate.reltol=1;
-md.eps_abs=NaN;
+md.diagnostic.abstol=NaN;
 
 %Boundary conditions:
Index: /issm/trunk/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 9678)
+++ /issm/trunk/test/Par/RoundSheetEISMINT.par	(revision 9679)
@@ -45,7 +45,7 @@
 md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
 
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
 
 %parallel options
Index: /issm/trunk/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9678)
+++ /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9679)
@@ -57,13 +57,13 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.0;
+md.diagnostic.viscosity_overshoot=0.0;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
 md.waitonlock=30;
-md.eps_res=0.05;
-md.eps_rel=0.05;
+md.diagnostic.restol=0.05;
+md.diagnostic.reltol=0.05;
 md.steadystate.reltol=0.05;
-md.eps_abs=NaN;
+md.diagnostic.abstol=NaN;
 md.timestepping.time_step=.1;
 md.timestepping.final_time=5;
@@ -75,15 +75,15 @@
 
 %Deal with boundary conditions:
-md.spcvx=NaN*ones(md.numberofnodes,1);
-md.spcvy=NaN*ones(md.numberofnodes,1);
-md.spcvz=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvx=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvy=NaN*ones(md.numberofnodes,1);
+md.diagnostic.spcvz=NaN*ones(md.numberofnodes,1);
 
 pos=find(md.x==0 & md.y==0);
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
 
 pressureload=md.segments;
 pressureload=[pressureload 1*md.mask.elementonfloatingice(pressureload(:,end)) + 0*md.mask.elementongroundedice(pressureload(:,end))];
-md.pressureload=pressureload;
+md.diagnostic.icefront=pressureload;
 md.balancethickness.spcthickness=NaN*ones(md.numberofnodes,1);
 md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
Index: /issm/trunk/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 9678)
+++ /issm/trunk/test/Par/RoundSheetStaticEISMINT.par	(revision 9679)
@@ -50,5 +50,5 @@
 md.x(pos)=0; md.y(pos)=0; %the closest node to the center is changed to be exactly at the center
 
-md.spcvx(pos)=0;
-md.spcvy(pos)=0;
-md.spcvz(pos)=0;
+md.diagnostic.spcvx(pos)=0;
+md.diagnostic.spcvy(pos)=0;
+md.diagnostic.spcvz(pos)=0;
Index: /issm/trunk/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9678)
+++ /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9679)
@@ -31,13 +31,13 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.0;
+md.diagnostic.viscosity_overshoot=0.0;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
 md.waitonlock=30;
-md.eps_res=0.05;
+md.diagnostic.restol=0.05;
 md.steadystate.reltol=0.05;
-md.eps_rel=0.05;
-md.eps_abs=NaN;
+md.diagnostic.reltol=0.05;
+md.diagnostic.abstol=NaN;
 md.timestepping.time_step=1;
 md.timestepping.final_time=3;
Index: /issm/trunk/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9678)
+++ /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9679)
@@ -38,13 +38,13 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.0;
+md.diagnostic.viscosity_overshoot=0.0;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
 md.waitonlock=30;
-md.eps_res=0.05;
+md.diagnostic.restol=0.05;
 md.steadystate.reltol=0.05;
-md.eps_rel=0.05;
-md.eps_abs=NaN;
+md.diagnostic.reltol=0.05;
+md.diagnostic.abstol=NaN;
 md.timestepping.time_step=1;
 md.timestepping.final_time=3;
Index: /issm/trunk/test/Par/SquareShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareShelf.par	(revision 9678)
+++ /issm/trunk/test/Par/SquareShelf.par	(revision 9679)
@@ -31,13 +31,13 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.3;
+md.diagnostic.viscosity_overshoot=0.3;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.waitonlock=30;
 md.verbose=verbose(0);
-md.eps_res=0.10;
+md.diagnostic.restol=0.10;
 md.steadystate.reltol=0.02;
-md.eps_rel=0.02;
-md.eps_abs=NaN;
+md.diagnostic.reltol=0.02;
+md.diagnostic.abstol=NaN;
 md.timestepping.time_step=1;
 md.timestepping.final_time=3;
Index: /issm/trunk/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9678)
+++ /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9679)
@@ -35,13 +35,13 @@
 
 %Numerical parameters
-md.viscosity_overshoot=0.0;
+md.diagnostic.viscosity_overshoot=0.0;
 md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
 md.waitonlock=30;
-md.eps_res=0.05;
-md.eps_rel=0.05;
+md.diagnostic.restol=0.05;
+md.diagnostic.reltol=0.05;
 md.steadystate.reltol=0.05;
-md.eps_abs=NaN;
+md.diagnostic.abstol=NaN;
 md.timestepping.time_step=1;
 md.timestepping.final_time=3;
