Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 16913)
@@ -68,5 +68,38 @@
 	this->parameters->FindParam(pvalues,psize,paramenum);
 }/*}}}*/
+IssmDouble Element::GetMaterialParameter(int enum_in){/*{{{*/
+
+	_assert_(this->matpar);
+	switch(enum_in){ // FIXME: change this to material
+		case MaterialsRheologyNEnum:
+			return this->material->GetN();
+		case MaterialsRheologyBEnum:
+			return this->material->GetB();
+		case MaterialsRheologyBbarEnum:
+			return this->material->GetBbar();
+		default:
+			return this->matpar->GetMaterialParameter(enum_in);
+	}
+}
+/*}}}*/
 Input* Element::GetInput(int inputenum){/*{{{*/
 	return inputs->GetInput(inputenum);
 }/*}}}*/
+bool Element::IsFloating(){/*{{{*/
+
+	bool shelf;
+	int  migration_style;
+	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
+
+	if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){ //Floating if all nodes are floating
+		if(this->inputs->Max(MaskGroundediceLevelsetEnum) <= 0.) shelf=true;
+		else shelf=false;
+	}
+	else if(migration_style==NoneEnum || migration_style==AgressiveMigrationEnum || migration_style==SoftMigrationEnum){ //Floating if all nodes are floating
+		if(this->inputs->Min(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
+		else shelf=true;
+	}
+	else _error_("migration_style not implemented yet");
+
+	return shelf;
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16913)
@@ -51,13 +51,15 @@
 
 		/*Functions*/
-		void   AddInput(Input* input_in);
-		bool   AllActive(void);
-		bool   AnyActive(void);
-		void   DeleteMaterials(void);
-		void   FindParam(bool* pvalue,int paramenum);
-		void   FindParam(int* pvalue,int paramenum);
-		void   FindParam(IssmDouble* pvalue,int paramenum);
-		void   FindParam(int** pvalues,int* psize,int paramenum);
-		Input* GetInput(int inputenum);
+		void       AddInput(Input* input_in);
+		bool       AllActive(void);
+		bool       AnyActive(void);
+		void       DeleteMaterials(void);
+		void       FindParam(bool* pvalue,int paramenum);
+		void       FindParam(int* pvalue,int paramenum);
+		void       FindParam(IssmDouble* pvalue,int paramenum);
+		void       FindParam(int** pvalues,int* psize,int paramenum);
+		Input*     GetInput(int inputenum);
+		IssmDouble GetMaterialParameter(int enum_in);
+		bool       IsFloating(); 
 
 		/*Virtual functions*/
@@ -70,6 +72,6 @@
 		virtual void       SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0;
 		virtual ElementMatrix* CreateKMatrix(void)=0;
+		virtual ElementVector* CreatePVector(void)=0;
 		virtual void   CreateDVector(Vector<IssmDouble>* df)=0;
-		virtual ElementVector* CreatePVector(void)=0;
 		virtual void   CreateJacobianMatrix(Matrix<IssmDouble>* Jff)=0;
 		virtual void   ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
@@ -77,7 +79,5 @@
 		virtual IssmDouble EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure)=0;
 		virtual IssmDouble EnthalpyDiffusionParameterVolume(int numvertices,IssmDouble* enthalpy,IssmDouble* pressure)=0;
-
 		virtual int    FiniteElement(void)=0;
-		virtual IssmDouble GetMaterialParameter(int enum_in)=0;
 		virtual IssmDouble MinEdgeLength(IssmDouble* xyz_list)=0;
 		virtual void   NodalFunctions(IssmDouble* basis,Gauss* gauss)=0;
@@ -122,5 +122,4 @@
 
 		virtual int    Sid()=0;
-		virtual bool   IsFloating()=0; 
 		virtual bool   IsNodeOnShelfFromFlags(IssmDouble* flags)=0; 
 		virtual bool   IsOnBed()=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16913)
@@ -990,18 +990,4 @@
 }
 /*}}}*/
-/*FUNCTION Penta::GetMaterialParameter{{{*/
-IssmDouble Penta::GetMaterialParameter(int enum_in){
-
-	_assert_(this->matpar);
-	switch(enum_in){ // FIXME: change this to material
-		case MaterialsRheologyNEnum:
-			return this->material->GetN();
-		case MaterialsRheologyBEnum:
-			return this->material->GetB();
-		default:
-			return this->matpar->GetMaterialParameter(enum_in);
-	}
-}
-/*}}}*/
 /*FUNCTION Penta::GetGroundedPart{{{*/
 void Penta::GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating){
@@ -2342,24 +2328,4 @@
 	}
 	else return false;
