Index: /issm/trunk-jpl/externalpackages/vim/addons/vimrc
===================================================================
--- /issm/trunk-jpl/externalpackages/vim/addons/vimrc	(revision 17229)
+++ /issm/trunk-jpl/externalpackages/vim/addons/vimrc	(revision 17230)
@@ -100,13 +100,9 @@
 
 " save & "make" the current file in all modes
-map <F6> :w <Enter> :make <Enter><Enter>
-map! <F6>  <ESC> :w <Enter> :make <Enter><Enter>
+map <F8> :w <Enter> :make <Enter><Enter>
+map! <F8>  <ESC> :w <Enter> :make <Enter><Enter>
 " make update: nice for longer documents
-map <F5> :w <Enter> :make update <Enter><Enter>
-map! <F5> <ESC> :w <Enter> :make update <Enter><Enter>
-
-" switch between tabs
-nmap <F7> :tabp <CR>
-nmap <F8> :tabn <CR>
+map <F7> :w <Enter> :make update <Enter><Enter>
+map! <F7> <ESC> :w <Enter> :make update <Enter><Enter>
 
 
@@ -145,13 +141,4 @@
   autocmd BufWritePost   *.sh         !chmod +x %
 
-	" Commenting blocks of code.
-	autocmd FileType c,cpp,java,scala let b:comment_leader = '// '
-	autocmd FileType sh,ruby,python   let b:comment_leader = '# '
-	autocmd FileType conf,fstab       let b:comment_leader = '# '
-	autocmd FileType tex              let b:comment_leader = '% '
-	autocmd FileType mail             let b:comment_leader = '> '
-	autocmd FileType vim              let b:comment_leader = '" '
-	noremap <silent> ,cc :<C-B>silent <C-E>s/^/<C-R>=escape(b:comment_leader,'\/')<CR>/<CR>:nohlsearch<CR>
-	noremap <silent> ,cu :<C-B>silent <C-E>s/^\V<C-R>=escape(b:comment_leader,'\/')<CR>//e<CR>:nohlsearch<CR>
 endif " has("autocmd")
 " ----------------------------------------------------------------------}}}
Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 17229)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 17230)
@@ -285,6 +285,4 @@
 					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h\
 					./modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp\
-					./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h\
-					./modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp\
 					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.h\
 					./modules/UpdateDynamicConstraintsx/UpdateDynamicConstraintsx.cpp\
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17230)
@@ -33,5 +33,5 @@
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
-	iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
+	
 }
 /*}}}*/
@@ -67,12 +67,19 @@
 	bool save_results;
 
+	/* extrapolate */
+	Analysis* analysis = new ExtrapolationAnalysis();
+	femmodel->parameters->SetParam(VxEnum,ExtrapolationVariableEnum);
+	analysis->Core(femmodel);
+	delete analysis;
+
 	/*activate formulation: */
 	femmodel->SetCurrentConfiguration(LevelsetAnalysisEnum);
 
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
 	if(VerboseSolution()) _printf0_("call computational core:\n");
 	solutionsequence_linear(femmodel);
 
-	/*recover parameters: */
-	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	if(save_results){
 		if(VerboseSolution()) _printf0_("   saving results\n");
@@ -321,56 +328,2 @@
 }/*}}}*/
 
