Index: /issm/branches/trunk-jpl-damage/src/c/classes/objects/Elements/Penta.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/classes/objects/Elements/Penta.cpp	(revision 13116)
+++ /issm/branches/trunk-jpl-damage/src/c/classes/objects/Elements/Penta.cpp	(revision 13117)
@@ -1964,5 +1964,10 @@
 
 				/*update input*/
-				this->inputs->AddInput(new PentaP1Input(name,values));
+				if (name==MaterialsRheologyZEnum || name==MaterialsRheologyZbarEnum){
+					matice->inputs->AddInput(new PentaP1Input(name,values));
+				}
+				else{
+					this->inputs->AddInput(new PentaP1Input(name,values));
+				}
 				return;
 				break;
@@ -4352,5 +4357,4 @@
 				for(i=0;i<numdof;i++) B[i]=B_average;
 				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyBEnum,B));
-				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyZEnum,B));
 				break;
 			case ArrheniusEnum:
@@ -4361,5 +4365,4 @@
 				for(i=0;i<numdof;i++) B[i]=B_average;
 				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyBEnum,B));
-				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyZEnum,B));
 				break;
 			default:
@@ -4432,5 +4435,4 @@
 				for(i=0;i<numdof;i++) B[i]=B_average;
 				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyBEnum,B));
-				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyZEnum,B));
 				break;
 			case ArrheniusEnum:
@@ -4441,5 +4443,4 @@
 				for(i=0;i<numdof;i++) B[i]=B_average;
 				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyBEnum,B));
-				this->matice->inputs->AddInput(new PentaP1Input(MaterialsRheologyZEnum,B));
 				break;
 			default:
@@ -4469,4 +4470,9 @@
 		input=(Input*)matice->inputs->GetInput(MaterialsRheologyBEnum);
 	}
+	else if(enum_type==MaterialsRheologyZbarEnum){
+		if(!IsOnBed()) return;
+		input=(Input*)matice->inputs->GetInput(MaterialsRheologyZEnum);
+	}
+		
 	else{
 		input=inputs->GetInput(enum_type);
@@ -4486,4 +4492,7 @@
 	if(enum_type==MaterialsRheologyBbarEnum){
 		input=(Input*)matice->inputs->GetInput(MaterialsRheologyBEnum);
+	}
+	else if(enum_type==MaterialsRheologyZbarEnum){
+		input=(Input*)matice->inputs->GetInput(MaterialsRheologyZEnum);
 	}
 	else{
@@ -4505,4 +4514,7 @@
 	if(enum_type==MaterialsRheologyBbarEnum){
 		input=(Input*)matice->inputs->GetInput(MaterialsRheologyBEnum);
+	}
+	else if(enum_type==MaterialsRheologyZbarEnum){
+		input=(Input*)matice->inputs->GetInput(MaterialsRheologyZEnum);
 	}
 	else{
@@ -5126,4 +5138,8 @@
 			input=(Input*)matice->inputs->GetInput(MaterialsRheologyBEnum); _assert_(input);
 		}
+		else if(control_type[i]==MaterialsRheologyZbarEnum){
+			if (!IsOnBed()) goto cleanup_and_return;
+			input=(Input*)matice->inputs->GetInput(MaterialsRheologyZEnum); _assert_(input);
+		}
 		else{
 			input=(Input*)this->inputs->GetInput(control_type[i]); _assert_(input);
@@ -5138,4 +5154,7 @@
 		if(control_type[i]==MaterialsRheologyBbarEnum){
 			this->InputExtrude(MaterialsRheologyBEnum,MaterialsEnum);
+		}
+		else if(control_type[i]==MaterialsRheologyZbarEnum){
+			this->InputExtrude(MaterialsRheologyZEnum,MaterialsEnum);
 		}
 	}
Index: /issm/branches/trunk-jpl-damage/src/c/classes/objects/Materials/Matice.cpp
===================================================================
--- /issm/branches/trunk-jpl-damage/src/c/classes/objects/Materials/Matice.cpp	(revision 13116)
+++ /issm/branches/trunk-jpl-damage/src/c/classes/objects/Materials/Matice.cpp	(revision 13117)
@@ -314,9 +314,10 @@
 	/*Intermediaries: */
 	IssmDouble A,e;
-	IssmDouble B,n;
-
-	/*Get B and n*/
-	B=GetB();
+	IssmDouble B,n,Z;
+
+	/*Get B, Z and n*/
 	n=GetN();
+	Z=GetZ();
+	B=Z*GetB();
 
 	if (n==1){
@@ -384,11 +385,12 @@
 	/*Intermediaries: */
 	IssmDouble A,e;
-	IssmDouble B,n;
+	IssmDouble B,n,Z;
 	IssmDouble eps0;
 
 	/*Get B and n*/
 	eps0=pow((IssmDouble)10,(IssmDouble)-27);
-	B=GetB();
 	n=GetN();
+	Z=GetZ();
+	B=Z*GetB();
 	
 	if (n==1){
Index: /issm/branches/trunk-jpl-damage/src/m/contrib/hack/tres.m
===================================================================
--- /issm/branches/trunk-jpl-damage/src/m/contrib/hack/tres.m	(revision 13116)
+++ /issm/branches/trunk-jpl-damage/src/m/contrib/hack/tres.m	(revision 13117)
@@ -105,4 +105,6 @@
 		case MaterialsRheologyBEnum(), string='rheology_B'; return
 		case MaterialsRheologyBbarEnum(), string='rheology_B'; return
+		case MaterialsRheologyZEnum(), string='rheology_Z'; return
+		case MaterialsRheologyZbarEnum(), string='rheology_Z'; return
 		case BalancethicknessThickeningRateEnum(), string='dhdt'; return
 		case VxEnum(), string='vx'; return
