Index: /issm/trunk-jpl/m4/issm_options.m4
===================================================================
--- /issm/trunk-jpl/m4/issm_options.m4	(revision 16370)
+++ /issm/trunk-jpl/m4/issm_options.m4	(revision 16371)
@@ -1766,4 +1766,22 @@
 	AC_MSG_RESULT($HAVE_SLOPE)
 	dnl }}}
+	dnl with-meshdeformation{{{
+		AC_ARG_WITH([meshdeformation],
+					AS_HELP_STRING([--with-meshdeformation = YES], [compile with meshdeformation capabilities (default is yes)]),
+					[MESHDEFORMATION=$withval],[MESHDEFORMATION=yes]) 
+		  AC_MSG_CHECKING(for meshdeformation capability compilation)
+
+		  if test "x$MESHDEFORMATION" = "xyes"; then
+
+			dnl defaults
+			  HAVE_MESHDEFORMATION=yes
+
+			  AC_DEFINE([_HAVE_MESHDEFORMATION_],[1],[with meshdeformation capability])
+		  else
+				HAVE_MESHDEFORMATION=no
+		  fi
+	  AM_CONDITIONAL([MESHDEFORMATION], [test x$HAVE_MESHDEFORMATION = xyes])
+	  AC_MSG_RESULT($HAVE_MESHDEFORMATION)
+	  dnl }}}
 	dnl with-groundingline{{{
 	AC_ARG_WITH([groundingline],
Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 16370)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 16371)
@@ -528,4 +528,11 @@
 					  ./analyses/bedslope_core.cpp
 #}}}
+#MeshDeformation sources  {{{
+meshdeformation_sources =  ./modules/ModelProcessorx/MeshDeformation/UpdateElementsMeshDeformation.cpp\
+					  ./modules/ModelProcessorx/MeshDeformation/CreateNodesMeshDeformation.cpp \
+					  ./modules/ModelProcessorx/MeshDeformation/CreateConstraintsMeshDeformation.cpp\
+					  ./modules/ModelProcessorx/MeshDeformation/CreateLoadsMeshDeformation.cpp\
+					  ./analyses/meshdeformation_core.cpp
+#}}}
 #Gia sources  {{{
 gia_sources =  ./analyses/gia_core.cpp\
@@ -934,4 +941,8 @@
 endif
 
+if MESHDEFORMATION
+issm_sources  +=  $(meshdeformation_sources)
+endif
+
 if GROUNDINGLINE
 issm_sources +=  $(groundingline_sources)
Index: /issm/trunk-jpl/src/c/analyses/analyses.h
===================================================================
--- /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 16370)
+++ /issm/trunk-jpl/src/c/analyses/analyses.h	(revision 16371)
@@ -26,4 +26,5 @@
 void surfaceslope_core(FemModel* femmodel);
 void bedslope_core(FemModel* femmodel);
+void meshdeformation_core(FemModel* femmodel);
 void control_core(FemModel* femmodel);
 void controltao_core(FemModel* femmodel);
Index: /issm/trunk-jpl/src/c/analyses/meshdeformation_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/meshdeformation_core.cpp	(revision 16371)
+++ /issm/trunk-jpl/src/c/analyses/meshdeformation_core.cpp	(revision 16371)
@@ -0,0 +1,30 @@
+/*!\file: meshdeformation_core.cpp
+ * \brief: core of the slope solution 
+ */ 
+
+#include "./analyses.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../solutionsequences/solutionsequences.h"
+#include "../modules/modules.h"
+
+void meshdeformation_core(FemModel* femmodel){
+
+	/*parameters: */
+	bool save_results;
+
+	/*Recover some parameters: */
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+
+	if(VerboseSolution()) _printf0_("computing mesh deformation (elasticity)...\n");
+
+	/*Call on core computations: */
+	femmodel->SetCurrentConfiguration(MeshdeformationAnalysisEnum);
+	solutionsequence_linear(femmodel);
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("saving results:\n");
+	}
+
+}
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16370)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 16371)
@@ -3209,5 +3209,6 @@
 	int         i,j;
 	int         analysis_type,approximation;
-	IssmDouble  alpha2,Jdet2d;
+	int         indices[2];
+	IssmDouble  alpha2,Jdet;
 	IssmDouble  FSreconditioning,viscosity;
 	IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
