Index: /issm/trunk/etc/environment_variables.sh
===================================================================
--- /issm/trunk/etc/environment_variables.sh	(revision 9641)
+++ /issm/trunk/etc/environment_variables.sh	(revision 9642)
@@ -91,5 +91,5 @@
 
 #sdk
-SDK_DIR="C:/MicrosoftVisualStudio 9.0/Microsoft Visual C++ 2008 Express Edition with SP1 - ENU"
+#SDK_DIR="C:/MicrosoftVisualStudio 9.0/Microsoft Visual C++ 2008 Express Edition with SP1 - ENU"
 
 #ssh 
Index: /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim
===================================================================
--- /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim	(revision 9641)
+++ /issm/trunk/externalpackages/vim/addons/vim/syntax/c.vim	(revision 9642)
@@ -543,6 +543,11 @@
 
 "ISSM's Enums begin
+syn keyword cConstant ConstantsGEnum
+syn keyword cConstant ConstantsReferencetemperatureEnum
+syn keyword cConstant ConstantsYtsEnum
+syn keyword cConstant SurfaceforcingsAccumulationRateEnum
+syn keyword cConstant SurfaceforcingsAblationRateEnum
+syn keyword cConstant SurfaceforcingsMassBalanceEnum
 syn keyword cConstant ConstraintsEnum
-syn keyword cConstant DatasetsEnum
 syn keyword cConstant ElementsEnum
 syn keyword cConstant LoadsEnum
@@ -550,6 +555,6 @@
 syn keyword cConstant NodesEnum
 syn keyword cConstant ParametersEnum
+syn keyword cConstant VerticesEnum
 syn keyword cConstant ResultsEnum
-syn keyword cConstant VerticesEnum
 syn keyword cConstant SolutionTypeEnum
 syn keyword cConstant AnalysisTypeEnum
@@ -557,5 +562,4 @@
 syn keyword cConstant AnalysisCounterEnum
 syn keyword cConstant DiagnosticSolutionEnum
-syn keyword cConstant DiagnosticAnalysisEnum
 syn keyword cConstant DiagnosticHorizAnalysisEnum
 syn keyword cConstant DiagnosticVertAnalysisEnum
@@ -565,6 +569,4 @@
 syn keyword cConstant AdjointBalancethicknessAnalysisEnum
 syn keyword cConstant ControlAnalysisEnum
-syn keyword cConstant GradientAnalysisEnum
-syn keyword cConstant InverseAnalysisEnum
 syn keyword cConstant ThermalSolutionEnum
 syn keyword cConstant ThermalAnalysisEnum
@@ -573,6 +575,4 @@
 syn keyword cConstant TransientSolutionEnum
 syn keyword cConstant GroundinglineMigration2DSolutionEnum
-syn keyword cConstant SteadyAnalysisEnum
-syn keyword cConstant TransientAnalysisEnum
 syn keyword cConstant BedSlopeSolutionEnum
 syn keyword cConstant BedSlopeAnalysisEnum
@@ -585,13 +585,8 @@
 syn keyword cConstant BalancethicknessSolutionEnum
 syn keyword cConstant BalancethicknessAnalysisEnum
-syn keyword cConstant Fake31Enum
-syn keyword cConstant Fake32Enum
 syn keyword cConstant PrognosticSolutionEnum
 syn keyword cConstant PrognosticAnalysisEnum
 syn keyword cConstant MeltingAnalysisEnum
-syn keyword cConstant ParametersSolutionEnum
-syn keyword cConstant ParametersAnalysisEnum
 syn keyword cConstant SteadystateSolutionEnum
-syn keyword cConstant SteadystateAnalysisEnum
 syn keyword cConstant FlaimSolutionEnum
 syn keyword cConstant FlaimAnalysisEnum
@@ -606,21 +601,16 @@
 syn keyword cConstant PattynStokesApproximationEnum
 syn keyword cConstant StokesApproximationEnum
-syn keyword cConstant ObjectEnum
 syn keyword cConstant HookEnum
 syn keyword cConstant SegmentEnum
 syn keyword cConstant ElementEnum
 syn keyword cConstant DofIndexingEnum
-syn keyword cConstant ElementPropertiesEnum
-syn keyword cConstant NodePropertiesEnum
 syn keyword cConstant PentaEnum
 syn keyword cConstant TriaEnum
 syn keyword cConstant NodeEnum
 syn keyword cConstant VertexEnum
-syn keyword cConstant LoadEnum
 syn keyword cConstant IcefrontEnum
 syn keyword cConstant NumericalfluxEnum
 syn keyword cConstant PengridEnum
 syn keyword cConstant PenpairEnum
-syn keyword cConstant QuadRiftFrontEnum
 syn keyword cConstant RiftfrontEnum
 syn keyword cConstant SegmentRiftfrontEnum
@@ -629,5 +619,4 @@
 syn keyword cConstant PattynIceFrontEnum
 syn keyword cConstant StokesIceFrontEnum
-syn keyword cConstant MaterialEnum
 syn keyword cConstant MaticeEnum
 syn keyword cConstant MatparEnum
@@ -638,6 +627,4 @@
 syn keyword cConstant PentaVertexInputEnum
 syn keyword cConstant TriaVertexInputEnum
-syn keyword cConstant Fake0Enum
-syn keyword cConstant Fake1Enum
 syn keyword cConstant ControlInputEnum
 syn keyword cConstant ParamEnum
@@ -658,5 +645,4 @@
 syn keyword cConstant SpcStaticEnum
 syn keyword cConstant SpcTransientEnum
-syn keyword cConstant GeographyEnum
 syn keyword cConstant IceSheetEnum
 syn keyword cConstant IceShelfEnum
@@ -672,5 +658,4 @@
 syn keyword cConstant AdjointzEnum
 syn keyword cConstant AdjointpEnum
-syn keyword cConstant Fake35Enum
 syn keyword cConstant BedEnum
 syn keyword cConstant BathymetryEnum
@@ -680,29 +665,23 @@
 syn keyword cConstant CmResponseEnum
 syn keyword cConstant CmResponsesEnum
-syn keyword cConstant Fake2Enum
 syn keyword cConstant ConstantEnum
-syn keyword cConstant Fake37Enum
 syn keyword cConstant ControlTypeEnum
 syn keyword cConstant ConvergedEnum
-syn keyword cConstant Fake3Enum
 syn keyword cConstant DragCoefficientEnum
 syn keyword cConstant DragPEnum
 syn keyword cConstant DragQEnum
-syn keyword cConstant DragTypeEnum
 syn keyword cConstant DtEnum
 syn keyword cConstant TimeAdaptEnum
 syn keyword cConstant CflCoefficientEnum
 syn keyword cConstant ElementOnBedEnum
+syn keyword cConstant ElementOnIceSheetEnum
 syn keyword cConstant ElementOnIceShelfEnum
 syn keyword cConstant ElementOnSurfaceEnum
 syn keyword cConstant ElementOnWaterEnum
-syn keyword cConstant Fake4Enum
 syn keyword cConstant FillEnum
 syn keyword cConstant FractionIncrementEnum
 syn keyword cConstant FrictionEnum
-syn keyword cConstant Fake5Enum
 syn keyword cConstant HydrostaticAdjustmentEnum
 syn keyword cConstant InternalEnum
-syn keyword cConstant KflagEnum
 syn keyword cConstant IuToExtEnum
 syn keyword cConstant ExtToIuEnum
@@ -715,5 +694,4 @@
 syn keyword cConstant SurfaceAverageVelMisfitEnum
 syn keyword cConstant MaxPenetrationEnum
-syn keyword cConstant Fake6Enum
 syn keyword cConstant MeltingOffsetEnum
 syn keyword cConstant GroundinglineMeltingRateEnum
@@ -726,5 +704,4 @@
 syn keyword cConstant NumberNodeToElementConnectivityEnum
 syn keyword cConstant PenaltyOffsetEnum
-syn keyword cConstant PflagEnum
 syn keyword cConstant PressureEnum
 syn keyword cConstant PressurePicardEnum
@@ -738,10 +715,6 @@
 syn keyword cConstant ShelfDampeningEnum
 syn keyword cConstant StabilizeConstraintsEnum
-syn keyword cConstant Fake7Enum
-syn keyword cConstant SurfaceAccumulationRateEnum
-syn keyword cConstant SurfaceAblationRateEnum
 syn keyword cConstant SurfaceAreaEnum
 syn keyword cConstant SurfaceEnum
-syn keyword cConstant SurfaceMassBalanceEnum
 syn keyword cConstant SurfaceSlopeXEnum
 syn keyword cConstant SurfaceSlopeYEnum
@@ -766,5 +739,4 @@
 syn keyword cConstant VyPicardEnum
 syn keyword cConstant QmuVyEnum
