Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20133)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20134)
@@ -58,10 +58,9 @@
 
 	/*First things first, store the communicator, and set it as a global variable: */
-	this->comm=incomm;
-	this->SetStaticComm();
+	IssmComm::SetComm(incomm);
 
 	/*Now, initialize PETSC: */
 	#ifdef _HAVE_PETSC_
-	PETSC_COMM_WORLD=this->comm;
+	PETSC_COMM_WORLD=incomm;
 	ierr=PetscInitialize(&argc,&argv,(char*)0,"");  if(ierr) _error_("Could not initialize Petsc");
 	#endif
@@ -79,4 +78,6 @@
 	profiler->Tag(FinishInit);
 
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new IntParam(FemModelCommEnum,incomm));
 
 	/*Free resources */
@@ -97,9 +98,11 @@
 	/*Store the communicator, but do not set it as a global variable, as this has already 
 	 * been done by the FemModel that called this copy constructor: */
-	this->comm=incomm;
-	this->SetStaticComm();
+	IssmComm::SetComm(incomm);
 
 	/*Create femmodel from input files, with trace activated: */
 	this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,restartfilename, solution_type,traceon,X);
+	
+	/*Save communicator in the parameters dataset: */
+	this->parameters->AddObject(new IntParam(FemModelCommEnum,incomm));
 
 }
@@ -266,12 +269,4 @@
 }
 /*}}}*/
-void FemModel::SetStaticComm(void){/*{{{*/
-
-	/*This routine sets the global communicator variable hidden inside the IssmComm 
-	 *class: */
-	IssmComm::SetComm(this->comm);
-
-}
-/*}}}*/
 void FemModel::SetCurrentConfiguration(int configuration_type,int analysis_type){/*{{{*/
 
@@ -381,5 +376,4 @@
 	output=new FemModel(*this); //Use default copy constructor.
 
-	output->comm = this->comm;
 	output->nummodels = this->nummodels;
 	output->solution_type = this->solution_type;
@@ -547,5 +541,5 @@
 
 		case TransientSolutionEnum:{
-			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage,issmb;
+			bool isSIA,isFS,isthermal,isenthalpy,ismasstransport,isgroundingline,isstressbalance,islevelset,ishydrology,isdamage,issmb,isslr;
 			iomodel->Constant(&isSIA,FlowequationIsSIAEnum);
 			iomodel->Constant(&isFS,FlowequationIsFSEnum);
@@ -559,4 +553,5 @@
 			iomodel->Constant(&ishydrology,TransientIshydrologyEnum);
 			iomodel->Constant(&issmb,TransientIssmbEnum);
+			iomodel->Constant(&isslr,TransientIsslrEnum);
 			if(isstressbalance){
 				int  fe_FS;
@@ -599,4 +594,7 @@
 			if(isdamage){
 				analyses_temp[numanalyses++]=DamageEvolutionAnalysisEnum;
+			}
+			if(isslr){
+				analyses_temp[numanalyses++]=SealevelriseAnalysisEnum;
 			}
 
@@ -2552,5 +2550,5 @@
 	/*First things first, store the communicator, and set it as a global variable: */
 	this->comm=incomm;
-	this->SetStaticComm();
+	IssmComm::SetComm(this->comm);
 
 	/*Start profiler: */
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20133)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20134)
@@ -43,5 +43,4 @@
 		Parameters  *parameters;           //one set of parameters, independent of the analysis_type
 		Results     *results;              //results that cannot be fit into the elements 
-		ISSM_MPI_Comm        comm;                  //communicator for this particular model
 
 		/*constructors, destructors: */
@@ -57,5 +56,4 @@
 		void CleanUp(void);
 		void Solve(void);
-		void SetStaticComm();
 		void SetCurrentConfiguration(int configuration_type);
 		void SetCurrentConfiguration(int configuration_type,int analysis_type);
Index: /issm/trunk-jpl/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 20133)
+++ /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 20134)
@@ -59,5 +59,5 @@
 		_assert_(sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]) >1.e-4);
 
-		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
 			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum)); 
@@ -97,5 +97,5 @@
 				analysis_enum==LevelsetAnalysisEnum
 				){
-		if(iomodel->domaintype!=Domain2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum & iomodel->domaintype!=Domain3DsurfaceEnum & iomodel->domaintype!=Domain3DsurfaceEnum){
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum));
