Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 20453)
@@ -65,8 +65,4 @@
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,PressureEnum);
-
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
 
 }/*}}}*/
@@ -669,11 +665,5 @@
 }/*}}}*/
 void           DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
+	SetActiveNodesLSMx(femmodel);
 }/*}}}*/
 
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 20453)
@@ -160,5 +160,4 @@
 	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
 	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
 	}
@@ -1585,10 +1584,4 @@
 }/*}}}*/
 void           EnthalpyAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 20453)
@@ -167,11 +167,4 @@
 		iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
 	}
-
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
-
-	
-
 }/*}}}*/
 void MasstransportAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
@@ -743,11 +736,5 @@
 }/*}}}*/
 void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
+	SetActiveNodesLSMx(femmodel);
 }/*}}}*/
 
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 20453)
@@ -781,7 +781,4 @@
 		iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum,0.);
 	}
-	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-	}
 	/*LATH parameters*/
 	iomodel->Constant(&fe_FS,FlowequationFeFSEnum);
@@ -1148,11 +1145,5 @@
 }/*}}}*/
 void           StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
+	SetActiveNodesLSMx(femmodel);
 }/*}}}*/
 
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 20453)
@@ -167,5 +167,4 @@
 	iomodel->FetchDataToInput(elements,MaskGroundediceLevelsetEnum);
 	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
 		if(iomodel->domaintype!=Domain2DhorizontalEnum)
 			iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
@@ -637,10 +636,4 @@
 }/*}}}*/
 void           StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 20453)
@@ -117,5 +117,4 @@
 	InputUpdateFromConstantx(elements,0.,VzMeshEnum);
 	if(islevelset){
-		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
 	}
@@ -798,10 +797,4 @@
 }/*}}}*/
 void           ThermalAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-
-	bool islevelset;
-	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
-	if(islevelset){
-		SetActiveNodesLSMx(femmodel);
-	}
-	return;
-}/*}}}*/
+	SetActiveNodesLSMx(femmodel);
+}/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20452)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20453)
@@ -183,4 +183,5 @@
 	ModelProcessorx(&this->elements,&this->nodes,&this->vertices,&this->materials,&this->constraints,&this->loads,&this->parameters,iomodel,toolkitsoptionsfid,rootpath,this->solution_type,this->nummodels,this->analysis_type_list);
 
+
 	/*do the post-processing of the datasets to get an FemModel that can actually run analyses: */
 	for(i=0;i<nummodels;i++){
@@ -190,7 +191,13 @@
 		this->SetCurrentConfiguration(analysis_type);
 
+		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
+		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
+
 		if(i==0){
 			if(VerboseMProcessor()) _printf0_("      creating vertex PIDs\n");
-			VerticesDofx(vertices,parameters); //only call once, we only have one set of vertices
+			VerticesDofx(vertices,parameters); 
+
+			if(VerboseMProcessor()) _printf0_("      detecting active vertices\n");
+			GetMaskOfIceVerticesLSMx(this);
 		}
 
@@ -200,7 +207,4 @@
 		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
 		NodesDofx(nodes,parameters,analysis_type);
-
-		if(VerboseMProcessor()) _printf0_("      configuring element and loads\n");
-		ConfigureObjectsx(elements, loads, nodes, vertices, materials,parameters);
 	}
 
