Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 23587)
@@ -792,11 +792,7 @@
 void           DamageEvolutionAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
 
-	/*Intermediaries*/
-	int  configuration_type;
-
 	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	int fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
-	int flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
 	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
 
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23587)
@@ -1636,5 +1636,5 @@
 	IssmDouble*         serial_spc    = NULL;
 
-	spc=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes(EnthalpyAnalysisEnum));
+	spc=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
 	/*First create a vector to figure out what elements should be constrained*/
 	for(int i=0;i<femmodel->elements->Size();i++){
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 23587)
@@ -760,5 +760,5 @@
 
 		/*Vector of size number of nodes*/
-		vec_constraint_nodes=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes(LevelsetAnalysisEnum));
+		vec_constraint_nodes=new Vector<IssmDouble>(femmodel->nodes->NumberOfNodes());
 
 		for(int i=0;i<femmodel->elements->Size();i++){
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23587)
@@ -930,11 +930,7 @@
 void           MasstransportAnalysis::LumpedMassMatrix(Vector<IssmDouble>** pMlff,FemModel* femmodel){/*{{{*/
 
-	/*Intermediaries*/
-	int  configuration_type;
-
 	/*Initialize Lumped mass matrix (actually we just save its diagonal)*/
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	int fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
-	int flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
+	int fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
 	Vector<IssmDouble>* Mlff = new Vector<IssmDouble>(flocalsize,fsize);
 
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23587)
@@ -352,6 +352,6 @@
 		analysis_type=output->analysis_type_list[i];
 		output->SetCurrentConfiguration(analysis_type);
-		SpcNodesx(output->nodes_list[i],output->constraints_list[i],output->parameters,analysis_type);
-		NodesDofx(output->nodes_list[i],output->parameters,analysis_type);
+		SpcNodesx(output->nodes_list[i],output->constraints_list[i],output->parameters);
+		NodesDofx(output->nodes_list[i],output->parameters);
 		ConfigureObjectsx(output->elements,output->loads_list[i],output->nodes_list[i],output->vertices,output->materials,output->parameters);
 	}
@@ -445,8 +445,8 @@
 
 		if(VerboseMProcessor()) _printf0_("      resolving node constraints\n");
-		SpcNodesx(nodes,this->constraints,parameters,analysis_type_list[i]);
+		SpcNodesx(nodes,this->constraints,parameters);
 
 		if(VerboseMProcessor()) _printf0_("      creating nodal degrees of freedom\n");
-		NodesDofx(nodes,parameters,analysis_type_list[i]);
+		NodesDofx(nodes,parameters);
 	}
 
@@ -525,6 +525,6 @@
 			analysis_type=this->analysis_type_list[i];
 			SetCurrentConfiguration(analysis_type);
-			SpcNodesx(this->nodes_list[i],this->constraints_list[i],this->parameters,analysis_type);
-			NodesDofx(this->nodes_list[i],this->parameters,analysis_type);
+			SpcNodesx(this->nodes_list[i],this->constraints_list[i],this->parameters);
+			NodesDofx(this->nodes_list[i],this->parameters);
 			ConfigureObjectsx(this->elements,this->loads_list[i],this->nodes_list[i],this->vertices,this->materials,this->parameters);
 		}
@@ -1279,10 +1279,6 @@
 void FemModel::GetInputLocalMinMaxOnNodesx(IssmDouble** pmin,IssmDouble** pmax,IssmDouble* ug){/*{{{*/
 
-	/*Get vector sizes for current configuration*/
-	int configuration_type;
-	this->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	int numnodes = this->nodes->NumberOfNodes(configuration_type);
-
 	/*Initialize output vectors*/
+	int numnodes = this->nodes->NumberOfNodes();
 	IssmDouble* uLmin_local = xNew<IssmDouble>(numnodes);
 	IssmDouble* uLmax_local = xNew<IssmDouble>(numnodes);
@@ -2543,8 +2539,8 @@
 
 	/*Second, constraints might be time dependent: */
-	SpcNodesx(nodes,constraints,parameters,config_type);
+	SpcNodesx(nodes,constraints,parameters);
 
 	/*Now, update degrees of freedoms: */
-	NodesDofx(nodes,parameters,config_type);
+	NodesDofx(nodes,parameters);
 
 }
@@ -2725,6 +2721,6 @@
 
 		ConfigureObjectsx(new_elements,this->loads,new_nodes_list[i],new_vertices,new_materials,this->parameters);
-		SpcNodesx(new_nodes_list[i],new_constraints_list[i],this->parameters,analysis_type);
-		NodesDofx(new_nodes_list[i],this->parameters,analysis_type);
+		SpcNodesx(new_nodes_list[i],new_constraints_list[i],this->parameters);
+		NodesDofx(new_nodes_list[i],this->parameters);
 	}
 
