Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 17430)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 17431)
@@ -19,5 +19,7 @@
 	/*Fetch data needed: */
 	bool   isSIA;
+	bool   islevelset;
 	iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
+	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
 
 	/*Now, is the flag SIA on? otherwise, do nothing: */
@@ -38,4 +40,9 @@
 	iomodel->FetchDataToInput(elements,ThicknessEnum);
 	iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
+	if(islevelset){
+		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
+		if(iomodel->meshtype!=Mesh2DhorizontalEnum)
+			iomodel->FetchDataToInput(elements,MeshVertexonbedEnum); // required for updating active nodes
+	}
 
 	/*Free data: */
@@ -150,4 +157,8 @@
 }/*}}}*/
 ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	int meshtype;
 	element->FindParam(&meshtype,MeshTypeEnum);
@@ -162,4 +173,7 @@
 ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix2D(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	/*Intermediaries */
 	IssmDouble connectivity;
@@ -180,4 +194,7 @@
 }/*}}}*/
 ElementMatrix* StressbalanceSIAAnalysis::CreateKMatrix3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries */
@@ -244,4 +261,7 @@
 ElementVector* StressbalanceSIAAnalysis::CreatePVector(Element* element){/*{{{*/
 
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
+
 	int meshtype;
 	element->FindParam(&meshtype,MeshTypeEnum);
@@ -255,4 +275,7 @@
 }/*}}}*/
 ElementVector* StressbalanceSIAAnalysis::CreatePVector2D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries */
@@ -326,4 +349,7 @@
 }/*}}}*/
 ElementVector* StressbalanceSIAAnalysis::CreatePVector3D(Element* element){/*{{{*/
+
+	/* Check if ice in element */
+	if(!element->IsIceInElement()) return NULL;
 
 	/*Intermediaries */
@@ -550,5 +576,11 @@
 }/*}}}*/
 void StressbalanceSIAAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	/*Default, do nothing*/
+
+	bool islevelset;
+	femmodel->parameters->FindParam(&islevelset,TransientIslevelsetEnum);
+	if(islevelset){
+		_printf0_("   Updating active and non-active nodes for StressbalanceSIAAnalysis \n");
+		SetActiveNodesLSMx(femmodel);
+	}
 	return;
 }/*}}}*/
