Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 17700)
@@ -55,8 +55,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -143,5 +143,5 @@
 	xDelete<IssmDouble>(basis);
 	xDelete<IssmDouble>(dbasis);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete gauss;
 	return pe;
@@ -155,8 +155,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,AdjointEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,AdjointEnum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 17700)
@@ -61,8 +61,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -87,5 +87,5 @@
 	delete analysis;
 	if(incomplete_adjoint){
-		if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+		if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 		return Ke;
 	}
@@ -136,5 +136,5 @@
 	xDelete<IssmDouble>(dbasis);
 	xDelete<IssmDouble>(xyz_list);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -304,5 +304,5 @@
 
 	/*Intermediaries */
-	int        num_responses,i,domaintype,dim;
+	int        num_responses,i,dim;
 	IssmDouble Jdet,obs_velocity_mag,velocity_mag;
 	IssmDouble vx,vy,vxobs,vyobs,dux,duy,weight;
@@ -312,10 +312,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -690,8 +685,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -875,5 +870,5 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(basis);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete gauss;
 	return pe;
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 17700)
@@ -44,5 +44,5 @@
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
@@ -55,8 +55,8 @@
 
 	/*Check in 3d*/
-	if(stabilization==3 && iomodel->domaintype==Mesh3DEnum) _error_("DG 3d not implemented yet");
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
 
 	/*First fetch data: */
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	if(stabilization!=3){
 		::CreateNodes(nodes,iomodel,BalancethicknessAnalysisEnum,P1Enum);
@@ -143,5 +143,5 @@
 	int domaintype;
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -171,5 +171,5 @@
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
 		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
@@ -272,5 +272,5 @@
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
 		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
@@ -335,5 +335,5 @@
 	int domaintype;
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -483,8 +483,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,ThicknessEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,ThicknessEnum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 17700)
@@ -33,5 +33,5 @@
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
@@ -41,5 +41,5 @@
 
 	/*Check in 3d*/
-	if(iomodel->domaintype==Mesh3DEnum) _error_("DG 3d not implemented yet");
+	if(iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
 
 	/*First fetch data: */
@@ -154,8 +154,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -235,5 +235,5 @@
 	xDelete<IssmDouble>(Ny);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -246,8 +246,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,VelEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,VelEnum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 17700)
@@ -60,5 +60,5 @@
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchDataToInput(elements,VzEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(elements,VzEnum);
 	iomodel->FetchDataToInput(elements,DamageDEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
@@ -73,5 +73,5 @@
 void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
 	::CreateNodes(nodes,iomodel,DamageEvolutionAnalysisEnum,P1Enum);
 	iomodel->DeleteData(1,MeshVertexonbaseEnum);
@@ -118,9 +118,9 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			dim = 2;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -146,5 +146,5 @@
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vxaverage_input=basalelement->GetInput(VxEnum); _assert_(vxaverage_input);
 		vyaverage_input=basalelement->GetInput(VyEnum); _assert_(vyaverage_input);
@@ -249,5 +249,5 @@
 	xDelete<IssmDouble>(D);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -267,8 +267,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -311,5 +311,5 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(basis);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete gauss;
 	return pe;
@@ -383,5 +383,5 @@
 
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 		if(!element->IsOnBase()) return;
 		basalelement=element->SpawnBasalElement();
@@ -416,5 +416,5 @@
 	xDelete<IssmDouble>(newdamage);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 void DamageEvolutionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
Index: /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp	(revision 17700)
@@ -22,5 +22,5 @@
 	}
 
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
@@ -50,15 +50,10 @@
 
 	/*Intermediaries */
+	int         dim;
 	IssmDouble  Jdet,D,dt=1.e+9;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 17700)
@@ -29,5 +29,5 @@
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if(iomodel->domaintype==Mesh2DhorizontalEnum)return;
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
 
 	/*Is enthalpy requested?*/
@@ -94,5 +94,5 @@
 void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,EnthalpyAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -117,5 +117,5 @@
 
 	/*return if 2d mesh*/
-	if(iomodel->domaintype==Mesh2DhorizontalEnum) return;
+	if(iomodel->domaintype==Domain2DhorizontalEnum) return;
 
 	/*Fetch data: */
Index: /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 17700)
@@ -30,5 +30,5 @@
 		}
 	}
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
@@ -38,5 +38,5 @@
 void ExtrapolationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	int finiteelement=P1Enum;
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,ExtrapolationAnalysisEnum,finiteelement);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -99,7 +99,7 @@
 	basalelement->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1; break;
-		case Mesh2DhorizontalEnum: dim = 2; break;
-		case Mesh3DEnum:           dim = 2; break;
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -213,5 +213,5 @@
 	xDelete<IssmDouble>(normal);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 
@@ -234,5 +234,5 @@
 
 	basalelement->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -246,8 +246,8 @@
 	element->FindParam(&extrapolationvariable, ExtrapolationVariableEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,extrapolationvariable);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,extrapolationvariable);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 17700)
@@ -22,5 +22,5 @@
 	}
 
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
@@ -68,11 +68,6 @@
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	int dim;
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -116,15 +111,10 @@
 
 	/*Intermediaries */
+	int         dim;
 	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_top = NULL;
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -166,15 +156,10 @@
 
 	/*Intermediaries */
+	int         dim;
 	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_base = NULL;
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 17700)
@@ -22,5 +22,5 @@
 	}
 
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
@@ -64,15 +64,10 @@
 
 	/*Intermediaries */
-	int         domaintype,dim;
+	int         dim;
 	IssmDouble  Jdet,D;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -116,15 +111,10 @@
 
 	/*Intermediaries */
+	int         dim;
 	IssmDouble  Jdet,D,normal[2];
 	IssmDouble *xyz_list_top = NULL;
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -166,15 +156,10 @@
 
 	/*Intermediaries */
+	int         dim;
 	IssmDouble  Jdet,D,normal[3];
 	IssmDouble *xyz_list_base = NULL;
 
 	/*Get dimension*/
-	int dim,domaintype;
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 17700)
@@ -14,5 +14,5 @@
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if (iomodel->domaintype==Mesh2DhorizontalEnum)return;
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
 
 	/*Finite element type*/
@@ -35,5 +35,5 @@
 	iomodel->FetchDataToInput(elements,VxEnum);
 	iomodel->FetchDataToInput(elements,VyEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,VzEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
@@ -43,5 +43,5 @@
 void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,FreeSurfaceBaseAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -60,5 +60,5 @@
 	IssmDouble *nodeonbase=NULL;
 	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,MasstransportVertexPairingEnum);
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
 	for(int i=0;i<numvertex_pairing;i++){
 
@@ -69,5 +69,5 @@
 
 			/*Skip if one of the two is not on the bed*/
-			if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
 				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
 			}
@@ -114,14 +114,14 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			dim = 2;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
 			dim = 1;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -223,5 +223,5 @@
 	xDelete<IssmDouble>(D);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -237,14 +237,14 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			dim = 2;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
 			dim = 1;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -298,5 +298,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 17700)
@@ -14,5 +14,5 @@
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if (iomodel->domaintype==Mesh2DhorizontalEnum)return;
+	if (iomodel->domaintype==Domain2DhorizontalEnum)return;
 
 	int smb_model;
@@ -35,6 +35,6 @@
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,VxEnum);
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,VzEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
@@ -52,5 +52,5 @@
 void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,FreeSurfaceTopAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -69,5 +69,5 @@
 	IssmDouble *nodeonsurface=NULL;
 	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,MasstransportVertexPairingEnum);
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(&nodeonsurface,NULL,NULL,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonsurface,NULL,NULL,MeshVertexonsurfaceEnum);
 	for(int i=0;i<numvertex_pairing;i++){
 
@@ -78,5 +78,5 @@
 
 			/*Skip if one of the two is not on the bed*/
-			if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
 				if(!(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonsurface[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
 			}
@@ -123,14 +123,14 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			topelement = element;
 			dim = 2;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			if(!element->IsOnSurface()) return NULL;
 			topelement = element->SpawnTopElement();
 			dim = 1;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnSurface()) return NULL;
 			topelement = element->SpawnTopElement();
@@ -232,5 +232,5 @@
 	xDelete<IssmDouble>(D);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
 	return Ke;
 }/*}}}*/
@@ -246,14 +246,14 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			topelement = element;
 			dim = 2;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			if(!element->IsOnSurface()) return NULL;
 			topelement = element->SpawnTopElement();
 			dim = 1;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnSurface()) return NULL;
 			topelement = element->SpawnTopElement();
@@ -302,5 +302,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
+	if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
 	return pe;
 
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 17700)
@@ -56,5 +56,5 @@
 	iomodel->FetchDataToInput(elements,HydrologydcSedimentTransmitivityEnum);
 	iomodel->FetchDataToInput(elements,HydrologydcEplThicknessEnum);
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 	
 	//	elements->InputDuplicate(HydrologydcEplInitialThicknessEnum,HydrologydcEplThicknessEnum);
