Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	_error_("not implemented yet");
 }/*}}}*/
-void AdjointBalancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void AdjointBalancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethickness2Analysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	_error_("not implemented yet");
 }/*}}}*/
-void AdjointBalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void AdjointBalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	_error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointBalancethicknessAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	   _error_("not implemented yet");
 }/*}}}*/
-void AdjointHorizAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void AdjointHorizAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/Analysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Analysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/Analysis.h	(revision 23585)
@@ -36,5 +36,5 @@
 		virtual void CreateConstraints(Constraints* constraints,IoModel* iomodel)=0;
 		virtual void CreateLoads(Loads* loads, IoModel* iomodel)=0;
-		virtual void CreateNodes(Nodes* nodes,IoModel* iomodel)=0;
+		virtual void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false)=0;
 		virtual int  DofsPerNode(int** doflist,int domaintype,int approximation)=0;
 		virtual void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type)=0;
Index: /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 23585)
@@ -15,5 +15,5 @@
 
 }/*}}}*/
-void Balancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void Balancethickness2Analysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int finiteelement = P1Enum;
Index: /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 23585)
@@ -51,5 +51,5 @@
 	}
 }/*}}}*/
-void BalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void BalancethicknessAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int  stabilization;
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.cpp	(revision 23585)
@@ -15,5 +15,5 @@
 	   _error_("not implemented yet");
 }/*}}}*/
-void BalancethicknessSoftAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void BalancethicknessSoftAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	   _error_("not implemented yet");
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessSoftAnalysis.h	(revision 23585)
@@ -16,5 +16,5 @@
 		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 23585)
@@ -15,5 +15,5 @@
 	/*No loads*/
 }/*}}}*/
-void BalancevelocityAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void BalancevelocityAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Check in 3d*/
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.cpp	(revision 23585)
@@ -30,5 +30,5 @@
 
 }/*}}}*/
-void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void DamageEvolutionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int finiteelement;
Index: /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/DamageEvolutionAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.cpp	(revision 23585)
@@ -10,5 +10,5 @@
 void DepthAverageAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void DepthAverageAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void DepthAverageAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	::CreateNodes(nodes,iomodel,DepthAverageAnalysisEnum,P1Enum);
Index: /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/DepthAverageAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 23585)
@@ -87,5 +87,5 @@
 	/*No loads */
 }/*}}}*/
-void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void EnthalpyAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int finiteelement;
Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.h	(revision 23585)
@@ -16,5 +16,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/EnumToAnalysis.h	(revision 23585)
@@ -11,5 +11,5 @@
 		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
Index: /issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	/*No loads*/
 }/*}}}*/
-void EsaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void EsaAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	::CreateNodes(nodes,iomodel,EsaAnalysisEnum,P1Enum);
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/EsaAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EsaAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/EsaAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.cpp	(revision 23585)
@@ -15,5 +15,5 @@
 	return;
 }/*}}}*/
-void ExtrapolationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void ExtrapolationAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	int finiteelement=P1Enum;
 	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
Index: /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrapolationAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 	void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 	void CreateLoads(Loads* loads, IoModel* iomodel);
-	void CreateNodes(Nodes* nodes,IoModel* iomodel);
+	void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 	int  DofsPerNode(int** doflist,int domaintype,int approximation);
 	void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.cpp	(revision 23585)
@@ -10,5 +10,5 @@
 void ExtrudeFromBaseAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void ExtrudeFromBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void ExtrudeFromBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	::CreateNodes(nodes,iomodel,ExtrudeFromBaseAnalysisEnum,P1Enum);
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromBaseAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.cpp	(revision 23585)
@@ -10,5 +10,5 @@
 void ExtrudeFromTopAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void ExtrudeFromTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	::CreateNodes(nodes,iomodel,ExtrudeFromTopAnalysisEnum,P1Enum);
Index: /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ExtrudeFromTopAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 23585)
@@ -46,5 +46,5 @@
 	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
 }/*}}}*/
-void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void FreeSurfaceBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 23585)
@@ -46,5 +46,5 @@
 	iomodel->DeleteData(nodeonsurface,"md.mesh.vertexonsurface");
 }/*}}}*/
-void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void FreeSurfaceTopAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp	(revision 23585)
@@ -14,5 +14,5 @@
 	/*No loads*/
 }/*}}}*/
-void GLheightadvectionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void GLheightadvectionAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*First fetch data: */
Index: /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	/*No loads*/
 }/*}}}*/
-void GiaIvinsAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void GiaIvinsAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	::CreateNodes(nodes,iomodel,GiaIvinsAnalysisEnum,P1Enum);
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/GiaIvinsAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp	(revision 23585)
@@ -71,5 +71,5 @@
 }/*}}}*/
 
-void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void HydrologyDCEfficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Now, do we really want DC?*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h	(revision 23585)
@@ -17,5 +17,5 @@
 		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp	(revision 23585)
@@ -115,5 +115,5 @@
 
 }/*}}}*/
-void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void HydrologyDCInefficientAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Fetch parameters: */
Index: /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.h	(revision 23585)
@@ -17,5 +17,5 @@
 		void UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
Index: /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.cpp	(revision 23585)
@@ -16,5 +16,5 @@
 
 }/*}}}*/
-void HydrologyPismAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void HydrologyPismAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	return;
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyPismAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.cpp	(revision 23585)
@@ -65,5 +65,5 @@
 
 }/*}}}*/
-void HydrologyShaktiAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void HydrologyShaktiAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Fetch parameters: */
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShaktiAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.cpp	(revision 23585)
@@ -20,5 +20,5 @@
 	/*No loads*/
 }/*}}}*/
-void HydrologyShreveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void HydrologyShreveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Fetch parameters: */
Index: /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/HydrologyShreveAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 23585)
@@ -14,5 +14,5 @@
 	/*No loads*/
 }/*}}}*/