Index: /issm/trunk-jpl/src/m/classes/mask.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/mask.js	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/mask.js	(revision 20453)
@@ -54,24 +54,4 @@
 			WriteData(fid,'object',this,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',this,'fieldname','ice_levelset','format','DoubleMat','mattype',1);
-
-			// get mask of vertices of elements with ice
-			var isice= NewArrayFill(md.mesh.numberofvertices,0);
-			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
-			
-			var vlist = NewArrayFill(md.mesh.numberofvertices,0);
-			var pos=[];
-			for(var i=0;i<md.mesh.numberofelements;i++){
-				var sum=0;
-				for(var j=0;j<md.mesh.elements[0].length;j++){
-					sum+=isice[md.mesh.elements[i][j]-1];
-				}
-				if(sum>0)pos.push(i);
-			}
-			for(var i=0;i<pos.length;i++){
-				for(var j=0;j<md.mesh.elements[0].length;j++){
-					vlist[md.mesh.elements[pos[i]][j]-1]=1;
-				}
-			}
-			WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
 		}//}}}
 		this.fix=function() { //{{{
Index: /issm/trunk-jpl/src/m/classes/mask.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mask.m	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/mask.m	(revision 20453)
@@ -61,21 +61,5 @@
 		function marshall(self,md,fid) % {{{
 			WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
-
-			% get mask of vertices of elements with ice
-			if size(md.mask.ice_levelset,1)==md.mesh.numberofvertices,
-				isice=md.mask.ice_levelset<=0.;
-				vlist = zeros(md.mesh.numberofvertices,1);
-				pos=find(sum(isice(md.mesh.elements),2)>0);
-				vlist(md.mesh.elements(pos,:))=1;
-				WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
-			else
-				isice=md.mask.ice_levelset(1:end-1,1)<=0.;
-				vlist = zeros(md.mesh.numberofvertices,1);
-				pos=find(sum(isice(md.mesh.elements),2)>0);
-				vlist(md.mesh.elements(pos,:))=1;
-				WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
-			end
-
+			WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1,'NaN',1);
 		end % }}}
 		function savemodeljs(self,fid,modelname) % {{{
Index: /issm/trunk-jpl/src/m/classes/mask.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mask.py	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/mask.py	(revision 20453)
@@ -54,10 +54,3 @@
 		WriteData(fid,'object',self,'fieldname','groundedice_levelset','format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'fieldname','ice_levelset','format','DoubleMat','mattype',1)
-
-		# get mask of vertices of elements with ice
-		isice=numpy.array(md.mask.ice_levelset<0.,int)
-		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
-		pos=numpy.nonzero(numpy.sum(isice[md.mesh.elements-1],axis=1))[0]
-		vlist[md.mesh.elements[pos,:]-1]=1
-		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/maskpsl.js
===================================================================
--- /issm/trunk-jpl/src/m/classes/maskpsl.js	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/maskpsl.js	(revision 20453)
@@ -63,24 +63,4 @@
 			WriteData(fid,'object',this,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',this,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
-
-			// get mask of vertices of elements with ice
-			var isice= NewArrayFill(md.mesh.numberofvertices,0);
-			for(var i=0;i<md.mesh.numberofvertices;i++)if(md.mask.ice_levelset[i]<=0)isice[i]=1;
-			
-			var vlist = NewArrayFill(md.mesh.numberofvertices,0);
-			var pos=[];
-			for(var i=0;i<md.mesh.numberofelements;i++){
-				var sum=0;
-				for(var j=0;j<md.mesh.elements[0].length;j++){
-					sum+=isice[md.mesh.elements[i][j]-1];
-				}
-				if(sum>0)pos.push(i);
-			}
-			for(var i=0;i<pos.length;i++){
-				for(var j=0;j<md.mesh.elements[0].length;j++){
-					vlist[md.mesh.elements[pos[i]][j]-1]=1;
-				}
-			}
-			WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
 		}//}}}
 		this.fix=function() { //{{{
Index: /issm/trunk-jpl/src/m/classes/maskpsl.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/maskpsl.m	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/maskpsl.m	(revision 20453)
@@ -72,12 +72,4 @@
 			WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1);
 			WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1);
-
-			% get mask of vertices of elements with ice
-			isice=md.mask.ice_levelset<=0.;
-			vlist = zeros(md.mesh.numberofvertices,1);
-			pos=find(sum(isice(md.mesh.elements),2)>0);
-			vlist(md.mesh.elements(pos,:))=1;
-			WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1);
-
 		end % }}}
 		function savemodeljs(self,fid,modelname) % {{{
Index: /issm/trunk-jpl/src/m/classes/maskpsl.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/maskpsl.py	(revision 20452)
+++ /issm/trunk-jpl/src/m/classes/maskpsl.py	(revision 20453)
@@ -84,14 +84,4 @@
 		WriteData(fid,'object',self,'class','mask','fieldname','ocean_levelset','format','DoubleMat','mattype',1)
 		WriteData(fid,'object',self,'class','mask','fieldname','land_levelset','format','DoubleMat','mattype',1)
-
-		# get mask of vertices of elements with ice
-		isice=md.mask.ice_levelset<=0.
-		vlist = numpy.zeros((md.mesh.numberofvertices,1), dtype=int)
-		
-		elements=md.mesh.elements-1; elements=elements.astype(numpy.int32, copy=False);
-		pos=numpy.nonzero(numpy.sum(isice[elements],axis=1))[0]
-		vlist[elements[pos,:]-1]=1
-		WriteData(fid,'data',vlist,'enum',IceMaskNodeActivationEnum(),'format','DoubleMat','mattype',1)
-
 	# }}}
 	def savemodeljs(self,fid,modelname): # {{{
