Index: /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17261)
@@ -49,19 +49,13 @@
 	/* Intermediaries */
 	bool save_results;
+	int extvar_enum; 
+   femmodel->parameters->FindParam(&extvar_enum, ExtrapolationVariableEnum);
+
 	/*activate formulation: */
 	femmodel->SetCurrentConfiguration(ExtrapolationAnalysisEnum);
 
-	if(VerboseSolution()) _printf0_("extrapolation: call computational core:\n");
+	if(VerboseSolution()) _printf0_("extrapolation of " << EnumToStringx(extvar_enum) << ": call computational core:\n");
 	solutionsequence_linear(femmodel);
 
-	/*recover parameters: */
-	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
-	if(save_results){
-		if(VerboseSolution()) _printf0_("   Warning: Adding extrapolated variable to results\n");
-		
-		int outputs; 
-		femmodel->parameters->FindParam(&outputs, ExtrapolationVariableEnum);
-		femmodel->RequestedOutputsx(&femmodel->results,&outputs,1);
-	}
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17261)
@@ -66,10 +66,9 @@
 	/*parameters: */
 	bool save_results;
+	
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 
 	/*activate formulation: */
 	femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
-
-	/*recover parameters: */
-	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 
 	if(VerboseSolution()) _printf0_("call computational core:\n");
@@ -199,4 +198,6 @@
 	xDelete<IssmDouble>(Bprime);
 	delete gauss;
+
+// 	Ke->Echo();
 	return Ke;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 17261)
@@ -231,4 +231,7 @@
 ElementMatrix* MasstransportAnalysis::CreateKMatrix(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	if(!element->IsOnBed()) return NULL;
 	Element* basalelement = element->SpawnBasalElement();
@@ -252,4 +255,7 @@
 }/*}}}*/
 ElementMatrix* MasstransportAnalysis::CreateKMatrixCG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries */
@@ -365,4 +371,7 @@
 ElementMatrix* MasstransportAnalysis::CreateKMatrixDG(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	/*Intermediaries */
 	int        meshtype;
@@ -437,4 +446,7 @@
 }/*}}}*/
 ElementVector* MasstransportAnalysis::CreatePVector(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	if(!element->IsOnBed()) return NULL;
@@ -460,4 +472,7 @@
 ElementVector* MasstransportAnalysis::CreatePVectorCG(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	/*Intermediaries */
 	IssmDouble  Jdet,dt;
@@ -505,4 +520,7 @@
 }/*}}}*/
 ElementVector* MasstransportAnalysis::CreatePVectorDG(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries */
@@ -693,5 +711,6 @@
 }/*}}}*/
 void MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
+//	_printf0_("   Updating active and non-active nodes for MasstransportAnalysis \n");
+//	SetActiveNodesLSMx(femmodel->elements);
 	return;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17261)
@@ -1045,5 +1045,5 @@
 	/*Default, do nothing*/
 	_printf0_("   Updating active and non-active nodes for StressbalanceAnalysis \n");
-	//SetActiveNodesLSMx(femmodel->elements);
+//	SetActiveNodesLSMx(femmodel->elements);
 	return;
 }/*}}}*/
@@ -1393,5 +1393,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
+	if(!element->IsIcefront()) return NULL;
 
 	/*Intermediaries*/
@@ -1416,5 +1416,6 @@
 	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
 	element->GetVerticesCoordinates(&xyz_list);
-	element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+// 	element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
+	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
 	element->NormalSection(&normal[0],xyz_list_front);
 
@@ -1806,5 +1807,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
+	if(!element->IsIcefront()) return NULL;
 
 	/*Intermediaries*/
@@ -2262,5 +2263,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
+	if(!element->IsIcefront()) return NULL;
 
 	/*Intermediaries*/
@@ -3079,5 +3080,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
+	if(!element->IsIcefront()) return NULL;
 
 	/*Intermediaries*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17261)
@@ -1976,4 +1976,5 @@
 				name==MaskGroundediceLevelsetEnum ||
 				name==MaskIceLevelsetEnum ||
+				name==IceMaskNodeActivationEnum ||
 				name==GradientEnum ||
 				name==OldGradientEnum  ||
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17261)
@@ -1621,4 +1621,5 @@
 				name==MaskGroundediceLevelsetEnum ||
 				name==MaskIceLevelsetEnum ||
+				name==IceMaskNodeActivationEnum ||
 				name==SurfaceSlopeXEnum ||
 				name==SurfaceSlopeYEnum ||
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17260)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17261)
@@ -122,12 +122,5 @@
 			stressbalance_core(femmodel);
 		}
-
-		if(ismasstransport){
-			if(VerboseSolution()) _printf0_("   computing new thickness\n");
-			masstransport_core(femmodel);
-			if(VerboseSolution()) _printf0_("   updating vertices positions\n");
-			femmodel->UpdateVertexPositionsx();
-		}
-
+		
 		if(isgroundingline){
 			if(VerboseSolution()) _printf0_("   computing new grounding line position\n");
@@ -153,6 +146,7 @@
 			/* extrapolate required variables */
 			Analysis* extanalysis = new ExtrapolationAnalysis();
-			int vars[2] = {VxEnum, VyEnum};
-			for(int iv=0;iv<2;iv++){
+			const int nvars=2;
+			int vars[nvars] = {VxEnum, VyEnum};
+			for(int iv=0;iv<nvars;iv++){
 				femmodel->parameters->SetParam(vars[iv],ExtrapolationVariableEnum); 
 				extanalysis->Core(femmodel);
@@ -166,4 +160,16 @@
 			/* update vertices included for next calculation */
 			GetMaskOfIceVerticesLSMx(femmodel);
+
+			/* add computation domain mask to outputs */
+			int outputs[1] = {IceMaskNodeActivationEnum};
+			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],1);
+
+		}
+
+		if(ismasstransport){
+			if(VerboseSolution()) _printf0_("   computing new thickness\n");
+			masstransport_core(femmodel);
+			if(VerboseSolution()) _printf0_("   updating vertices positions\n");
+			femmodel->UpdateVertexPositionsx();
 		}
 