-syn keyword cConstant VzAverageEnum
 syn keyword cConstant VzEnum
 syn keyword cConstant VzObsEnum
@@ -778,5 +750,4 @@
 syn keyword cConstant P1Enum
 syn keyword cConstant P1DGEnum
-syn keyword cConstant MiniEnum
 syn keyword cConstant DoubleElementResultEnum
 syn keyword cConstant TriaVertexElementResultEnum
@@ -796,7 +767,5 @@
 syn keyword cConstant TimeEnum
 syn keyword cConstant OutputFrequencyEnum
-syn keyword cConstant Fake8Enum
 syn keyword cConstant WaterColumnOldEnum
-syn keyword cConstant Fake34Enum
 syn keyword cConstant IoGatherEnum
 syn keyword cConstant MinVelEnum
@@ -812,5 +781,4 @@
 syn keyword cConstant MaxAbsVzEnum
 syn keyword cConstant RelativeEnum
-syn keyword cConstant ResidualEnum
 syn keyword cConstant AbsoluteEnum
 syn keyword cConstant IncrementalEnum
@@ -821,7 +789,5 @@
 syn keyword cConstant RhoWaterEnum
 syn keyword cConstant GravityEnum
-syn keyword cConstant Fake9Enum
 syn keyword cConstant BasalMeltingRateCorrectionEnum
-syn keyword cConstant BasalMeltingRateCorrectionApplyEnum
 syn keyword cConstant MixedLayerCapacityEnum
 syn keyword cConstant ThermalExchangeVelocityEnum
@@ -843,5 +809,4 @@
 syn keyword cConstant ConnectivityEnum
 syn keyword cConstant ControlSteadyEnum
-syn keyword cConstant DakotaParameterEnum
 syn keyword cConstant DimEnum
 syn keyword cConstant EpsAbsEnum
@@ -849,37 +814,20 @@
 syn keyword cConstant EpsRelEnum
 syn keyword cConstant EpsResEnum
-syn keyword cConstant Fake10Enum
-syn keyword cConstant Fake29Enum
-syn keyword cConstant Fake11Enum
-syn keyword cConstant Fake12Enum
-syn keyword cConstant Fake13Enum
-syn keyword cConstant Fake14Enum
 syn keyword cConstant LowmemEnum
-syn keyword cConstant Fake16Enum
 syn keyword cConstant MaxNonlinearIterationsEnum
-syn keyword cConstant Fake17Enum
 syn keyword cConstant MinMechanicalConstraintsEnum
 syn keyword cConstant MinThermalConstraintsEnum
-syn keyword cConstant Fake18Enum
 syn keyword cConstant NdtEnum
-syn keyword cConstant NumOutputEnum
 syn keyword cConstant NumriftsEnum
 syn keyword cConstant NumberOfElementsEnum
-syn keyword cConstant NumberOfNodesEnum
 syn keyword cConstant NumberOfVerticesEnum
-syn keyword cConstant Fake19Enum
 syn keyword cConstant OutputFilePointerEnum
-syn keyword cConstant Fake20Enum
-syn keyword cConstant Fake21Enum
-syn keyword cConstant PenaltyMeltingEnum
-syn keyword cConstant QmuAnalysisEnum
+syn keyword cConstant DakotaAnalysisEnum
 syn keyword cConstant QmuErrNameEnum
 syn keyword cConstant QmuInNameEnum
 syn keyword cConstant QmuMassFluxSegmentsEnum
-syn keyword cConstant Fake39Enum
 syn keyword cConstant QmuOutNameEnum
 syn keyword cConstant QmuPartEnum
 syn keyword cConstant QmuNumberOfResponsesEnum
-syn keyword cConstant QmuSaveFemmodelEnum
 syn keyword cConstant IndexedEnum
 syn keyword cConstant RegularEnum
@@ -888,10 +836,6 @@
 syn keyword cConstant NodalEnum
 syn keyword cConstant ResponsedescriptorsEnum
-syn keyword cConstant PetscRcEnum
-syn keyword cConstant SparsityEnum
-syn keyword cConstant Fake22Enum
 syn keyword cConstant VariabledescriptorsEnum
 syn keyword cConstant VerboseEnum
-syn keyword cConstant Fake23Enum
 syn keyword cConstant PetscOptionsStringsEnum
 syn keyword cConstant PetscOptionsAnalysesEnum
@@ -900,5 +844,4 @@
 syn keyword cConstant SsetEnum
 syn keyword cConstant GroundinglineMigrationEnum
-syn keyword cConstant YtsEnum
 syn keyword cConstant TriangleInterpEnum
 syn keyword cConstant BilinearInterpEnum
@@ -907,7 +850,7 @@
 syn keyword cConstant OptionCellEnum
 syn keyword cConstant OptionCharEnum
+syn keyword cConstant OptionStructEnum
 syn keyword cConstant OptionDoubleEnum
 syn keyword cConstant OptionLogicalEnum
-syn keyword cConstant OptionStructEnum
 syn keyword cConstant RheologyLawEnum
 syn keyword cConstant PatersonEnum
@@ -916,17 +859,10 @@
 syn keyword cConstant VyMeshEnum
 syn keyword cConstant VzMeshEnum
-syn keyword cConstant Fake24Enum
-syn keyword cConstant Fake25Enum
-syn keyword cConstant Fake26Enum
 syn keyword cConstant EnthalpySolutionEnum
 syn keyword cConstant EnthalpyAnalysisEnum
 syn keyword cConstant EnthalpyEnum
 syn keyword cConstant EnthalpyPicardEnum
-syn keyword cConstant Fake27Enum
-syn keyword cConstant Fake28Enum
 syn keyword cConstant ThicknessAbsGradientEnum
-syn keyword cConstant VelAbsGradientEnum
 syn keyword cConstant DatasetInputEnum
-syn keyword cConstant Fake38Enum
 syn keyword cConstant StepResponsesEnum
 syn keyword cConstant IntMatParamEnum
@@ -938,8 +874,6 @@
 syn keyword cConstant SpcvyEnum
 syn keyword cConstant HydroQEnum
-syn keyword cConstant VerboseBinaryEnum
 syn keyword cConstant NodeOnWaterEnum
 syn keyword cConstant YEnum
-syn keyword cConstant GlMeltingRateEnum
 syn keyword cConstant ElementsTypeEnum
 syn keyword cConstant PenaltiesEnum
@@ -950,15 +884,10 @@
 syn keyword cConstant VerticesTypeEnum
 syn keyword cConstant HydroKnEnum
-syn keyword cConstant GEnum
-syn keyword cConstant InputfilenameEnum
 syn keyword cConstant SpcvzEnum
-syn keyword cConstant Fake33Enum
 syn keyword cConstant NumberOfNodes2DEnum
 syn keyword cConstant NodeOnStokesEnum
 syn keyword cConstant NodeOnHutterEnum
 syn keyword cConstant ZEnum
-syn keyword cConstant Fake36Enum
-syn keyword cConstant RiftinfoEnum
-syn keyword cConstant ElementOnIceSheetEnum
+syn keyword cConstant RiftsEnum
 syn keyword cConstant SpcthicknessEnum
 syn keyword cConstant SpctemperatureEnum
@@ -977,5 +906,4 @@
 syn keyword cConstant ArtificialDiffusivityEnum
 syn keyword cConstant HydroNEnum
-syn keyword cConstant BorderstokesEnum
 syn keyword cConstant NumlayersEnum
 syn keyword cConstant DiagnosticRefEnum
@@ -989,5 +917,4 @@
 syn keyword cConstant ThermalconductivityEnum
 syn keyword cConstant MeltingpointEnum
-syn keyword cConstant ReferencetemperatureEnum
 syn keyword cConstant DhdtEnum
 syn keyword cConstant GeothermalfluxEnum
@@ -999,15 +926,10 @@
 syn keyword cConstant TolxEnum
 syn keyword cConstant OptscalEnum
-syn keyword cConstant EpsvelEnum
-syn keyword cConstant MeanvelEnum
-syn keyword cConstant Fake30Enum
 syn keyword cConstant OutputfilenameEnum
 syn keyword cConstant WaterfractionEnum
 syn keyword cConstant WatercolumnEnum
 syn keyword cConstant WaitonlockEnum
-syn keyword cConstant NumberOfVariablesEnum
 syn keyword cConstant NumberOfResponsesEnum
 syn keyword cConstant NpartEnum
-syn keyword cConstant QmuMassFluxNumProfilesEnum
 syn keyword cConstant PartEnum
 syn keyword cConstant MaxSteadystateIterationsEnum
@@ -1017,9 +939,12 @@
 syn keyword cConstant ViscousHeatingEnum
 syn keyword cConstant QmuTemperatureEnum