-void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void L2ProjectionBaseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	if(iomodel->domaintype==Domain3DEnum){
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp	(revision 23585)
@@ -14,5 +14,5 @@
 	/*No loads*/
 }/*}}}*/
-void L2ProjectionEPLAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void L2ProjectionEPLAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	/*Now, do we really want DC?*/
 	int  hydrology_model;
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp	(revision 23585)
@@ -20,5 +20,5 @@
 	return;
 }/*}}}*/
-void LevelsetAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void LevelsetAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	int finiteelement;
 	iomodel->FindConstant(&finiteelement,"md.levelset.fe");
Index: /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/LoveAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LoveAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/LoveAnalysis.cpp	(revision 23585)
@@ -10,5 +10,5 @@
 void LoveAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void LoveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void LoveAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 }/*}}}*/
 int  LoveAnalysis::DofsPerNode(int** doflist,int domaintype,int approximation){/*{{{*/
Index: /issm/trunk-jpl/src/c/analyses/LoveAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/LoveAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/LoveAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23585)
@@ -90,5 +90,5 @@
 	iomodel->DeleteData(nodeonbase,"md.mesh.vertexonbase");
 }/*}}}*/
-void MasstransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void MasstransportAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Fetch parameters: */
@@ -102,8 +102,8 @@
 	if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
 	if(stabilization!=3){
-		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1Enum);
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1Enum,isamr);
 	}
 	else{
-		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1DGEnum);
+		::CreateNodes(nodes,iomodel,MasstransportAnalysisEnum,P1DGEnum,isamr);
 	}
 	iomodel->DeleteData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp	(revision 23585)
@@ -28,5 +28,5 @@
 
 }/*}}}*/
-void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void MeltingAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	if(iomodel->domaintype==Domain3DEnum) iomodel->FetchData(2,"md.mesh.vertexonbase","md.mesh.vertexonsurface");
Index: /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/MeltingAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	/*No loads*/
 }/*}}}*/
-void SealevelriseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void SealevelriseAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	::CreateNodes(nodes,iomodel,SealevelriseAnalysisEnum,P1Enum);
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp	(revision 23585)
@@ -15,5 +15,5 @@
 	/*No loads*/
 }/*}}}*/
-void SmbAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void SmbAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 	::CreateNodes(nodes,iomodel,SmbAnalysisEnum,P1Enum);
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/analyses/SmbAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmbAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SmbAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.cpp	(revision 23585)
@@ -10,5 +10,5 @@
 void SmoothAnalysis::CreateLoads(Loads* loads, IoModel* iomodel){/*{{{*/
 }/*}}}*/
-void SmoothAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void SmoothAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	::CreateNodes(nodes,iomodel,SmoothAnalysisEnum,P1Enum);
Index: /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/SmoothAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 23585)
@@ -496,5 +496,5 @@
 	}
 }/*}}}*/
-void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void StressbalanceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Intermediary*/
@@ -537,9 +537,13 @@
 			iomodel->FindConstant(&finiteelement,"md.flowequation.fe_FS");
 		}
-		iomodel->FetchData(3,"md.flowequation.borderSSA","md.flowequation.vertex_equation","md.stressbalance.referential");
-		if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderFS");
-		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,approximation);
-		iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.vertex_equation",
+		if(!isamr){
+			iomodel->FetchData(3,"md.flowequation.borderSSA","md.flowequation.vertex_equation","md.stressbalance.referential");
+			if(iomodel->domaintype!=Domain2DhorizontalEnum) iomodel->FetchData(3,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderFS");
+		}
+		::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,finiteelement,isamr,approximation);
+		if(!isamr){
+			iomodel->DeleteData(6,"md.mesh.vertexonbase","md.mesh.vertexonsurface","md.flowequation.borderSSA","md.flowequation.vertex_equation",
 					"md.stressbalance.referential","md.flowequation.borderFS");
+		}
 	}
 	else{
@@ -556,5 +560,5 @@
 			for(int i=0;i<iomodel->numberofelements;i++) approximations[iomodel->numberofvertices+i] = FSvelocityEnum;
 			for(int i=0;i<iomodel->numberofvertices;i++) approximations[iomodel->numberofvertices+iomodel->numberofelements+i] = FSpressureEnum;
-			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,MINIcondensedEnum,0,approximations);
+			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,MINIcondensedEnum,isamr,0,approximations);
 			xDelete<int>(approximations);
 
@@ -575,5 +579,5 @@
 			int* approximations = xNew<int>(iomodel->numberofvertices);
 			for(int i=0;i<iomodel->numberofvertices;i++) approximations[i] = IoCodeToEnumVertexEquation(reCast<int>(iomodel->Data("md.flowequation.vertex_equation")[i]));
-			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,P1Enum,0,approximations);
+			::CreateNodes(nodes,iomodel,StressbalanceAnalysisEnum,P1Enum,isamr,0,approximations);
 			xDelete<int>(approximations);
 		}
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.cpp	(revision 23585)
@@ -76,5 +76,5 @@
 
 }/*}}}*/
-void StressbalanceSIAAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void StressbalanceSIAAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Intermediaries*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceSIAAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 23585)
@@ -74,5 +74,5 @@
 
 }/*}}}*/
-void StressbalanceVerticalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void StressbalanceVerticalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*return if not 3d mesh*/
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 23585)
@@ -91,5 +91,5 @@
 
 }/*}}}*/
-void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void ThermalAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int finiteelement;
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.cpp	(revision 23585)
@@ -12,5 +12,5 @@
 	return;
 }/*}}}*/
-void UzawaPressureAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
+void UzawaPressureAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr){/*{{{*/
 
 	int finiteelement;
Index: /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/analyses/UzawaPressureAnalysis.h	(revision 23585)
@@ -15,5 +15,5 @@
 		void CreateConstraints(Constraints* constraints,IoModel* iomodel);
 		void CreateLoads(Loads* loads, IoModel* iomodel);
-		void CreateNodes(Nodes* nodes,IoModel* iomodel);
+		void CreateNodes(Nodes* nodes,IoModel* iomodel,bool isamr=false);
 		int  DofsPerNode(int** doflist,int domaintype,int approximation);
 		void UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23585)
