Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 1310)
@@ -103,4 +103,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -376,4 +377,5 @@
 		ModelFetchData((void**)&model->accumulation,NULL,NULL,model_handle,"accumulation","Matrix","Mat");
 		ModelFetchData((void**)&model->melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
+		ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
 		
 		for (i=0;i<model->numberofelements;i++){
@@ -413,4 +415,5 @@
 				penta_meanvel=model->meanvel;
 				penta_epsvel=model->epsvel;
+				penta_onwater=(bool)*(model->elementonwater+i);
 				
 				/*viscosity_overshoot*/
@@ -429,5 +432,5 @@
 						penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 						penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-						penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+						penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 				/*Add penta element to elements dataset: */
@@ -487,4 +490,5 @@
 		xfree((void**)&model->n);
 		xfree((void**)&model->B);
+		xfree((void**)&model->elementonwater);
 
 	} //if (strcmp(meshtype,"2d")==0)
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 1310)
@@ -82,4 +82,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -220,5 +221,6 @@
 		ModelFetchData((void**)&model->accumulation,NULL,NULL,model_handle,"accumulation","Matrix","Mat");
 		ModelFetchData((void**)&model->melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
-		
+		ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
+	
 		for (i=0;i<model->numberofelements;i++){
 		#ifdef _PARALLEL_
@@ -256,5 +258,6 @@
 			penta_meanvel=model->meanvel;
 			penta_epsvel=model->epsvel;
-			
+			penta_onwater=(bool)*(model->elementonwater+i);
+	
 			/*viscosity_overshoot*/
 			penta_viscosity_overshoot=model->viscosity_overshoot;
@@ -270,5 +273,5 @@
 						penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 						penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-						penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+						penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 				/*Add penta element to elements dataset: */
@@ -330,4 +333,5 @@
 		xfree((void**)&model->n);
 		xfree((void**)&model->B);
+		xfree((void**)&model->elementonwater);
 
 	} //if (strcmp(meshtype,"2d")==0)
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 1310)
@@ -81,4 +81,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -205,4 +206,5 @@
 	ModelFetchData((void**)&model->melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
 	ModelFetchData((void**)&model->accumulation,NULL,NULL,model_handle,"accumulation","Matrix","Mat");
+	ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
 	
 	for (i=0;i<model->numberofelements;i++){
@@ -233,4 +235,5 @@
 		penta_onsurface=(int)*(model->elementonsurface+i);
 		penta_collapse=1;
+		penta_onwater=(bool)*(model->elementonwater+i);
 
 		/*Create Penta using its constructor:*/
@@ -238,5 +241,5 @@
 				penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 				penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 		/*Add penta element to elements dataset: */
@@ -283,4 +286,5 @@
 	xfree((void**)&model->melting);
 	xfree((void**)&model->accumulation);
+	xfree((void**)&model->elementonwater);
 
 
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 1310)
@@ -81,4 +81,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -197,4 +198,5 @@
 	ModelFetchData((void**)&model->accumulation,NULL,NULL,model_handle,"accumulation","Matrix","Mat");
 	ModelFetchData((void**)&model->melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
+	ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
 	
 	for (i=0;i<model->numberofelements;i++){
@@ -233,5 +235,6 @@
 		penta_meanvel=model->meanvel;
 		penta_epsvel=model->epsvel;
-		
+		penta_onwater=(bool)*(model->elementonwater+i);
+	
 		/*viscosity_overshoot*/
 		penta_viscosity_overshoot=model->viscosity_overshoot;
@@ -242,5 +245,5 @@
 				penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 				penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 		/*Add penta element to elements dataset: */
@@ -298,4 +301,5 @@
 	xfree((void**)&model->n);
 	xfree((void**)&model->B);
+	xfree((void**)&model->elementonwater);
 
 
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 1310)
@@ -104,4 +104,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -306,5 +307,6 @@
 		ModelFetchData((void**)&model->elementonbed,NULL,NULL,model_handle,"elementonbed","Matrix","Mat");
 		ModelFetchData((void**)&model->elementonsurface,NULL,NULL,model_handle,"elementonsurface","Matrix","Mat");
-		
+		ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
+	
 		for (i=0;i<model->numberofelements;i++){
 		#ifdef _PARALLEL_
@@ -333,5 +335,6 @@
 			penta_collapse=1;
 			penta_artdiff=model->artificial_diffusivity;
-			
+			penta_onwater=(bool)*(model->elementonwater+i);
+	
 
 			/*Create Penta using its constructor:*/
@@ -339,5 +342,5 @@
 					penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 					penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-					penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+					penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 			/*Add penta element to elements dataset: */
@@ -371,4 +374,5 @@
 		xfree((void**)&model->elementonbed);
 		xfree((void**)&model->elementonsurface);
+		xfree((void**)&model->elementonwater);
 
 	} //if (strcmp(meshtype,"2d")==0)
Index: /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp	(revision 1310)
@@ -95,4 +95,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/* node constructor input: */
@@ -271,5 +272,6 @@
 		ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
 		ModelFetchData((void**)&model->elementonbed,NULL,NULL,model_handle,"elementonbed","Matrix","Mat");
-		
+		ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
+	
 		for (i=0;i<model->numberofelements;i++){
 		#ifdef _PARALLEL_
@@ -294,4 +296,5 @@
 			/*diverse: */
 			penta_onbed=(int)*(model->elementonbed+i);
+			penta_onwater=(bool)*(model->elementonwater+i);
 
 			/*Create Penta using its constructor:*/
@@ -299,5 +302,5 @@
 					penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 					penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-					penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+					penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 			/*Add penta element to elements dataset: */
@@ -329,4 +332,5 @@
 		xfree((void**)&model->bed);
 		xfree((void**)&model->elementonbed);
+		xfree((void**)&model->elementonwater);
 
 	} //if (strcmp(meshtype,"2d")==0)
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1309)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 1310)
@@ -82,4 +82,5 @@
 	double penta_viscosity_overshoot;
 	double penta_stokesreconditioning;
+	bool   penta_onwater;
 
 	/*matpar constructor input: */
@@ -197,4 +198,5 @@
 	ModelFetchData((void**)&model->B,NULL,NULL,model_handle,"B","Matrix","Mat");
 	ModelFetchData((void**)&model->n,NULL,NULL,model_handle,"n","Matrix","Mat");
+	ModelFetchData((void**)&model->elementonwater,NULL,NULL,model_handle,"elementonwater","Matrix","Mat");
 	
 	for (i=0;i<model->numberofelements;i++){
@@ -232,4 +234,5 @@
 		penta_meanvel=model->meanvel;
 		penta_epsvel=model->epsvel;
+		penta_onwater=(bool)*(model->elementonwater+i);
 
 		/*We need the field collapse for transient, so that we can use compute B with the average temperature*/
@@ -246,5 +249,5 @@
 				penta_p,penta_q,penta_shelf,penta_onbed,penta_onsurface,penta_meanvel,penta_epsvel,
 				penta_collapse,penta_melting,penta_accumulation,penta_geothermalflux,penta_artdiff,
-				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,0); 
+				penta_thermal_steadystate,penta_viscosity_overshoot,penta_stokesreconditioning,penta_onwater); 
 
 		/*Add penta element to elements dataset: */
@@ -303,4 +306,5 @@
 	xfree((void**)&model->n);
 	xfree((void**)&model->B);
+	xfree((void**)&model->elementonwater);
 
 	/*Add one constant material property to materials: */