-syn keyword cConstant QmuRheologyBEnum
 syn keyword cConstant HydrologyWaterVxEnum
 syn keyword cConstant HydrologyWaterVyEnum
 syn keyword cConstant SpcDynamicEnum
 syn keyword cConstant NumberOfEdgesEnum
+syn keyword cConstant ResultsOnVerticesEnum
+syn keyword cConstant AdAnalysisEnum
+syn keyword cConstant AdForwardEnum
+syn keyword cConstant AdReverseEnum
 "ISSM's Enums end
 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Index: /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
===================================================================
--- /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9641)
+++ /issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h	(revision 9642)
@@ -46,4 +46,10 @@
 	TimesteppingTimeAdaptEnum,
 	TimesteppingCflCoefficientEnum,
+	PrognosticSpcthicknessEnum,
+	PrognosticHydrostaticAdjustmentEnum,
+	PrognosticStabilizationEnum,
+	PrognosticVertexPairingEnum,
+	PrognosticPenaltyFactorEnum,
+	PrognosticRequestedOutputsEnum,
 	MaterialsRheologyBEnum,
 	MaterialsRheologyBbarEnum,
@@ -226,5 +232,4 @@
 	FractionIncrementEnum,
 	FrictionEnum,
-	HydrostaticAdjustmentEnum,
 	InternalEnum,
 	IuToExtEnum,
@@ -422,6 +427,6 @@
 	YEnum,
 	ElementsTypeEnum,
+	PrognosticDGEnum,
 	PenaltiesEnum,
-	PrognosticDGEnum,
 	PressureloadEnum,
 	VerticesTypeEnum,
Index: /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
===================================================================
--- /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp	(revision 9642)
@@ -50,4 +50,10 @@
 		case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt";
 		case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
+		case PrognosticSpcthicknessEnum : return "PrognosticSpcthickness";
+		case PrognosticHydrostaticAdjustmentEnum : return "PrognosticHydrostaticAdjustment";
+		case PrognosticStabilizationEnum : return "PrognosticStabilization";
+		case PrognosticVertexPairingEnum : return "PrognosticVertexPairing";
+		case PrognosticPenaltyFactorEnum : return "PrognosticPenaltyFactor";
+		case PrognosticRequestedOutputsEnum : return "PrognosticRequestedOutputs";
 		case MaterialsRheologyBEnum : return "MaterialsRheologyB";
 		case MaterialsRheologyBbarEnum : return "MaterialsRheologyBbar";
@@ -193,5 +199,4 @@
 		case FractionIncrementEnum : return "FractionIncrement";
 		case FrictionEnum : return "Friction";
-		case HydrostaticAdjustmentEnum : return "HydrostaticAdjustment";
 		case InternalEnum : return "Internal";
 		case IuToExtEnum : return "IuToExt";
@@ -366,6 +371,6 @@
 		case YEnum : return "Y";
 		case ElementsTypeEnum : return "ElementsType";
+		case PrognosticDGEnum : return "PrognosticDG";
 		case PenaltiesEnum : return "Penalties";
-		case PrognosticDGEnum : return "PrognosticDG";
 		case PressureloadEnum : return "Pressureload";
 		case VerticesTypeEnum : return "VerticesType";
Index: /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 9642)
@@ -40,5 +40,6 @@
 	parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeAdaptEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(TimesteppingCflCoefficientEnum));