-/* Update of constraints */
-// void LevelsetAnalysis::UpdateNoIceConstraints(FemModel* femmodel){/*{{{*/
-// 
-// 	IssmDouble* mask_ice = GetMaskOfIce(femmodel->elements, femmodel->nodes); 
-// 
-// 	for (int i=0;i<femmodel->nodes->Size();i++){
-// 		Node* node=dynamic_cast<Node*>(femmodel->nodes->GetObjectByOffset(i));
-// 		if(node->InAnalysis(LevelsetAnalysisEnum)){
-// 			if(mask_ice[node->Sid()]==1.){//FIXME: what should be done with actual spcs to ice model?
-// // 				node->DofInFSet(0); /*remove spc*/ 
-// 			}
-// 			else{
-// 				IssmDouble defval=0.;
-// 				node->ApplyConstraint(1,defval); /*apply spc*/ 
-// 			}
-// 		}
-// 	}
-// }/*}}}*/
-// IssmDouble* LevelsetAnalysis::GetMaskOfIce(Elements* elements, Nodes* nodes){/*{{{*/
-// 
-// 	int                 i;
-// 	IssmDouble*         mask_ice      = NULL;
-// 	Vector<IssmDouble>* vec_mask_ice  = NULL;
-// 	Element*            element       = NULL;
-// 
-// 	/*Initialize vector with number of vertices*/
-// 	IssmDouble numnodes=nodes->NumberOfNodes(LevelsetAnalysisEnum);
-// 	vec_mask_ice=new Vector<IssmDouble>(numnodes); //nodes at ice front that have ice at next time step
-// 	for(i=0;i<numnodes;i++)
-// 		vec_mask_ice[i]=0.;
-// 	/*Fill vector vertices that have no contact to ice: */
-// 	for(i=0;i<elements->Size();i++){
-// 		element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
-// 		SetMaskOfIceElement(vec_mask_ice, element);
-// 	}
-// 
-// 	/*Assemble vector and serialize */
-// 	vec_mask_ice->Assemble();
-// 	mask_ice=vec_mask_ice->ToMPISerial();
-// 	delete vec_mask_ice;
-// 	return mask_ice;
-// 
-// }/*}}}*/
-// void LevelsetAnalysis::SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element){/*{{{*/
-// 
-// 	/* Intermediaries */
-// 	int numnodes = element->GetNumberOfNodes();
-// 	
-// 	if(element->IsIceInElement()){
-// 		for(int i = 0;i<numnodes;i++){
-// 			vec_mask_ice->SetValue(element->nodes[i]->Sid(),1.,INS_VAL);
-// 		}
-// 	}
-// }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 17230)
@@ -32,8 +32,4 @@
 	void GetBprime(IssmDouble* Bprime,Element* element,IssmDouble* xyz_list,Gauss* gauss);
 
-	/* Updating constraints */
-// 	void UpdateNoIceConstraints(FemModel* femmodel);
-// 	IssmDouble* GetMaskOfIce(Elements* elements, Nodes* nodes);
-// 	void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element);
 };
 #endif
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17230)
@@ -189,6 +189,4 @@
 	iomodel->FetchDataToInput(elements,LoadingforceYEnum);
 	iomodel->FetchDataToInput(elements,DamageDEnum);
-	iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-
 
 	if(iomodel->meshtype==Mesh3DEnum){
@@ -1026,5 +1024,5 @@
 }/*}}}*/
 void StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
-	SetActiveNodesLSMx(femmodel->elements);
+	/*Default, do nothing*/
 	return;
 }/*}}}*/
@@ -1145,8 +1143,4 @@
 	delete Ke1;
 	delete Ke2;
-	
-	// FIXME: TESTING
-// 	_printf0_("\n element ID: " << element->Id() << ";\n");
-// 	Ke->Echo();
 	return Ke;
 }/*}}}*/
@@ -1271,7 +1265,4 @@
 		newviscosity=viscosity+viscosity_overshoot*(viscosity-oldviscosity);
 		D_scalar=2.*newviscosity*thickness*gauss->weight*Jdet;
-		
-// 		_printf0_("element, node, weight, Jdet: " << element->Id() << "; " << ig << "; " << gauss->weight << "; " << Jdet << "\n");
-
 		for(int i=0;i<3;i++) D[i*3+i]=D_scalar;
 
@@ -1324,8 +1315,4 @@
 	delete pe1;
 	delete pe2;
-
-// 	_printf0_("\n element ID: " << element->Id() << ";\n");
-// 	pe->Echo();
-
 	return pe;
 }/*}}}*/
@@ -1385,5 +1372,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsIcefront()) return NULL;
+	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
 
 	/*Intermediaries*/
@@ -1408,10 +1395,6 @@
 	IssmDouble gravity     = element->GetMaterialParameter(ConstantsGEnum);
 	element->GetVerticesCoordinates(&xyz_list);
-
-// 	element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
- 	element->GetIcefrontCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
-
+	element->ZeroLevelsetCoordinates(&xyz_list_front,xyz_list,MaskIceLevelsetEnum);
 	element->NormalSection(&normal[0],xyz_list_front);
