Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp	(revision 976)
@@ -75,4 +75,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
@@ -312,8 +313,9 @@
 				B_avg=B_avg/3;
 				matice_B=B_avg;
+				matice_Bbar=B_avg;
 				matice_n=(double)*(model->n+i);
 				
 				/*Create matice using its constructor:*/
-				matice= new Matice(matice_mid,matice_B,matice_n);
+				matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 		
 				/*Add matice element to materials dataset: */
@@ -439,8 +441,9 @@
 				B_avg=B_avg/6;
 				matice_B= B_avg;
+				matice_Bbar= B_avg;
 				matice_n=(double)*(model->n+i);
 		
 				/*Create matice using its constructor:*/
-				matice= new Matice(matice_mid,matice_B,matice_n);
+				matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 		
 				/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp	(revision 976)
@@ -55,4 +55,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 
@@ -248,8 +249,9 @@
 				matice_mid=i+1; //same as the material id from the geom2 elements.
 				matice_B=model->B[i];	
+				matice_Bbar=model->B[i];	
 				matice_n=(double)model->n[1]; //n defined on elements not grids, so take the first value everywhere
 			
 				/*Create matice using its constructor:*/
-				matice= new Matice(matice_mid,matice_B,matice_n);
+				matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 	
 				/*Add matice element to materials dataset: */
@@ -301,8 +303,9 @@
 					matice_mid=i+1; //same as the material id from the geom2 elements.
 					matice_B=model->B[i];	
+					matice_Bbar=model->B[i];	
 					matice_n=(double)model->n[1]; //n defined on elements not grids, so take the first value everywhere
 				
 					/*Create matice ubeam its constructor:*/
-					matice= new Matice(matice_mid,matice_B,matice_n);
+					matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 		
 					/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp	(revision 976)
@@ -54,4 +54,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
@@ -285,4 +286,5 @@
 			B_avg=B_avg/6;
 			matice_B= B_avg;
+			matice_Bbar= B_avg;
 			matice_n=(double)*(model->n+i);
 			
@@ -290,5 +292,5 @@
 	
 				/*Create matice using its constructor:*/
-				matice= new Matice(matice_mid,matice_B,matice_n);
+				matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 		
 				/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp	(revision 976)
@@ -53,4 +53,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
@@ -247,5 +248,5 @@
 
 		/*Create matice using its constructor:*/
-		matice= new Matice(matice_mid,matice_B,matice_n);
+		matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 
 		/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp	(revision 976)
@@ -53,4 +53,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
@@ -256,8 +257,9 @@
 		B_avg=B_avg/6;
 		matice_B= B_avg;
+		matice_Bbar= B_avg;
 		matice_n=(double)*(model->n+i);
 
 		/*Create matice using its constructor:*/
-		matice= new Matice(matice_mid,matice_B,matice_n);
+		matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 
 		/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp	(revision 976)
@@ -75,4 +75,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
Index: /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp
===================================================================
--- /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 975)
+++ /issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp	(revision 976)
@@ -54,4 +54,5 @@
 	int    matice_mid;
 	double matice_B;
+	double matice_Bbar;
 	double matice_n;
 	
@@ -252,8 +253,9 @@
 		B_avg=B_avg/6;
 		matice_B= B_avg;
+		matice_Bbar= B_avg;
 		matice_n=(double)*(model->n+i);
 
 		/*Create matice using its constructor:*/
-		matice= new Matice(matice_mid,matice_B,matice_n);
+		matice= new Matice(matice_mid,matice_B,matice_Bbar,matice_n);
 
 		/*Add matice element to materials dataset: */
Index: /issm/trunk/src/c/objects/Matice.cpp
===================================================================
--- /issm/trunk/src/c/objects/Matice.cpp	(revision 975)
+++ /issm/trunk/src/c/objects/Matice.cpp	(revision 976)
@@ -20,7 +20,8 @@
 	return;
 }