@@ -4480,20 +4476,21 @@
 void FemModel::HydrologyEPLupdateDomainx(IssmDouble* pEplcount){ /*{{{*/
 
-	Vector<IssmDouble>* mask							= NULL;
-	Vector<IssmDouble>* recurence  				= NULL;
-	Vector<IssmDouble>* active						= NULL;
-	IssmDouble*         serial_mask				= NULL;
-	IssmDouble*         serial_rec  			= NULL;
-	IssmDouble*         serial_active			= NULL;
-	IssmDouble*         old_active        = NULL;
-	int*                eplzigzag_counter =	NULL;
+	Vector<IssmDouble> *mask = NULL;
+	Vector<IssmDouble> *recurence = NULL;
+	Vector<IssmDouble> *active = NULL;
+	IssmDouble         *serial_mask       = NULL;
+	IssmDouble         *serial_rec        = NULL;
+	IssmDouble         *serial_active     = NULL;
+	IssmDouble         *old_active        = NULL;
+	int                *eplzigzag_counter = NULL;
 	int                 eplflip_lock;
 
-	HydrologyDCEfficientAnalysis* effanalysis =  new HydrologyDCEfficientAnalysis();
-	HydrologyDCInefficientAnalysis* inefanalysis =  new HydrologyDCInefficientAnalysis();
+	HydrologyDCEfficientAnalysis   *effanalysis  = new HydrologyDCEfficientAnalysis();
+	HydrologyDCInefficientAnalysis *inefanalysis = new HydrologyDCInefficientAnalysis();
 
 	/*Step 1: update mask, the mask might be extended by residual and/or using downstream sediment head*/
-	mask=new Vector<IssmDouble>(this->nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
-	recurence=new Vector<IssmDouble>(this->nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	int numnodes = this->nodes->NumberOfNodes();
+	mask=new Vector<IssmDouble>(numnodes);
+	recurence=new Vector<IssmDouble>(numnodes);
 	this->parameters->FindParam(&eplzigzag_counter,NULL,EplZigZagCounterEnum);
 	this->parameters->FindParam(&eplflip_lock,HydrologydcEplflipLockEnum);
@@ -4504,4 +4501,5 @@
 		effanalysis->HydrologyEPLGetMask(mask,recurence,element);
 	}
+
 	/*check for changes and increment zigzag counter, change the mask if necessary*/
 	recurence->Assemble();
@@ -4530,5 +4528,5 @@
 	inefanalysis->ElementizeEplMask(this);
 	/*Step 2: update node activity. If one element is connected to mask=1, all nodes are active*/
-	active=new Vector<IssmDouble>(nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
 	for (int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
@@ -4566,5 +4564,4 @@
 	/*Update dof indexings*/
 	this->UpdateConstraintsx();
-
 }
 /*}}}*/
@@ -4583,5 +4580,5 @@
 	if(isthermal){
 		/*Step 1: update mask, the mask correspond to thawed nodes (that have a meltingrate)*/
-		mask=new Vector<IssmDouble>(this->nodes->NumberOfNodes(HydrologyDCInefficientAnalysisEnum));
+		mask=new Vector<IssmDouble>(this->nodes->NumberOfNodes());
 
 		for (int i=0;i<elements->Size();i++){
@@ -4604,5 +4601,5 @@
 
 	/*get node mask coherent with element mask*/
-	active=new Vector<IssmDouble>(nodes->NumberOfNodes(HydrologyDCInefficientAnalysisEnum));
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
 	for (int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
@@ -4651,5 +4648,5 @@
 	/*update node activity. If one element is connected to mask=1, all nodes are active*/
 	this->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
-	active=new Vector<IssmDouble>(nodes->NumberOfNodes(HydrologyDCEfficientAnalysisEnum));
+	active=new Vector<IssmDouble>(nodes->NumberOfNodes());
 	for (int i=0;i<elements->Size();i++){
 		Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
Index: /issm/trunk-jpl/src/c/classes/Loads/Loads.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Loads.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/classes/Loads/Loads.cpp	(revision 23587)
@@ -51,5 +51,5 @@
 }
 /*}}}*/
-bool Loads::IsPenalty(int analysis_type){/*{{{*/
+bool Loads::IsPenalty(){/*{{{*/
 
 	int ispenalty=0;
@@ -59,5 +59,4 @@
 	for(int i=0;i<this->Size();i++){
 		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
-		_assert_(load->InAnalysis(analysis_type)); 
 		if(load->IsPenalty()) ispenalty++;
 	}
@@ -73,16 +72,13 @@
 }
 /*}}}*/
-int  Loads::MaxNumNodes(int analysis_type){/*{{{*/
+int  Loads::MaxNumNodes(){/*{{{*/
 
 	int max=0;
 	int allmax;
-	int numnodes=0;
 
 	/*Now go through all loads, and get how many nodes they own, unless they are clone nodes: */
 	for(int i=0;i<this->Size();i++){
-
 		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
-		_assert_(load->InAnalysis(analysis_type));
-		numnodes=load->GetNumberOfNodes();
+		int numnodes=load->GetNumberOfNodes();
 		if(numnodes>max)max=numnodes;
 	}
@@ -90,7 +86,5 @@
 	/*Grab max of all cpus: */
 	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
-	max=allmax;
-
-	return max;
+	return allmax;
 }
 /*}}}*/
@@ -102,26 +96,4 @@
 	/*Get number of local loads*/
 	localloads=this->Size();
-
-	/*figure out total number of loads combining all the cpus (no clones here)*/
-	ISSM_MPI_Reduce(&localloads,&numberofloads,1,ISSM_MPI_INT,ISSM_MPI_SUM,0,IssmComm::GetComm() );
-	ISSM_MPI_Bcast(&numberofloads,1,ISSM_MPI_INT,0,IssmComm::GetComm());
-
-	return numberofloads;
-}
-/*}}}*/
-int  Loads::NumberOfLoads(int analysis_type){/*{{{*/
-
-	int localloads = 0;
-	int numberofloads;
-
-	/*Get number of local loads*/
-	for(int i=0;i<this->Size();i++){
-
-		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
-
-		/*Check that this load corresponds to our analysis currently being carried out: */
-		_assert_(load->InAnalysis(analysis_type));
-		localloads++;
-	}
 
 	/*figure out total number of loads combining all the cpus (no clones here)*/
@@ -152,32 +124,7 @@
 
 	for ( object=objects.begin() ; object < objects.end(); object++ ){
-
 		load=xDynamicCast<Load*>(*object);
 		load->SetCurrentConfiguration(elements,loads,nodes,vertices,materials,parameters);
-
 	}
-
 }
 /*}}}*/
-int  Loads::Size(void){/*{{{*/
-
-	return this->DataSet::Size();
-}
-/*}}}*/
-int  Loads::Size(int analysis_type){/*{{{*/
-
-	int localloads = 0;
-
-	/*Get number of local loads*/
-	for(int i=0;i<this->Size();i++){
-
-		Load* load=xDynamicCast<Load*>(this->GetObjectByOffset(i));
-
-		/*Check that this load corresponds to our analysis currently being carried out: */
-		_assert_(load->InAnalysis(analysis_type));
-		localloads++;
-	}
-
-	return localloads;
-}
-/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Loads/Loads.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Loads/Loads.h	(revision 23586)
+++ /issm/trunk-jpl/src/c/classes/Loads/Loads.h	(revision 23587)
@@ -24,13 +24,9 @@
 		/*numerics*/
 		void  Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		bool  IsPenalty(int analysis);
-		int   MaxNumNodes(int analysis);
-		int   NumberOfLoads(void);
-		int   NumberOfLoads(int analysis);
+		bool  IsPenalty();
+		int   MaxNumNodes();
+		int   NumberOfLoads();
 		void  ResetHooks();
 		void  SetCurrentConfiguration(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters);
-		int   Size(int analysis);
-		int   Size(void);
-
 };
 
Index: /issm/trunk-jpl/src/c/classes/Nodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/classes/Nodes.cpp	(revision 23587)
@@ -123,5 +123,5 @@
 }
 /*}}}*/
-void  Nodes::DistributeDofs(int analysis_type,int setenum){/*{{{*/
+void  Nodes::DistributeDofs(int setenum){/*{{{*/
 
 	int  i;
@@ -143,7 +143,4 @@
 	for(i=0;i<this->Size();i++){
 		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-
-		/*Check that this node corresponds to our analysis currently being carried out: */
-		_assert_(node->InAnalysis(analysis_type));
 		node->DistributeDofs(&dofcount,setenum);
 	}
@@ -165,5 +162,4 @@
 		/*Check that this node corresponds to our analysis currently being carried out: */
 		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
 		node->OffsetDofs(dofcount,setenum);
 	}
@@ -172,6 +168,6 @@
 	 * object that is not a clone, tell them to show their dofs, so that later on, they can get picked 
 	 * up by their clones: */
-	maxdofspernode=this->MaxNumDofs(analysis_type,setenum);
-	numnodes=this->NumberOfNodes(analysis_type);
+	maxdofspernode=this->MaxNumDofs(setenum);
+	numnodes=this->NumberOfNodes();
 	if(numnodes*maxdofspernode){
 		truedofs=   xNewZeroInit<int>(numnodes*maxdofspernode); //initialize to 0, so that we can pick up the max
@@ -181,5 +177,4 @@
 	for(i=0;i<this->Size();i++){
 		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
 		node->ShowTrueDofs(truedofs,maxdofspernode,setenum);//give maxdofspernode, column size, so that nodes can index into truedofs
 	}
@@ -190,5 +185,4 @@
 	for(i=0;i<this->Size();i++){
 		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
 		node->UpdateCloneDofs(alltruedofs,maxdofspernode,setenum);
 	}
@@ -197,5 +191,4 @@
 	for(i=0;i<this->Size();i++){
 		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
 		node->ReindexingDone();
 	}
@@ -207,25 +200,15 @@
 }
 /*}}}*/
-int   Nodes::MaximumId(){/*{{{*/
-
-	int max=-1;
-	int id,allmax;
-
-	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
-	if(!sorted){
-		for(int i=0;i<this->Size();i++){
-			Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-			id=node->Id();
-			if(id>max)max=id;
-		}
-	}
-	else{
-		if(this->Size()==0){
-			max = 0;
-		}
-		else{
-			Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(this->Size()-1));
-			max = node->Id();
-		}
+int   Nodes::MaxNumDofs(int setenum){/*{{{*/
+
+	int max=0;
+	int allmax;
+
+	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
+	for(int i=0;i<this->Size();i++){
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
+
+		int numdofs=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
+		if(numdofs>max) max=numdofs;
 	}
 
@@ -237,32 +220,10 @@
 }
 /*}}}*/
-int   Nodes::MaxNumDofs(int analysis_type,int setenum){/*{{{*/
-
-	int max=0;
-	int allmax,numdofs;
-
-	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
-	for(int i=0;i<this->Size();i++){
-
-		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
-
-		numdofs=node->GetNumberOfDofs(NoneApproximationEnum,setenum);
-		if(numdofs>max)max=numdofs;
-	}
-
-	/*Grab max of all cpus: */
-	ISSM_MPI_Allreduce((void*)&max,(void*)&allmax,1,ISSM_MPI_INT,ISSM_MPI_MAX,IssmComm::GetComm());
-	max=allmax;
-
-	return max;
-}
-/*}}}*/
-int   Nodes::NumberOfDofs(int analysis_type,int setenum){/*{{{*/
+int   Nodes::NumberOfDofs(int setenum){/*{{{*/
 
 	int   allnumdofs;
 
 	/*Get number of dofs on current cpu (excluding clones)*/
-	int numdofs=this->NumberOfDofsLocal(analysis_type,setenum);
+	int numdofs=this->NumberOfDofsLocal(setenum);
 
 	/*Gather from all cpus: */
@@ -271,5 +232,5 @@
 }
 /*}}}*/
-int   Nodes::NumberOfDofsLocal(int analysis_type,int setenum){/*{{{*/
+int   Nodes::NumberOfDofsLocal(int setenum){/*{{{*/
 
 	int   numdofs=0;
@@ -277,7 +238,5 @@
 	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
 	for(int i=0;i<this->Size();i++){
-
-		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
 
 		/*Ok, this object is a node, ask it to plug values into partition: */
@@ -311,53 +270,5 @@
 }
 /*}}}*/
-int   Nodes::NumberOfNodes(int analysis_type){/*{{{*/
-
-	int i;
-
-	int max_sid=-1;
-	int sid;
-	int node_max_sid;
-
-	for(i=0;i<this->Size();i++){
-
-		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
-
-		sid=node->Sid();
-		if(sid>max_sid)max_sid=sid;
-	}
-
-	ISSM_MPI_Reduce (&max_sid,&node_max_sid,1,ISSM_MPI_INT,ISSM_MPI_MAX,0,IssmComm::GetComm() );
-	ISSM_MPI_Bcast(&node_max_sid,1,ISSM_MPI_INT,0,IssmComm::GetComm());
-	max_sid=node_max_sid;
-
-	/*sid starts at 0*/
-	max_sid++;
-
-	/*return*/
-	return max_sid;
-}
-/*}}}*/
-void  Nodes::Ranks(int* ranks,int analysis_type){/*{{{*/
-
-	int my_rank;
-	int sid;
-
-	/*recover my_rank:*/
-	my_rank=IssmComm::GetRank();
-
-	/*Go through nodes, and for each object, report it cpu: */
-	for(int i=0;i<this->Size();i++){
-
-		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
-
-		/*Plug rank into ranks, according to sid: */
-		sid=node->Sid();
-		ranks[sid]=my_rank; 
-	}
-}
-/*}}}*/
-bool Nodes::RequiresDofReindexing(int analysis_type){/*{{{*/
+bool Nodes::RequiresDofReindexing(void){/*{{{*/
 
 	int flag = 0;
@@ -366,8 +277,5 @@
 	/*Now go through all nodes, and get how many dofs they own, unless they are clone nodes: */
 	for(int i=0;i<this->Size();i++){
-
-		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(analysis_type));
-
+		Node* node=xDynamicCast<Node*>(this->GetObjectByOffset(i));
 		if(node->RequiresDofReindexing()){
 			flag = 1;
Index: /issm/trunk-jpl/src/c/classes/Nodes.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Nodes.h	(revision 23586)
+++ /issm/trunk-jpl/src/c/classes/Nodes.h	(revision 23587)
@@ -33,14 +33,10 @@
 
 		/*numerics*/
-		void  DistributeDofs(int analysis_type,int SETENUM);
-		int   MaximumId(void);
-		int   MaxNumDofs(int analysis_type,int setenum);
-		int   NumberOfDofs(int analysis_type,int setenum);
-		int   NumberOfDofsLocal(int analysis_type,int setenum);
-		int   NumberOfNodes(int analysis_type);
+		void  DistributeDofs(int SETENUM);
+		int   MaxNumDofs(int setenum);
+		int   NumberOfDofs(int setenum);
+		int   NumberOfDofsLocal(int setenum);
 		int   NumberOfNodes(void);
-		void  Ranks(int* ranks,int analysis_type);
-		bool  RequiresDofReindexing(int analysis_type);
-
+		bool  RequiresDofReindexing(void);
 };
 
Index: /issm/trunk-jpl/src/c/cores/esa_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/esa_core.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/cores/esa_core.cpp	(revision 23587)
@@ -21,5 +21,4 @@
 	Vector<IssmDouble> *U_y    = NULL; 
 	bool save_results,isesa,iscoupler;
-	int configuration_type;
 	int domaintype;
 	int solution_type;
@@ -39,5 +38,4 @@
 	/*Recover some parameters: */
 	femmodel->parameters->FindParam(&domaintype,DomainTypeEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
@@ -50,5 +48,5 @@
 
 	/*Figure out size of g-set deflection vector and allocate solution vector: */
-	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
 
 	/*several cases here, depending on value of iscoupler and isesa: 
Index: /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp	(revision 23587)
@@ -82,5 +82,4 @@
 	bool iscoupler;
 	int  solution_type;
-	int  configuration_type;
 	int  modelid,earthid;
 	bool istransientmasstransport;
@@ -100,5 +99,4 @@
 	femmodel->parameters->FindParam(&frequency,SealevelriseGeodeticRunFrequencyEnum);
 	femmodel->parameters->FindParam(&count,SealevelriseRunCountEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&horiz,SealevelriseHorizEnum);
 	femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
@@ -301,5 +299,4 @@
 
 	/*parameters: */
-	int  configuration_type;
 	int  gsize;
 	bool spherical=true;
@@ -313,5 +310,4 @@
 
 	/*recover parameters:*/
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
 
@@ -320,5 +316,5 @@
 
 	/*Figure out size of g-set deflection vector and allocate solution vector: */
-	gsize = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	gsize = femmodel->nodes->NumberOfDofs(GsetEnum);
 
 	/*Initialize:*/
@@ -360,5 +356,4 @@
 	bool save_results;
 	int  gsize;
-	int  configuration_type;
 	bool spherical=true;
 	bool converged=true;
@@ -379,5 +374,4 @@
 	femmodel->parameters->FindParam(&eps_rel,SealevelriseReltolEnum);
 	femmodel->parameters->FindParam(&eps_abs,SealevelriseAbstolEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
 
@@ -389,5 +383,5 @@
 
 	/*Figure out size of g-set deflection vector and allocate solution vector: */
-	gsize = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	gsize = femmodel->nodes->NumberOfDofs(GsetEnum);
 
 	/*Initialize:*/
@@ -477,5 +471,4 @@
 
 	/*parameters: */
-	int configuration_type;
 	int  gsize;
 	bool spherical=true;
@@ -491,10 +484,9 @@
 
 	/*retrieve some parameters:*/
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&loop,SealevelriseLoopIncrementEnum);
 	femmodel->parameters->FindParam(&horiz,SealevelriseHorizEnum);
 
 	/*find size of vectors:*/
-	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	gsize      = femmodel->nodes->NumberOfDofs(GsetEnum);
 
 	/*intialize vectors:*/
Index: /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/AllocateSystemMatricesx/AllocateSystemMatricesx.cpp	(revision 23587)
@@ -12,5 +12,4 @@
 	int  fsize,ssize,flocalsize,slocalsize;
 	int  connectivity, numberofdofspernode;
-	int  configuration_type;
 	int  m,n,M,N;
 	int *d_nnz = NULL;
@@ -27,14 +26,13 @@
 
 	/*retrieve parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&connectivity,MeshAverageVertexConnectivityEnum);
 
 	/*retrieve node info*/
-	fsize      = femmodel->nodes->NumberOfDofs(configuration_type,FsetEnum);
-	ssize      = femmodel->nodes->NumberOfDofs(configuration_type,SsetEnum);
-	flocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,FsetEnum);
-	slocalsize = femmodel->nodes->NumberOfDofsLocal(configuration_type,SsetEnum);
-
-	numberofdofspernode=femmodel->nodes->MaxNumDofs(configuration_type,GsetEnum);
+	fsize      = femmodel->nodes->NumberOfDofs(FsetEnum);
+	ssize      = femmodel->nodes->NumberOfDofs(SsetEnum);
+	flocalsize = femmodel->nodes->NumberOfDofsLocal(FsetEnum);
+	slocalsize = femmodel->nodes->NumberOfDofsLocal(SsetEnum);
+
+	numberofdofspernode=femmodel->nodes->MaxNumDofs(GsetEnum);
 
 	/*if our matrices are coming from issm, we don't do dynamic allocation like Petsc 
@@ -93,5 +91,4 @@
 	/*Intermediary*/
 	int      i,j,k,index,offset,count;
-	int      configuration_type;
 	int      d_nz,o_nz;
 	Element *element            = NULL;
@@ -109,17 +106,14 @@
 	int *o_nnz = NULL;
 
-	/*retrive parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-
 	/*Get vector size and number of nodes*/
-	int numnodes            = femmodel->nodes->NumberOfNodes(configuration_type);
+	int numnodes            = femmodel->nodes->NumberOfNodes();
 	int localnumnodes       = femmodel->nodes->Size();
-	int numberofdofspernode = femmodel->nodes->MaxNumDofs(configuration_type,GsetEnum);
-	int M                   = femmodel->nodes->NumberOfDofs(configuration_type,set1enum);
-	int N                   = femmodel->nodes->NumberOfDofs(configuration_type,set2enum);
-	int m                   = femmodel->nodes->NumberOfDofsLocal(configuration_type,set1enum);
-	int n                   = femmodel->nodes->NumberOfDofsLocal(configuration_type,set2enum);
+	int numberofdofspernode = femmodel->nodes->MaxNumDofs(GsetEnum);
+	int M                   = femmodel->nodes->NumberOfDofs(set1enum);
+	int N                   = femmodel->nodes->NumberOfDofs(set2enum);
+	int m                   = femmodel->nodes->NumberOfDofsLocal(set1enum);
+	int n                   = femmodel->nodes->NumberOfDofsLocal(set2enum);
 	int numnodesperelement  = femmodel->elements->MaxNumNodes();
-	int numnodesperload     = femmodel->loads->MaxNumNodes(configuration_type);
+	int numnodesperload     = femmodel->loads->MaxNumNodes();
 
 	/*First, we are building chaining vectors so that we know what nodes are
@@ -153,10 +147,9 @@
 	/*Chain for loads*/
 	head_l         = xNew<int>(localnumnodes); for(i=0;i<localnumnodes;i++) head_l[i]=-1;
-	next_l         = xNew<int>(femmodel->loads->Size(configuration_type)*numnodesperload);
-	count2offset_l = xNew<int>(femmodel->loads->Size(configuration_type)*numnodesperload);
+	next_l         = xNew<int>(femmodel->loads->Size()*numnodesperload);
+	count2offset_l = xNew<int>(femmodel->loads->Size()*numnodesperload);
 	k=0;
 	for(i=0;i<femmodel->loads->Size();i++){
 		load = xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
-		_assert_(load->InAnalysis(configuration_type));
 		lidlist = xNew<int>(load->GetNumberOfNodes());
 		load->GetNodesLidList(lidlist);
@@ -191,5 +184,4 @@
 	for(i=0;i<femmodel->nodes->Size();i++){
 		Node* node=xDynamicCast<Node*>(femmodel->nodes->GetObjectByOffset(i));
-		_assert_(node->InAnalysis(configuration_type));
 
 		/*Reinitialize flags to false*/
@@ -257,5 +249,4 @@
 			Node* node=xDynamicCast<Node*>(femmodel->nodes->GetObjectByOffset(i));
 			if(!node->IsClone()){
-				_assert_(node->InAnalysis(configuration_type));
 				for(j=0;j<node->indexing.fsize;j++){
 					_assert_(count<m);
Index: /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.cpp	(revision 23587)
@@ -8,5 +8,5 @@
 #include "../../toolkits/toolkits.h"
 
-void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes,int configuration_type){
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes){
 
 	bool  oldalloc  = false;
@@ -20,6 +20,6 @@
 
 	/*figure out how many dofs we have: */
-	ssize=nodes->NumberOfDofs(configuration_type,SsetEnum);
-	slocalsize = nodes->NumberOfDofsLocal(configuration_type,SsetEnum);
+	ssize=nodes->NumberOfDofs(SsetEnum);
+	slocalsize = nodes->NumberOfDofsLocal(SsetEnum);
 
 	/*allocate:*/
@@ -33,5 +33,4 @@
 	for(int i=0;i<nodes->Size();i++){
 		Node* node=(Node*)nodes->GetObjectByOffset(i);
-		_assert_(node->InAnalysis(configuration_type));
 		node->CreateNodalConstraints(ys);
 	}
Index: /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/CreateNodalConstraintsx/CreateNodalConstraintsx.h	(revision 23587)
@@ -8,5 +8,5 @@
 
 /* local prototypes: */
-void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes,int configuration_type);
+void CreateNodalConstraintsx( Vector<IssmDouble>** pys, Nodes* nodes);
 
 #endif  /* _CREATENODALCONSTRAINTSX_H */
Index: /issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/GetSolutionFromInputsx/GetSolutionFromInputsx.cpp	(revision 23587)
@@ -10,6 +10,6 @@
 
 	/*intermediary: */
-	int      gsize;
-	int      configuration,analysisenum;
+	int gsize;
+	int analysisenum;
 
 	/*output: */
@@ -19,10 +19,9 @@
 
 	/*retrive parameters: */
-	femmodel->parameters->FindParam(&configuration,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
 
 	/*Get size of vector: */
-	gsize=femmodel->nodes->NumberOfDofs(configuration,GsetEnum);
-	if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 for configuration "<<EnumToStringx(configuration));
+	gsize=femmodel->nodes->NumberOfDofs(GsetEnum);
+	if(gsize==0) _error_("Allocating a Vec of size 0 as gsize=0 ");
 
 	/*Initialize solution: */
Index: /issm/trunk-jpl/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp	(revision 23587)
@@ -13,5 +13,4 @@
 
 	/*intermediary: */
-	int configuration_type;
 	int gsize,fsize,ssize;
 
@@ -20,8 +19,7 @@
 
 	/*first, get gsize, fsize and ssize: */
-	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	gsize=nodes->NumberOfDofs(configuration_type,GsetEnum);
-	fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
-	ssize=nodes->NumberOfDofs(configuration_type,SsetEnum);
+	gsize=nodes->NumberOfDofs(GsetEnum);
+	fsize=nodes->NumberOfDofs(FsetEnum);
+	ssize=nodes->NumberOfDofs(SsetEnum);
 
 	/*serialize uf and ys: those two vectors will be indexed by the nodes, who are the only ones 
Index: /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.cpp	(revision 23587)
@@ -8,11 +8,11 @@
 #include "../../toolkits/toolkits.h"
 
-void NodesDofx(Nodes* nodes, Parameters* parameters,int configuration_type){
+void NodesDofx(Nodes* nodes, Parameters* parameters){
 
 	/*Do we have any nodes for this analysis type? :*/
-	if(!nodes->NumberOfNodes(configuration_type)) return;
+	if(!nodes->NumberOfNodes()) return;
 
 	/*Do we really need to update dof indexings*/
-	if(!nodes->RequiresDofReindexing(configuration_type)) return;
+	if(!nodes->RequiresDofReindexing()) return;
 
 	if(VerboseModule()) _printf0_("   Renumbering degrees of freedom\n");
@@ -21,7 +21,7 @@
 	 *a  node has already been distributed dofs on one cpu, all other cpus with the same node cannot distribute it 
 	 *anymore. Use clone field to be sure of that: */
-	nodes->DistributeDofs(configuration_type,GsetEnum);
-	nodes->DistributeDofs(configuration_type,FsetEnum);
-	nodes->DistributeDofs(configuration_type,SsetEnum);
+	nodes->DistributeDofs(GsetEnum);
+	nodes->DistributeDofs(FsetEnum);
+	nodes->DistributeDofs(SsetEnum);
 
 }
Index: /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.h	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/NodesDofx/NodesDofx.h	(revision 23587)
@@ -9,5 +9,5 @@
 
 /* local prototypes: */
-void NodesDofx(Nodes* nodes, Parameters* parameters,int analysis_type);
+void NodesDofx(Nodes* nodes, Parameters* parameters);
 
 #endif  /* _NODESDOFX_H */
Index: /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp	(revision 23587)
@@ -12,6 +12,4 @@
 
 	/*variables: */
-	int         configuration_type;
-	int         fsize;
 	IssmDouble *ug_serial = NULL;
 	bool        oldalloc  = false;
@@ -20,10 +18,6 @@
 
 	/*first figure out fsize: */
-	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	fsize=nodes->NumberOfDofs(configuration_type,FsetEnum);
-
-	int    analysis_type;
-	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
-	int flocalsize = nodes->NumberOfDofsLocal(analysis_type,FsetEnum);
+	int fsize=nodes->NumberOfDofs(FsetEnum);
+	int flocalsize = nodes->NumberOfDofsLocal(FsetEnum);
 
 	if(fsize==0){
@@ -37,5 +31,5 @@
 		 uf=new Vector<IssmDouble>(flocalsize,fsize);
 
-		if(nodes->NumberOfNodes(configuration_type)){ 
+		if(nodes->NumberOfNodes()){ 
 
 			/*serialize ug, so nodes can index into it: */
@@ -45,5 +39,4 @@
 			for(int i=0;i<nodes->Size();i++){
 				Node* node=(Node*)nodes->GetObjectByOffset(i);
-				_assert_(node->InAnalysis(configuration_type));
 
 				/*For this object, reduce values for enum set Fset: */
Index: /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 23587)
@@ -85,7 +85,5 @@
 
 	/*Create vector on gset*/
-	int configuration_type;
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-	int gsize=femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
+	int gsize=femmodel->nodes->NumberOfDofs(GsetEnum);
 	if(gsize==0)  return;
 	Vector<IssmDouble>* vec_mask_ice=new Vector<IssmDouble>(gsize);
Index: /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.cpp	(revision 23587)
@@ -8,11 +8,8 @@
 #include "../../toolkits/toolkits.h"
 
-void SpcNodesx(Nodes* nodes,Constraints* constraints,Parameters* parameters, int analysis_type){
+void SpcNodesx(Nodes* nodes,Constraints* constraints,Parameters* parameters){
 
 	for(int i=0;i<constraints->Size();i++){
-
 		Constraint* constraint=(Constraint*)constraints->GetObjectByOffset(i);
-
-		_assert_(constraint->InAnalysis(analysis_type));
 		constraint->ConstrainNode(nodes,parameters);
 	}
Index: /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/SpcNodesx/SpcNodesx.h	(revision 23587)
@@ -10,5 +10,5 @@
 
 /* local prototypes: */
-void SpcNodesx(Nodes* nodes, Constraints* constraints,Parameters* parameters,int analysis_type);
+void SpcNodesx(Nodes* nodes, Constraints* constraints,Parameters* parameters);
 
 #endif  /* _SPCNODESX_H */
Index: /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp	(revision 23587)
@@ -12,5 +12,5 @@
 	/*intermediary: */
 	int      i,M,N;
-	int      configuration_type,analysisenum;
+	int      analysisenum;
 	Element *element = NULL;
 	Load    *load    = NULL;
@@ -27,10 +27,9 @@
 
 	/*retrieve parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&analysisenum,AnalysisTypeEnum);
 	Analysis* analysis = EnumToAnalysis(analysisenum);
 
 	/*Check if there are penalties*/
-	bool ispenalty = femmodel->loads->IsPenalty(configuration_type);
+	bool ispenalty = femmodel->loads->IsPenalty();
 
 	/*First, we might need to do a dry run to get kmax if penalties are employed*/
@@ -54,5 +53,4 @@
 		for (i=0;i<femmodel->loads->Size();i++){
 			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
-			_assert_(load->InAnalysis(configuration_type)); 
 			load->CreateKMatrix(Kff_temp,NULL);
 		}
@@ -90,5 +88,4 @@
 	for(i=0;i<femmodel->loads->Size();i++){
 		load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
-		_assert_(load->InAnalysis(configuration_type));
 		load->CreateKMatrix(Kff,Kfs);
 		load->CreatePVector(pf);
@@ -99,5 +96,4 @@
 		for (i=0;i<femmodel->loads->Size();i++){
 			load=xDynamicCast<Load*>(femmodel->loads->GetObjectByOffset(i));
-			_assert_(load->InAnalysis(configuration_type)); 
 			load->PenaltyCreateKMatrix(Kff,Kfs,kmax);
 			load->PenaltyCreatePVector(pf,kmax);
Index: /issm/trunk-jpl/src/c/modules/VecMergex/VecMergex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/VecMergex/VecMergex.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/modules/VecMergex/VecMergex.cpp	(revision 23587)
@@ -9,23 +9,13 @@
 void VecMergex(Vector<IssmDouble>* ug, Vector<IssmDouble>* uf, Nodes* nodes, Parameters* parameters, int SetEnum){
 
-	/*variables: */
-	int i;
-	int configuration_type;
-	IssmDouble* uf_serial=NULL;
-
-	/*retrieve parameters: */
-	parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
-
 	/*serialize uf: */
-	uf_serial=uf->ToMPISerial();
+	IssmDouble* uf_serial=uf->ToMPISerial();
 
 	/*Do we have any nodes for this configuration? :*/
-	if(nodes->NumberOfNodes(configuration_type)){ 
+	if(nodes->NumberOfNodes()){ 
 
 		/*yes. Go through all nodes, and ask them to retrieve values from uf, and plug them into ug: */
-		for(i=0;i<nodes->Size();i++){
-
+		for(int i=0;i<nodes->Size();i++){
 			Node* node=(Node*)nodes->GetObjectByOffset(i);
-			_assert_(node->InAnalysis(configuration_type));
 
 			/*For this object, merge values for enum set SetEnum: */
@@ -33,4 +23,5 @@
 		}
 	}
+
 	/*Free ressources:*/
 	xDelete<IssmDouble>(uf_serial);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp	(revision 23587)
@@ -20,12 +20,10 @@
 	Vector<IssmDouble>*  df  = NULL;
 	Vector<IssmDouble>*  ys  = NULL;
-	int  configuration_type;
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->UpdateConstraintsx();
 
 	SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL,femmodel);
-	CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+	CreateNodalConstraintsx(&ys,femmodel->nodes);
 	Reduceloadx(pf, Kfs, ys,true); delete Kfs; //true means spc = 0
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp	(revision 23587)
@@ -101,5 +101,5 @@
 				if(VerboseSolution()) _printf0_("Building Sediment Matrix...\n");
 				SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
-				CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
+				CreateNodalConstraintsx(&ys,femmodel->nodes);
 				Reduceloadx(pf,Kfs,ys); delete Kfs;
 				delete uf_sed;
@@ -187,5 +187,5 @@
 				if(VerboseSolution()) _printf0_("Building EPL Matrix...\n");
 				SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-				CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
+				CreateNodalConstraintsx(&ys,femmodel->nodes);
 				Reduceloadx(pf,Kfs,ys); delete Kfs;
 				delete uf_epl;
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la.cpp	(revision 23587)
@@ -21,5 +21,5 @@
 	Vector<IssmDouble>*  pug_old = NULL;
 	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
-	int                  configuration_type,max_nonlinear_iterations;
+	int                  max_nonlinear_iterations;
 	bool                 vel_converged      = false;
 	bool                 pressure_converged = false;
@@ -31,5 +31,4 @@
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
 	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
@@ -60,7 +59,6 @@
 			/*Solve KU=F*/
 			femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
-			femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-			CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+			CreateNodalConstraintsx(&ys,femmodel->nodes);
 			Reduceloadx(pf, Kfs, ys); delete Kfs;
 
@@ -95,7 +93,6 @@
 
 		femmodel->SetCurrentConfiguration(UzawaPressureAnalysisEnum);
-		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la_theta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la_theta.cpp	(revision 23587)
@@ -20,5 +20,5 @@
 	Vector<IssmDouble>*  ys     = NULL;
 	IssmDouble           eps_rel,r,theta; // 0<theta<.5   -> .15<theta<.45
-	int                  configuration_type,max_nonlinear_iterations;
+	int                  max_nonlinear_iterations;
 
 	/*Create analysis*/
@@ -26,5 +26,4 @@
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
 	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
@@ -57,5 +56,5 @@
 		/*Solve KU=F*/
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_linear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_linear.cpp	(revision 23587)
@@ -18,5 +18,4 @@
 	Vector<IssmDouble>*  df  = NULL;
 	Vector<IssmDouble>*  ys  = NULL;
-	int  configuration_type;
 	IssmDouble solver_residue_threshold;
 
@@ -29,9 +28,8 @@
 
 	/*Recover parameters: */
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&solver_residue_threshold,SettingsSolverResidueThresholdEnum);
 	femmodel->UpdateConstraintsx();
 	SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-	CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+	CreateNodalConstraintsx(&ys,femmodel->nodes);
 	Reduceloadx(pf, Kfs, ys); delete Kfs;
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_newton.cpp	(revision 23587)
@@ -30,10 +30,8 @@
 	/*parameters:*/
 	int max_nonlinear_iterations;
-	int configuration_type;
 	IssmDouble eps_res,eps_rel,eps_abs;
 
 	/*Recover parameters: */
 	femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
 	femmodel->parameters->FindParam(&eps_res,StressbalanceRestolEnum);
@@ -61,5 +59,5 @@
 		if(count==1 || newton==2){
 			SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-			CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+			CreateNodalConstraintsx(&ys,femmodel->nodes);
 			Reduceloadx(pf,Kfs,ys);delete Kfs;
 			femmodel->profiler->Start(SOLVER);
@@ -75,5 +73,5 @@
 		/*Prepare next iteration using Newton's method*/
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,&kmax,femmodel);delete df;
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf,Kfs,ys);delete Kfs;
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_nonlinear.cpp	(revision 23587)
@@ -65,5 +65,5 @@
 
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 		femmodel->profiler->Start(SOLVER);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_schurcg.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_schurcg.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_schurcg.cpp	(revision 23587)
@@ -495,5 +495,4 @@
 	/*parameters:*/
 	int max_nonlinear_iterations;
-	int configuration_type;
 	IssmDouble eps_res,eps_rel,eps_abs;
 
@@ -503,5 +502,4 @@
 	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
 	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->UpdateConstraintsx();
 	int size;
@@ -525,5 +523,5 @@
 		/*Get stiffness matrix and Load vector*/
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_shakti_nonlinear.cpp	(revision 23587)
@@ -23,5 +23,4 @@
 	/*parameters:*/
 	int max_nonlinear_iterations;
-	int configuration_type;
 	IssmDouble eps_res,eps_rel,eps_abs;
 
@@ -31,5 +30,4 @@
 	femmodel->parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
 	femmodel->parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->UpdateConstraintsx();
 
@@ -50,5 +48,5 @@
 
 		SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 		femmodel->profiler->Start(SOLVER);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp	(revision 23587)
@@ -32,5 +32,4 @@
 	int  min_mechanical_constraints;
 	int  max_nonlinear_iterations;
-	int  configuration_type;
 	IssmDouble eps_res,eps_rel,eps_abs;
 
@@ -55,5 +54,4 @@
 		/*First stressbalance horiz:*/
 		femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
-		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 
 		//Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
@@ -66,5 +64,5 @@
 		/*solve: */
 		SystemMatricesx(&Kff_horiz, &Kfs_horiz, &pf_horiz, &df_horiz, NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf_horiz, Kfs_horiz, ys); delete Kfs_horiz;
 		femmodel->profiler->Start(SOLVER);
@@ -78,9 +76,8 @@
 		/*Second compute vertical velocity: */
 		femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
-		femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 
 		/*solve: */
 		SystemMatricesx(&Kff_vert, &Kfs_vert, &pf_vert, &df_vert,NULL,femmodel);
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf_vert, Kfs_vert, ys); delete Kfs_vert;
 		femmodel->profiler->Start(SOLVER);
Index: /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 23586)
+++ /issm/trunk-jpl/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp	(revision 23587)
@@ -33,10 +33,8 @@
 
 	/*parameters:*/
-	int  configuration_type;
 	IssmDouble eps_rel;
 
 	/*Recover parameters: */
 	femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
-	femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
 	femmodel->parameters->FindParam(&thermal_maxiter,ThermalMaxiterEnum);
 
@@ -75,5 +73,5 @@
 		else SystemMatricesx(&Kff, &Kfs, &pf,&df, &melting_offset,femmodel);
 		delete tg;
-		CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
+		CreateNodalConstraintsx(&ys,femmodel->nodes);
 		Reduceloadx(pf, Kfs, ys); delete Kfs;
 		femmodel->profiler->Start(SOLVER);
