Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 16696)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 16697)
@@ -978,6 +978,6 @@
 	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
 	for(i=0;i<numnodes;i++){
-		vx[i]=values[i*NDOF2+0];
-		vy[i]=values[i*NDOF2+1];
+		vx[i]=values[i*2+0];
+		vy[i]=values[i*2+1];
 
 		/*Check solution*/
@@ -992,7 +992,6 @@
 	/*For pressure: we have not computed pressure in this analysis, for this element. We are in 2D, 
 	 *so the pressure is just the pressure at the bedrock: */
-	Matpar* matpar=element->GetMatparPointer();
-	rho_ice=matpar->GetRhoIce();
-	g=matpar->GetG();
+	rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	g       = element->GetMaterialParameter(ConstantsGEnum);
 	element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
 	for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*thickness[i];
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16697)
@@ -47,5 +47,5 @@
 		virtual void   FindParam(IssmDouble* pvalue,int paramenum)=0;
 		virtual int    FiniteElement(void)=0;
-		virtual Matpar* GetMatparPointer(void)=0;
+		virtual IssmDouble GetMaterialParameter(int enum_in)=0;
 		virtual void   TransformSolutionCoord(IssmDouble* values,int transformenum)=0;
 		virtual void	GetDofList(int** pdoflist,int approximation_enum,int setenum)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16697)
@@ -1074,4 +1074,11 @@
 	/*Assign output pointers:*/
 	*pdoflist=doflist;
+}
+/*}}}*/
+/*FUNCTION Penta::GetMaterialParameter{{{*/
+IssmDouble Penta::GetMaterialParameter(int enum_in){
+
+	_assert_(this->matpar);
+	return this->matpar->GetMaterialParameter(enum_in);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16697)
@@ -91,5 +91,5 @@
 		void   GetNodesLidList(int* lidlist);
 		int    GetNumberOfNodes(void);
-		Matpar* GetMatparPointer(void){_error_("not implemented yet");};
+		IssmDouble GetMaterialParameter(int enum_in);
 		void   GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		IssmDouble GetZcoord(GaussPenta* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16697)
@@ -146,4 +146,11 @@
 /*}}}*/
 
+/*FUNCTION Seg::GetMaterialParameter{{{*/
+IssmDouble Seg::GetMaterialParameter(int enum_in){
+
+	_assert_(this->matpar);
+	return this->matpar->GetMaterialParameter(enum_in);
+}
+/*}}}*/
 /*FUNCTION Seg::GetSize{{{*/
 IssmDouble Seg::GetSize(void){
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16697)
@@ -87,5 +87,5 @@
 		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype){_error_("not implemented yet");};
 		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){_error_("not implemented yet");};
-		Matpar*     GetMatparPointer(void){_error_("not implemented yet");};
+		IssmDouble  GetMaterialParameter(int enum_in);
 		int         GetNodeIndex(Node* node){_error_("not implemented yet");};
 		void        GetNodesSidList(int* sidlist){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16697)
@@ -1189,4 +1189,11 @@
 }
 /*}}}*/
+/*FUNCTION Tria::GetMaterialParameter{{{*/
+IssmDouble Tria::GetMaterialParameter(int enum_in){
+
+	_assert_(this->matpar);
+	return this->matpar->GetMaterialParameter(enum_in);
+}
+/*}}}*/
 /*FUNCTION Tria::GetSegmentNormal {{{*/
 void Tria:: GetSegmentNormal(IssmDouble* normal,IssmDouble xyz_list[2][3]){
@@ -1495,9 +1502,4 @@
 	input->GetInputValue(pvalue,gauss);
 	delete gauss;
-}
-/*}}}*/
-/*FUNCTION Tria::GetMatparPointer(void) {{{*/
-Matpar* Tria::GetMatparPointer(void){
-	return this->matpar;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16697)
@@ -238,5 +238,5 @@
 		IssmDouble     GetGroundedPortion(IssmDouble* xyz_list);
 		void           GetSegmentNormal(IssmDouble* normal,IssmDouble xyz_list[2][3]);
-      Matpar*        GetMatparPointer(void);
+		IssmDouble     GetMaterialParameter(int enum_in);
 		void           GetZeroLevelsetCoordinates(IssmDouble* xyz_zero,IssmDouble xyz_list[3][3],int levelsetenum);
 		Input*         GetInput(int inputenum);
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 16697)
@@ -241,4 +241,27 @@
 }
 /*}}}*/
+/*FUNCTION Matpar::Configure {{{*/
+IssmDouble Matpar::GetMaterialParameter(int enum_in){
+
+	switch(enum_in){
+		case MaterialsRhoIceEnum:                   return this->rho_ice;
+		case MaterialsRhoWaterEnum:                 return this->rho_water;
+		case MaterialsRhoFreshwaterEnum:            return this->rho_freshwater;
+		case MaterialsMuWaterEnum:                  return this->mu_water;
+		case MaterialsHeatcapacityEnum:             return this->heatcapacity;
+		case MaterialsThermalconductivityEnum:      return this->thermalconductivity;
+		case MaterialsTemperateiceconductivityEnum: return this->temperateiceconductivity;
+		case MaterialsLatentheatEnum:               return this->latentheat;
+		case MaterialsBetaEnum:                     return this->beta;
+		case MaterialsMeltingpointEnum:             return this->meltingpoint;
+		case ConstantsReferencetemperatureEnum:     return this->referencetemperature;
+		case MaterialsMixedLayerCapacityEnum:       return this->mixed_layer_capacity;
+		case MaterialsThermalExchangeVelocityEnum:  return this->thermal_exchange_velocity;
+		case ConstantsGEnum:                        return this->g;
+		default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet");
+	}
+
+}
+/*}}}*/
 /*FUNCTION Matpar::GetBeta {{{*/
 IssmDouble Matpar::GetBeta(){
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 16696)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 16697)
@@ -15,5 +15,5 @@
 
 	private: 
-		int	  mid;
+		int	      mid;
 		IssmDouble  rho_ice; 
 		IssmDouble  rho_water;
@@ -133,8 +133,9 @@
 		IssmDouble GetMantleShearModulus();
 		IssmDouble GetMantleDensity();
-		void   EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
-		void   ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
+		void       EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure);
+		void       ThermalToEnthalpy(IssmDouble* penthalpy,IssmDouble temperature,IssmDouble waterfraction,IssmDouble pressure);
 		IssmDouble GetDesFac();
 		IssmDouble GetS0p(); 
+		IssmDouble GetMaterialParameter(int in_enum); 
 		bool       IsInput(int name);
 		/*}}}*/