-Matice::Matice(int matice_mid,double matice_B,double matice_n){
+Matice::Matice(int matice_mid,double matice_B,double matice_Bbar,double matice_n){
 	mid=matice_mid;
 	B=matice_B;
+	Bbar=matice_Bbar;
 	n=matice_n;
 	return;
@@ -35,4 +36,5 @@
 	printf("   mid: %i\n",mid);
 	printf("   B: %g\n",B);
+	printf("   Bbar: %g\n",Bbar);
 	printf("   n: %g\n",n);
 	return;
@@ -43,4 +45,5 @@
 	printf("   mid: %i\n",mid);
 	printf("   B: %g\n",B);
+	printf("   Bbar: %g\n",Bbar);
 	printf("   n: %g\n",n);
 	return;
@@ -63,4 +66,5 @@
 	memcpy(marshalled_dataset,&mid,sizeof(mid));marshalled_dataset+=sizeof(mid);
 	memcpy(marshalled_dataset,&B,sizeof(B));marshalled_dataset+=sizeof(B);
+	memcpy(marshalled_dataset,&Bbar,sizeof(Bbar));marshalled_dataset+=sizeof(Bbar);
 	memcpy(marshalled_dataset,&n,sizeof(n));marshalled_dataset+=sizeof(n);
 
@@ -71,5 +75,5 @@
 int   Matice::MarshallSize(){
 
-	return sizeof(mid)+sizeof(B)+sizeof(n)+sizeof(int); //sizeof(int) for enum type
+	return sizeof(mid)+sizeof(B)+sizeof(Bbar)+sizeof(n)+sizeof(int); //sizeof(int) for enum type
 }
 
@@ -91,4 +95,5 @@
 	memcpy(&mid,marshalled_dataset,sizeof(mid));marshalled_dataset+=sizeof(mid);
 	memcpy(&B,marshalled_dataset,sizeof(B));marshalled_dataset+=sizeof(B);
+	memcpy(&Bbar,marshalled_dataset,sizeof(Bbar));marshalled_dataset+=sizeof(Bbar);
 	memcpy(&n,marshalled_dataset,sizeof(n));marshalled_dataset+=sizeof(n);
 
@@ -127,4 +132,10 @@
 		
 
+#undef __FUNCT__ 
+#define __FUNCT__ "Matice::SetBbar"
+void  Matice::SetBbar(double Bbar_param){
+	Bbar=Bbar_param;
+}
+		
 
 #undef __FUNCT__ 
@@ -158,5 +169,5 @@
 	if (n==1){
 		/*Viscous behaviour! viscosity=B: */
-		viscosity=B;
+		viscosity=Bbar;
 	}
 	else{
@@ -178,5 +189,5 @@
 			else{
 				e=(n-1)/2/n;
-				viscosity=2*B/(2*pow(A,e));
+				viscosity=2*Bbar/(2*pow(A,e));
 			}
 		}
@@ -387,4 +398,8 @@
 }
 
+double Matice::GetBbar(){
+	return Bbar;
+}
+
 double Matice::GetN(){
 	return n;
Index: /issm/trunk/src/c/objects/Matice.h
===================================================================
--- /issm/trunk/src/c/objects/Matice.h	(revision 975)
+++ /issm/trunk/src/c/objects/Matice.h	(revision 976)
@@ -13,4 +13,5 @@
 		int	   mid;
 		double B;
+		double Bbar;
 		double n;
 
@@ -18,5 +19,5 @@
 
 		Matice();
-		Matice(int mid,double B,double n);
+		Matice(int mid,double B,double Bbar,double n);
 		~Matice();
 
@@ -33,4 +34,5 @@
 		void  UpdateFromInputs(void* inputs);
 		void  SetB(double B_param);
+		void  SetBbar(double Bbar_param);
 		void  GetViscosity2d(double* pviscosity, double* pepsilon);
 		void  GetViscosity2(double* pviscosity2, double* pepsilon);
@@ -39,4 +41,5 @@
 		Object* copy();
 		double GetB();
+		double GetBbar();
 		double GetN();
 
Index: /issm/trunk/src/c/objects/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penta.cpp	(revision 975)
+++ /issm/trunk/src/c/objects/Penta.cpp	(revision 976)
@@ -1101,11 +1101,4 @@
 
 	//Update material if necessary
-	if(inputs->Recover("temperature_average",&temperature_list[0],1,dofs,6,(void**)nodes)){
-		if(matice){
-			temperature_average=(temperature_list[0]+temperature_list[1]+temperature_list[2]+temperature_list[3]+temperature_list[4]+temperature_list[5])/6.0;
-			B_average=Paterson(temperature_average);
-			matice->SetB(B_average);
-		}
-	}
 	if(inputs->Recover("temperature",&temperature_list[0],1,dofs,6,(void**)nodes)){
 		if(matice){
@@ -1113,4 +1106,12 @@
 			B_average=Paterson(temperature_average);
 			matice->SetB(B_average);
+		}
+	}
+	
+	if(inputs->Recover("temperature_average",&temperature_list[0],1,dofs,6,(void**)nodes)){
+		if(matice){
+			temperature_average=(temperature_list[0]+temperature_list[1]+temperature_list[2]+temperature_list[3]+temperature_list[4]+temperature_list[5])/6.0;
+			B_average=Paterson(temperature_average);
+			matice->SetBbar(B_average);
 		}
 	}
Index: /issm/trunk/src/c/objects/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Tria.cpp	(revision 975)
+++ /issm/trunk/src/c/objects/Tria.cpp	(revision 976)
@@ -1450,10 +1450,10 @@
 		temperature_average=(temperature_list[0]+temperature_list[1]+temperature_list[2])/3.0;
 		B_average=Paterson(temperature_average);
-		matice->SetB(B_average);
+		matice->SetBbar(B_average);
 	}
 	
 	if(inputs->Recover("B",&B_list[0],1,dofs,3,(void**)nodes)){
 		B_average=(B_list[0]+B_list[1]+B_list[2])/3.0;
-		matice->SetB(B_average);
+		matice->SetBbar(B_average);
 	}
 