@@ -3215,10 +3216,58 @@
 	IssmDouble  xyz_list_seg[NUMVERTICES1D][3];
 	Friction   *friction = NULL;
-	GaussTria  *gauss    = NULL;
 
 	/*Initialize Element matrix and return if necessary*/
 	if(IsFloating() || !HasEdgeOnBed()) return NULL;
 
-	_error_("STOP");
+	/*Fetch number of nodes and dof for this finite element*/
+	int vnumnodes = this->NumberofNodesVelocity();
+	int pnumnodes = this->NumberofNodesPressure();
+	int  numdof   = vnumnodes*NDOF2 + pnumnodes*NDOF1;
+
+	/*Prepare coordinate system list*/
+	int* cs_list = xNew<int>(vnumnodes+pnumnodes);
+	for(i=0;i<vnumnodes;i++) cs_list[i]           = XYEnum;
+	for(i=0;i<pnumnodes;i++) cs_list[vnumnodes+i] = PressureEnum;
+
+	/*Initialize Element matrix and vectors*/
+	ElementMatrix* Ke        = new ElementMatrix(nodes,vnumnodes+pnumnodes,this->parameters,FSvelocityEnum);
+	IssmDouble*    BFriction = xNew<IssmDouble>(2*numdof);
+	IssmDouble*    D         = xNewZeroInit<IssmDouble>(2*2);
+
+	/*Retrieve all inputs and parameters*/
+	GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+	parameters->FindParam(&analysis_type,AnalysisTypeEnum);
+	parameters->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
+	Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);
+
+	/*Get vertex indices that lie on bed*/
+	this->EdgeOnBedIndices(&indices[0],&indices[1]);
+	for(i=0;i<NUMVERTICES1D;i++) for(j=0;j<2;j++) xyz_list_seg[i][j]=xyz_list[indices[i]][j];
+
+	/*build friction object, used later on: */
+	friction=new Friction("1d",inputs,matpar,analysis_type);
+
+	/* Start looping on the number of gauss 1d (nodes on the bedrock) */
+	GaussTria* gauss=new GaussTria(indices[0],indices[1],2);
+	for(int ig=gauss->begin();ig<gauss->end();ig++){
+
+		gauss->GaussPoint(ig);
+
+		GetSegmentJacobianDeterminant(&Jdet,&xyz_list_seg[0][0],gauss);
+
+		_error_("STOP");
+	}
+
+	/*DO NOT Transform Coordinate System: this stiffness matrix is already expressed in tangential coordinates*/
+	//TransformStiffnessMatrixCoord(Ke,nodes,(vnumnodes+pnumnodes),cs_list);
+
+	/*Clean up and return*/
+	delete gauss;
+	delete friction;
+	xDelete<IssmDouble>(BFriction);
+	xDelete<IssmDouble>(D);
+	xDelete<int>(cs_list);
+	return Ke;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 16370)
+++ /issm/trunk-jpl/src/c/classes/Elements/TriaRef.cpp	(revision 16371)
@@ -57,5 +57,5 @@
 	 *       Bi=[ dN/dx ]
 	 *          [ dN/dy ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -87,5 +87,5 @@
 	 *          [   0           dN/dy  ]
 	 *          [ 1/2*dN/dy  1/2*dN/dx ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -122,5 +122,5 @@
 	 *          [       0       dN/dy   ]
 	 *          [  1/2*dN/dy  1/2*dN/dx ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -215,5 +215,5 @@
 	 *					[ phi_p ]
 	 *					[  0    ]
-	 *	where phi is the interpolation function for node i.
+	 *	where phi is the finiteelement function for node i.
 	 *	Same thing for Bb except the last column that does not exist.
 	 */
@@ -271,5 +271,5 @@
 	 *					[  0  ]
 	 *					[ phi ]
-	 *	where phi is the interpolation function for node i.
+	 *	where phi is the finiteelement function for node i.
 	 */
 
@@ -317,5 +317,5 @@
 	 *       Bi=[ N ]
 	 *          [ N ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B_prog has been allocated already, of size: 2x(NDOF1*numnodes)
@@ -348,5 +348,5 @@
 	 *                [   dN/dx  2*dN/dy ]
 	 *                [   dN/dy    dN/dx ]
-	 * where hNis the interpolation function for node i.
+	 * where hNis the finiteelement function for node i.
 	 *
 	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -383,5 +383,5 @@
 	 *               [  dN/dy  dN/dx ]
 	 N               [  dN/dx  dN/dy ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume Bprime has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -418,5 +418,5 @@
 	 *       Bi_prime=[ dN/dx ]
 	 *                [ dN/dy ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B' has been allocated already, of size: 3x(NDOF2*numnodes)
@@ -447,5 +447,5 @@
 	 *                 Bi=[ N   0 ]
 	 *                    [ 0   N ]
-	 * where N is the interpolation function for node i.
+	 * where N is the finiteelement function for node i.
 	 *
 	 * We assume B has been allocated already, of size: 2 x (numdof*numnodes)
@@ -542,11 +542,11 @@
 }
 /*}}}*/
-/*FUNCTION TriaRef::GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int interpolation){{{*/
-void TriaRef::GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int interpolation){
+/*FUNCTION TriaRef::GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int finiteelement){{{*/
+void TriaRef::GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int finiteelement){
 	/*This routine returns the values of the nodal functions  at the gaussian point.*/
 
 	_assert_(basis);
 
-	switch(interpolation){
+	switch(finiteelement){
 		case P1Enum: case P1DGEnum:
 			basis[0]=gauss->coord1;
@@ -687,6 +687,13 @@
 }
 /*}}}*/
-/*FUNCTION TriaRef::GetNodalFunctionsDerivatives{{{*/
+/*FUNCTION TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss){{{*/
 void TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss){
+
+	GetNodalFunctionsDerivatives(dbasis,xyz_list,gauss,this->element_type);
+
+}
+/*}}}*/
+/*FUNCTION TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss,int finiteelement){{{*/
+void TriaRef::GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss,int finiteelement){
 
 	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
@@ -695,9 +702,9 @@
 
 	/*Fetch number of nodes for this finite element*/
-	int numnodes = this->NumberofNodes();
+	int numnodes = this->NumberofNodes(finiteelement);
 
 	/*Get nodal functions derivatives in reference triangle*/
 	IssmDouble* dbasis_ref=xNew<IssmDouble>(2*numnodes);
-	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss); 
+	GetNodalFunctionsDerivativesReference(dbasis_ref,gauss,finiteelement); 
 
 	/*Get Jacobian invert: */
@@ -784,12 +791,21 @@
 }
 /*}}}*/
-/*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference{{{*/
+/*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss){{{*/
 void TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss){
 	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
 	 * natural coordinate system) at the gaussian point. */
 
+	GetNodalFunctionsDerivativesReference(dbasis,gauss,this->element_type);
+
+}
+/*}}}*/
+/*FUNCTION TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss,int finiteelement){{{*/
+void TriaRef::GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss,int finiteelement){
+	/*This routine returns the values of the nodal functions derivatives  (with respect to the 
+	 * natural coordinate system) at the gaussian point. */
+
 	_assert_(dbasis && gauss);
 
-	switch(this->element_type){
+	switch(finiteelement){
 		case P1Enum: case P1DGEnum:
 			/*Nodal function 1*/
@@ -882,6 +898,6 @@
 }
 /*}}}*/
-/*FUNCTION TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussTria* gauss,int interpolation){{{*/
-void TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussTria* gauss,int interpolation){
+/*FUNCTION TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussTria* gauss,int finiteelement){{{*/
+void TriaRef::GetInputValue(IssmDouble* p, IssmDouble* plist, GaussTria* gauss,int finiteelement){
 
 	/*Output*/
@@ -889,9 +905,9 @@
 
 	/*Fetch number of nodes for this finite element*/
-	int numnodes = this->NumberofNodes(interpolation);
+	int numnodes = this->NumberofNodes(finiteelement);
 
 	/*Get nodal functions*/
 	IssmDouble* basis=xNew<IssmDouble>(numnodes);
-	GetNodalFunctions(basis, gauss,interpolation);
+	GetNodalFunctions(basis, gauss,finiteelement);
 
 	/*Calculate parameter for this Gauss point*/
@@ -909,8 +925,8 @@
 }
 /*}}}*/
-/*FUNCTION TriaRef::NumberofNodes(int interpolation){{{*/
-int TriaRef::NumberofNodes(int interpolation){
-
-	switch(interpolation){
+/*FUNCTION TriaRef::NumberofNodes(int finiteelement){{{*/
+int TriaRef::NumberofNodes(int finiteelement){
+
+	switch(finiteelement){
 		case P1Enum:                return NUMNODESP1;
 		case P1DGEnum:              return NUMNODESP1;
Index: /issm/trunk-jpl/src/c/classes/Elements/TriaRef.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/TriaRef.h	(revision 16370)
+++ /issm/trunk-jpl/src/c/classes/Elements/TriaRef.h	(revision 16371)
@@ -38,5 +38,5 @@
 		void GetJacobianInvert(IssmDouble*  Jinv, IssmDouble* xyz_list,GaussTria* gauss);
 		void GetNodalFunctions(IssmDouble* basis,GaussTria* gauss);
-		void GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int interpolation);
+		void GetNodalFunctions(IssmDouble* basis,GaussTria* gauss,int finiteelement);
 		void GetNodalFunctionsVelocity(IssmDouble* basis, GaussTria* gauss);
 		void GetNodalFunctionsPressure(IssmDouble* basis, GaussTria* gauss);
@@ -45,13 +45,15 @@
 		void GetSegmentBprimeFlux(IssmDouble* Bprime,GaussTria* gauss, int index1,int index2);
 		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss);
+		void GetNodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list, GaussTria* gauss,int finiteelement);
 		void GetNodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,GaussTria* gauss);
 		void GetNodalFunctionsDerivativesPressure(IssmDouble* dbasis,IssmDouble* xyz_list,GaussTria* gauss);
 		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss);
+		void GetNodalFunctionsDerivativesReference(IssmDouble* dbasis,GaussTria* gauss,int finiteelement);
 		void GetInputValue(IssmDouble* pp, IssmDouble* plist, GaussTria* gauss);
-		void GetInputValue(IssmDouble* pp, IssmDouble* plist, GaussTria* gauss,int interpolation);
+		void GetInputValue(IssmDouble* pp, IssmDouble* plist, GaussTria* gauss,int finiteelement);
 		void GetInputDerivativeValue(IssmDouble* pp, IssmDouble* plist,IssmDouble* xyz_list, GaussTria* gauss);
 
 		int  NumberofNodes(void);
-		int  NumberofNodes(int interpolation);
+		int  NumberofNodes(int finiteelement);
 		int  NumberofNodesVelocity(void);
 		int  NumberofNodesPressure(void);
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateConstraintsMeshDeformation.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateConstraintsMeshDeformation.cpp	(revision 16371)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateConstraintsMeshDeformation.cpp	(revision 16371)
@@ -0,0 +1,13 @@
+/*
+ * CreateConstraintsMeshDeformation.c:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void	CreateConstraintsMeshDeformation(Constraints** pconstraints, IoModel* iomodel){
+
+	/*No constraints*/
+}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateLoadsMeshDeformation.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateLoadsMeshDeformation.cpp	(revision 16371)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateLoadsMeshDeformation.cpp	(revision 16371)
@@ -0,0 +1,13 @@
+/*! \file CreateLoadsMeshDeformation.c:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../ModelProcessorx.h"
+
+void	CreateLoadsMeshDeformation(Loads** ploads, IoModel* iomodel){
+
+	/*No loads*/
+
+}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateNodesMeshDeformation.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateNodesMeshDeformation.cpp	(revision 16371)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/CreateNodesMeshDeformation.cpp	(revision 16371)
@@ -0,0 +1,16 @@
+/*
+ * CreateNodesMeshDeformation.c:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	CreateNodesMeshDeformation(Nodes** pnodes, IoModel* iomodel){
+
+	if(iomodel->meshtype==Mesh3DEnum) iomodel->FetchData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
+	CreateNodes(pnodes,iomodel,MeshdeformationAnalysisEnum,P1Enum);
+	iomodel->DeleteData(2,MeshVertexonbedEnum,MeshVertexonsurfaceEnum);
+}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/UpdateElementsMeshDeformation.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/UpdateElementsMeshDeformation.cpp	(revision 16371)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/MeshDeformation/UpdateElementsMeshDeformation.cpp	(revision 16371)
@@ -0,0 +1,30 @@
+/*
+ * UpdateElementsMeshDeformation:
+ */
+
+#include "../../../toolkits/toolkits.h"
+#include "../../../classes/classes.h"
+#include "../../../shared/shared.h"
+#include "../../MeshPartitionx/MeshPartitionx.h"
+#include "../ModelProcessorx.h"
+
+void	UpdateElementsMeshDeformation(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
+
+	/*Update elements: */
+	int counter=0;
+	for(int i=0;i<iomodel->numberofelements;i++){
+		if(iomodel->my_elements[i]){
+			Element* element=(Element*)elements->GetObjectByOffset(counter);
+			element->Update(i,iomodel,analysis_counter,analysis_type,P1Enum);
+			counter++;
+		}
+	}
+
+	iomodel->FetchDataToInput(elements,SurfaceEnum);
+	iomodel->FetchDataToInput(elements,BedEnum);
+	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
+	if(iomodel->meshtype==Mesh3DEnum){
+		iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
+		iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
+	}
+}
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16370)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 16371)
@@ -332,4 +332,6 @@
 	GiaSolutionEnum,
 	GiaAnalysisEnum,