-	parameters->AddObject(iomodel->CopyConstantObject(HydrostaticAdjustmentEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(PrognosticHydrostaticAdjustmentEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(PrognosticStabilizationEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(PenaltyOffsetEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalPenaltyFactorEnum));
Index: /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 9642)
@@ -30,5 +30,5 @@
 	int    numlayers;
 	int    numrifts;
-	int    numpenalties;
+	int    numvertex_pairing;
 
 	/*output: */
@@ -45,5 +45,5 @@
 	double* elements2d=NULL;
 	double* riftinfo=NULL;
-	double* penalties=NULL;
+	double* vertex_pairing=NULL;
 
 	/*Fetch parameters: */
@@ -127,14 +127,21 @@
 	xfree((void**)&elements);
 
-	/*We might have penalties in which case, some vertices have to be cloned:
+	/*We might have vertex_pairing in which case, some vertices have to be cloned:
 	 * penpair has 2 nodes that are poointing toward 2 vertices.
 	 * The 2 vertices must be in the same cpu as the penpair*/
-	iomodel->FetchData(&penalties,&numpenalties,NULL,PenaltiesEnum);
-	for(i=0;i<numpenalties;i++){
-		if(my_vertices[(int)penalties[2*i+0]-1] && !my_vertices[(int)penalties[2*i+1]-1]){
-			my_vertices[(int)penalties[2*i+1]-1]=2; //to know that these elements are not on the partition
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,PenaltiesEnum);
+	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]){
+			my_vertices[(int)vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition
 		}
 	}
-	xfree((void**)&penalties);
+	xfree((void**)&vertex_pairing);
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,PrognosticVertexPairingEnum);
+	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]){
+			my_vertices[(int)vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition
+		}
+	}
+	xfree((void**)&vertex_pairing);
 
 	/*Free ressources:*/
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateConstraintsPrognostic.cpp	(revision 9642)
@@ -10,8 +10,8 @@
 void	CreateConstraintsPrognostic(Constraints** pconstraints, IoModel* iomodel){
 
-	int prognostic_DG;
+	int stabilization;
 	
 	/*Fetch parameters: */
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 
 	/*Output*/
@@ -25,6 +25,6 @@
 
 	/*Do not add constraints in DG, they are weakly imposed*/
-	if(!prognostic_DG){
-		IoModelToConstraintsx(constraints,iomodel,SpcthicknessEnum,PrognosticAnalysisEnum);
+	if(!stabilization==3){
+		IoModelToConstraintsx(constraints,iomodel,PrognosticSpcthicknessEnum,PrognosticAnalysisEnum);
 	}
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp	(revision 9642)
@@ -18,7 +18,7 @@
 	int penpair_ids[2];
 	int count=0;
-	int prognostic_DG;
+	int stabilization;
 	int numberofedges;
-	int numpenalties;
+	int numvertex_pairing;
 	int numberofelements;
 
@@ -27,5 +27,5 @@
 	
 	/*Fetch parameters: */
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 	iomodel->Constant(&numberofelements,NumberOfElementsEnum);
 	iomodel->Constant(&numberofedges,NumberOfEdgesEnum);
@@ -38,5 +38,5 @@
 
 	/*Loads only in DG*/
-	if (prognostic_DG){
+	if (stabilization==3){
 
 		/*Get edges and elements*/
@@ -60,23 +60,23 @@
 	}
 
-	/*Create Penpair for penalties: */
-	double *penalties=NULL;
+	/*Create Penpair for vertex_pairing: */
+	double *vertex_pairing=NULL;
 	double *nodeonbed=NULL;
-	iomodel->FetchData(&penalties,&numpenalties,NULL,PenaltiesEnum);
+	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,PrognosticVertexPairingEnum);
 	iomodel->FetchData(&nodeonbed,NULL,NULL,NodeonbedEnum);
 
-	for(i=0;i<numpenalties;i++){
+	for(i=0;i<numvertex_pairing;i++){
 
-		if(iomodel->my_vertices[(int)penalties[2*i+0]-1]){
+		if(iomodel->my_vertices[(int)vertex_pairing[2*i+0]-1]){
 
 			/*In debugging mode, check that the second node is in the same cpu*/
-			_assert_(iomodel->my_vertices[(int)penalties[2*i+1]-1]);
+			_assert_(iomodel->my_vertices[(int)vertex_pairing[2*i+1]-1]);
 
 			/*Skip if one of the two is not on the bed*/
-			if(!nodeonbed[(int)penalties[2*i+0]-1] || !nodeonbed[(int)penalties[2*i+1]-1]) continue;
+			if(!nodeonbed[(int)vertex_pairing[2*i+0]-1] || !nodeonbed[(int)vertex_pairing[2*i+1]-1]) continue;
 
 			/*Get node ids*/
-			penpair_ids[0]=iomodel->nodecounter+(int)penalties[2*i+0];
-			penpair_ids[1]=iomodel->nodecounter+(int)penalties[2*i+1];
+			penpair_ids[0]=iomodel->nodecounter+(int)vertex_pairing[2*i+0];
+			penpair_ids[1]=iomodel->nodecounter+(int)vertex_pairing[2*i+1];
 
 			/*Create Load*/
@@ -90,5 +90,5 @@
 
 	/*free ressources: */
-	xfree((void**)&penalties);
+	xfree((void**)&vertex_pairing);
 	xfree((void**)&nodeonbed);
 
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp	(revision 9642)
@@ -24,5 +24,5 @@
 	int    numberofelements;
 	int    numberofvertices;
-	int    prognostic_DG;
+	int    stabilization;
 
 	/*DataSets: */
@@ -33,5 +33,5 @@
 	iomodel->Constant(&numberofelements,NumberOfElementsEnum);
 	iomodel->Constant(&numberofvertices,NumberOfVerticesEnum);
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 
 	/*Recover pointer: */
@@ -42,9 +42,9 @@
 
 	/*Create partition of nodes: */
-	if(prognostic_DG) continuous_galerkin=false;
+	if(stabilization==3) continuous_galerkin=false;
 	NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements,iomodel->my_vertices,iomodel,continuous_galerkin);
 
 	/*Check in 3d*/
-	if(prognostic_DG && dim==3) _error_("DG 3d not implemented yet");
+	if(stabilization==3 && dim==3) _error_("DG 3d not implemented yet");
 
 	/*First fetch data: */
Index: /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp	(revision 9642)
@@ -18,10 +18,10 @@
 	int    dim;
 	int    numberofelements;
-	int    prognostic_DG;
+	int    stabilization;
 
 	/*Fetch data needed: */
 	iomodel->Constant(&dim,DimEnum);
 	iomodel->Constant(&numberofelements,NumberOfElementsEnum);
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 	iomodel->FetchData(1,ElementsEnum);
 
@@ -49,6 +49,6 @@
 	iomodel->FetchDataToInput(elements,VyEnum);
 
-	if(prognostic_DG){
-		iomodel->FetchDataToInput(elements,SpcthicknessEnum); //for DG, we need the spc in the element
+	if(stabilization==3){
+		iomodel->FetchDataToInput(elements,PrognosticSpcthicknessEnum); //for DG, we need the spc in the element
 	}
 	
Index: /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9641)
+++ /issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 9642)
@@ -48,4 +48,10 @@
 	else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
 	else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+	else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
+	else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
+	else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
+	else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
+	else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
+	else if (strcmp(name,"PrognosticRequestedOutputs")==0) return PrognosticRequestedOutputsEnum;
 	else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
 	else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
@@ -191,5 +197,4 @@
 	else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
 	else if (strcmp(name,"Friction")==0) return FrictionEnum;
-	else if (strcmp(name,"HydrostaticAdjustment")==0) return HydrostaticAdjustmentEnum;
 	else if (strcmp(name,"Internal")==0) return InternalEnum;
 	else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;
@@ -364,6 +369,6 @@
 	else if (strcmp(name,"Y")==0) return YEnum;
 	else if (strcmp(name,"ElementsType")==0) return ElementsTypeEnum;
+	else if (strcmp(name,"PrognosticDG")==0) return PrognosticDGEnum;
 	else if (strcmp(name,"Penalties")==0) return PenaltiesEnum;
-	else if (strcmp(name,"PrognosticDG")==0) return PrognosticDGEnum;
 	else if (strcmp(name,"Pressureload")==0) return PressureloadEnum;
 	else if (strcmp(name,"VerticesType")==0) return VerticesTypeEnum;
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9641)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 9642)
@@ -6168,6 +6168,6 @@
 	surface_input->GetValuesPtr(&surface_ptr,&dummy);
 
-	/*Fing HydrostaticAdjustment to figure out how to update the geometry:*/
-	this->parameters->FindParam(&hydroadjustment,HydrostaticAdjustmentEnum);
+	/*Fing PrognosticHydrostaticAdjustment to figure out how to update the geometry:*/
+	this->parameters->FindParam(&hydroadjustment,PrognosticHydrostaticAdjustmentEnum);
 
 	/*recover material parameters: */
@@ -7497,5 +7497,5 @@
 	double  nodeinputs[6];
 	double  yts;
-	int     prognostic_DG;
+	int     stabilization;
 	bool    dakota_analysis;
 	bool    isstokes;
@@ -7504,5 +7504,5 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&yts,ConstantsYtsEnum);
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 	iomodel->Constant(&dakota_analysis,DakotaAnalysisEnum);
 	iomodel->Constant(&isstokes,IsstokesEnum);
@@ -7519,5 +7519,5 @@
 
 	/*Recover element type*/
-	if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancethicknessAnalysisEnum) && prognostic_DG){
+	if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancethicknessAnalysisEnum) && stabilization==3){
 		/*P1 Discontinuous Galerkin*/
 		penta_type=P1DGEnum;
Index: /issm/trunk/src/c/objects/Elements/PentaRef.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/PentaRef.cpp	(revision 9641)
+++ /issm/trunk/src/c/objects/Elements/PentaRef.cpp	(revision 9642)
@@ -387,9 +387,9 @@
 /*}}}*/
 /*FUNCTION PentaRef::GetBArtdiff {{{1*/
-void PentaRef::GetBArtdiff(double* B_artdiff, double* xyz_list, GaussPenta* gauss){
+void PentaRef::GetBArtdiff(double* B_stab, double* xyz_list, GaussPenta* gauss){
 	/*Compute B  matrix. B=[B1 B2 B3 B4 B5 B6] where Bi is of size 5*NDOF1. 
 	 * For node i, Bi' can be expressed in the actual coordinate system
 	 * by: 
-	 *       Bi_artdiff=[ dh/dx ]
+	 *       Bi_stab=[ dh/dx ]
 	 *                 [ dh/dy ]
 	 * where h is the interpolation function for node i.
@@ -406,6 +406,6 @@
 	/*Build B': */
 	for (int i=0;i<NUMNODESP1;i++){
-		*(B_artdiff+NDOF1*NUMNODESP1*0+NDOF1*i)=dbasis[0][i]; 
-		*(B_artdiff+NDOF1*NUMNODESP1*1+NDOF1*i)=dbasis[1][i]; 
+		*(B_stab+NDOF1*NUMNODESP1*0+NDOF1*i)=dbasis[0][i]; 
+		*(B_stab+NDOF1*NUMNODESP1*1+NDOF1*i)=dbasis[1][i]; 
 	}
 }
Index: /issm/trunk/src/c/objects/Elements/PentaRef.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/PentaRef.h	(revision 9641)
+++ /issm/trunk/src/c/objects/Elements/PentaRef.h	(revision 9642)
@@ -45,5 +45,5 @@
 		void GetBprimeVert(double* B, double* xyz_list, GaussPenta* gauss);
 		void GetBAdvec(double* B_advec, double* xyz_list, GaussPenta* gauss);
-		void GetBArtdiff(double* B_artdiff, double* xyz_list, GaussPenta* gauss);
+		void GetBArtdiff(double* B_stab, double* xyz_list, GaussPenta* gauss);
 		void GetBConduct(double* B_conduct, double* xyz_list, GaussPenta* gauss);
 		void GetBVert(double* B, double* xyz_list, GaussPenta* gauss);
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9641)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 9642)
@@ -514,5 +514,5 @@
 
 	/*Intermediaries */
-	int        artdiff;
+	int        stabilization;
 	int        i,j,ig,dim;
 	double     Jdettria,vx,vy,dvxdx,dvydy,vel,h;
@@ -534,5 +534,5 @@
 	/*Retrieve all Inputs and parameters: */
 	GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);
-	this->parameters->FindParam(&artdiff,ArtificialDiffusivityEnum);
+	this->parameters->FindParam(&stabilization,PrognosticStabilizationEnum);
 	this->parameters->FindParam(&dim,DimEnum);
 	Input* vxaverage_input=NULL;
@@ -549,5 +549,5 @@
 
 	///*Create Artificial diffusivity once for all if requested*/
-	//if(artdiff){
+	//if(stabilization){
 	//	gauss=new GaussTria();
 	//	gauss->GaussCenter();
@@ -596,5 +596,5 @@
 					&Ke->values[0],1);
 