@@ -73,5 +73,5 @@
 	if(!isefficientlayer) return;
 
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,HydrologyDCEfficientAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -117,8 +117,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -132,5 +132,5 @@
 	/*Check that all nodes are active, else return empty matrix*/
 	if(!active_element) {
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 			basalelement->DeleteMaterials(); 
 			delete basalelement;
@@ -207,5 +207,5 @@
 	xDelete<IssmDouble>(B);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 
@@ -221,8 +221,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -236,5 +236,5 @@
 	/*Check that all nodes are active, else return empty matrix*/
 	if(!active_element) {
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 			basalelement->DeleteMaterials(); 
 			delete basalelement;
@@ -309,5 +309,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -322,5 +322,5 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 		if(!element->IsOnBase()) return;
 		basalelement=element->SpawnBasalElement();
@@ -351,5 +351,5 @@
 	xDelete<IssmDouble>(eplHeads);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 } /*}}}*/
 void HydrologyDCEfficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
@@ -493,9 +493,9 @@
 		
 		switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			if(!element->IsOnBase()) return;			
 			B = element->GetMaterialParameter(MaterialsRheologyBbarEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			B = element->GetMaterialParameter(MaterialsRheologyBEnum);
 			break;
@@ -610,8 +610,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return;
 			basalelement = element->SpawnBasalElement();
@@ -673,5 +673,5 @@
 		}
 	}
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	xDelete<IssmDouble>(epl_thickness);
 	xDelete<IssmDouble>(old_active);
@@ -690,8 +690,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return;
 			basalelement = element->SpawnBasalElement();
@@ -716,5 +716,5 @@
 		/*Do not do anything: at least one node is active for this element but this element is not solved for*/
 	}
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	xDelete<IssmDouble>(active);
 }
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 17700)
@@ -88,5 +88,5 @@
 	iomodel->FetchDataToInput(elements,SedimentHeadEnum);
 	iomodel->FetchDataToInput(elements,HydrologydcSedimentTransmitivityEnum);
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 
 	if(isefficientlayer)iomodel->FetchDataToInput(elements,HydrologydcMaskEplactiveNodeEnum);
@@ -101,5 +101,5 @@
 	if(hydrology_model!=HydrologydcEnum) return;
 
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,HydrologyDCInefficientAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -121,10 +121,10 @@
 	if(hydrology_model!=HydrologydcEnum) return;
 
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
 
 	//create penalties for nodes: no node can have water above the max
 	CreateSingleNodeToElementConnectivity(iomodel);
 	for(int i=0;i<iomodel->numberofvertices;i++){
-		if (iomodel->domaintype!=Mesh3DEnum){
+		if (iomodel->domaintype!=Domain3DEnum){
 			/*keep only this partition's nodes:*/
 			if(iomodel->my_vertices[i]){
@@ -161,8 +161,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -254,5 +254,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -266,8 +266,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -357,5 +357,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -398,5 +398,5 @@
 
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 		if(!element->IsOnBase()) return;
 		basalelement=element->SpawnBasalElement();
@@ -446,5 +446,5 @@
 	xDelete<IssmDouble>(residual);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 void HydrologyDCInefficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 17700)
@@ -62,5 +62,5 @@
 	if(hydrology_model!=HydrologyshreveEnum) return;
 
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,HydrologyShreveAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 17700)
@@ -26,5 +26,5 @@
 	iomodel->FetchDataToInput(elements,BaseEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		if(iomodel->meshelementtype==PentaEnum){
 			iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
@@ -33,5 +33,5 @@
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
@@ -39,8 +39,8 @@
 void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	}
-	else if(iomodel->domaintype==Mesh2DverticalEnum){
+	else if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchData(1,MeshVertexonbaseEnum);
 	}
@@ -77,12 +77,12 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh2DverticalEnum:
-			if(!element->IsOnBase()) return NULL;
-			basalelement = element->SpawnBasalElement();
-			break;
-		case Mesh3DEnum:
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -124,5 +124,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -136,12 +136,12 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh2DverticalEnum:
-			if(!element->IsOnBase()) return NULL;
-			basalelement = element->SpawnBasalElement();
-			break;
-		case Mesh3DEnum:
+		case Domain2DverticalEnum:
+			if(!element->IsOnBase()) return NULL;
+			basalelement = element->SpawnBasalElement();
+			break;
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -199,5 +199,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -213,11 +213,11 @@
 	element->FindParam(&elementtype,MeshElementtypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,inputenum);
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,inputenum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(elementtype==TetraEnum)
 			 element->InputUpdateFromSolutionOneDof(solution,inputenum);
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 17700)
@@ -36,5 +36,5 @@
 	iomodel->FetchDataToInput(elements,EplHeadEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 	}
@@ -51,8 +51,8 @@
 	if(!isefficientlayer) return;
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchData(1,MeshVertexonbaseEnum);
 	}
-	else if(iomodel->domaintype==Mesh2DverticalEnum){
+	else if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchData(1,MeshVertexonbaseEnum);
 	}
@@ -90,12 +90,12 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -109,5 +109,5 @@
 	/* Check that all nodes are active, else return empty matrix */
 	if(!active_element){
-		if(domaintype!=Mesh2DhorizontalEnum){
+		if(domaintype!=Domain2DhorizontalEnum){
 			basalelement->DeleteMaterials();
 			delete basalelement;
@@ -149,5 +149,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -162,8 +162,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -177,5 +177,5 @@
 	/*Check that all nodes are active, else return empty matrix*/
 	if(!active_element) {
-		if(domaintype!=Mesh2DhorizontalEnum){
+		if(domaintype!=Domain2DhorizontalEnum){
 			basalelement->DeleteMaterials();
 			delete basalelement;
@@ -222,5 +222,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -234,11 +234,11 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,inputenum);
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,inputenum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,inputenum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 17700)
@@ -43,5 +43,5 @@
 void LevelsetAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	int finiteelement=P1Enum;
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,LevelsetAnalysisEnum,finiteelement);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -105,7 +105,7 @@
 	basalelement->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1; break;
-		case Mesh2DhorizontalEnum: dim = 2; break;
-		case Mesh3DEnum:           dim = 2; break;
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -130,5 +130,5 @@
 	Input* vx_input=NULL;
 	Input* vy_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
 		vy_input=basalelement->GetInput(VyEnum); _assert_(vy_input);
@@ -253,5 +253,5 @@
 	xDelete<IssmDouble>(dlsf);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -299,5 +299,5 @@
 		xDelete<IssmDouble>(basis);
 		basalelement->FindParam(&domaintype,DomainTypeEnum);
-		if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+		if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 		delete gauss;
 	}
@@ -313,8 +313,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,MaskIceLevelsetEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,MaskIceLevelsetEnum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/LsfReinitializationAnalysis.cpp	(revision 17700)
@@ -36,5 +36,5 @@
 void LsfReinitializationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 	int finiteelement=P1Enum;
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,LsfReinitializationAnalysisEnum,finiteelement);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -252,23 +252,16 @@
 
 	IssmDouble   lsf;
-	int          domaintype,dim,dofpernode;
+	int          dim;
 	int*         doflist = NULL;
 
 	/*Get some parameters*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DhorizontalEnum: dim = 2; dofpernode = 1; break;
-		case Mesh2DverticalEnum:   dim = 2; dofpernode = 1; break;
-		case Mesh3DEnum:           dim = 3; dofpernode = 1; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
 	int numnodes = element->GetNumberOfNodes();
-	int numdof   = numnodes*dofpernode;
 
 	/*Fetch dof list and allocate solution vector*/
 	element->GetDofList(&doflist,NoneApproximationEnum,GsetEnum);
-	IssmDouble* values = xNew<IssmDouble>(numdof);
+	IssmDouble* values = xNew<IssmDouble>(numnodes);
 
 	/*Get inputs*/
@@ -280,8 +273,8 @@
 
 		lsf_input->GetInputValue(&lsf,gauss);
-		values[i*dofpernode+0]=lsf;
-	}
-
-	solution->SetValues(numdof,doflist,values,INS_VAL);
+		values[i]=lsf;
+	}
+
+	solution->SetValues(numnodes,doflist,values,INS_VAL);
 
 	/*Free ressources:*/
@@ -296,8 +289,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->InputUpdateFromSolutionOneDof(solution,MaskIceLevelsetEnum);
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->InputUpdateFromSolutionOneDofCollapsed(solution,MaskIceLevelsetEnum);
 			break;
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 17700)
@@ -83,5 +83,5 @@
 	}
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
@@ -90,5 +90,5 @@
 	if(islevelset){
 		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum)
+		if(iomodel->domaintype!=Domain2DhorizontalEnum)
 			iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
 	}
@@ -132,8 +132,8 @@
 
 	/*Check in 3d*/
-	if(stabilization==3 && iomodel->domaintype==Mesh3DEnum) _error_("DG 3d not implemented yet");
+	if(stabilization==3 && iomodel->domaintype==Domain3DEnum) _error_("DG 3d not implemented yet");
 
 	/*Create Nodes either DG or CG depending on stabilization*/
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	if(stabilization!=3){
 		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1Enum);
@@ -195,5 +195,5 @@
 	IssmDouble *nodeonbase=NULL;
 	iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,MasstransportVertexPairingEnum);
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
+	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
 
 	for(int i=0;i<numvertex_pairing;i++){
@@ -205,5 +205,5 @@
 
 			/*Skip if one of the two is not on the bed*/
-			if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+			if(iomodel->domaintype!=Domain2DhorizontalEnum){
 				if(!(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+0])-1])) || !(reCast<bool>(nodeonbase[reCast<int>(vertex_pairing[2*i+1])-1]))) continue;
 			}
@@ -261,5 +261,5 @@
 	int domaintype;
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 }/*}}}*/
@@ -280,7 +280,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1; break;
-		case Mesh2DhorizontalEnum: dim = 2; break;
-		case Mesh3DEnum:           dim = 2; break;
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -303,5 +303,5 @@
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
 		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
@@ -435,5 +435,5 @@
 	Input* vxaverage_input=NULL;
 	Input* vyaverage_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vxaverage_input=element->GetInput(VxEnum); _assert_(vxaverage_input);
 		vyaverage_input=element->GetInput(VyEnum); _assert_(vyaverage_input);