-// 	element->GetNormalFromLSF(&normal[0]);
 
 	/*Start looping on Gaussian points*/
@@ -1802,5 +1785,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsIcefront()) return NULL;
+	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
 
 	/*Intermediaries*/
@@ -2225,5 +2208,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsIcefront()) return NULL;
+	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
 
 	/*Intermediaries*/
@@ -2991,5 +2974,5 @@
 
 	/*If no front, return NULL*/
-	if(!element->IsIcefront()) return NULL;
+	if(!element->IsZeroLevelset(MaskIceLevelsetEnum)) return NULL;
 
 	/*Intermediaries*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 17230)
@@ -220,5 +220,4 @@
 		virtual int    PressureInterpolation()=0;
 		virtual bool   IsZeroLevelset(int levelset_enum)=0;
-		virtual bool   IsIcefront(void)=0;
 		virtual void   ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum)=0;
 		virtual void   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17230)
@@ -114,5 +114,4 @@
 		int    PressureInterpolation();
 		bool   IsZeroLevelset(int levelset_enum);
-		bool   IsIcefront(void){_error_("not implemented yet");};
 		void   ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
 		void   GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 17230)
@@ -159,5 +159,4 @@
 		void        ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input){_error_("not implemented yet");};
 		bool        IsZeroLevelset(int levelset_enum){_error_("not implemented");};
-		bool		IsIcefront(void){_error_("not implemented yet");};
 		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented");};
 		void		GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17230)
@@ -909,28 +909,12 @@
 		}
 	}
-	_assert_(nrfrontnodes==2);
-	
-	/* arrange order of frontnodes such that they are oriented counterclockwise */
-	if((NUMVERTICES+indicesfront[0]-indicesfront[1])%NUMVERTICES!=2){
-		int index=indicesfront[0];
-		indicesfront[0]=indicesfront[1];
-		indicesfront[1]=index;
-	}
+
 	IssmDouble* xyz_front = xNew<IssmDouble>(3*nrfrontnodes);
 	/* Return nodes */
 	for(i=0;i<nrfrontnodes;i++){
 		for(dir=0;dir<3;dir++){
-			xyz_front[3*i+dir]=xyz_list[3*indicesfront[i]+dir];
-		}
-	}
-
-// 	for(i=0;i<nrfrontnodes;i++){
-// 		_printf0_("coords frontnode " << i << " :[");
-// 		for(dir=0;dir<3;dir++){
-// 			xyz_front[3*i+dir]=xyz_list[indicesfront[i]+dir];
-// 			_printf0_(xyz_front[3*i+dir] << "; ");
-// 		}
-// 		_printf0_("]\n");
-// 	}
+			xyz_front[3*i+dir]=xyz_list[indicesfront[i]+dir];
+		}
+	}
 
 	*pxyz_front=xyz_front;
@@ -938,5 +922,5 @@
 	xDelete<int>(indicesfront);
 }/*}}}*/