-		if(artdiff){
+		if(stabilization){
 			vel=sqrt(pow(vx,2.)+pow(vy,2.));
 			K[0][0]=h/(2*vel)*vx*vx;
@@ -1006,5 +1006,5 @@
 
 	/*Intermediaries */
-	int        artdiff;
+	int        stabilization;
 	int        i,j,ig,dim;
 	double     Jdettria,DL_scalar,dt;
@@ -1029,5 +1029,5 @@
 	this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
 	this->parameters->FindParam(&dim,DimEnum);
-	this->parameters->FindParam(&artdiff,ArtificialDiffusivityEnum);
+	this->parameters->FindParam(&stabilization,PrognosticStabilizationEnum);
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
@@ -1042,5 +1042,5 @@
 
 	//Create Artificial diffusivity once for all if requested
-	if(artdiff){
+	if(stabilization){
 		gauss=new GaussTria();
 		gauss->GaussCenter();
@@ -1098,5 +1098,5 @@
 					&Ke->values[0],1);
 
-		if(artdiff){
+		if(stabilization){
 			KDL[0][0]=DL_scalar*K[0][0];
 			KDL[1][1]=DL_scalar*K[1][1];
@@ -3645,6 +3645,6 @@
 	surface_input->GetValuesPtr(&surface_ptr,&dummy);
 
-	/*Fing HydrostaticAdjustment to figure out how to update the geometry:*/
-	this->parameters->FindParam(&hydroadjustment,HydrostaticAdjustmentEnum);
+	/*Fing PrognosticHydrostaticAdjustment to figure out how to update the geometry:*/
+	this->parameters->FindParam(&hydroadjustment,PrognosticHydrostaticAdjustmentEnum);
 
 	/*recover material parameters: */
@@ -5209,5 +5209,5 @@
 	double nodeinputs[3];
 	double yts;
-	int    prognostic_DG;
+	int    stabilization;
 	bool   dakota_analysis;
 
@@ -5219,9 +5219,9 @@
 	/*Fetch parameters: */
 	iomodel->Constant(&yts,ConstantsYtsEnum);
-	iomodel->Constant(&prognostic_DG,PrognosticDGEnum);
+	iomodel->Constant(&stabilization,PrognosticStabilizationEnum);
 	iomodel->Constant(&dakota_analysis,DakotaAnalysisEnum);
 
 	/*Recover element type*/
-	if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancethicknessAnalysisEnum) && prognostic_DG){
+	if ((analysis_type==PrognosticAnalysisEnum || analysis_type==BalancethicknessAnalysisEnum) && stabilization==3){
 		/*P1 Discontinuous Galerkin*/
 		tria_type=P1DGEnum;
Index: /issm/trunk/src/c/objects/Loads/Numericalflux.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Numericalflux.cpp	(revision 9641)
+++ /issm/trunk/src/c/objects/Loads/Numericalflux.cpp	(revision 9642)
@@ -798,7 +798,7 @@
 	GetVerticesCoordinates(&xyz_list[0][0],nodes,NUMVERTICES_BOUNDARY);
 	parameters->FindParam(&dt,TimesteppingTimeStepEnum);
-	Input* vxaverage_input   =tria->inputs->GetInput(VxEnum); _assert_(vxaverage_input); 
-	Input* vyaverage_input   =tria->inputs->GetInput(VyEnum); _assert_(vyaverage_input);
-	Input* spcthickness_input=tria->inputs->GetInput(SpcthicknessEnum); _assert_(spcthickness_input);
+	Input* vxaverage_input   =tria->inputs->GetInput(VxEnum);                     _assert_(vxaverage_input); 
+	Input* vyaverage_input   =tria->inputs->GetInput(VyEnum);                     _assert_(vyaverage_input);
+	Input* spcthickness_input=tria->inputs->GetInput(PrognosticSpcthicknessEnum); _assert_(spcthickness_input);
 	GetNormal(&normal[0],xyz_list);
 
Index: /issm/trunk/src/c/objects/Loads/Penpair.cpp
===================================================================
--- /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 9641)
+++ /issm/trunk/src/c/objects/Loads/Penpair.cpp	(revision 9642)
@@ -372,5 +372,5 @@
 
 	const int numdof=NUMVERTICES*NDOF1;
-	double penalty_offset;
+	double penalty_factor;
 
 	/*Initialize Element vector and return if necessary*/
@@ -378,11 +378,11 @@
 
 	/*recover parameters: */
-	parameters->FindParam(&penalty_offset,PenaltyOffsetEnum);
+	parameters->FindParam(&penalty_factor,PrognosticPenaltyFactorEnum);
 
 	//Create elementary matrix: add penalty to 
-	Ke->values[0*numdof+0]=+kmax*pow((double)10.0,penalty_offset);
-	Ke->values[0*numdof+1]=-kmax*pow((double)10.0,penalty_offset);
-	Ke->values[1*numdof+0]=-kmax*pow((double)10.0,penalty_offset);
-	Ke->values[1*numdof+1]=+kmax*pow((double)10.0,penalty_offset);
+	Ke->values[0*numdof+0]=+kmax*pow((double)10.0,penalty_factor);
+	Ke->values[0*numdof+1]=-kmax*pow((double)10.0,penalty_factor);
+	Ke->values[1*numdof+0]=-kmax*pow((double)10.0,penalty_factor);
+	Ke->values[1*numdof+1]=+kmax*pow((double)10.0,penalty_factor);
 
 	/*Clean up and return*/
Index: /issm/trunk/src/m/classes/model/model.m
===================================================================
--- /issm/trunk/src/m/classes/model/model.m	(revision 9641)
+++ /issm/trunk/src/m/classes/model/model.m	(revision 9642)
@@ -27,4 +27,5 @@
 		 timestepping = modelfield('default',0,'marshall',true);
 		 groundingline = modelfield('default',0,'marshall',true);
+		 prognostic = modelfield('default',0,'marshall',true);
 		 materials = modelfield('default',0,'marshall',true);
 		 mask = modelfield('default',0,'marshall',true);
@@ -143,6 +144,4 @@
 		 %Transient 
 		 artificial_diffusivity = modelfield('default',0,'marshall',true,'format','Integer');
-		 prognostic_DG          = modelfield('default',0,'marshall',true,'format','Integer');
-		 hydrostatic_adjustment = modelfield('default',0,'marshall',true,'preprocess','StringToEnum','format','Integer');
 		 isprognostic = modelfield('default',0,'marshall',true,'format','Boolean');
 		 isdiagnostic = modelfield('default',0,'marshall',true,'format','Boolean');
@@ -399,4 +398,9 @@
 			 if isfield(structmd,'time_adapt'), md.timestepping.time_adapt=structmd.time_adapt; end
 			 if isfield(structmd,'cfl_coefficient'), md.timestepping.cfl_coefficient=structmd.cfl_coefficient; end
+			 if isfield(structmd,'spcthickness'), md.prognostic.spcthickness=structmd.spcthickness; end
+			 if isfield(structmd,'artificial_diffusivity'), md.prognostic.stabilization=structmd.artificial_diffusivity; end
+			 if isfield(structmd,'hydrostatic_adjustment'), md.prognostic.hydrostatic_adjustment=structmd.hydrostatic_adjustment; end
+			 if isfield(structmd,'penalties'), md.prognostic.vertex_pairing=structmd.penalties; end
+			 if isfield(structmd,'penalty_offset'), md.prognostic.penalty_factor=structmd.penalty_offset; end
 			 if isfield(structmd,'rheology_B'), md.materials.rheology_B=structmd.B; end
 			 if isfield(structmd,'rheology_n'), md.materials.rheology_n=structmd.n; end
@@ -525,7 +529,7 @@
 			 md.timestepping=timestepping;
 			 md.groundingline=groundingline;
+			 md.prognostic=prognostic;
 			 md.materials=materials;
 			 md.mask=mask;
-
 
 			 %Physical parameters
@@ -589,13 +593,7 @@
 			 md.min_mechanical_constraints=0;
 
-			 %Hydrostatic adjustment
-			 md.hydrostatic_adjustment='Absolute';
 			 %the artificial diffusivity is used in prognostic to avoid
 			 %numerical wiggles of the solution.
 			 md.artificial_diffusivity=1;
-
-			 %Discontinuous Galerkin is used in prognostic to avoid
-			 %numerical wiggles of the solution and conserve mass
-			 md.prognostic_DG=0;
 
 			 %Solution activated for transient runs. By default we do a
@@ -668,5 +666,4 @@
 				 if(strcmp(index1.subs,'qmu')), displayqmu(md);return; end
 				 if(strcmp(index1.subs,'diagnostic')), displaydiagnostic(md);return; end
-				 if(strcmp(index1.subs,'prognostic')), displayprognostic(md);return; end
 				 if(strcmp(index1.subs,'transient')), displaytransient(md);return; end
 				 if(strcmp(index1.subs,'control')), displaycontrol(md);return; end
Index: /issm/trunk/src/m/classes/prognostic.m
===================================================================
--- /issm/trunk/src/m/classes/prognostic.m	(revision 9642)
+++ /issm/trunk/src/m/classes/prognostic.m	(revision 9642)
@@ -0,0 +1,60 @@
+%PROGNOSTIC class definition
+%
+%   Usage:
+%      prognostic=prognostic();
+
+classdef prognostic
+	properties (SetAccess=public) 
+		 spcthickness           = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);
+		 hydrostatic_adjustment = modelfield('default',0,'marshall',true,'preprocess','StringToEnum','format','Integer');
+		 stabilization          = 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');
+		 requested_outputs      = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);
+	end
+	methods
+		function obj = prognostic(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
+
+			%Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
+			obj.stabilization=1;
+
+			%Factor applied to compute the penalties kappa=max(stiffness matrix)*10^penalty_factor
+			obj.penalty_factor=3;
+
+			%Hydrostatic adjustment
+			obj.hydrostatic_adjustment='Absolute';
+		end % }}}
+		function disp(obj) % {{{
+			disp(sprintf('   Prognostic solution parameters:'));
+
+			disp(sprintf('\n      transient:'));
+			fielddisplay(obj,'stabilization','0->no, 1->artificial_diffusivity, 3-:discontinuous Galerkin');
+
+			disp(sprintf('\n      boundary conditions:'));
+			fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint)');
+
+		end % }}}
+	end
+end
Index: sm/trunk/src/m/enum/HydrostaticAdjustmentEnum.m
===================================================================
--- /issm/trunk/src/m/enum/HydrostaticAdjustmentEnum.m	(revision 9641)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=HydrostaticAdjustmentEnum()
-%HYDROSTATICADJUSTMENTENUM - Enum of HydrostaticAdjustment
-%
-%   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=HydrostaticAdjustmentEnum()
-
-macro=StringToEnum('HydrostaticAdjustment');
Index: /issm/trunk/src/m/enum/PrognosticHydrostaticAdjustmentEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticHydrostaticAdjustmentEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticHydrostaticAdjustmentEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticHydrostaticAdjustmentEnum()
+%PROGNOSTICHYDROSTATICADJUSTMENTENUM - Enum of PrognosticHydrostaticAdjustment
+%
+%   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=PrognosticHydrostaticAdjustmentEnum()
+
+macro=StringToEnum('PrognosticHydrostaticAdjustment');
Index: /issm/trunk/src/m/enum/PrognosticPenaltyFactorEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticPenaltyFactorEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticPenaltyFactorEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticPenaltyFactorEnum()
+%PROGNOSTICPENALTYFACTORENUM - Enum of PrognosticPenaltyFactor
+%
+%   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=PrognosticPenaltyFactorEnum()
+
+macro=StringToEnum('PrognosticPenaltyFactor');
Index: /issm/trunk/src/m/enum/PrognosticRequestedOutputsEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticRequestedOutputsEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticRequestedOutputsEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticRequestedOutputsEnum()
+%PROGNOSTICREQUESTEDOUTPUTSENUM - Enum of PrognosticRequestedOutputs
+%
+%   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=PrognosticRequestedOutputsEnum()
+
+macro=StringToEnum('PrognosticRequestedOutputs');
Index: /issm/trunk/src/m/enum/PrognosticSpcthicknessEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticSpcthicknessEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticSpcthicknessEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticSpcthicknessEnum()
+%PROGNOSTICSPCTHICKNESSENUM - Enum of PrognosticSpcthickness
+%
+%   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=PrognosticSpcthicknessEnum()
+
+macro=StringToEnum('PrognosticSpcthickness');
Index: /issm/trunk/src/m/enum/PrognosticStabilizationEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticStabilizationEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticStabilizationEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticStabilizationEnum()
+%PROGNOSTICSTABILIZATIONENUM - Enum of PrognosticStabilization
+%
+%   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=PrognosticStabilizationEnum()
+
+macro=StringToEnum('PrognosticStabilization');
Index: /issm/trunk/src/m/enum/PrognosticVertexPairingEnum.m
===================================================================
--- /issm/trunk/src/m/enum/PrognosticVertexPairingEnum.m	(revision 9642)
+++ /issm/trunk/src/m/enum/PrognosticVertexPairingEnum.m	(revision 9642)
@@ -0,0 +1,11 @@
+function macro=PrognosticVertexPairingEnum()
+%PROGNOSTICVERTEXPAIRINGENUM - Enum of PrognosticVertexPairing
+%
+%   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=PrognosticVertexPairingEnum()
+
+macro=StringToEnum('PrognosticVertexPairing');
Index: /issm/trunk/src/m/model/collapse.m
===================================================================
--- /issm/trunk/src/m/model/collapse.m	(revision 9641)
+++ /issm/trunk/src/m/model/collapse.m	(revision 9642)
@@ -59,5 +59,5 @@
 md.spcvy=project2d(md,md.spcvy,md.numlayers);
 md.spcvz=project2d(md,md.spcvz,md.numlayers);