@@ -2609,6 +2609,5 @@
 	int newnumberofvertices	= -1;
 	int newnumberofelements = -1;
-	bool* my_elements			= NULL;
-	int* my_vertices			= NULL;
+
 	int elementswidth       = this->GetElementsWidth();//just tria elements in this version
 	int amrtype,basalforcing_model;
@@ -2620,5 +2619,5 @@
 		#if defined(_HAVE_NEOPZ_) && !defined(_HAVE_AD_)
 		case AmrNeopzEnum: this->ReMeshNeopz(&newnumberofvertices,&newnumberofelements,&newx,&newy,&newz,&newelementslist); break;
-								 #endif
+		#endif
 
 		#if defined(_HAVE_BAMG_) && !defined(_HAVE_AD_)
@@ -2629,27 +2628,57 @@
 	}
 
+	/*Create iomodel for model processing*/
+	IoModel* iomodel = new IoModel();
+	this->parameters->FindParam(&iomodel->domaintype,DomainTypeEnum);
+	this->parameters->FindParam(&iomodel->domaindim ,DomainDimensionEnum);
+	this->parameters->FindParam(&iomodel->meshelementtype,MeshElementtypeEnum);
+	iomodel->numberofvertices = newnumberofvertices;
+	iomodel->numberofelements = newnumberofelements;
+	iomodel->elements         = newelementslist;
+	iomodel->AddConstant(new IoConstant(0,"md.rifts.numrifts"));
+	iomodel->AddConstant(new IoConstant(false,"md.transient.isoceancoupling"));
+	bool temp; int tempint;
+	this->parameters->FindParam(&temp,FlowequationIsSIAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSIA"));
+	this->parameters->FindParam(&temp,FlowequationIsSSAEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isSSA"));
+	this->parameters->FindParam(&temp,FlowequationIsL1L2Enum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isL1L2"));
+	this->parameters->FindParam(&temp,FlowequationIsHOEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isHO"));
+	this->parameters->FindParam(&temp,FlowequationIsFSEnum); iomodel->AddConstant(new IoConstant(temp,"md.flowequation.isFS"));
+	this->parameters->FindParam(&tempint,MasstransportStabilizationEnum); iomodel->AddConstant(new IoConstant(tempint,"md.masstransport.stabilization"));
+	iomodel->AddConstant(new IoConstant(P1Enum,"md.flowequation.fe_SSA"));
+
 	/*Partitioning the new mesh. Maybe ElementsAndVerticesPartitioning.cpp could be modified to set this without iomodel.*/
-	this->ElementsAndVerticesPartitioning(newnumberofvertices,newnumberofelements,elementswidth,newelementslist,&my_elements,&my_vertices);
-
-	/*Create vertices*/
-	Vertices* new_vertices=new Vertices();
-	this->CreateVertices(newnumberofvertices,newnumberofelements,elementswidth,newelementslist,my_vertices,newx,newy,newz,new_vertices);
+	::ElementsAndVerticesPartitioning(iomodel);
 
 	/*Creating elements*/
 	/*Just Tria in this version*/
 	Elements* new_elements=new Elements();
-	this->CreateElements(newnumberofelements,elementswidth,newelementslist,my_elements,new_elements);
+	this->CreateElements(newnumberofelements,elementswidth,newelementslist,iomodel->my_elements,new_elements);
+
+	/*Create vertices*/
+	Vertices* new_vertices=new Vertices();
+	CreateNumberNodeToElementConnectivity(iomodel);
+	::CreateVertices(new_elements,new_vertices,iomodel,TransientSolutionEnum,true);
+	for(int i=0;i<new_vertices->Size();i++){
+		Vertex *vertex=(Vertex*)new_vertices->GetObjectByOffset(i);
+		int     sid = vertex->Sid();
+		vertex->x=newx[sid];
+		vertex->y=newy[sid];
+		vertex->z=newz[sid];
+	}
 
 	/*Creating materials*/
 	Materials* new_materials=new Materials();
-	this->CreateMaterials(newnumberofelements,my_elements,new_materials);
+	this->CreateMaterials(newnumberofelements,iomodel->my_elements,new_materials);
 
 	/*Creating nodes and constraints*/
 	/*Just SSA (2D) and P1 in this version*/
-	Constraints** new_constraints_list = xNew<Constraints*>(this->nummodels);
-	Nodes** new_nodes_list = xNew<Nodes*>(this->nummodels);
+	Constraints **new_constraints_list = xNew<Constraints*>(this->nummodels);
+	Nodes       **new_nodes_list       = xNew<Nodes*>(this->nummodels);
 
 	this->analysis_counter=-1;
 	for(int i=0;i<this->nummodels;i++){//create nodes for each analysis in analysis_type_list
+
+		int analysis_enum = this->analysis_type_list[i];
+		if(VerboseMProcessor()) _printf0_("   creating datasets for analysis " << EnumToStringx(analysis_enum) << "\n");
 
 		if(this->loads_list[i]->Size()!=0) _error_("not supported yet");
@@ -2657,11 +2686,10 @@
 		new_nodes_list[i] = new Nodes();
 
-		int analysis_enum = this->analysis_type_list[i];
-
 		/*As the domain is 2D, it is not necessary to create nodes for this analysis*/
 		if(analysis_enum==StressbalanceVerticalAnalysisEnum) continue;
-
-		this->CreateNodes(newnumberofvertices,my_vertices,analysis_enum,new_nodes_list[i]);
-		this->UpdateElements(newnumberofelements,newelementslist,my_elements,i,new_elements);
+		Analysis* analysis = EnumToAnalysis(analysis_enum);
+		analysis->CreateNodes(new_nodes_list[i],iomodel,true);
+		delete analysis;
+		this->UpdateElements(newnumberofelements,newelementslist,iomodel->my_elements,i,new_elements);
 		this->CreateConstraints(new_vertices,analysis_enum,new_constraints_list[i]);
 
@@ -2748,6 +2776,7 @@
 	/*Cleanup*/
 	xDelete<IssmDouble>(newz);
-	xDelete<int>(my_vertices);
-	xDelete<bool>(my_elements);
+	/*Delete iomodel, but make sure to not erase some pointers*/
+	iomodel->elements = NULL;
+	delete iomodel;
 }
 /*}}}*/
@@ -3164,41 +3193,4 @@
 }
 /*}}}*/
-void FemModel::CreateVertices(int newnumberofvertices,int newnumberofelements,int elementswidth,int* newelementslist,int* my_vertices,IssmDouble* newx,IssmDouble* newy,IssmDouble* newz,Vertices* vertices){/*{{{*/
-
-	/*newelementslist is in Matlab indexing*/
-
-	/*Creating connectivity table*/
-	int* connectivity=NULL;
-	connectivity=xNewZeroInit<int>(newnumberofvertices);
-
-	for(int i=0;i<newnumberofelements;i++){
-		for(int j=0;j<elementswidth;j++){
-			int vertexid = newelementslist[elementswidth*i+j];
-			_assert_(vertexid>0 && vertexid-1<newnumberofvertices);//Matlab indexing
-			connectivity[vertexid-1]+=1;//Matlab to C indexing
-		}
-	}
-
-	/*Create vertex and insert in vertices*/
-	for(int i=0;i<newnumberofvertices;i++){
-		if(my_vertices[i]){
-			Vertex *newvertex=new Vertex();
-			newvertex->id=i+1;
-			newvertex->sid=i;
-			newvertex->pid=UNDEF;
-			newvertex->x=newx[i];
-			newvertex->y=newy[i];
-			newvertex->z=newz[i];
-			newvertex->domaintype=Domain2DhorizontalEnum;
-			newvertex->sigma=0.;
-			newvertex->connectivity=connectivity[i];
-			newvertex->clone=false;//itapopo check this
-			vertices->AddObject(newvertex);
-		}
-	}
-
-	xDelete<int>(connectivity);
-}
-/*}}}*/
 void FemModel::CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements){/*{{{*/
 
@@ -3261,49 +3253,4 @@
 }
 /*}}}*/
-void FemModel::CreateNodes(int newnumberofvertices,int* my_vertices,int analysis_enum,Nodes* nodes){/*{{{*/
-
-	int lid=0;
-	for(int j=0;j<newnumberofvertices;j++){
-		if(my_vertices[j]){
-
-			Node* newnode=new Node();
-
-			/*id: */
-			newnode->id=j+1;
-			newnode->sid=j;
-			newnode->lid=lid++;
-			newnode->analysis_enum=analysis_enum;
-
-			/*Initialize coord_system: Identity matrix by default*/
-			for(int k=0;k<3;k++) for(int l=0;l<3;l++) newnode->coord_system[k][l]=0.0;
-			for(int k=0;k<3;k++) newnode->coord_system[k][k]=1.0;
-
-			/*indexing:*/
-			newnode->indexingupdate=true;
-
-			Analysis* analysis=EnumToAnalysis(analysis_enum);
-			int *doftypes=NULL;
-			int numdofs=analysis->DofsPerNode(&doftypes,Domain2DhorizontalEnum,SSAApproximationEnum);
-			newnode->indexing.Init(numdofs,false,doftypes);
-			xDelete<int>(doftypes);
-			delete analysis;
-			if(analysis_enum==StressbalanceAnalysisEnum)
-				newnode->SetApproximation(SSAApproximationEnum);
-			else
-				newnode->SetApproximation(0);
-
-			/*Stressbalance Horiz*/
-			if(analysis_enum==StressbalanceAnalysisEnum){
-				// itapopo this code is rarely used.
-				/*Coordinate system provided, convert to coord_system matrix*/
-				//XZvectorsToCoordinateSystem(&this->coord_system[0][0],&iomodel->Data(StressbalanceReferentialEnum)[j*6]);
-				//_assert_(sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]) >1.e-4);
-
-			}
-			nodes->AddObject(newnode);
-		}
-	}
-}
-/*}}}*/
 void FemModel::GetMesh(Vertices* femmodel_vertices, Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, int** pelementslist){/*{{{*/
 
@@ -3592,77 +3539,4 @@
 	}
 	return;
-}
-/*}}}*/
-void FemModel::ElementsAndVerticesPartitioning(int& newnumberofvertices,int& newnumberofelements,int& elementswidth,int* newelementslist,bool** pmy_elements,int** pmy_vertices){/*{{{*/
-
-	/*newelementslist come in Matlab indexing*/
-
-	int *epart			= NULL; //element partitioning.
-	int *npart			= NULL; //node partitioning.
-	int *index 			= NULL; //elements in C indexing
-	int edgecut			= 1;
-	int numflag			= 0;
-	int etype			= 1;
-	int my_rank			= IssmComm::GetRank();
-	int numprocs		= IssmComm::GetSize();
-	bool *my_elements = NULL;
-	int *my_vertices  = NULL;
-
-	_assert_(newnumberofvertices>0);
-	_assert_(newnumberofelements>0);
-	epart=xNew<int>(newnumberofelements);
-	npart=xNew<int>(newnumberofvertices);
-   index=xNew<int>(elementswidth*newnumberofelements);
-
-	for (int i=0;i<newnumberofelements;i++){
-   	for (int j=0;j<elementswidth;j++){
-      	*(index+elementswidth*i+j)=(*(newelementslist+elementswidth*i+j))-1; //-1 for C indexing in Metis
-      }
-   }
-
-	/*Partition using Metis:*/
-	if (numprocs>1){
-#ifdef _HAVE_METIS_
-		METIS_PartMeshNodalPatch(&newnumberofelements,&newnumberofvertices, index, &etype, &numflag, &numprocs, &edgecut, epart, npart);
-#else
-		_error_("metis has not beed installed. Cannot run with more than 1 cpu");
-#endif
-	}
-	else if (numprocs==1){
-		/*METIS does not know how to deal with one cpu only!*/
-		for (int i=0;i<newnumberofelements;i++) epart[i]=0;
-		for (int i=0;i<newnumberofvertices;i++) npart[i]=0;
-	}
-	else _error_("At least one processor is required");
-
-	my_vertices=xNew<int>(newnumberofvertices);
-	my_elements=xNew<bool>(newnumberofelements);
-	for(int i=0;i<newnumberofvertices;i++) my_vertices[i]=0;
-	for(int i=0;i<newnumberofelements;i++) my_elements[i]=false;
-
-	/*Start figuring out, out of the partition, which elements belong to this cpu: */
-	for(int i=0;i<newnumberofelements;i++){
-		/*!All elements have been partitioned above, only deal with elements for this cpu: */
-		if(my_rank==epart[i]){
-			my_elements[i]=true;
-			/*Now that we are here, we can also start building the list of vertices belonging to this cpu partition: we use
-			 *the  element index to do this. For each element n, we know index[n][0:2] holds the indices (matlab indexing)
-			 into the vertices coordinates. If we start plugging 1 into my_vertices for each index[n][i] (i=0:2), then my_vertices
-			 will hold which vertices belong to this partition*/
-			for(int j=0;j<elementswidth;j++){
-				_assert_(newelementslist[elementswidth*i+j]-1<newnumberofvertices);//newelementslist is in Matlab indexing
-				my_vertices[newelementslist[elementswidth*i+j]-1]=1;//newelementslist is in Matlab indexing
-			}
-		}
-	}
-
-	/*Assign output pointers:*/
-	*pmy_elements=my_elements;
-	*pmy_vertices=my_vertices;
-
-	/*Free ressources:*/
-	xDelete<int>(epart);
-	xDelete<int>(npart);
-	xDelete<int>(index);
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 23585)
@@ -179,13 +179,10 @@
 		void GetMeshOnPartition(Vertices* femmodel_vertices,Elements* femmodel_elements,IssmDouble** px, IssmDouble** py, IssmDouble** pz, int** pelementslist,int** psidtoindex);
 		void GetGroundediceLevelSet(IssmDouble** pmasklevelset);
-		void CreateVertices(int newnumberofvertices,int newnumberofelements,int elementswidth,int* newelementslist,int* my_vertices,IssmDouble* newx,IssmDouble* newy,IssmDouble* newz,Vertices* vertices);
 		void CreateElements(int newnumberofelements,int elementswidth,int* newelementslist,bool* my_elements,Elements* elements);
 		void CreateMaterials(int newnumberofelements,bool* my_elements,Materials* materials);
-		void CreateNodes(int newnumberofvertices,int* my_vertices,int analysis_enum,Nodes* nodes);
 		void CreateConstraints(Vertices* newfemmodel_vertices,int analysis_enum,Constraints* newfemmodel_constraints);
 		void GetInputs(int* pnumP0inputs,IssmDouble** pP0inputs,int** pP0input_enums,int** pP0input_interp,int* pnumP1inputs,IssmDouble** pP1inputs,int** pP1input_enums,int** pP1input_interp);
 		void InterpolateInputs(Vertices* newfemmodel_vertices,Elements* newfemmodel_elements);
 		void UpdateElements(int newnumberofelements,int* newelementslist,bool* my_elements,int analysis_counter,Elements* newelements);
-		void ElementsAndVerticesPartitioning(int& newnumberofvertices,int& newnumberofelements,int& elementswidth,int* newelementslist,bool** pmy_elements,int** pmy_vertices);
 		void WriteMeshInResults(void);
 		void WriteErrorEstimatorsInResults(void);
Index: /issm/trunk-jpl/src/c/classes/Node.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/Node.cpp	(revision 23585)
@@ -21,5 +21,5 @@
 }
 /*}}}*/