-void  Tria::GetNormalFromLSF(IssmDouble *normal){/*{{{*/
+void  Tria::GetNormalFromLSF(IssmDouble *pnormal){/*{{{*/
 
 	/* Intermediaries */
@@ -945,4 +929,5 @@
 	IssmDouble* xyz_list = NULL;
 	IssmDouble  dlevelset[dim], norm_dlevelset;
+	IssmDouble  normal[dim]={0.};
 
 	/*Retrieve all inputs and parameters*/
@@ -951,6 +936,4 @@
 	
 	counter=0;
-	for(i=0;i<dim;i++) normal[i]=0.;
-
 	Gauss* gauss = this->NewGauss(2);
 	for(int ig=gauss->begin();ig<gauss->end();ig++){
@@ -964,5 +947,7 @@
 	}
 	_assert_(counter>0);
-	for(i=0;i<dim;i++) normal[i]/=IssmDouble(counter);
+	for(i=0;i<dim;i++) normal[i]/counter;
+	
+	pnormal=&normal[0];
 
 	delete gauss;
@@ -1625,5 +1610,4 @@
 				name==MaskGroundediceLevelsetEnum ||
 				name==MaskIceLevelsetEnum ||
-				name==IceMaskNodeActivationEnum ||
 				name==SurfaceSlopeXEnum ||
 				name==SurfaceSlopeYEnum ||
@@ -2602,5 +2586,5 @@
 	GetInputListOnVertices(&ls[0],levelset_enum);
 
-	/* If levelset function changes sign, or is zero on at least two vertices, there is a zero level set here */
+	/*If the level set is awlays <0, there is no ice front here*/
 	iszerols= false;
 	if(IsIceInElement()){
@@ -2613,26 +2597,4 @@
 }
 /*}}}*/
-/*FUNCTION Tria::IsIcefront{{{*/
-bool Tria::IsIcefront(void){
-
-	bool isicefront;
-	int i,nrice;
-	IssmDouble ls[NUMVERTICES];
-
-	/*Retrieve all inputs and parameters*/
-	GetInputListOnVertices(&ls[0],MaskIceLevelsetEnum);
-
-	/* If only one vertex has ice, there is an ice front here */
-	isicefront= false;
-	if(IsIceInElement()){
-		nrice=0;	
-		for(i=0;i<NUMVERTICES;i++)
-			if(ls[i]<0.) nrice++;
-		if(nrice==1) isicefront= true;
-	}
-	return isicefront;
-}
-/*}}}*/
-
 
 #ifdef _HAVE_RESPONSES_
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 17230)
@@ -132,7 +132,6 @@
 		void        ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum);
 		void	    GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum);
-		void        GetNormalFromLSF(IssmDouble *normal);
+	    void        GetNormalFromLSF(IssmDouble *pnormal);
 		bool        IsZeroLevelset(int levelset_enum);
-		bool        IsIcefront(void);
 
 		#ifdef _HAVE_RESPONSES_
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 17230)
@@ -406,10 +406,7 @@
 	/*start module: */
 	if(VerboseModule()) _printf0_("   Updating constraints for time: " << time << "\n");
-	if(VerboseModule()) _printf0_("   and analysis: " << EnumToStringx(analysis_type) << "\n");
-	Analysis* analysis = EnumToAnalysis(analysis_type);
-	_assert_(analysis);
-// 	analysis->UpdateConstraints(this);
-	delete analysis;
-
+
+	// analysis->UpdateConstraints();
+	
 	/*Second, constraints might be time dependent: */
 	SpcNodesx(nodes,constraints,parameters,analysis_type); 
Index: /issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Inputs/PentaInput.cpp	(revision 17230)
@@ -86,36 +86,35 @@
 	/*output*/
 	TriaInput* outinput=NULL;
-
-	if(this->element_type==P0Enum){
-		outinput=new TriaInput(this->enum_type,&this->values[0],P0Enum);
-	}
-	else{
-		/*Assume P1 interpolation only for now*/
-		IssmDouble newvalues[3]; 
-
-		/*Create array of indices depending on location (0=base 1=surface)*/
-		int indices[3];
-		switch(location){
-			case 0:
-				indices[0] = 0;
-				indices[1] = 1;
-				indices[2] = 2;
-				break;
-			case 1:
-				indices[0] = 3;
-				indices[1] = 4;
-				indices[2] = 5;
-				break;
-			default:
-				_error_("case "<<location<<" not supported");
-		}
-
-		/*Create new input*/
-		for(int i=0;i<3;i++){
-			_assert_(indices[i]>=0 && indices[i]<6);
-			newvalues[i]=this->values[indices[i]];
-		}
-		outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
-	}
+	IssmDouble newvalues[3]; //Assume P1 interpolation only for now
+
+	/*Create arrow of indices depending on location (0=base 1=surface)*/
+	int indices[3];
+	switch(location){
+		case 0:
+			indices[0] = 0;
+			indices[1] = 1;
+			indices[2] = 2;
+			break;
+		case 1:
+			indices[0] = 3;
+			indices[1] = 4;
+			indices[2] = 5;
+			break;
+		default:
+			_error_("case "<<location<<" not supported");
+	}
+
+	/*Loop over the new indices*/
+	for(int i=0;i<3;i++){
+
+		/*Check index value*/
+		_assert_(indices[i]>=0 && indices[i]<6);
+
+		/*Assign value to new input*/
+		newvalues[i]=this->values[indices[i]];
+	}
+
+	/*Create new Tria input*/
+	outinput=new TriaInput(this->enum_type,&newvalues[0],P1Enum);
 
 	/*Assign output*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/classes/Inputs/TriaInput.cpp	(revision 17230)
@@ -100,19 +100,13 @@
 	/*output*/
 	SegInput* outinput=NULL;