-md.spcthickness=project2d(md,md.spcthickness,md.numlayers);
+md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.numlayers);
 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.numlayers);
 
Index: sm/trunk/src/m/model/display/displayprognostic.m
===================================================================
--- /issm/trunk/src/m/model/display/displayprognostic.m	(revision 9641)
+++ 	(revision )
@@ -1,20 +1,0 @@
-function displayprognostic(md)
-%DISPLAYPROGNOSTIC - display solution parameters
-%
-%   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:
-%      displayprognostic(md)
-
-disp(sprintf('   Prognostic solution parameters:'));
-
-disp(sprintf('\n      transient:'));
-fielddisplay(md,'dt','time step [yr]');
-fielddisplay(md,'ndt','time span [yr]');
-fielddisplay(md,'artificial_diffusivity','yes->1, no->0');
-fielddisplay(md,'prognostic_DG','yes->1, no->0');
-
-disp(sprintf('\n      boundary conditions:'));
-fielddisplay(md,'spcthickness','thickness constraints (NaN means no constraint)');
Index: /issm/trunk/src/m/model/extrude.m
===================================================================
--- /issm/trunk/src/m/model/extrude.m	(revision 9641)
+++ /issm/trunk/src/m/model/extrude.m	(revision 9642)
@@ -176,5 +176,5 @@
 md.spcvz=project3d(md,'vector',md.spcvz,'type','node');
 md.thermal.spctemperature=project3d(md,'vector',md.thermal.spctemperature,'type','node','layer',md.numlayers,'padding',NaN);
-md.spcthickness=project3d(md,'vector',md.spcthickness,'type','node');
+md.prognostic.spcthickness=project3d(md,'vector',md.prognostic.spcthickness,'type','node');
 md.diagnostic_ref=project3d(md,'vector',md.diagnostic_ref,'type','node');
 
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9641)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 9642)
@@ -60,5 +60,5 @@
 
 %DG {{{1
-if md.prognostic_DG==1;
+if md.prognostic.stabilization==3;
 	%CHECK THE COMPATIBILITY OF THE EDGES
 	fields={'edges'};
@@ -166,10 +166,10 @@
 	message('model not consistent: artificial_diffusivity should be a scalar (0 or 1 or 2)');
 end
+if ~ismember(md.prognostic.stabilization,[0 1 3]),
+	message('model not consistent: prognostic.stabilization should be a scalar (0 or 1 or 3)');
+end
 if ~ismember(md.thermal.stabilization,[0 1 2]),
 	message('model not consistent: thermal.stabilization should be a scalar (0 or 1 or 2)');
 end
-if ~ismember(md.prognostic_DG,[0 1]),
-	message('model not consistent: prognostic_DG should be a scalar (1 or 0)');
-end
 if ~ismember(md.settings.lowmem,[0 1]),
 	message(['model not consistent: model ' md.miscellaneous.name ' settings.lowmem field should be 0 or 1']);
@@ -178,6 +178,6 @@
 	message(['model not consistent: model ' md.miscellaneous.name ' time_adapt field should be 0 or 1']);
 end
-if ~ismember(md.hydrostatic_adjustment,{'Absolute' 'Incremental'}),
-	message(['model not consistent: model ' md.miscellaneous.name ' hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']);
+if ~ismember(md.prognostic.hydrostatic_adjustment,{'Absolute' 'Incremental'}),
+	message(['model not consistent: model ' md.miscellaneous.name ' prognostic.hydrostatic_adjustment field should be AbsoluteEnum or IncrementalEnum']);
 end
 if ~ismember({md.materials.rheology_law},{'None' 'Paterson' 'Arrhenius'}),
@@ -459,12 +459,12 @@
 
 			%DIRICHLET
-			fields={'spcthickness'};
+			fields={'prognostic.spcthickness'};
 			checkforcing(md,fields);
 
 			%DIRICHLET IF THICKNESS <= 0
-			%Check the size of spcthickness 
+			%Check the size of prognostic.spcthickness 
 			if any(md.thickness<=0),
 				pos=find(md.thickness<=0);
-				if any(isnan(md.spcthickness(pos))),
+				if any(isnan(md.prognostic.spcthickness(pos))),
 					message(['model not consistent: model ' md.miscellaneous.name ' has some nodes with 0 thickness']);
 				end
Index: /issm/trunk/src/m/model/modelextract.m
===================================================================
--- /issm/trunk/src/m/model/modelextract.m	(revision 9641)
+++ /issm/trunk/src/m/model/modelextract.m	(revision 9642)
@@ -194,4 +194,10 @@
 		md2.penalties=md2.penalties(find(md2.penalties(:,1)),:);
 	end
+	if ~isnan(md2.prognostic.vertex_pairing),
+		for i=1:size(md1.prognostic.vertex_pairing,1);
+			md2.prognostic.vertex_pairing(i,:)=Pnode(md1.prognostic.vertex_pairing(i,:));
+		end
+		md2.prognostic.vertex_pairing=md2.prognostic.vertex_pairing(find(md2.prognostic.vertex_pairing(:,1)),:);
+	end
 
 	%recreate segments
Index: /issm/trunk/src/m/utils/BC/SetIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetIceSheetBC.m	(revision 9641)
+++ /issm/trunk/src/m/utils/BC/SetIceSheetBC.m	(revision 9642)
@@ -55,5 +55,5 @@
 end
 
-md.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
 
 if (length(md.temperature)==md.numberofnodes),
Index: /issm/trunk/src/m/utils/BC/SetIceShelfBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetIceShelfBC.m	(revision 9641)
+++ /issm/trunk/src/m/utils/BC/SetIceShelfBC.m	(revision 9642)
@@ -87,5 +87,5 @@
 end
 
-md.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
 
 if (length(md.temperature)==md.numberofnodes),
Index: /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m
===================================================================
--- /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m	(revision 9641)
+++ /issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m	(revision 9642)
@@ -98,5 +98,5 @@
 end
 
-md.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
 
 if (length(md.temperature)==md.numberofnodes),
Index: /issm/trunk/template
===================================================================
--- /issm/trunk/template	(revision 9641)
+++ /issm/trunk/template	(revision 9642)
@@ -114,4 +114,5 @@
 	dhdt -> rename thickening_rate
 	artificial_diffusivity -> rename stabilization
+	prognostic_DG -> delete
 	requested_outputs
 }}}
