Index: /issm/trunk/src/c/objects/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penta.cpp	(revision 1241)
+++ /issm/trunk/src/c/objects/Penta.cpp	(revision 1242)
@@ -372,5 +372,4 @@
 }
 
-
 #undef __FUNCT__ 
 #define __FUNCT__ "Penta:CreateKMatrixDiagnosticHoriz"
@@ -461,5 +460,4 @@
 	/*If on water, skip stiffness: */
 	if(onwater)return;
-
 
 	/*recover pointers: */
@@ -789,5 +787,4 @@
 	double         gravity,rho_ice,rho_water;
 
-	
 	/*Collapsed formulation: */
 	Tria*  tria=NULL;
@@ -844,4 +841,7 @@
 	ParameterInputs* inputs=NULL;
 
+	/*If on water, skip stiffness: */
+	if(onwater)return;
+
 	/*recover pointers: */
 	inputs=(ParameterInputs*)vinputs;
@@ -1208,4 +1208,7 @@
 #define __FUNCT__ "Penta::Gradj"
 void  Penta::Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){
+	
+	/*If on water, skip grad (=0): */
+	if(onwater)return;
 
 	if (strcmp(control_type,"drag")==0){
@@ -1223,5 +1226,5 @@
 	
 	Tria* tria=NULL;
-	
+
 	/*Bail out if this element does not touch the bedrock: */
 	if (!onbed) return;
@@ -1279,4 +1282,7 @@
 	Tria* tria=NULL;
 	
+	/*If on water, return 0: */
+	if(onwater)return 0;
+
 	/*Bail out if this element if:
 	 * -> Non collapsed and not on the surface
@@ -3026,5 +3032,4 @@
 void Penta::CreatePVectorDiagnosticStokes( Vec pg, void* vinputs,int analysis_type,int sub_analysis_type){
 
-
 	/*indexing: */
 	int i,j;
@@ -3092,4 +3097,7 @@
 	ParameterInputs* inputs=NULL;
 	Tria*            tria=NULL;
+
+	/*If on water, skip load: */
+	if(onwater)return;
 
 	/*recover pointers: */
Index: /issm/trunk/src/c/objects/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Tria.cpp	(revision 1241)
+++ /issm/trunk/src/c/objects/Tria.cpp	(revision 1242)
@@ -2219,4 +2219,7 @@
 void  Tria::Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type){
 
+	/*If on water, grad = 0: */
+	if(onwater)return;
+
 	if (strcmp(control_type,"drag")==0){
 		GradjDrag( grad_g,inputs,analysis_type,sub_analysis_type);
@@ -2869,4 +2872,7 @@
 	ParameterInputs* inputs=NULL;
 
+	/*If on water, return 0: */
+	if(onwater)return 0;
+
 	/*recover pointers: */
 	inputs=(ParameterInputs*)vinputs;