-
-	if(this->element_type==P0Enum){
-		outinput=new SegInput(this->enum_type,&this->values[0],P0Enum);
-	}
-	else{
-		/*Assume P1 interpolation only for now*/
-		IssmDouble newvalues[2];
-
-		/*Create array of indices depending on location (0=base 1=surface)*/
-		newvalues[0]=this->values[index1];
-		newvalues[1]=this->values[index2];
-
-		/*Create new Seg input*/
-		outinput=new SegInput(this->enum_type,&newvalues[0],P1Enum);
-	}
+	IssmDouble newvalues[2]; //Assume P1 interpolation only for now
+
+	/*Create arrow of indices depending on location (0=base 1=surface)*/
+
+	newvalues[0]=this->values[index1];
+	newvalues[1]=this->values[index2];
+
+	/*Create new Seg input*/
+	outinput=new SegInput(this->enum_type,&newvalues[0],P1Enum);
 
 	/*Assign output*/
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17230)
@@ -162,21 +162,7 @@
 		if(islevelset){
 			if(VerboseSolution()) _printf0_("   computing movement of ice boundaries\n");
-
-			/* extrapolate */
-			Analysis* extanalysis = new ExtrapolationAnalysis();
-			int vars[2] = {VxEnum, VyEnum};
-			for(int iv=0; iv<2;iv++){
-				femmodel->parameters->SetParam(vars[iv],ExtrapolationVariableEnum);
-				extanalysis->Core(femmodel);
-			}
-			delete extanalysis;
-
-			LevelsetAnalysis* lsanalysis = new LevelsetAnalysis();
-			/* solve level-set equation */
-			lsanalysis->Core(femmodel);
-			delete lsanalysis;
-
-			/* update vertices included for next calculation */
-			GetMaskOfIceVerticesLSMx(femmodel);
+			analysis = new LevelsetAnalysis();
+			analysis->Core(femmodel);
+			delete analysis;
 		}
 
Index: /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 17229)
+++ /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 17230)
@@ -119,17 +119,4 @@
 	//Kfs->AllocationInfo();
 
-	// TESTING
-	IssmDouble* Kffd=Kff->ToSerial();
-	Kff->GetSize(&M,&N);
-	_printf0_(" (Kff stiffness matrix size: "<<M<<" x "<<N<<")\n");
-// 	printarray(Kffd,M,N);
-   for(int row=0;row<M;row++){
-		IssmDouble value = Kffd[row*N + row];
-		if(fabs(value)<1.)
-		 _printf0_("Kff(" << row << "," << row << ")=" << value << "\n");
-	 }
-	delete Kffd;
-	
-
 	/*cleanu up and assign output pointers: */
 	delete analysis;
Index: /issm/trunk-jpl/src/c/modules/modules.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/modules.h	(revision 17229)
+++ /issm/trunk-jpl/src/c/modules/modules.h	(revision 17230)
@@ -31,5 +31,4 @@
 #include "./GetVectorFromControlInputsx/GetVectorFromControlInputsx.h"
 #include "./GiaDeflectionCorex/GiaDeflectionCorex.h"
-#include "./SetActiveNodesLSMx/SetActiveNodesLSMx.h"
 #include "./SetControlInputsFromVectorx/SetControlInputsFromVectorx.h"
 #include "./Gradjx/Gradjx.h"
Index: /issm/trunk-jpl/src/m/dev/devpath.py
===================================================================
--- /issm/trunk-jpl/src/m/dev/devpath.py	(revision 17229)
+++ /issm/trunk-jpl/src/m/dev/devpath.py	(revision 17230)
@@ -25,9 +25,9 @@
 from plotmodel import plotmodel
 