-Node::Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int in_approximation){/*{{{*/
+Node::Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int in_approximation,bool isamr){/*{{{*/
 
 	/*Intermediary*/
@@ -51,4 +51,7 @@
 	else
 	 this->approximation=0;
+
+	/*Stop here if AMR*/
+	if(isamr) return;
 
 	/*Stressbalance Horiz*/
Index: /issm/trunk-jpl/src/c/classes/Node.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Node.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/Node.h	(revision 23585)
@@ -41,5 +41,5 @@
 		/*Node constructors, destructors*/
 		Node();
-		Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int approximation_in);
+		Node(int node_id,int node_sid,int node_lid,int node_pid,int io_index,bool isclone,IoModel* iomodel,int analysis_enum,int approximation_in,bool isamr);
 		~Node();
 
Index: /issm/trunk-jpl/src/c/classes/Vertex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/Vertex.cpp	(revision 23585)
@@ -20,5 +20,5 @@
 }
 /*}}}*/
-Vertex::Vertex(int vertex_id, int vertex_sid,int vertex_lid,int vertex_pid,bool vertex_clone, IoModel* iomodel){/*{{{*/
+Vertex::Vertex(int vertex_id, int vertex_sid,int vertex_lid,int vertex_pid,bool vertex_clone, IoModel* iomodel,bool isamr){/*{{{*/
 
 	/*Checks in debugging mode*/
@@ -26,43 +26,55 @@
 
 	/*IDs*/
-	this->id  = vertex_id;
-	this->sid = vertex_sid;
-	this->pid = vertex_pid;
-	this->lid = vertex_lid;
+	this->id    = vertex_id;
+	this->sid   = vertex_sid;
+	this->pid   = vertex_pid;
+	this->lid   = vertex_lid;
 	this->clone = vertex_clone;
 
-	/*Coordinates*/
-	_assert_(iomodel->Data("md.mesh.x") && iomodel->Data("md.mesh.y") && iomodel->Data("md.mesh.z"));
-	this->x            = iomodel->Data("md.mesh.x")[vertex_sid];
-	this->y            = iomodel->Data("md.mesh.y")[vertex_sid];
-	this->z            = iomodel->Data("md.mesh.z")[vertex_sid];
+	/*Properties from iomodel*/
+	_assert_(iomodel->numbernodetoelementconnectivity);
+	this->connectivity = iomodel->numbernodetoelementconnectivity[vertex_sid];
 	this->domaintype   = iomodel->domaintype;
-	if(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long")){
-		this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
-		this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
-	}
-
-	switch(iomodel->domaintype){
-		case Domain3DEnum:
-			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
-			this->sigma = (iomodel->Data("md.mesh.z")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
-			break;
-		case Domain3DsurfaceEnum:
-			_assert_(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long") && iomodel->Data("md.mesh.r"));
+
+	/*Coordinates, only if not AMR*/
+	if(!isamr){
+		_assert_(iomodel->Data("md.mesh.x") && iomodel->Data("md.mesh.y") && iomodel->Data("md.mesh.z"));
+		this->x            = iomodel->Data("md.mesh.x")[vertex_sid];
+		this->y            = iomodel->Data("md.mesh.y")[vertex_sid];
+		this->z            = iomodel->Data("md.mesh.z")[vertex_sid];
+		if(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long")){
 			this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
 			this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
-			this->R            = iomodel->Data("md.mesh.r")[vertex_sid];
-			break;
-		case Domain2DhorizontalEnum:
-			this->sigma = 0.;
-			break;
-		case Domain2DverticalEnum:
-			_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
-			this->sigma = (iomodel->Data("md.mesh.y")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
-			break;
-	}
-
-	_assert_(iomodel->numbernodetoelementconnectivity);
-	this->connectivity = iomodel->numbernodetoelementconnectivity[vertex_sid];
+		}
+
+		switch(iomodel->domaintype){
+			case Domain3DEnum:
+				_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+				this->sigma = (iomodel->Data("md.mesh.z")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
+				break;
+			case Domain3DsurfaceEnum:
+				_assert_(iomodel->Data("md.mesh.lat") && iomodel->Data("md.mesh.long") && iomodel->Data("md.mesh.r"));
+				this->latitute     = iomodel->Data("md.mesh.lat")[vertex_sid];
+				this->longitude    = iomodel->Data("md.mesh.long")[vertex_sid];
+				this->R            = iomodel->Data("md.mesh.r")[vertex_sid];
+				break;
+			case Domain2DhorizontalEnum:
+				this->sigma = 0.;
+				break;
+			case Domain2DverticalEnum:
+				_assert_(iomodel->Data("md.geometry.base") && iomodel->Data("md.geometry.thickness"));
+				this->sigma = (iomodel->Data("md.mesh.y")[vertex_sid]-iomodel->Data("md.geometry.base")[vertex_sid])/(iomodel->Data("md.geometry.thickness")[vertex_sid]);
+				break;
+		}
+	}
+	else{
+		this->x         = 0.;
+		this->y         = 0.;
+		this->z         = 0.;
+		this->latitute  = 0.;
+		this->longitude = 0.;
+		this->R         = 0.;
+		this->sigma     = 0.;
+	}
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Vertex.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Vertex.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/classes/Vertex.h	(revision 23585)
@@ -37,5 +37,5 @@
 		/*Vertex constructors, destructors {{{*/
 		Vertex();
-		Vertex(int id, int sid,int lid,int pid,bool clone, IoModel* iomodel);
+		Vertex(int id, int sid,int lid,int pid,bool clone, IoModel* iomodel,bool isamr);
 		~Vertex();
 		/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 23585)
@@ -7,4 +7,28 @@
 #include "../../shared/shared.h"
 #include "./ModelProcessorx.h"
+
+#define MAXCONNECTIVITY 5
+
+bool IsVertexInRank(int* vertices_ranks,int* vertices_proc_count,int vid,int rank){/*{{{*/
+
+	/*See if node is already in partition*/
+	for(int k=0;k<vertices_proc_count[vid];k++){
+		if(vertices_ranks[MAXCONNECTIVITY*vid+k] == rank) return true;
+	}
+
+	return false;
+}/*}}}*/
+int  VertexMasterRank(int* vertices_ranks,int vid){/*{{{*/
+	return vertices_ranks[MAXCONNECTIVITY*vid+0];
+}/*}}}*/
+void AddVertexToRank(int* vertices_ranks,int* vertices_proc_count,int vid,int rank){/*{{{*/
+
+	/*See if node is already in partition, return if this is the case*/
+	if(IsVertexInRank(vertices_ranks,vertices_proc_count,vid,rank)) return;
+
+	/*This rank has not been marked for this node just yet so go ahead and add it*/
+	vertices_ranks[MAXCONNECTIVITY*vid+vertices_proc_count[vid]] = rank;
+	vertices_proc_count[vid]++;
+}/*}}}*/
 
 void CreateElements(Elements* elements,IoModel* iomodel,const int nummodels){/*{{{*/
@@ -235,19 +259,9 @@
 
 }/*}}}*/
-void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type){/*{{{*/
-
-	/*Fetch parameters: */
-	bool isoceancoupling;
-	iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
-
-	/*Fetch data that will be used by the Vertex Constructor*/
-	iomodel->FetchData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
-	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->FetchData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
-	else iomodel->FetchDataToInput(elements,"md.mesh.scale_factor",MeshScaleFactorEnum,1.);
-	if (isoceancoupling) iomodel->FetchData(2,"md.mesh.lat","md.mesh.long");
-	if (solution_type!=LoveSolutionEnum) CreateNumberNodeToElementConnectivity(iomodel);
-
-	const int MAXCONNECTIVITY = 5;
-	int*      epart = iomodel->epart;
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type,bool isamr){/*{{{*/
+
+
+	/*Get element partitionning*/
+	int* epart = iomodel->epart;
 
 	/*Determine element width*/
@@ -271,40 +285,22 @@
 	int* vertices_proc_count = xNewZeroInit<int>(iomodel->numberofvertices);
 
-	/*Create vector of size total nbv, initialized with -1, that will keep track of local ids*/
-	int* vertices_lids  = xNew<int>(iomodel->numberofvertices);
-	for(int i=0;i<iomodel->numberofvertices;i++) vertices_lids[i] = -1;
-
 	/*Go through all elements and mark all vertices for all partitions*/
-	int  lid = 0;
 	for(int i=0;i<iomodel->numberofelements;i++){
 		for(int j=0;j<elements_width;j++){
-
 			/*Get current vertex sid*/
 			int vid = iomodel->elements[elements_width*i+j]-1;
-
-			/*See if it has already been marked*/
-			bool found = false;
-			for(int k=0;k<vertices_proc_count[vid];k++){
-				if(vertices_ranks[MAXCONNECTIVITY*vid+k] == epart[i]){
-					found = true;
-					break; 
-				}
-			}
-
-			/*On go below if this vertex has not been seen yet in this partition*/
-			if(!found){
-				/*This rank has not been marked for this vertex just yet so go ahead and mark it*/
-				vertices_ranks[MAXCONNECTIVITY*vid+vertices_proc_count[vid]] = epart[i];
-				vertices_proc_count[vid]++;
-
-				/*Keep track of local ids!*/
-				if(epart[i]==my_rank){
-					vertices_lids[vid] = lid;
-					lid++;
-				}
-
-				/*Make sure we don't go too far in the table*/
-				if(vertices_proc_count[vid]>MAXCONNECTIVITY) _error_("need to increase MAXCONNECTIVITY (this is hard coded, contact ISSM developer)");
-			}
+			AddVertexToRank(vertices_ranks,vertices_proc_count,vid,epart[i]);
+		}
+	}
+
+	/*Create vector of size total numnodes, initialized with -1, that will keep track of local ids*/
+	int  lid = 0;
+	int* vertices_lids  = xNew<int>(iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(IsVertexInRank(vertices_ranks,vertices_proc_count,i,my_rank)){
+			vertices_lids[i] = lid++;
+		}
+		else{
+			vertices_lids[i] = -1;
 		}
 	}
@@ -377,5 +373,4 @@
 		}
 	}
-	xDelete<int>(vertices_proc_count);
 
 	/*Final step: prepare pids (parallel ids), first count number of masters for each proc*/
@@ -401,20 +396,56 @@
 	xDelete<int>(rank_offsets);
 
-	/*Go ahead and create vertices now that we have all we need*/
-	for(int i=0;i<iomodel->numberofvertices;i++){
-		if(vertices_lids[i]!=-1){
-			bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
-			vertices->AddObject(new Vertex(i+1,i,vertices_lids[i],vertices_pids[i],isclone,iomodel));
-		}
-	}
-	xDelete<int>(vertices_ranks);
+	/*Create Vertices, depending on the constructor type: */
+	if(solution_type!=LoveSolutionEnum) CreateNumberNodeToElementConnectivity(iomodel);
+	if(!isamr){
+		bool isoceancoupling;
+		iomodel->FindConstant(&isoceancoupling,"md.transient.isoceancoupling");
+
+		iomodel->FetchData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+		if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->FetchData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+		else iomodel->FetchDataToInput(elements,"md.mesh.scale_factor",MeshScaleFactorEnum,1.);
+		if (isoceancoupling) iomodel->FetchData(2,"md.mesh.lat","md.mesh.long");
+
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			if(vertices_lids[i]!=-1){
+				bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+				vertices->AddObject(new Vertex(i+1,i,vertices_lids[i],vertices_pids[i],isclone,iomodel,isamr));
+			}
+		}
+
+		/*Free data: */
+		iomodel->DeleteData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
+		if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
+		if (isoceancoupling) iomodel->DeleteData(2,"md.mesh.lat","md.mesh.long");
+	}
+	else{
+		for(int i=0;i<iomodel->numberofvertices;i++){
+			if(vertices_lids[i]!=-1){
+				bool isclone = (vertices_ranks[MAXCONNECTIVITY*i+0]!=my_rank);
+				vertices->AddObject(new Vertex(i+1,i,vertices_lids[i],vertices_pids[i],isclone,iomodel,isamr));
+			}
+		}
+	}
+
 	xDelete<int>(vertices_lids);
 	xDelete<int>(vertices_pids);
 
+	/*Final step, create my_vertices*/
+	_assert_(!iomodel->my_vertices);
+	iomodel->my_vertices = xNew<bool>(iomodel->numberofvertices);
+	for(int i=0;i<iomodel->numberofvertices;i++){
+		if(IsVertexInRank(vertices_ranks,vertices_proc_count,i,my_rank)){
+			iomodel->my_vertices[i] = true;
+		}
+		else{
+			iomodel->my_vertices[i] = false;
+		}
+	}
+
 	/*Free data: */
-	iomodel->DeleteData(6,"md.mesh.x","md.mesh.y","md.mesh.z","md.geometry.base","md.geometry.thickness","md.mask.ice_levelset");
-	if (iomodel->domaintype == Domain3DsurfaceEnum) iomodel->DeleteData(3,"md.mesh.lat","md.mesh.long","md.mesh.r");
-	if (isoceancoupling) iomodel->DeleteData(2,"md.mesh.lat","md.mesh.long");
-
+	xDelete<int>(vertices_ranks);
+	xDelete<int>(vertices_proc_count);
+
+	/*Assign communicators*/
 	vertices->common_send=common_send;
 	vertices->common_recv=common_recv;
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNodes.cpp	(revision 23585)
@@ -33,5 +33,5 @@
 }/*}}}*/
 
-void CreateNodes(Nodes* nodes, IoModel* iomodel,int analysis,int finite_element,int approximation,int* approximations){
+void CreateNodes(Nodes* nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr,int approximation,int* approximations){
 
 	/*Intermediaries*/
@@ -538,8 +538,21 @@
 	}/*}}}*/
 	/*Vertex pairing for stressbalance{{{*/
-	if(analysis==StressbalanceAnalysisEnum || analysis==StressbalanceVerticalAnalysisEnum){
+	if(!isamr & (analysis==StressbalanceAnalysisEnum || analysis==StressbalanceVerticalAnalysisEnum)){
 		int *vertex_pairing = NULL;
 		int  numvertex_pairing;
 		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
+		_assert_(numvertex_pairing==0 || finite_element==P1Enum);
+		for(int i=0;i<numvertex_pairing;i++){
+			int nid1 = vertex_pairing[2*i+0]-1;
+			int nid2 = vertex_pairing[2*i+1]-1;
+			for(int j=0;j<nodes_proc_count[nid1];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid2,nodes_ranks[MAXCONNECTIVITY*nid1+j]);
+			for(int j=0;j<nodes_proc_count[nid2];j++) AddNodeToRank(nodes_ranks,nodes_proc_count,nid1,nodes_ranks[MAXCONNECTIVITY*nid2+j]);
+		}
+		xDelete<int>(vertex_pairing);
+	}
+	if(!isamr & analysis==MasstransportAnalysisEnum){
+		int *vertex_pairing = NULL;
+		int  numvertex_pairing;
+		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
 		_assert_(numvertex_pairing==0 || finite_element==P1Enum);
 		for(int i=0;i<numvertex_pairing;i++){
@@ -657,5 +670,5 @@
 			int io_index = 0;
 			if(i<iomodel->numberofvertices) io_index = i;
-			Node* node=new Node(i+1,i,nodes_lids[i],nodes_pids[i],io_index,isclone,iomodel,analysis,nodes_approx[i]);
+			Node* node=new Node(i+1,i,nodes_lids[i],nodes_pids[i],io_index,isclone,iomodel,analysis,nodes_approx[i],isamr);
 			if(finite_element==MINIcondensedEnum || finite_element==P1bubblecondensedEnum){
 				/*Bubble function is collapsed, needs to constrain it, maybe this is not the best place to do this, but that's life!*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 23584)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp	(revision 23585)
@@ -81,7 +81,6 @@
 	}
 
-	/*Create my_vertices and my_elements, used by each partition */
+	/*Create my_elements, used by each partition */
 	bool *my_elements = xNewZeroInit<bool>(iomodel->numberofelements);
-	bool *my_vertices = xNewZeroInit<bool>(iomodel->numberofvertices);
 
 	/*Start figuring out, out of the partition, which elements belong to this cpu: */
@@ -89,40 +88,9 @@
 
 		/*!All elements have been partitioned above, only deal with elements for this cpu: */
-		if(my_rank==epart[i]){ 
-			my_elements[i]=true;
-			/*Now that we are here, we can also start building the list of vertices belonging to this cpu partition: we use 
-			 *the  element index to do this. For each element n, we know index[n][0:2] holds the indices (matlab indexing) 
-			 into the vertices coordinates. If we start plugging 1 into my_vertices for each index[n][i] (i=0:2), then my_vertices 
-			 will hold which vertices belong to this partition*/
-			for(int j=0;j<elements_width;j++){
-				my_vertices[iomodel->elements[elements_width*i+j]-1]=true;
-			}
-		}
+		if(my_rank==epart[i]) my_elements[i]=true;
 	}
-
-	/*We might have vertex_pairing in which case, some vertices have to be
-	 * cloned: penpair has 2 nodes that are poointing toward 2 vertices.
-	 * The 2 vertices must be in the same cpu as the penpair (only do this in non AMR mode, i.e. fid!=NULL)*/
-	//if(!iomodel->dummy){
-		int *vertex_pairing = NULL;
-		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.stressbalance.vertex_pairing");
-		for(int i=0;i<numvertex_pairing;i++){
-			if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
-				my_vertices[vertex_pairing[2*i+1]-1]=true;
-			}
-		}
-		xDelete<int>(vertex_pairing);
-		iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,"md.masstransport.vertex_pairing");
-		for(int i=0;i<numvertex_pairing;i++){
-			if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){
-				my_vertices[vertex_pairing[2*i+1]-1]=true; 
-			}
-		}
-		xDelete<int>(vertex_pairing);
-	//}
 
 	/*Assign pointers to iomodel*/
 	iomodel->epart      =epart;
 	iomodel->my_elements=my_elements;
-	iomodel->my_vertices=my_vertices;
 }
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 23584)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h	(revision 23585)
@@ -14,5 +14,5 @@
 void CreateElements(Elements* elements,IoModel* iomodel,int nummodels);
 void CreateMaterials(Elements* elements,Materials* materials,IoModel* iomodel,int nummodels);
-void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type);
+void CreateVertices(Elements* elements,Vertices* vertices,IoModel* iomodel,int solution_type,bool isamr=false);
 void CreateParameters(Parameters*parameters,IoModel* iomodel,char* rootpath,FILE* toolkitfile,const int solution_type);
 void CreateParametersAutodiff(Parameters* parameters,IoModel* iomodel);
@@ -24,5 +24,5 @@
 void UpdateElementsAndMaterialsDakota(Elements* elements,Materials* materials, IoModel* iomodel);
 void UpdateElementsTransient(Elements* elements,Parameters* parameters,IoModel* iomodel);
-void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,int approximation=NoneApproximationEnum,int* approximations=NULL);
+void CreateNodes(Nodes*nodes, IoModel* iomodel,int analysis,int finite_element,bool isamr=false,int approximation=NoneApproximationEnum,int* approximations=NULL);
 
 /*partitioning: */