+	MeshdeformationSolutionEnum,
+	MeshdeformationAnalysisEnum,
 	/*}}}*/
 	/*Approximations {{{*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16370)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 16371)
@@ -338,4 +338,6 @@
 		case GiaSolutionEnum : return "GiaSolution";
 		case GiaAnalysisEnum : return "GiaAnalysis";
+		case MeshdeformationSolutionEnum : return "MeshdeformationSolution";
+		case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis";
 		case ApproximationEnum : return "Approximation";
 		case NoneApproximationEnum : return "NoneApproximation";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16370)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 16371)
@@ -344,4 +344,6 @@
 	      else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
 	      else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
+	      else if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum;
+	      else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
 	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
 	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
@@ -381,10 +383,10 @@
 	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
 	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
-	      else if (strcmp(name,"Input")==0) return InputEnum;
-	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"IntParam")==0) return IntParamEnum;
+	      if (strcmp(name,"Input")==0) return InputEnum;
+	      else if (strcmp(name,"IntInput")==0) return IntInputEnum;
+	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
 	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
 	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
@@ -504,10 +506,10 @@
 	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
 	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
-	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
-	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	      if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
+	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
+	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
 	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
 	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16370)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 16371)
@@ -330,4 +330,6 @@
 def GiaSolutionEnum(): return StringToEnum("GiaSolution")[0]
 def GiaAnalysisEnum(): return StringToEnum("GiaAnalysis")[0]
+def MeshdeformationSolutionEnum(): return StringToEnum("MeshdeformationSolution")[0]
+def MeshdeformationAnalysisEnum(): return StringToEnum("MeshdeformationAnalysis")[0]
 def ApproximationEnum(): return StringToEnum("Approximation")[0]
 def NoneApproximationEnum(): return StringToEnum("NoneApproximation")[0]
Index: /issm/trunk-jpl/src/m/enum/MeshdeformationAnalysisEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MeshdeformationAnalysisEnum.m	(revision 16371)
+++ /issm/trunk-jpl/src/m/enum/MeshdeformationAnalysisEnum.m	(revision 16371)
@@ -0,0 +1,11 @@
+function macro=MeshdeformationAnalysisEnum()
+%MESHDEFORMATIONANALYSISENUM - Enum of MeshdeformationAnalysis
+%
+%   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=MeshdeformationAnalysisEnum()
+
+macro=StringToEnum('MeshdeformationAnalysis');
Index: /issm/trunk-jpl/src/m/enum/MeshdeformationSolutionEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/MeshdeformationSolutionEnum.m	(revision 16371)
+++ /issm/trunk-jpl/src/m/enum/MeshdeformationSolutionEnum.m	(revision 16371)
@@ -0,0 +1,11 @@
+function macro=MeshdeformationSolutionEnum()
+%MESHDEFORMATIONSOLUTIONENUM - Enum of MeshdeformationSolution
+%
+%   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=MeshdeformationSolutionEnum()
+
+macro=StringToEnum('MeshdeformationSolution');
