Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 19061)
@@ -204,4 +204,5 @@
 		virtual void       GetVerticesCoordinatesBase(IssmDouble** xyz_list)=0;
 		virtual void       GetVerticesCoordinatesTop(IssmDouble** xyz_list)=0;
+		virtual IssmDouble IceMass(void)=0;
 		virtual IssmDouble IceVolume(void)=0;
 		virtual IssmDouble IceVolumeAboveFloatation(void)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 19061)
@@ -1287,4 +1287,16 @@
 
 }/*}}}*/
+IssmDouble Penta::IceMass(void){/*{{{*/
+
+	IssmDouble rho_ice; 
+	
+	if(!IsIceInElement())return 0.; //do not contribute to the volume of the ice!
+
+	/*recover ice density: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	return rho_ice*this->IceVolume();
+}
+/*}}}*/
 IssmDouble Penta::IceVolume(void){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 19061)
@@ -87,4 +87,5 @@
 		void           GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
 		void           GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
+		IssmDouble     IceMass(void);
 		IssmDouble     IceVolume(void);
 		IssmDouble     IceVolumeAboveFloatation(void);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 19061)
@@ -78,4 +78,5 @@
 		void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list){_error_("not implemented yet");};
 		void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list){_error_("not implemented yet");};
+		IssmDouble  IceMass(void){_error_("not implemented yet");};
 		IssmDouble  IceVolume(void){_error_("not implemented yet");};
 		IssmDouble  IceVolumeAboveFloatation(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 19061)
@@ -84,4 +84,5 @@
 		bool        HasFaceOnBase();
 		bool        HasFaceOnSurface();
+		IssmDouble  IceMass(void){_error_("not implemented yet");};
 		IssmDouble  IceVolume(void){_error_("not implemented yet");};
 		IssmDouble  IceVolumeAboveFloatation(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 19061)
@@ -1622,4 +1622,16 @@
 		return false;
 	}
+}
+/*}}}*/
+IssmDouble Tria::IceMass(void){/*{{{*/
+
+	IssmDouble rho_ice; 
+	
+	if(!IsIceInElement())return 0.; //do not contribute to the volume of the ice!
+
+	/*recover ice density: */
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	return rho_ice*this->IceVolume();
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 19060)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 19061)
@@ -90,4 +90,5 @@
 		bool        HasEdgeOnBase();
 		bool        HasEdgeOnSurface();
+		IssmDouble  IceMass(void);
 		IssmDouble  IceVolume(void);
 		IssmDouble  IceVolumeAboveFloatation(void);