@@ -507,5 +507,5 @@
 	int domaintype;
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
@@ -676,5 +676,5 @@
 
 	element->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum){
+	if(domaintype!=Domain2DhorizontalEnum){
 		if(!element->IsOnBase()) return;
 		basalelement=element->SpawnBasalElement();
@@ -750,5 +750,5 @@
 	xDelete<IssmDouble>(phi);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 void MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
Index: /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 17700)
@@ -14,5 +14,5 @@
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if(iomodel->domaintype==Mesh2DhorizontalEnum)return;
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
 
 	/*Update elements: */
@@ -44,5 +44,5 @@
 void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,MeltingAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -54,5 +54,5 @@
 
 	/*if 2d: Error*/
-	if(iomodel->domaintype==Mesh2DhorizontalEnum) _error_("2d meshes not supported yet");
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
 
 	//create penalties for nodes: no node can have a temperature over the melting point
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeXAnalysis.cpp	(revision 17700)
@@ -26,16 +26,16 @@
 	iomodel->FetchDataToInput(elements,BaseEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
 	}
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
 }/*}}}*/
 void SmoothedSurfaceSlopeXAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
 	::CreateNodes(nodes,iomodel,SmoothedSurfaceSlopeXAnalysisEnum,P1Enum);
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->DeleteData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->DeleteData(1,MeshVertexonbaseEnum);
 }/*}}}*/
 void SmoothedSurfaceSlopeXAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
@@ -111,8 +111,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -169,5 +169,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/SmoothedSurfaceSlopeYAnalysis.cpp	(revision 17700)
@@ -26,16 +26,16 @@
 	iomodel->FetchDataToInput(elements,BaseEnum);
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
 		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
 	}
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum);
 	}
 }/*}}}*/
 void SmoothedSurfaceSlopeYAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(1,MeshVertexonbaseEnum);
 	::CreateNodes(nodes,iomodel,SmoothedSurfaceSlopeYAnalysisEnum,P1Enum);
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->DeleteData(1,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->DeleteData(1,MeshVertexonbaseEnum);
 }/*}}}*/
 void SmoothedSurfaceSlopeYAnalysis::CreateConstraints(Constraints* constraints,IoModel* iomodel){/*{{{*/
@@ -111,8 +111,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -169,5 +169,5 @@
 	xDelete<IssmDouble>(basis);
 	delete gauss;
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return pe;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 17700)
@@ -19,7 +19,7 @@
 		case SSAApproximationEnum:
 			 switch(domaintype){
-				 case Mesh3DEnum:           numdofs=2; break;
-				 case Mesh2DhorizontalEnum: numdofs=2; break;
-				 case Mesh2DverticalEnum:   numdofs=1; break;
+				 case Domain3DEnum:           numdofs=2; break;
+				 case Domain2DhorizontalEnum: numdofs=2; break;
+				 case Domain2DverticalEnum:   numdofs=1; break;
 				 default: _error_("mesh type not supported yet");
 			 }
@@ -28,6 +28,6 @@
 		case HOApproximationEnum:   
 			 switch(domaintype){
-				 case Mesh3DEnum:         numdofs=2; break;
-				 case Mesh2DverticalEnum: numdofs=1; break;
+				 case Domain3DEnum:         numdofs=2; break;
+				 case Domain2DverticalEnum: numdofs=1; break;
 				 default: _error_("mesh type not supported yet");
 			 }
@@ -36,6 +36,6 @@
 		case FSvelocityEnum:
 			 switch(domaintype){
-				 case Mesh3DEnum:         numdofs=3; break;
-				 case Mesh2DverticalEnum: numdofs=2; break;
+				 case Domain3DEnum:         numdofs=3; break;
+				 case Domain2DverticalEnum: numdofs=2; break;
 				 default: _error_("mesh type not supported yet");
 			}
@@ -44,6 +44,6 @@
 		case NoneApproximationEnum:
 			 switch(domaintype){
-				 case Mesh3DEnum:         numdofs=4; break;
-				 case Mesh2DverticalEnum: numdofs=3; break;
+				 case Domain3DEnum:         numdofs=4; break;
+				 case Domain2DverticalEnum: numdofs=3; break;
 				 default: _error_("mesh type not supported yet");
 			}
@@ -214,5 +214,5 @@
 	iomodel->FetchDataToInput(elements,DamageDEnum);
 
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		if(iomodel->meshelementtype==PentaEnum){
 			iomodel->FetchDataToInput(elements,MeshElementonbaseEnum);
@@ -225,5 +225,5 @@
 		if(dakota_analysis)elements->InputDuplicate(VzEnum,QmuVzEnum);
 	}
-	if(iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DverticalEnum){
 		iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum);
 	}
@@ -235,5 +235,5 @@
 	if(islevelset){
 		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum)
+		if(iomodel->domaintype!=Domain2DhorizontalEnum)
 			iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
 	}
@@ -289,5 +289,5 @@
 		}
 		iomodel->FetchData(3,FlowequationBorderSSAEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum) iomodel->FetchData(3,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum,FlowequationBorderFSEnum);
+		if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(3,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum,FlowequationBorderFSEnum);
 		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation);
 		iomodel->DeleteData(6,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum,FlowequationBorderSSAEnum,FlowequationBorderFSEnum,
@@ -421,8 +421,8 @@
 			iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
 			iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum);
-			if(iomodel->domaintype==Mesh3DEnum){
+			if(iomodel->domaintype==Domain3DEnum){
 				iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum);
 			}
-			else if (iomodel->domaintype==Mesh2DverticalEnum){
+			else if (iomodel->domaintype==Domain2DverticalEnum){
 				iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvyEnum);
 			}
@@ -430,5 +430,5 @@
 				_error_("not supported yet");
 			}
-			if(iomodel->domaintype==Mesh3DEnum){
+			if(iomodel->domaintype==Domain3DEnum){
 				IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
 				IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1);
@@ -436,5 +436,5 @@
 				iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum);
 			}