Index: /issm/trunk/test/Miscellaneous/GJM_test1/SquareShelf.par
===================================================================
--- /issm/trunk/test/Miscellaneous/GJM_test1/SquareShelf.par	(revision 9641)
+++ /issm/trunk/test/Miscellaneous/GJM_test1/SquareShelf.par	(revision 9642)
@@ -26,5 +26,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.3;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.waitonlock=30;
Index: /issm/trunk/test/Miscellaneous/connectivity/Square.par
===================================================================
--- /issm/trunk/test/Miscellaneous/connectivity/Square.par	(revision 9641)
+++ /issm/trunk/test/Miscellaneous/connectivity/Square.par	(revision 9642)
@@ -4,5 +4,5 @@
 md.dt=1*md.constants.yts; %1 year
 md.ndt=md.dt*10; 
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 
Index: /issm/trunk/test/NightlyRun/test111.m
===================================================================
--- /issm/trunk/test/NightlyRun/test111.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test111.m	(revision 9642)
@@ -5,6 +5,6 @@
 md=setelementstype(md,'macayeal','all');
 md.cluster=none;
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md=solve(md,PrognosticSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test1110.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1110.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test1110.m	(revision 9642)
@@ -46,9 +46,10 @@
 
 	md.penalties=[posx,posx2;posy,posy2];
+	md.prognostic.vertex_pairing=[posx,posx2;posy,posy2];
 
 	md.timestepping.time_step=3;
 	md.timestepping.final_time=300;
 	md.output_frequency=50;
-	md.prognostic_DG=0;
+	md.prognostic.stabilization=1;
 	md.max_nonlinear_iterations=1;
 
Index: /issm/trunk/test/NightlyRun/test112.m
===================================================================
--- /issm/trunk/test/NightlyRun/test112.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test112.m	(revision 9642)
@@ -5,6 +5,6 @@
 md=setelementstype(md,'macayeal','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md=solve(md,PrognosticSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test1201.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1201.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test1201.m	(revision 9642)
@@ -18,12 +18,10 @@
 
 	%Stabilization
-	if stabilization==1,
-		md.artificial_diffusivity=1;
-		md.prognostic_DG=0;
-	elseif stabilization==2,
-		md.artificial_diffusivity=0;
-		md.prognostic_DG=0;
-	elseif stabilization==3,
-		md.prognostic_DG=1;
+	if stabilization=1,
+		md.prognostic.stabilization=stabilization;
+	elseif stabilization=2,
+		md.prognostic.stabilization=0;
+	elseif stabilization=3,
+		md.prognostic.stabilization=stabilization;
 	end
 
@@ -31,9 +29,9 @@
 	pos=find(md.y>199999.9);
 	times=0:1:500;
-	md.spcthickness=NaN*ones(md.numberofnodes+1,length(times));
-	md.spcthickness(end,:)=times;
-	md.spcthickness(pos,:)=repmat(500+100*sin(2*pi*times/200),length(pos),1);
+	md.prognostic.spcthickness=NaN*ones(md.numberofnodes+1,length(times));
+	md.prognostic.spcthickness(end,:)=times;
+	md.prognostic.spcthickness(pos,:)=repmat(500+100*sin(2*pi*times/200),length(pos),1);
 	if stabilization==3,
-		pos=find(isnan(md.spcthickness)); md.spcthickness(pos)=500; %No NaN for DG
+		pos=find(isnan(md.prognostic.spcthickness)); md.prognostic.spcthickness(pos)=500; %No NaN for DG
 	end
 
Index: /issm/trunk/test/NightlyRun/test1204.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1204.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test1204.m	(revision 9642)
@@ -23,5 +23,5 @@
 md.timestepping.time_step=1;
 md.timestepping.final_time=5000;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test1208.m
===================================================================
--- /issm/trunk/test/NightlyRun/test1208.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test1208.m	(revision 9642)
@@ -22,5 +22,5 @@
 md.output_frequency=20;
 md.timestepping.final_time=50000;
-md.artificial_diffusivity=2;
+md.prognostic.stabilization=2;
 md.thermal.stabilization=2;
 
Index: /issm/trunk/test/NightlyRun/test135.m
===================================================================
--- /issm/trunk/test/NightlyRun/test135.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test135.m	(revision 9642)
@@ -3,5 +3,5 @@
 md=setmask(md,'all','');
 md=parameterize(md,'../Par/SquareShelfConstrained.par');
-md.prognostic_DG=1;
+md.prognostic.stabilization=3;
 md.vy=md.vy+400;
 md=setelementstype(md,'macayeal','all');
Index: /issm/trunk/test/NightlyRun/test136.m
===================================================================
--- /issm/trunk/test/NightlyRun/test136.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test136.m	(revision 9642)
@@ -3,5 +3,5 @@
 md=setmask(md,'all','');
 md=parameterize(md,'../Par/SquareShelfConstrained.par');
-md.prognostic_DG=1;
+md.prognostic.stabilization=3;
 md.vy=md.vy+400;
 md=setelementstype(md,'macayeal','all');
Index: /issm/trunk/test/NightlyRun/test243.m
===================================================================
--- /issm/trunk/test/NightlyRun/test243.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test243.m	(revision 9642)
@@ -4,5 +4,5 @@
 md=setelementstype(md,'macayeal','all');
 md.cluster=none;
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test244.m
===================================================================
--- /issm/trunk/test/NightlyRun/test244.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test244.m	(revision 9642)
@@ -4,5 +4,5 @@
 md=setelementstype(md,'macayeal','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test245.m
===================================================================
--- /issm/trunk/test/NightlyRun/test245.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test245.m	(revision 9642)
@@ -5,5 +5,5 @@
 md.bed=md.bed+50; md.surface=md.surface+50;
 md.cluster=none;
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test246.m
===================================================================
--- /issm/trunk/test/NightlyRun/test246.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test246.m	(revision 9642)
@@ -5,5 +5,5 @@
 md.bed=md.bed+50; md.surface=md.surface+50;
 md.cluster=generic('name',oshostname(),'np',3);
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test247.m
===================================================================
--- /issm/trunk/test/NightlyRun/test247.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test247.m	(revision 9642)
@@ -5,5 +5,5 @@
 md=setelementstype(md,'pattyn','all');
 md.cluster=none;
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test248.m
===================================================================
--- /issm/trunk/test/NightlyRun/test248.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test248.m	(revision 9642)
@@ -5,5 +5,5 @@
 md=setelementstype(md,'pattyn','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test249.m
===================================================================
--- /issm/trunk/test/NightlyRun/test249.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test249.m	(revision 9642)
@@ -6,5 +6,5 @@
 md.bed=md.bed+50; md.surface=md.surface+50;
 md.cluster=none;
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test250.m
===================================================================
--- /issm/trunk/test/NightlyRun/test250.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test250.m	(revision 9642)
@@ -6,5 +6,5 @@
 md.bed=md.bed+50; md.surface=md.surface+50;
 md.cluster=generic('name',oshostname(),'np',3);
-md.hydrostatic_adjustment='Incremental';
+md.prognostic.prognostic.hydrostatic_adjustment='Incremental';
 md=solve(md,TransientSolutionEnum);
 
Index: /issm/trunk/test/NightlyRun/test319.m
===================================================================
--- /issm/trunk/test/NightlyRun/test319.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test319.m	(revision 9642)
@@ -4,6 +4,6 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
 md=setelementstype(md,'macayeal','all');
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md.cluster=none;
 md=solve(md,PrognosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test320.m
===================================================================
--- /issm/trunk/test/NightlyRun/test320.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test320.m	(revision 9642)
@@ -4,6 +4,6 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
 md=setelementstype(md,'macayeal','all');
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md.cluster=generic('name',oshostname(),'np',3);
 md=solve(md,PrognosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test603.m
===================================================================
--- /issm/trunk/test/NightlyRun/test603.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test603.m	(revision 9642)
@@ -4,6 +4,6 @@
 md=parameterize(md,'../Par/79North.par');
 md=setelementstype(md,'macayeal','all');
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md.cluster=none;
 md=solve(md,PrognosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test604.m
===================================================================
--- /issm/trunk/test/NightlyRun/test604.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test604.m	(revision 9642)
@@ -4,6 +4,6 @@
 md=parameterize(md,'../Par/79North.par');
 md=setelementstype(md,'macayeal','all');
-md.prognostic_DG=1;
-md.spcthickness=md.thickness;
+md.prognostic.stabilization=3;
+md.prognostic.spcthickness=md.thickness;
 md.cluster=generic('name',oshostname(),'np',3);
 md=solve(md,PrognosticSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test617.m
===================================================================
--- /issm/trunk/test/NightlyRun/test617.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test617.m	(revision 9642)
@@ -4,5 +4,5 @@
 md=parameterize(md,'../Par/79North.par');
 md=setelementstype(md,'macayeal','all');
-md.prognostic_DG=1;
+md.prognostic.stabilization=3;
 md.cluster=none;
 md=solve(md,BalancethicknessSolutionEnum);
Index: /issm/trunk/test/NightlyRun/test621.m
===================================================================
--- /issm/trunk/test/NightlyRun/test621.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test621.m	(revision 9642)
@@ -6,5 +6,5 @@
 %control parameters
 md.nsteps=2;
-md.prognostic_DG=0;
+md.prognostic.stabilization=1;
 md.control_analysis=1;
 md.control_type={'Dhdt'};
Index: /issm/trunk/test/NightlyRun/test622.m
===================================================================
--- /issm/trunk/test/NightlyRun/test622.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test622.m	(revision 9642)
@@ -6,5 +6,5 @@
 %control parameters
 md.nsteps=2;
-md.prognostic_DG=0;
+md.prognostic.stabilization=1;
 md.control_analysis=1;
 md.control_type={'Dhdt'};
Index: /issm/trunk/test/NightlyRun/test623.m
===================================================================
--- /issm/trunk/test/NightlyRun/test623.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test623.m	(revision 9642)
@@ -7,5 +7,5 @@
 %control parameters
 md.nsteps=2;
-md.prognostic_DG=1;
+md.prognostic.stabilization=3;
 md.control_analysis=1;
 md.control_type={'Dhdt'};
Index: /issm/trunk/test/NightlyRun/test624.m
===================================================================
--- /issm/trunk/test/NightlyRun/test624.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test624.m	(revision 9642)
@@ -7,5 +7,5 @@
 %control parameters
 md.nsteps=2;
-md.prognostic_DG=1;
+md.prognostic.stabilization=3;
 md.control_analysis=1;
 md.control_type={'Dhdt'};
Index: /issm/trunk/test/NightlyRun/test625.m
===================================================================
--- /issm/trunk/test/NightlyRun/test625.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test625.m	(revision 9642)
@@ -16,5 +16,5 @@
 md.nsteps=2;
 md.control_type={'Vx' 'Vy'};
-md.prognostic_DG=0;
+md.prognostic.stabilization=1;
 md.optscal=[10/md.constants.yts*ones(md.nsteps,1) 10/md.constants.yts*ones(md.nsteps,1)];
 md.cm_min=[-2000*ones(md.numberofnodes,1) -2000*ones(md.numberofnodes,1)];
Index: /issm/trunk/test/NightlyRun/test626.m
===================================================================
--- /issm/trunk/test/NightlyRun/test626.m	(revision 9641)
+++ /issm/trunk/test/NightlyRun/test626.m	(revision 9642)
@@ -16,5 +16,5 @@
 md.nsteps=2;
 md.control_type={'Vx' 'Vy'};
-md.prognostic_DG=0;
+md.prognostic.stabilization=1;
 md.optscal=[10/md.constants.yts*ones(md.nsteps,1) 10/md.constants.yts*ones(md.nsteps,1)];
 md.cm_min=[-2000*ones(md.numberofnodes,1) -2000*ones(md.numberofnodes,1)];
Index: /issm/trunk/test/Par/79North.par
===================================================================
--- /issm/trunk/test/Par/79North.par	(revision 9641)
+++ /issm/trunk/test/Par/79North.par	(revision 9642)
@@ -31,5 +31,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.3;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
@@ -45,4 +45,5 @@
 pos=find(md.nodeonboundary);
 md.spcthickness(pos)=md.thickness(pos);
+md.prognostic.spcthickness(pos)=md.thickness(pos);
 
 %Change name so that no test have the same name
Index: /issm/trunk/test/Par/ISMIPF.par
===================================================================
--- /issm/trunk/test/Par/ISMIPF.par	(revision 9641)
+++ /issm/trunk/test/Par/ISMIPF.par	(revision 9642)
@@ -31,4 +31,6 @@
 md.spcthickness=NaN*ones(md.numberofnodes,1);
 md.spcthickness(pos)=md.thickness(pos);
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness(pos)=md.thickness(pos);
 md.thermal.spctemperature=255*ones(md.numberofnodes,1);
 md.basalforcings.geothermalflux=0.4*ones(md.numberofnodes,1);
@@ -40,5 +42,5 @@
 md.timestepping.time_step=1;
 md.timestepping.final_time=10;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.thermal.penalty_threshold=10^5;
Index: /issm/trunk/test/Par/Pig.par
===================================================================
--- /issm/trunk/test/Par/Pig.par	(revision 9641)
+++ /issm/trunk/test/Par/Pig.par	(revision 9642)
@@ -29,5 +29,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.3;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.verbose=verbose(0);
 md.waitonlock=30;
Index: /issm/trunk/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9641)
+++ /issm/trunk/test/Par/RoundSheetShelf.par	(revision 9642)
@@ -58,5 +58,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.0;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
@@ -86,4 +86,5 @@
 md.pressureload=pressureload;
 md.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
 md.diagnostic_ref=NaN*ones(md.numberofnodes,6);
 
Index: /issm/trunk/test/Par/SquareEISMINT.par
===================================================================
--- /issm/trunk/test/Par/SquareEISMINT.par	(revision 9641)
+++ /issm/trunk/test/Par/SquareEISMINT.par	(revision 9642)
@@ -34,6 +34,8 @@
 md.spcthickness=NaN*ones(md.numberofnodes,1);
 md.spcthickness(pos)=500;
-md.artificial_diffusivity=0; %Better result with no artificial diffusivity
-md.thermal.statbilization=0; 
+md.prognostic.spcthickness=NaN*ones(md.numberofnodes,1);
+md.prognostic.spcthickness(pos)=500;
+md.prognostic.stabilization=0; %Better result with no artificial diffusivity
+md.thermal.stabilization=0; 
 md.timestepping.final_time=500;
 md.timestepping.time_step=1;
Index: /issm/trunk/test/Par/SquareSheetConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9641)
+++ /issm/trunk/test/Par/SquareSheetConstrained.par	(revision 9642)
@@ -32,5 +32,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.0;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
Index: /issm/trunk/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9641)
+++ /issm/trunk/test/Par/SquareSheetShelf.par	(revision 9642)
@@ -39,5 +39,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.0;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
Index: /issm/trunk/test/Par/SquareShelf.par
===================================================================
--- /issm/trunk/test/Par/SquareShelf.par	(revision 9641)
+++ /issm/trunk/test/Par/SquareShelf.par	(revision 9642)
@@ -32,5 +32,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.3;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.waitonlock=30;
Index: /issm/trunk/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9641)
+++ /issm/trunk/test/Par/SquareShelfConstrained.par	(revision 9642)
@@ -36,5 +36,5 @@
 %Numerical parameters
 md.viscosity_overshoot=0.0;
-md.artificial_diffusivity=1;
+md.prognostic.stabilization=1;
 md.thermal.stabilization=1;
 md.verbose=verbose(0);
