Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24358)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 24359)
@@ -2131,4 +2131,9 @@
 	Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input);
 	return (input->GetInputMin()<0.);
+}
+/*}}}*/
+bool       Element::IsIceOnlyInElement(){/*{{{*/
+	Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input);
+	return (input->GetInputMax()<0.);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24358)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 24359)
@@ -146,4 +146,5 @@
 		bool               IsOnSurface();
 		bool               IsIceInElement();
+		bool               IsIceOnlyInElement();
 		bool               IsLandInElement();
 		void               Ismip6FloatingiceMeltingRate();
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24358)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 24359)
@@ -3012,5 +3012,5 @@
 
 	if(!IsIceInElement())return 0.;
-	//if(!(this->inputs->Max(MaskIceLevelsetEnum)<0)) return 0;
+	//if(!IsIceOnlyInElement()) return 0;
 
 	int domaintype;
@@ -4114,5 +4114,5 @@
 
 	/*Add input*/
-	this->inputs->AddInput(new TriaInput(CalvingMeltingrateEnum,&meltrates[0],P1Enum));
+	this->AddInput2(CalvingMeltingrateEnum,&meltrates[0],P1Enum);
 
 	/*Cleanup and return*/
@@ -5592,5 +5592,5 @@
 void	Tria::SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){/*{{{*/
 	/*early return if we are not on an ice cap OR ocean:*/
-	if(!(this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()){
+	if(!IsIceOnlyInElement() && !IsWaterInElement()){
 		dI_list[0] = 0.0; // this is important!!!
 		dI_list[1] = 0.0; // this is important!!!
@@ -5663,5 +5663,5 @@
 		dI_list[2] = +4*PI*(rho_water*S*area)*pow(re,4)*(1-pow(sin(late),2))/eartharea;
 	}
-	else if(this->inputs->Max(MaskIceLevelsetEnum)<0){
+	else if(IsIceOnlyInElement()){
 		IssmDouble rho_ice, I;
 
@@ -5713,6 +5713,6 @@
 
 	/*early return if we are not on an ice cap:*/
-	if(!(this->inputs->Max(MaskIceLevelsetEnum)<=0)){
-		constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
+	if(!IsIceOnlyInElement()){
+		constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
 		*peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
 		return;
@@ -5720,6 +5720,7 @@
 
 	/*early return if we are fully floating: */
-	if (this->inputs->Max(MaskGroundediceLevelsetEnum)<=0){
-		constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
+	Input2* gr_input=this->GetInput2(MaskGroundediceLevelsetEnum); _assert_(gr_input);
+	if (gr_input->GetInputMax()<=0){
+		constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
 		*peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
 		return;
@@ -5727,10 +5728,10 @@
 
 	/*If we are here, we are on ice that is fully grounded or half-way to floating: */
-	if ((this->inputs->Min(MaskGroundediceLevelsetEnum))<0){
+	if ((gr_input->GetInputMin())<0){
 		notfullygrounded=true; //used later on.
 	}
 
 	/*Inform mask: */
-	constant=1; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
+	constant=1; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
 
 	/*recover material parameters: */
@@ -5916,8 +5917,8 @@
 	/*early return if we are not on the ocean:*/
 	if (!IsWaterInElement()){
-		constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));
+		constant=0; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum);
 		return;
 	}
-	constant=1; this->inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));
+	constant=1; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum);
 
 	/*recover computational flags: */
@@ -6068,8 +6069,9 @@
 
 	/*early return if we are not on the ocean or on an ice cap:*/
-	if(!(this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()) return;
+	if(!IsIceOnlyInElement() && !IsWaterInElement()) return;
 
 	/*early return if we are fully floating: */
-	if (this->inputs->Max(MaskGroundediceLevelsetEnum)<=0)return;
+	Input2* gr_input=this->GetInput2(MaskGroundediceLevelsetEnum); _assert_(gr_input);
+	if(gr_input->GetInputMax()<=0)return;
 
 	/*recover computational flags: */
@@ -6202,5 +6204,5 @@
 
 		/*Add all components to the pUp solution vectors:*/
-		if(this->inputs->Max(MaskIceLevelsetEnum)<0){
+		if(IsIceOnlyInElement()){
 			U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i];
 			if(horiz){