-			else if (iomodel->domaintype==Mesh2DverticalEnum){
+			else if (iomodel->domaintype==Domain2DverticalEnum){
 				IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
 				IoModelToConstraintsx(constraints,iomodel,spcvz,Mz,Nz,StressbalanceAnalysisEnum,finiteelement,1);
@@ -497,5 +497,5 @@
 		else{
 			IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvxEnum,StressbalanceAnalysisEnum,finiteelement,0);
-			if(iomodel->domaintype!=Mesh2DverticalEnum){
+			if(iomodel->domaintype!=Domain2DverticalEnum){
 				IoModelToConstraintsx(constraints,iomodel,StressbalanceSpcvyEnum,StressbalanceAnalysisEnum,finiteelement,1);
 			}
@@ -510,8 +510,8 @@
 	iomodel->FetchData(&spcvz,&Mz,&Nz,StressbalanceSpcvzEnum);
 	iomodel->FetchData(&nodeonSSA,NULL,NULL,FlowequationBorderSSAEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,FlowequationBorderHOEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,FlowequationBorderFSEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonHO,NULL,NULL,FlowequationBorderHOEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonFS,NULL,NULL,FlowequationBorderFSEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&nodeonbase,NULL,NULL,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->FetchData(&groundedice_ls,NULL,NULL,MaskGroundediceLevelsetEnum);
 	iomodel->FetchData(&vertices_type,NULL,NULL,FlowequationVertexEquationEnum);
 	iomodel->FetchData(&surface,NULL,NULL,SurfaceEnum);
@@ -740,8 +740,8 @@
 	iomodel->DeleteData(spcvz,StressbalanceSpcvzEnum);
 	iomodel->DeleteData(nodeonSSA,FlowequationBorderSSAEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonHO,FlowequationBorderHOEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonFS,FlowequationBorderFSEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(nodeonbase,MeshVertexonbaseEnum);
-	if(iomodel->domaintype==Mesh3DEnum)iomodel->DeleteData(groundedice_ls,MaskGroundediceLevelsetEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonHO,FlowequationBorderHOEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonFS,FlowequationBorderFSEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(nodeonbase,MeshVertexonbaseEnum);
+	if(iomodel->domaintype==Domain3DEnum)iomodel->DeleteData(groundedice_ls,MaskGroundediceLevelsetEnum);
 	iomodel->DeleteData(vertices_type,FlowequationVertexEquationEnum);
 	iomodel->DeleteData(surface,SurfaceEnum);
@@ -856,5 +856,5 @@
 		 solutionsequence_nonlinear(femmodel,conserve_loads); 
 
-		if(domaintype==Mesh2DverticalEnum && isSSA){
+		if(domaintype==Domain2DverticalEnum && isSSA){
 			femmodel->parameters->SetParam(VxEnum,InputToExtrudeEnum);
 			extrudefrombase_core(femmodel);
@@ -985,7 +985,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum: dim = 2; dofpernode = 2; break;
-		case Mesh2DverticalEnum:   dim = 2; dofpernode = 1; break;
-		case Mesh3DEnum:           dim = 3; dofpernode = 2; break;
+		case Domain2DhorizontalEnum: dim = 2; dofpernode = 2; break;
+		case Domain2DverticalEnum:   dim = 2; dofpernode = 1; break;
+		case Domain3DEnum:           dim = 3; dofpernode = 2; break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -1003,5 +1003,5 @@
 	Input* vx_input=element->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=NULL;
-	if(domaintype!=Mesh2DverticalEnum){vy_input=element->GetInput(VyEnum); _assert_(vy_input);}
+	if(domaintype!=Domain2DverticalEnum){vy_input=element->GetInput(VyEnum); _assert_(vy_input);}
 
 	/*Ok, we have vx and vy in values, fill in vx and vy arrays: */
@@ -1078,8 +1078,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -1148,5 +1148,5 @@
 
 	/*clean-up and return*/
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	return Ke;
 
@@ -1164,8 +1164,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum: case Mesh2DverticalEnum:
+		case Domain3DEnum: case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -1180,5 +1180,5 @@
 
 	/*clean-up and return*/
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete Ke1;
 	delete Ke2;
@@ -1202,7 +1202,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1;break;
-		case Mesh2DhorizontalEnum: dim = 2;break;
-		case Mesh3DEnum:           dim = 2;break;
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -1287,7 +1287,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1; bsize = 1; break;
-		case Mesh2DhorizontalEnum: dim = 2; bsize = 3; break;
-		case Mesh3DEnum:           dim = 2; bsize = 3; break;
+		case Domain2DverticalEnum:   dim = 1; bsize = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; bsize = 3; break;
+		case Domain3DEnum:           dim = 2; bsize = 3; break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -1365,8 +1365,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum: case Mesh2DverticalEnum:
+		case Domain3DEnum: case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -1381,5 +1381,5 @@
 
 	/*clean-up and return*/
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete pe1;
 	delete pe2;
@@ -1399,7 +1399,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1;break;
-		case Mesh2DhorizontalEnum: dim = 2;break;
-		case Mesh3DEnum:           dim = 2;break;
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -1464,7 +1464,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:   dim = 1;break;
-		case Mesh2DhorizontalEnum: dim = 2;break;
-		case Mesh3DEnum:           dim = 2;break;
+		case Domain2DverticalEnum:   dim = 1;break;
+		case Domain2DhorizontalEnum: dim = 2;break;
+		case Domain3DEnum:           dim = 2;break;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
 	}
@@ -1655,10 +1655,10 @@
 	g       =element->GetMaterialParameter(ConstantsGEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->GetInputListOnVertices(thickness,ThicknessEnum);
 			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
 			dim=2;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			element->GetVerticesCoordinates(&xyz_list);
 			element->GetInputListOnVertices(surface,SurfaceEnum);
@@ -1666,5 +1666,5 @@
 			dim=2;
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			element->GetVerticesCoordinates(&xyz_list);
 			element->GetInputListOnVertices(surface,SurfaceEnum);
@@ -1681,8 +1681,8 @@
 	/*Get basal element*/
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum: case Mesh2DverticalEnum:
+		case Domain3DEnum: case Domain2DverticalEnum:
 			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
 			basalelement=element->SpawnBasalElement();
@@ -1748,5 +1748,5 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 
@@ -1843,8 +1843,8 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum: case Domain2DverticalEnum:
 			if(!element->IsOnBase()) return NULL;
 			basalelement = element->SpawnBasalElement();
@@ -1859,5 +1859,5 @@
 
 	/*clean-up and return*/
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 	delete pe1;
 	delete pe2;
@@ -1973,5 +1973,5 @@
 void StressbalanceAnalysis::InputUpdateFromSolutionL1L2(IssmDouble* solution,Element* element){/*{{{*/
 
-	int         i,domaintype;
+	int         i,dim,domaintype;
 	IssmDouble  rho_ice,g;
 	int*        doflist=NULL;
@@ -1985,18 +1985,16 @@
 	IssmDouble* surface   = xNew<IssmDouble>(numvertices);
 
+	element->FindParam(&dim,DomainDimensionEnum);
 	element->FindParam(&domaintype,DomainTypeEnum);
 	rho_ice =element->GetMaterialParameter(MaterialsRhoIceEnum);
 	g       =element->GetMaterialParameter(ConstantsGEnum);
-	switch(domaintype){
-		case Mesh2DhorizontalEnum:
-			element->GetInputListOnVertices(thickness,ThicknessEnum);
-			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
-			break;
-		case Mesh3DEnum:
-			element->GetVerticesCoordinates(&xyz_list);
-			element->GetInputListOnVertices(surface,SurfaceEnum);
-			for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
-			break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	if(dim==2){
+		element->GetInputListOnVertices(thickness,ThicknessEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*thickness[i];
+	}
+	else{
+		element->GetVerticesCoordinates(&xyz_list);
+		element->GetInputListOnVertices(surface,SurfaceEnum);
+		for(i=0;i<numvertices;i++) pressure[i]=rho_ice*g*(surface[i]-xyz_list[i*3+2]);
 	}
 	element->AddInput(PressureEnum,pressure,P1Enum);
@@ -2007,8 +2005,8 @@
 	/*Get basal element*/
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			basalelement = element;
 			break;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			if(!element->IsOnBase()){xDelete<IssmDouble>(xyz_list); return;}
 			basalelement=element->SpawnBasalElement();
@@ -2068,5 +2066,5 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<int>(doflist);
-	if(domaintype!=Mesh2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
+	if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
 }/*}}}*/
 
@@ -2154,5 +2152,5 @@
 
 	/*Intermediaries*/
-	int         dim,domaintype,bsize;
+	int         dim,bsize;
 	IssmDouble  viscosity,newviscosity,oldviscosity;
 	IssmDouble  viscosity_overshoot,thickness,Jdet;
@@ -2161,10 +2159,7 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; bsize = 2; break;
-		case Mesh3DEnum:         dim = 3; bsize = 5; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) bsize = 2;
+	else       bsize = 5;
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2231,5 +2226,5 @@
 
 	/*Intermediaries*/
-	int         dim,domaintype;
+	int         dim;
 	bool        mainlyfloating;
 	int         migration_style,point1;
@@ -2240,10 +2235,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2319,5 +2309,5 @@
 
 	/*Intermediaries */
-	int         dim,domaintype;
+	int         dim;
 	IssmDouble  x_coord,y_coord,z_coord;
 	IssmDouble  Jdet,forcex,forcey,forcez;
@@ -2325,10 +2315,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2396,15 +2381,10 @@
 
 	/*Intermediaries */
-	int         dim,domaintype;
+	int         dim;
 	IssmDouble  Jdet,slope[3];
 	IssmDouble* xyz_list = NULL;
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2453,5 +2433,5 @@
 
 	/*Intermediaries*/
-	int         dim,domaintype;
+	int         dim;
 	IssmDouble  Jdet,surface,z,water_pressure,ice_pressure;
 	IssmDouble  surface_under_water,base_under_water,pressure;
@@ -2462,10 +2442,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2655,15 +2630,10 @@
 void StressbalanceAnalysis::InputUpdateFromSolutionHO(IssmDouble* solution,Element* element){/*{{{*/
 
-	int         i,dim,domaintype;
+	int         i,dim;
 	int*        doflist=NULL;
 	IssmDouble* xyz_list=NULL;
 
 	/*Get mesh dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Deal with pressure first*/
@@ -2744,13 +2714,8 @@
 ElementVector* StressbalanceAnalysis::CreateDVectorFS(Element* element){/*{{{*/
 
-	int         domaintype,dim;
+	int dim;
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2882,16 +2847,13 @@
 
 	/*Intermediaries*/
-	int         i,domaintype,dim,epssize;
+	int         i,dim,epssize;
 	IssmDouble  r,FSreconditioning,Jdet;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&dim,DomainDimensionEnum);
 	element->FindParam(&r,AugmentedLagrangianREnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; epssize = 3; break;
-		case Mesh3DEnum:         dim = 3; epssize = 6; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -2954,15 +2916,12 @@
 
 	/*Intermediaries*/
-	int         i,domaintype,dim,epssize;
+	int         i,dim,epssize;
 	IssmDouble  viscosity,FSreconditioning,Jdet;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; epssize = 3; break;
-		case Mesh3DEnum:         dim = 3; epssize = 6; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) epssize = 3;
+	else       epssize = 6;
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3036,5 +2995,5 @@
 	/*Intermediaries*/
 	bool        mainlyfloating;
-	int         j,i,domaintype,dim;
+	int         j,i,dim;
 	IssmDouble  Jdet,slope2,scalar,dt;
 	IssmDouble  slope[3];
@@ -3044,10 +3003,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2;break;
-		case Mesh3DEnum:         dim = 3;break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3107,5 +3061,5 @@
 
 	/*Intermediaries*/
-	int         i,domaintype,dim;
+	int         i,dim;
 	IssmDouble  alpha2,Jdet;
 	IssmDouble  x_coord,y_coord,z_coord;
@@ -3114,10 +3068,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2;break;
-		case Mesh3DEnum:         dim = 3;break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3171,5 +3120,5 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFS(Element* element){/*{{{*/
 
-	int         i,domaintype,dim,fe_FS;
+	int         i,dim,fe_FS;
 	IssmDouble  x_coord,y_coord,z_coord;
 	IssmDouble  Jdet,forcex,forcey,forcez;
@@ -3177,10 +3126,5 @@
 
 	element->FindParam(&fe_FS,FlowequationFeFSEnum);
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3254,5 +3198,5 @@
 	/*Intermediaries*/
 	bool        mainlyfloating;
-	int         i,domaintype,dim,epssize;
+	int         i,dim,domaintype,epssize;
 	int         migration_style,point1;
 	IssmDouble  alpha2,Jdet,fraction1,fraction2;
@@ -3262,10 +3206,6 @@
 
 	/*Get problem dimension*/
+	element->FindParam(&dim,DomainDimensionEnum);
 	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2;break;
-		case Mesh3DEnum:         dim = 3;break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3294,5 +3234,5 @@
 	if(migration_style==SubelementMigrationEnum) phi=element->GetGroundedPortion(xyz_list_base);
 	if(migration_style==SubelementMigration2Enum){
-		if(domaintype==Mesh2DverticalEnum) _error_("Subelement Migration 2 not implemented yet for Flowline");
+		if(domaintype==Domain2DverticalEnum) _error_("Subelement Migration 2 not implemented yet for Flowline");
 		gllevelset_input=element->GetInput(MaskGroundediceLevelsetEnum); _assert_(gllevelset_input);
 		element->GetGroundedPart(&point1,&fraction1,&fraction2,&mainlyfloating);
@@ -3371,15 +3311,10 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFSViscous(Element* element){/*{{{*/
 
-	int         i,domaintype,dim;
+	int         i,dim;
 	IssmDouble  Jdet,forcex,forcey,forcez;
 	IssmDouble *xyz_list = NULL;
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3445,5 +3380,5 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFSViscousXTH(Element* element){/*{{{*/
 
-	int         i,tausize,domaintype,dim;
+	int         i,tausize,dim;
 	IssmDouble  Jdet,r;
 	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz;
@@ -3453,10 +3388,7 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; tausize = 3; break;
-		case Mesh3DEnum:         dim = 3; tausize = 6; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3620,5 +3552,5 @@
 ElementVector* StressbalanceAnalysis::CreatePVectorFSShelf(Element* element){/*{{{*/
 
-	int         i,domaintype,dim;
+	int         i,dim;
 	IssmDouble  Jdet,water_pressure,bed;
 	IssmDouble	normal[3];
@@ -3629,10 +3561,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -3694,5 +3621,5 @@
 
 	/*Intermediaries*/
-	int         i,domaintype,dim;
+	int         i,dim;
 	IssmDouble  Jdet,pressure,surface,z;
 	IssmDouble	normal[3];
@@ -3705,10 +3632,5 @@
 
 	/*Get problem dimension*/
-	element->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	element->FindParam(&dim,DomainDimensionEnum);
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -4051,16 +3973,11 @@
 	int*         pdoflist=NULL;
 	Input*       vz_input=NULL;
-	int          domaintype,dim;
+	int          dim;
 	IssmDouble   vx,vy,vz,p;
 	IssmDouble   FSreconditioning;
 
 	/*Get some parameters*/
-	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&dim,DomainDimensionEnum);
 	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -4117,5 +4034,5 @@
 
 	/*Intermediaries*/
-	int        domaintype,dim;
+	int        dim;
 	IssmDouble dvx[3],dvy[3],dvz[3];
 	IssmDouble viscosity;
@@ -4123,10 +4040,5 @@
 
 	/*Get problem dimension*/
-	parameters->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	parameters->FindParam(&dim,DomainDimensionEnum);
 
 	for(int i=0;i<elements->Size();i++){
@@ -4201,17 +4113,12 @@
 
 	bool         results_on_nodes;
-	int          i,dim,domaintype;
+	int          i,dim;
 	int*         vdoflist=NULL;
 	int*         pdoflist=NULL;
 	IssmDouble   FSreconditioning;
 
-	element->FindParam(&domaintype,DomainTypeEnum);
+	element->FindParam(&dim,DomainDimensionEnum);
 	element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
 	element->FindParam(&results_on_nodes,SettingsResultsOnNodesEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; break;
-		case Mesh3DEnum:         dim = 3; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
 
 	/*Fetch number of nodes and dof for this finite element*/
@@ -4296,5 +4203,5 @@
 
 	/*Intermediaries*/
-	int         dim,tausize,domaintype;
+	int         dim,tausize;
 	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
 	IssmDouble  epsxx_old,epsyy_old,epszz_old,epsxy_old,epsxz_old,epsyz_old;
@@ -4305,10 +4212,7 @@
 
 	parameters->FindParam(&r,AugmentedLagrangianREnum);
-	parameters->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; tausize = 3; break;
-		case Mesh3DEnum:         dim = 3; tausize = 6; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
 
 	for(int i=0;i<elements->Size();i++){
@@ -4509,5 +4413,5 @@
 
 	/*Intermediaries*/
-	int         dim,tausize,domaintype;
+	int         dim,tausize;
 	IssmDouble  epsxx,epsyy,epszz,epsxy,epsxz,epsyz,D_scalar;
 	IssmDouble  d_xx,d_yy,d_zz,d_xy,d_xz,d_yz;
@@ -4518,10 +4422,7 @@
 
 	parameters->FindParam(&r,AugmentedLagrangianREnum);
-	parameters->FindParam(&domaintype,DomainTypeEnum);
-	switch(domaintype){
-		case Mesh2DverticalEnum: dim = 2; tausize = 3; break;
-		case Mesh3DEnum:         dim = 3; tausize = 6; break;
-		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
-	}
+	parameters->FindParam(&dim,DomainDimensionEnum);
+	if(dim==2) tausize = 3;
+	else       tausize = 6;
 
 	for(int i=0;i<elements->Size();i++){
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 17700)
@@ -42,5 +42,5 @@
 	if(islevelset){
 		iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum)
+		if(iomodel->domaintype!=Domain2DhorizontalEnum)
 			iomodel->FetchDataToInput(elements,MeshVertexonbaseEnum); // required for updating active nodes
 	}
@@ -64,5 +64,5 @@
 	int    lid=0;
 	iomodel->FetchData(4,FlowequationBorderSSAEnum,FlowequationBorderFSEnum,FlowequationVertexEquationEnum,StressbalanceReferentialEnum);
-	if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+	if(iomodel->domaintype!=Domain2DhorizontalEnum){
 		iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	}
@@ -166,7 +166,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return CreateKMatrix2D(element);
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			return CreateKMatrix3D(element);
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
@@ -269,7 +269,7 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return CreatePVector2D(element);
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			return CreatePVector3D(element);
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
@@ -541,9 +541,9 @@
 	element->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			element->GetInputListOnNodes(&thickness[0],ThicknessEnum);
 			for(i=0;i<numnodes;i++) pressure[i]=rho_ice*g*thickness[i];
 			break;
-		case Mesh3DEnum:   
+		case Domain3DEnum:   
 			element->GetVerticesCoordinates(&xyz_list);
 			element->GetInputListOnNodes(&surface[0],SurfaceEnum);
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 17700)
@@ -18,5 +18,5 @@
 
 	/*return if not 3d mesh*/
-	if(iomodel->domaintype!=Mesh3DEnum) return;
+	if(iomodel->domaintype!=Domain3DEnum) return;
 
 	/*Update elements: */
@@ -46,5 +46,5 @@
 
 	/*return if not 3d mesh*/
-	if(iomodel->domaintype!=Mesh3DEnum) return;
+	if(iomodel->domaintype!=Domain3DEnum) return;
 
 	iomodel->FetchData(3,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum,FlowequationVertexEquationEnum);
@@ -62,5 +62,5 @@
 
 	/*return if not 3d mesh*/
-	if(iomodel->domaintype!=Mesh3DEnum) return;
+	if(iomodel->domaintype!=Domain3DEnum) return;
 
 	/*Fetch data: */
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 17700)
@@ -31,5 +31,5 @@
 
 	/*Now, is the model 3d? otherwise, do nothing: */
-	if(iomodel->domaintype==Mesh2DhorizontalEnum)return;
+	if(iomodel->domaintype==Domain2DhorizontalEnum)return;
 
 	/*Update elements: */
@@ -83,5 +83,5 @@
 void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
+	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
 	::CreateNodes(nodes,iomodel,ThermalAnalysisEnum,P1Enum);
 	iomodel->DeleteData(2,MeshVertexonbaseEnum,MeshVertexonsurfaceEnum);
@@ -90,5 +90,5 @@
 
 	/*Only 3d mesh supported*/
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		IoModelToConstraintsx(constraints,iomodel,ThermalSpctemperatureEnum,ThermalAnalysisEnum,P1Enum);
 	}
@@ -97,5 +97,5 @@
 void ThermalAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 
-	if(iomodel->domaintype==Mesh2DhorizontalEnum) _error_("2d meshes not supported yet");
+	if(iomodel->domaintype==Domain2DhorizontalEnum) _error_("2d meshes not supported yet");
 
 	/*create penalties for nodes: no node can have a temperature over the melting point*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 17700)
@@ -104,8 +104,8 @@
 	parameters->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			this->inputs->AddInput(new TriaInput(input_enum,values,interpolation_enum));
 			break;
-		case Mesh2DverticalEnum:{
+		case Domain2DverticalEnum:{
 			if(interpolation_enum==P1Enum){
 				IssmDouble values2[NUMVERTICES]={0.};
@@ -172,5 +172,5 @@
 	/*Retrieve all inputs we will be needing: */
 	this->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype==Mesh2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
+	if(domaintype==Domain2DhorizontalEnum) _error_("stress tensor calculation not supported for mesh of type " <<EnumToStringx(domaintype)<<", extrude mesh or call ComputeDeviatoricStressTensor");
 	Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);
 	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
@@ -225,5 +225,5 @@
 	/*Retrieve all inputs we will be needing: */
 	this->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype!=Mesh2DhorizontalEnum) _error_("deviatoric stress tensor calculation not implemented for mesh of type " <<EnumToStringx(domaintype));
+	if(domaintype!=Domain2DhorizontalEnum) _error_("deviatoric stress tensor calculation not implemented for mesh of type " <<EnumToStringx(domaintype));
 	Input* vx_input=inputs->GetInput(VxEnum);             _assert_(vx_input);
 	Input* vy_input=inputs->GetInput(VyEnum);             _assert_(vy_input);
@@ -529,5 +529,5 @@
 	if(gl[2]==0.) gl[2]=gl[2]+epsilon;
 
-	if(domaintype==Mesh2DverticalEnum){
+	if(domaintype==Domain2DverticalEnum){
 		this->EdgeOnBaseIndices(&index1,&index2);
 		if(gl[index1]>0 && gl[index2]>0) phi=1; // All grounded
@@ -541,5 +541,5 @@
 
 	}
-	else if(domaintype==Mesh2DhorizontalEnum || domaintype==Mesh3DEnum){
+	else if(domaintype==Domain2DhorizontalEnum || domaintype==Domain3DEnum){
 		/*Check that not all nodes are grounded or floating*/
 		if(gl[0]>0 && gl[1]>0 && gl[2]>0){ // All grounded
@@ -1166,7 +1166,7 @@
 	this->parameters->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			return HasEdgeOnBase();
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return true;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
@@ -1180,7 +1180,7 @@
 	this->parameters->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			return HasEdgeOnSurface();
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return true;
 		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
@@ -1845,7 +1845,7 @@
 	this->parameters->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return this;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			_assert_(HasEdgeOnBase());
 			this->EdgeOnBaseIndices(&index1,&index2);
@@ -1864,7 +1864,7 @@
 	this->parameters->FindParam(&domaintype,DomainTypeEnum);
 	switch(domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			return this;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			_assert_(HasEdgeOnSurface());
 			this->EdgeOnSurfaceIndices(&index1,&index2);
@@ -2221,5 +2221,5 @@
 	int domaintype;
 	parameters->FindParam(&domaintype,DomainTypeEnum);
-	if(domaintype==Mesh2DverticalEnum){
+	if(domaintype==Domain2DverticalEnum){
 	  return base;
 	}
@@ -2297,5 +2297,5 @@
 	Input* vx_input=NULL;
 	Input* vy_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
 		vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
@@ -2364,5 +2364,5 @@
 	Input* vx_input=NULL;
 	Input* vy_input=NULL;
-	if(domaintype==Mesh2DhorizontalEnum){
+	if(domaintype==Domain2DhorizontalEnum){
 		vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
 		vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
Index: /issm/trunk-jpl/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 17700)
@@ -61,5 +61,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!=Mesh2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum){
 			/*We have a  3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum)); 
@@ -101,5 +101,5 @@
 				analysis_enum==ExtrapolationAnalysisEnum
 				){
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum){
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonbaseEnum));
@@ -112,5 +112,5 @@
 				analysis_enum==FreeSurfaceTopAnalysisEnum
 				){
-		if(iomodel->domaintype!=Mesh2DhorizontalEnum){
+		if(iomodel->domaintype!=Domain2DhorizontalEnum){
 			/*On a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */
 			_assert_(iomodel->Data(MeshVertexonsurfaceEnum));
Index: /issm/trunk-jpl/src/c/classes/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 17700)
@@ -36,9 +36,9 @@
 	_assert_(iomodel->Data(BaseEnum) && iomodel->Data(ThicknessEnum) && iomodel->numbernodetoelementconnectivity);
 	switch(iomodel->domaintype){
-		case Mesh3DEnum:
-		case Mesh2DhorizontalEnum:
+		case Domain3DEnum:
+		case Domain2DhorizontalEnum:
 			this->sigma = (iomodel->Data(MeshZEnum)[i]-iomodel->Data(BaseEnum)[i])/(iomodel->Data(ThicknessEnum)[i]);
 			break;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			this->sigma = (iomodel->Data(MeshYEnum)[i]-iomodel->Data(BaseEnum)[i])/(iomodel->Data(ThicknessEnum)[i]);
 			break;
@@ -133,8 +133,8 @@
 	/*sigma remains constant. z=bed+sigma*thickness*/
 	switch(this->domaintype){
-		case Mesh2DhorizontalEnum:
+		case Domain2DhorizontalEnum:
 			/*Nothing*/
 			return;
-		case Mesh2DverticalEnum:
+		case Domain2DverticalEnum:
 			oldy = this->y;
 			newy = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
@@ -143,5 +143,5 @@
 			vy->SetValue(this->pid,vely,INS_VAL);
 			return;
-		case Mesh3DEnum:
+		case Domain3DEnum:
 			oldz = this->z;
 			newz = bed[this->pid]+sigma*(surface[this->pid] - bed[this->pid]);
Index: /issm/trunk-jpl/src/c/cores/bedslope_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/bedslope_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/bedslope_core.cpp	(revision 17700)
@@ -28,5 +28,5 @@
 	solutionsequence_linear(femmodel);
 
-	if(domaintype!=Mesh2DverticalEnum){
+	if(domaintype!=Domain2DverticalEnum){
 		femmodel->parameters->SetParam(BedSlopeYEnum,InputToL2ProjectEnum);
 		solutionsequence_linear(femmodel);
@@ -35,5 +35,5 @@
 	if(save_results){
 		if(VerboseSolution()) _printf0_("   saving results\n");
-		if(domaintype!=Mesh2DverticalEnum){
+		if(domaintype!=Domain2DverticalEnum){
 			int outputs[2] = {BedSlopeXEnum,BedSlopeYEnum};
 			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
Index: /issm/trunk-jpl/src/c/cores/levelsetfunctionslope_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/levelsetfunctionslope_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/levelsetfunctionslope_core.cpp	(revision 17700)
@@ -28,9 +28,9 @@
 	solutionsequence_linear(femmodel);
 
-	if(domaintype!=Mesh2DverticalEnum){
+	if(domaintype!=Domain2DverticalEnum){
 		femmodel->parameters->SetParam(LevelsetfunctionSlopeYEnum,InputToL2ProjectEnum);
 		solutionsequence_linear(femmodel);
 	}
-	if(domaintype==Mesh2DverticalEnum){
+	if(domaintype==Domain2DverticalEnum){
 	      femmodel->parameters->SetParam(LevelsetfunctionSlopeXEnum,InputToExtrudeEnum);
 		extrudefrombase_core(femmodel);
@@ -39,5 +39,5 @@
 	if(save_results){
 		if(VerboseSolution()) _printf0_("saving results:\n");
-		if(domaintype!=Mesh2DverticalEnum){
+		if(domaintype!=Domain2DverticalEnum){
 			int outputs[2] = {LevelsetfunctionSlopeXEnum,LevelsetfunctionSlopeYEnum};
 			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
Index: /issm/trunk-jpl/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 17700)
@@ -48,5 +48,5 @@
 		femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
 		solutionsequence_linear(femmodel);
-		if(domaintype!=Mesh2DhorizontalEnum){
+		if(domaintype!=Domain2DhorizontalEnum){
 			femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum);
 			extrudefrombase_core(femmodel);
@@ -54,5 +54,5 @@
 		femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
 		solutionsequence_linear(femmodel);
-		if(domaintype!=Mesh2DhorizontalEnum){
+		if(domaintype!=Domain2DhorizontalEnum){
 			femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
 			extrudefromtop_core(femmodel);
@@ -62,5 +62,5 @@
 		if(VerboseSolution()) _printf0_("   call computational core\n");
 		solutionsequence_linear(femmodel);
-		if(domaintype==Mesh2DverticalEnum){
+		if(domaintype==Domain2DverticalEnum){
 			femmodel->parameters->SetParam(ThicknessEnum,InputToExtrudeEnum);
 			extrudefrombase_core(femmodel);
Index: /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 17700)
@@ -40,10 +40,10 @@
 		InputDuplicatex(femmodel,QmuVxEnum,VxEnum);
 		InputDuplicatex(femmodel,QmuVyEnum,VyEnum);
-		if(domaintype==Mesh3DEnum) InputDuplicatex(femmodel,QmuVzEnum,VzEnum);
+		if(domaintype==Domain3DEnum) InputDuplicatex(femmodel,QmuVzEnum,VzEnum);
 		if(isFS) InputDuplicatex(femmodel,QmuPressureEnum,PressureEnum);
 	}
 
 	/*Compute slopes if necessary */
-	if(isSIA || (isFS && domaintype==Mesh2DverticalEnum)) surfaceslope_core(femmodel);
+	if(isSIA || (isFS && domaintype==Domain2DverticalEnum)) surfaceslope_core(femmodel);
 	if(isFS){
 		bedslope_core(femmodel);
@@ -74,5 +74,5 @@
 
 	/*Compute vertical velocities*/
-	if (domaintype==Mesh3DEnum && (isSIA || isSSA || isL1L2 || isHO)){
+	if (domaintype==Domain3DEnum && (isSIA || isSSA || isL1L2 || isHO)){
 		analysis = new StressbalanceVerticalAnalysis();
 		analysis->Core(femmodel);
Index: /issm/trunk-jpl/src/c/cores/surfaceslope_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/surfaceslope_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/surfaceslope_core.cpp	(revision 17700)
@@ -28,9 +28,9 @@
 	solutionsequence_linear(femmodel);
 
-	if(domaintype!=Mesh2DverticalEnum){
+	if(domaintype!=Domain2DverticalEnum){
 		femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToL2ProjectEnum);
 		solutionsequence_linear(femmodel);
 	}
-	if(domaintype==Mesh2DverticalEnum){
+	if(domaintype==Domain2DverticalEnum){
 		femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToExtrudeEnum);
 		extrudefrombase_core(femmodel);
@@ -39,5 +39,5 @@
 	if(save_results){
 		if(VerboseSolution()) _printf0_("saving results:\n");
-		if(domaintype!=Mesh2DverticalEnum){
+		if(domaintype!=Domain2DverticalEnum){
 			int outputs[2] = {SurfaceSlopeXEnum,SurfaceSlopeYEnum};
 			femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 17700)
@@ -66,5 +66,5 @@
 			InputDuplicatex(femmodel,QmuVxEnum,VxEnum);
 			InputDuplicatex(femmodel,QmuVyEnum,VyEnum);
-			if(domaintype==Mesh3DEnum){
+			if(domaintype==Domain3DEnum){
 				InputDuplicatex(femmodel,QmuVzEnum,VzEnum);
 				if(isFS)InputDuplicatex(femmodel,QmuPressureEnum,PressureEnum);
@@ -78,5 +78,5 @@
 		}
 		if(isgroundingline) InputDuplicatex(femmodel,QmuMaskGroundediceLevelsetEnum,MaskGroundediceLevelsetEnum);
-		if(isthermal && domaintype==Mesh3DEnum){
+		if(isthermal && domaintype==Domain3DEnum){
 			//Update Vertex Position after updating Thickness and Bed
 			femmodel->SetCurrentConfiguration(MasstransportAnalysisEnum);
@@ -114,5 +114,5 @@
 		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
 
-		if(isthermal && domaintype==Mesh3DEnum){
+		if(isthermal && domaintype==Domain3DEnum){
 			if(VerboseSolution()) _printf0_("   computing thermal regime\n");
 			thermal_core(femmodel);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateFaces.cpp	(revision 17700)
@@ -17,8 +17,8 @@
 
 	/*Check Iomodel properties*/
-	if(iomodel->domaintype==Mesh2DhorizontalEnum || iomodel->domaintype==Mesh2DverticalEnum){
+	if(iomodel->domaintype==Domain2DhorizontalEnum || iomodel->domaintype==Domain2DverticalEnum){
 		/*Keep going*/
 	}
-	else if(iomodel->domaintype==Mesh3DEnum){
+	else if(iomodel->domaintype==Domain3DEnum){
 		CreateFaces3d(iomodel);
 		return;
@@ -243,5 +243,5 @@
 
 	int numbervertices;
-	if(iomodel->domaintype==Mesh3DEnum){
+	if(iomodel->domaintype==Domain3DEnum){
 		if((iomodel->faces[6*facenumber+5])==1){
 			numbervertices=3;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 17700)
@@ -86,5 +86,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceReltolEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(StressbalanceAbstolEnum));
-	if(iomodel->domaintype==Mesh3DEnum)
+	if(iomodel->domaintype==Domain3DEnum)
 	 parameters->AddObject(iomodel->CopyConstantObject(MeshNumberoflayersEnum));
 
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp	(revision 17700)
@@ -31,7 +31,7 @@
 	/*Get element width (3 or 6)*/
 	switch(iomodel->domaintype){
-		case Mesh2DhorizontalEnum: elementswidth=3; break;
-		case Mesh2DverticalEnum  : elementswidth=3; break;
-		case Mesh3DEnum          : elementswidth=6; break;
+		case Domain2DhorizontalEnum: elementswidth=3; break;
+		case Domain2DverticalEnum  : elementswidth=3; break;
+		case Domain3DEnum          : elementswidth=6; break;
 		default:  _error_("mesh type "<<EnumToStringx(iomodel->domaintype)<<" not supported yet");
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/FacesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/FacesPartitioning.cpp	(revision 17700)
@@ -18,11 +18,11 @@
 
 	/*Mesh dependent variables*/
-	if(iomodel->domaintype==Mesh2DhorizontalEnum){
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
 		elementnbf = 3;
 	}
-	else if(iomodel->domaintype==Mesh2DverticalEnum){
+	else if(iomodel->domaintype==Domain2DverticalEnum){
 		elementnbf = 3;
 	}
-	else if(iomodel->domaintype==Mesh3DEnum){
+	else if(iomodel->domaintype==Domain3DEnum){
 		elementnbf = 5;
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp	(revision 17700)
@@ -59,7 +59,7 @@
 
 		/*Hack for trasient runs (FIXME: to be improved)*/
-		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum  && iomodel->domaintype==Mesh2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum  && iomodel->domaintype==Mesh2DhorizontalEnum) continue;
-		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && iomodel->domaintype==Mesh2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum  && iomodel->domaintype==Domain2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum  && iomodel->domaintype==Domain2DhorizontalEnum) continue;
+		if(solution_enum==TransientSolutionEnum && analysis_enum==EnthalpyAnalysisEnum && iomodel->domaintype==Domain2DhorizontalEnum) continue;
 		if(solution_enum==TransientSolutionEnum && analysis_enum==ThermalAnalysisEnum && isthermal==false) continue;
 		if(solution_enum==TransientSolutionEnum && analysis_enum==MeltingAnalysisEnum && isthermal==false) continue;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp	(revision 17700)
@@ -65,5 +65,5 @@
 
 	/*First: add all the nodes of all the elements belonging to this cpu*/
-	if(iomodel->domaintype==Mesh2DhorizontalEnum){
+	if(iomodel->domaintype==Domain2DhorizontalEnum){
 		for (i=0;i<iomodel->numberofelements;i++){
 			if (my_elements[i]){
Index: /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp	(revision 17700)
@@ -50,5 +50,5 @@
 
 		/* if solving 2d problem on vertically extende mesh, solve on basal layer only*/
-		if(domaintype!=Mesh2DhorizontalEnum){
+		if(domaintype!=Domain2DhorizontalEnum){
 			femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum);
 			if(
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17699)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 17700)
@@ -211,11 +211,10 @@
 	MeshYEnum,
 	MeshZEnum,
+	MeshElementtypeEnum,
 	DomainTypeEnum,
 	DomainDimensionEnum,
-	MeshElementtypeEnum,
-	Mesh2DhorizontalEnum,
-	Mesh2DverticalEnum,
-	Mesh3DEnum,
-	Mesh3DtetrasEnum,
+	Domain2DhorizontalEnum,
+	Domain2DverticalEnum,
+	Domain3DEnum,
 	MiscellaneousNameEnum, //FIXME: only used by qmu, should not be marshalled (already in queueing script)
 	MasstransportHydrostaticAdjustmentEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 17700)
@@ -219,11 +219,10 @@
 		case MeshYEnum : return "MeshY";
 		case MeshZEnum : return "MeshZ";
+		case MeshElementtypeEnum : return "MeshElementtype";
 		case DomainTypeEnum : return "DomainType";
 		case DomainDimensionEnum : return "DomainDimension";
-		case MeshElementtypeEnum : return "MeshElementtype";
-		case Mesh2DhorizontalEnum : return "Mesh2Dhorizontal";
-		case Mesh2DverticalEnum : return "Mesh2Dvertical";
-		case Mesh3DEnum : return "Mesh3D";
-		case Mesh3DtetrasEnum : return "Mesh3Dtetras";
+		case Domain2DhorizontalEnum : return "Domain2Dhorizontal";
+		case Domain2DverticalEnum : return "Domain2Dvertical";
+		case Domain3DEnum : return "Domain3D";
 		case MiscellaneousNameEnum : return "MiscellaneousName";
 		case MasstransportHydrostaticAdjustmentEnum : return "MasstransportHydrostaticAdjustment";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 17700)
@@ -222,11 +222,10 @@
 	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
 	      else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
+	      else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
 	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
 	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
-	      else if (strcmp(name,"MeshElementtype")==0) return MeshElementtypeEnum;
-	      else if (strcmp(name,"Mesh2Dhorizontal")==0) return Mesh2DhorizontalEnum;
-	      else if (strcmp(name,"Mesh2Dvertical")==0) return Mesh2DverticalEnum;
-	      else if (strcmp(name,"Mesh3D")==0) return Mesh3DEnum;
-	      else if (strcmp(name,"Mesh3Dtetras")==0) return Mesh3DtetrasEnum;
+	      else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
+	      else if (strcmp(name,"Domain2Dvertical")==0) return Domain2DverticalEnum;
+	      else if (strcmp(name,"Domain3D")==0) return Domain3DEnum;
 	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
 	      else if (strcmp(name,"MasstransportHydrostaticAdjustment")==0) return MasstransportHydrostaticAdjustmentEnum;
@@ -260,9 +259,9 @@
 	      else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
 	      else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum;
+	      else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
-	      else if (strcmp(name,"MaxIterationConvergenceFlag")==0) return MaxIterationConvergenceFlagEnum;
+	      if (strcmp(name,"MaxIterationConvergenceFlag")==0) return MaxIterationConvergenceFlagEnum;
 	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
 	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
@@ -383,9 +382,9 @@
 	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
 	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"Loads")==0) return LoadsEnum;
-	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
+	      if (strcmp(name,"Materials")==0) return MaterialsEnum;
 	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
 	      else if (strcmp(name,"Contours")==0) return ContoursEnum;
@@ -506,9 +505,9 @@
 	      else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
 	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"Vy")==0) return VyEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Vy")==0) return VyEnum;
-	      else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
+	      if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
 	      else if (strcmp(name,"Vz")==0) return VzEnum;
 	      else if (strcmp(name,"VzSSA")==0) return VzSSAEnum;
@@ -629,9 +628,9 @@
 	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
 	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
-	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
+	      if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
 	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
 	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
Index: /issm/trunk-jpl/src/m/classes/mesh2d.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 17699)
+++ /issm/trunk-jpl/src/m/classes/mesh2d.py	(revision 17700)
@@ -108,5 +108,5 @@
 	#}}}
 	def marshall(self,md,fid):    # {{{
-		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Mesh"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
 		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
 		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
Index: /issm/trunk-jpl/src/m/classes/mesh2dvertical.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh2dvertical.m	(revision 17699)
+++ /issm/trunk-jpl/src/m/classes/mesh2dvertical.m	(revision 17700)
@@ -104,5 +104,5 @@
 		end % }}}
 		function marshall(obj,md,fid) % {{{
-			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Mesh' domaintype(obj)]),'format','Integer');
+			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
 			WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
 			WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
Index: /issm/trunk-jpl/src/m/classes/mesh3dprisms.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dprisms.m	(revision 17699)
+++ /issm/trunk-jpl/src/m/classes/mesh3dprisms.m	(revision 17700)
@@ -135,5 +135,5 @@
 		end % }}}
 		function marshall(obj,md,fid) % {{{
-			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Mesh' domaintype(obj)]),'format','Integer');
+			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
 			WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
 			WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
Index: /issm/trunk-jpl/src/m/classes/mesh3dprisms.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 17699)
+++ /issm/trunk-jpl/src/m/classes/mesh3dprisms.py	(revision 17700)
@@ -139,5 +139,5 @@
 	#}}}
 	def marshall(self,md,fid):    # {{{
-		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Mesh"+self.domaintype())[0],'format','Integer');
+		WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum("Domain"+self.domaintype())[0],'format','Integer');
 		WriteData(fid,'enum',DomainDimensionEnum(),'data',self.dimension(),'format','Integer');
 		WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(self.elementtype())[0],'format','Integer');
Index: /issm/trunk-jpl/src/m/classes/mesh3dtetras.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mesh3dtetras.m	(revision 17699)
+++ /issm/trunk-jpl/src/m/classes/mesh3dtetras.m	(revision 17700)
@@ -129,5 +129,5 @@
 		end % }}}
 		function marshall(obj,md,fid) % {{{
-			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Mesh' domaintype(obj)]),'format','Integer');
+			WriteData(fid,'enum',DomainTypeEnum(),'data',StringToEnum(['Domain' domaintype(obj)]),'format','Integer');
 			WriteData(fid,'enum',DomainDimensionEnum(),'data',dimension(obj),'format','Integer');
 			WriteData(fid,'enum',MeshElementtypeEnum(),'data',StringToEnum(elementtype(obj)),'format','Integer');
Index: /issm/trunk-jpl/src/m/enum/Domain2DhorizontalEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Domain2DhorizontalEnum.m	(revision 17700)
+++ /issm/trunk-jpl/src/m/enum/Domain2DhorizontalEnum.m	(revision 17700)
@@ -0,0 +1,11 @@
+function macro=Domain2DhorizontalEnum()
+%DOMAIN2DHORIZONTALENUM - Enum of Domain2Dhorizontal
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=Domain2DhorizontalEnum()
+
+macro=StringToEnum('Domain2Dhorizontal');
Index: /issm/trunk-jpl/src/m/enum/Domain2DverticalEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Domain2DverticalEnum.m	(revision 17700)
+++ /issm/trunk-jpl/src/m/enum/Domain2DverticalEnum.m	(revision 17700)
@@ -0,0 +1,11 @@
+function macro=Domain2DverticalEnum()
+%DOMAIN2DVERTICALENUM - Enum of Domain2Dvertical
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=Domain2DverticalEnum()
+
+macro=StringToEnum('Domain2Dvertical');
Index: /issm/trunk-jpl/src/m/enum/Domain3DEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Domain3DEnum.m	(revision 17700)
+++ /issm/trunk-jpl/src/m/enum/Domain3DEnum.m	(revision 17700)
@@ -0,0 +1,11 @@
+function macro=Domain3DEnum()
+%DOMAIN3DENUM - Enum of Domain3D
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=Domain3DEnum()
+
+macro=StringToEnum('Domain3D');
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17699)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 17700)
@@ -211,11 +211,10 @@
 def MeshYEnum(): return StringToEnum("MeshY")[0]
 def MeshZEnum(): return StringToEnum("MeshZ")[0]
+def MeshElementtypeEnum(): return StringToEnum("MeshElementtype")[0]
 def DomainTypeEnum(): return StringToEnum("DomainType")[0]
 def DomainDimensionEnum(): return StringToEnum("DomainDimension")[0]
-def MeshElementtypeEnum(): return StringToEnum("MeshElementtype")[0]
-def Mesh2DhorizontalEnum(): return StringToEnum("Mesh2Dhorizontal")[0]
-def Mesh2DverticalEnum(): return StringToEnum("Mesh2Dvertical")[0]
-def Mesh3DEnum(): return StringToEnum("Mesh3D")[0]
-def Mesh3DtetrasEnum(): return StringToEnum("Mesh3Dtetras")[0]
+def Domain2DhorizontalEnum(): return StringToEnum("Domain2Dhorizontal")[0]
+def Domain2DverticalEnum(): return StringToEnum("Domain2Dvertical")[0]
+def Domain3DEnum(): return StringToEnum("Domain3D")[0]
 def MiscellaneousNameEnum(): return StringToEnum("MiscellaneousName")[0]
 def MasstransportHydrostaticAdjustmentEnum(): return StringToEnum("MasstransportHydrostaticAdjustment")[0]
Index: sm/trunk-jpl/src/m/enum/Mesh2DhorizontalEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Mesh2DhorizontalEnum.m	(revision 17699)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Mesh2DhorizontalEnum()
-%MESH2DHORIZONTALENUM - Enum of Mesh2Dhorizontal
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=Mesh2DhorizontalEnum()
-
-macro=StringToEnum('Mesh2Dhorizontal');
Index: sm/trunk-jpl/src/m/enum/Mesh2DverticalEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Mesh2DverticalEnum.m	(revision 17699)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Mesh2DverticalEnum()
-%MESH2DVERTICALENUM - Enum of Mesh2Dvertical
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=Mesh2DverticalEnum()
-
-macro=StringToEnum('Mesh2Dvertical');
Index: sm/trunk-jpl/src/m/enum/Mesh3DEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Mesh3DEnum.m	(revision 17699)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Mesh3DEnum()
-%MESH3DENUM - Enum of Mesh3D
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=Mesh3DEnum()
-
-macro=StringToEnum('Mesh3D');
Index: sm/trunk-jpl/src/m/enum/Mesh3DtetrasEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/Mesh3DtetrasEnum.m	(revision 17699)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=Mesh3DtetrasEnum()
-%MESH3DTETRASENUM - Enum of Mesh3Dtetras
-%
-%   WARNING: DO NOT MODIFY THIS FILE
-%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
-%            Please read src/c/shared/Enum/README for more information
-%
-%   Usage:
-%      macro=Mesh3DtetrasEnum()
-
-macro=StringToEnum('Mesh3Dtetras');
Index: /issm/trunk-jpl/src/m/miscellaneous/vorticity.m
===================================================================
--- /issm/trunk-jpl/src/m/miscellaneous/vorticity.m	(revision 17699)
+++ /issm/trunk-jpl/src/m/miscellaneous/vorticity.m	(revision 17700)
@@ -1,3 +1,3 @@
-function rot = vorticity(vx,vy)
+function rot = vorticity(md,vx,vy)
 %VORTICITY - calculates 2d vorticity
 %
@@ -29,5 +29,5 @@
 rot=dvxdy - dvydx;
 
-if md.mesh.dimension==3,
+if strcmpi(meshtype(md.mesh),'3D'),
 	rot=project3d(md,'vector',rot,'type','element');
 end
Index: /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 17699)
+++ /issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp	(revision 17700)
@@ -19,5 +19,5 @@
 
 	/* required input: */
-	int  domaintype;
+	int  meshelementtype;
 	int  numberofelements;
 	int  numberofvertices;
@@ -49,6 +49,6 @@
 	FetchData(&elements,NULL,&elements_width,mxGetAssignedField(MESH,0,"elements"));
 
-	if(strcmp(mxGetClassName(MESH),"mesh3d")==0){
-		domaintype = Mesh3DEnum;
+	if(strcmp(mxGetClassName(MESH),"mesh3dprisms")==0){
+		meshelementtype = PentaEnum;
 		FetchData(&numberofelements2d,mxGetAssignedField(MESH,0,"numberofelements2d"));
 		FetchData(&numberofvertices2d,mxGetAssignedField(MESH,0,"numberofvertices2d"));
@@ -57,9 +57,9 @@
 	}
 	else if(strcmp(mxGetClassName(MESH),"mesh2dhorizontal")==0){
-		domaintype = Mesh2DhorizontalEnum;
+		meshelementtype = TriaEnum;
 		numberoflayers=1;
 	}
 	else if(strcmp(mxGetClassName(MESH),"mesh2dvertical")==0){
-		domaintype = Mesh2DverticalEnum;
+		meshelementtype = TriaEnum;
 		numberoflayers=1;
 	}
@@ -71,5 +71,5 @@
 	/*Run partitioning algorithm based on a "clever" use of the Metis partitioner: */
 	MeshPartitionx(&int_element_partitioning,&int_node_partitioning,numberofelements,numberofvertices,elements,
-		numberofelements2d,numberofvertices2d,elements2d,numberoflayers,elements_width,domaintype,numareas);
+		numberofelements2d,numberofvertices2d,elements2d,numberoflayers,elements_width,meshelementtype,numareas);
 
 	/*Post process node_partitioning and element_partitioning to be in double format. Metis needed them in int* format: */