-}
-/*}}}*/
-/*FUNCTION Penta::IsFloating{{{*/
-bool   Penta::IsFloating(){
-
-	bool shelf;
-	int  migration_style;
-	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
-
-	if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){ //Floating if all nodes are floating
-		if(this->inputs->Max(MaskGroundediceLevelsetEnum) <= 0.) shelf=true;
-		else shelf=false;
-	}
-	else if(migration_style==NoneEnum || migration_style==AgressiveMigrationEnum || migration_style==SoftMigrationEnum){ //Floating if all nodes are floating
-		if(this->inputs->Min(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
-		else shelf=true;
-	}
-	else _error_("migration_style not implemented yet");
-
-	return shelf;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16913)
@@ -88,5 +88,4 @@
 		int    GetNumberOfNodesVelocity(void);
 		int    GetNumberOfVertices(void);
-		IssmDouble GetMaterialParameter(int enum_in);
 		void   GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type);
 		IssmDouble GetZcoord(Gauss* gauss);
@@ -241,5 +240,4 @@
 		bool	         IsOnSurface(void);
 		bool	         IsOnBed(void);
-		bool           IsFloating(void); 
 		bool           IsNodeOnShelfFromFlags(IssmDouble* flags);
 		void           JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.cpp	(revision 16913)
@@ -124,11 +124,4 @@
 /*}}}*/
 
-/*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 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 16913)
@@ -86,5 +86,4 @@
 		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype){_error_("not implemented yet");};
 		void        GetInputListOnNodes(IssmDouble* pvalue,int enumtype,IssmDouble defaultvalue){_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");};
@@ -101,5 +100,4 @@
 		bool        IsOnBed(){_error_("not implemented yet");};
 		bool        IsOnSurface(){_error_("not implemented yet");};
-		bool        IsFloating(){_error_("not implemented yet");};
 		bool        IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");};
 		void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16913)
@@ -1123,20 +1123,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::GetMaterialParameter{{{*/
-IssmDouble Tria::GetMaterialParameter(int enum_in){
-
-	_assert_(this->matpar);
-	switch(enum_in){ // FIXME: change this to material
-		case MaterialsRheologyNEnum:
-			return this->material->GetN();
-		case MaterialsRheologyBEnum:
-			return this->material->GetB();
-		case MaterialsRheologyBbarEnum:
-			return this->material->GetBbar();
-		default:
-			return this->matpar->GetMaterialParameter(enum_in);
-	}
-}
-/*}}}*/
 /*FUNCTION Tria::GetVerticesCoordinates(IssmDouble** pxyz_list){{{*/
 void Tria::GetVerticesCoordinates(IssmDouble** pxyz_list){
@@ -2209,24 +2193,4 @@
 	_printf_("list of vertices on surface: "<<values[0]<<" "<<values[1]<<" "<<values[2]);
 	_error_("Could not find 2 vertices on surface");
-}
-/*}}}*/
-/*FUNCTION Tria::IsFloating {{{*/
-bool   Tria::IsFloating(){
-
-	bool shelf;
-	int  migration_style;
-	parameters->FindParam(&migration_style,GroundinglineMigrationEnum);
-
-	if(migration_style==SubelementMigrationEnum || migration_style==SubelementMigration2Enum){ //Floating if all nodes are floating
-		if(this->inputs->Max(MaskGroundediceLevelsetEnum) <= 0.) shelf=true;
-		else shelf=false;
-	}
-	else if(migration_style==NoneEnum || migration_style==AgressiveMigrationEnum || migration_style==SoftMigrationEnum){ //Floating if all nodes are floating
-		if(this->inputs->Min(MaskGroundediceLevelsetEnum) > 0.) shelf=false;
-		else shelf=true;
-	}
-	else _error_("migration_style not implemented yet");
-
-	return shelf;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16912)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16913)
@@ -97,5 +97,4 @@
 		int         EdgeOnBedIndex();
 		int         EdgeOnSurfaceIndex();
-		bool        IsFloating();
 		bool        IsNodeOnShelfFromFlags(IssmDouble* flags);
 		int         NumberofNodesVelocity(void);
@@ -256,5 +255,4 @@
 		void           NormalTop(IssmDouble* normal,IssmDouble* xyz_list);
 		void           NormalBase(IssmDouble* normal,IssmDouble* xyz_list);
-		IssmDouble     GetMaterialParameter(int enum_in);
 		Input*         GetMaterialInput(int inputenum);
 		void           GetInputListOnVertices(IssmDouble* pvalue,int enumtype);