-c = get_ipython().config
-c.InteractiveShellApp.exec_lines = []
-c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
-c.InteractiveShellApp.exec_lines.append('%autoreload 2')
-c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
+#c = get_ipython().config
+#c.InteractiveShellApp.exec_lines = []
+#c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
+#c.InteractiveShellApp.exec_lines.append('%autoreload 2')
+#c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in startup.py to improve performance." ')
 
 print("\n  ISSM development path correctly loaded\n\n")
Index: /issm/trunk-jpl/src/m/plot/processmesh.py
===================================================================
--- /issm/trunk-jpl/src/m/plot/processmesh.py	(revision 17229)
+++ /issm/trunk-jpl/src/m/plot/processmesh.py	(revision 17230)
@@ -14,6 +14,6 @@
 	if md.mesh.numberofvertices==0:
 		raise ValueError('processmesh error: mesh is empty')
-# 	if md.mesh.numberofvertices==md.mesh.numberofelements:
-# 		raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
+	if md.mesh.numberofvertices==md.mesh.numberofelements:
+		raise ValueError('processmesh error: the number of elements is the same as the number of nodes')
 
 	if len(data)==0 or not isinstance(data,dict):
Index: /issm/trunk-jpl/test/NightlyRun/test336.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test336.py	(revision 17229)
+++ /issm/trunk-jpl/test/NightlyRun/test336.py	(revision 17230)
@@ -8,5 +8,5 @@
 from MatlabFuncs import *
 
-md=triangle(model(),'../Exp/Square.exp',10000.)
+md=triangle(model(),'../Exp/Square.exp',150000.)
 md=setmask(md,'','')
 md=parameterize(md,'../Par/SquareSheetConstrained.py') 
@@ -20,5 +20,5 @@
 md.transient.isgroundingline=False
 md.transient.isgia=False
-md.transient.islevelset=False
+md.transient.islevelset=True
 
 # init levelset function
@@ -27,28 +27,9 @@
 xmin=min(md.mesh.x)
 xmax=max(md.mesh.x)
-xmed=(xmax+xmin)/2.
-ymed=(ymax+ymin)/2.
-md.mask.ice_levelset=numpy.sqrt(numpy.power(md.mesh.x-xmed,2.)+numpy.power(md.mesh.y-ymed,2.)) - (xmax-xmin)/3.
-
-# set spcs
-mask=1.*numpy.ones((md.mesh.numberofvertices,1))
-nrverts=md.mesh.elements.shape[1]
-for i in range(0,md.mesh.numberofelements):
-	elt=numpy.copy(md.mesh.elements[i])
-	elt-=1
-	isiceinelement=False
-	for iv in range(0,nrverts):
-		if(md.mask.ice_levelset[elt[iv]]<=0.):
-			isiceinelement=True
-	if(isiceinelement):
-		for iv in range(0,nrverts):
-			mask[elt[iv]]=2.
-
-v=0.
-for i in range(0,md.mesh.numberofvertices):
-	if(mask[i]==1.):
-		md.stressbalance.spcvx[i]=v
-		md.stressbalance.spcvy[i]=v
-		md.stressbalance.spcvz[i]=v
+xmed=(xmax+xmin)/2
+ymed=(ymax+ymin)/2
+distx=numpy.absolute(md.mesh.x.reshape(-1,1)-xmed)
+disty=numpy.absolute(md.mesh.y.reshape(-1,1)-ymed)
+md.mask.ice_levelset=numpy.maximum(distx,disty)-1.e5
 
 md=solve(md,TransientSolutionEnum())
@@ -56,5 +37,5 @@
 #Fields and tolerances to track changes
 field_names     =['Vx','Vy','Vel','Pressure','MaskIceLevelset']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]#,1e-13,1e-13]
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -62,9 +43,9 @@
 	md.results.TransientSolution[0].Vel,\
 	md.results.TransientSolution[0].Pressure,\
-# 	md.results.TransientSolution[0].MaskIceLevelset,\
+	md.results.TransientSolution[0].MaskIceLevelset,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
 	md.results.TransientSolution[1].Vel,\
 	md.results.TransientSolution[1].Pressure,\
-# 	md.results.TransientSolution[1].MaskIceLevelset,\
+	md.results.TransientSolution[1].MaskIceLevelset,\
 	]
