Index: /issm/trunk-jpl/src/c/analyses/SeaiceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/SeaiceAnalysis.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/analyses/SeaiceAnalysis.cpp	(revision 18504)
@@ -10,4 +10,7 @@
 }/*}}}*/
 void SeaiceAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
+	parameters->AddObject(iomodel->CopyConstantObject(SeaiceMinConcentrationEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SeaiceMinThicknessEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(SeaiceMaxThicknessEnum));
 }/*}}}*/
 void SeaiceAnalysis::UpdateElements(Elements* elements,IoModel* iomodel,int analysis_counter,int analysis_type){/*{{{*/
@@ -34,5 +37,5 @@
 	iomodel->FetchDataToInput(elements,SurfaceforcingsWindVxEnum);
 	iomodel->FetchDataToInput(elements,SurfaceforcingsWindVyEnum);
-	iomodel->FetchDataToInput(elements,MaterialsDamageEnum);
+	iomodel->FetchDataToInput(elements,DamageEnum);
 	iomodel->FetchDataToInput(elements,VxStarEnum);
 	iomodel->FetchDataToInput(elements,VyStarEnum);
@@ -40,4 +43,9 @@
 	iomodel->FetchDataToInput(elements,VyEnum);
 	iomodel->FetchDataToInput(elements,SeaiceCoriolisFactorEnum);
+	iomodel->FetchDataToInput(elements,StressTensorPredictorxxEnum);
+	iomodel->FetchDataToInput(elements,StressTensorPredictoryyEnum);
+	iomodel->FetchDataToInput(elements,StressTensorPredictorxyEnum);
+	iomodel->FetchDataToInput(elements,MeshXEnum);
+	iomodel->FetchDataToInput(elements,MeshYEnum);
 }/*}}}*/
 void SeaiceAnalysis::CreateNodes(Nodes* nodes,IoModel* iomodel){/*{{{*/
@@ -71,5 +79,6 @@
 	/* Check if there is ice in this element */
 	Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
-	if(concentration_input->Max()==0.) return NULL;
+	IssmDouble c_min; element->FindParam(&c_min,SeaiceMinConcentrationEnum);
+	if(concentration_input->Max()<=c_min) return NULL;
 
 	/*Intermediaries */
@@ -96,5 +105,6 @@
 	element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum);
 	element->FindParam(&ocean_turning_angle,BasalforcingsOceanTurningAngleEnum);
-	IssmDouble rho_i           = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble rho_i                  = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	IssmDouble time_relaxation_stress = element->GetMaterialParameter(MaterialsTimeRelaxationStressEnum);
 	Input*     thickness_input = element->GetInput(SeaiceThicknessEnum);       _assert_(thickness_input);
 	Input*     vx_input        = element->GetInput(VxEnum);                    _assert_(vx_input);
@@ -103,4 +113,8 @@
 	Input*     oceanvy_input   = element->GetInput(BasalforcingsOceanVyEnum);  _assert_(oceanvy_input);
 
+	/*Get minimum inertia to avoid 0 in the line, and time_ratio*/
+	IssmDouble minimum_inertia = rho_i*0.01;
+	IssmDouble time_ratio=(1-dt/time_relaxation_stress);
+
 	/* Start  looping on the number of gaussian points: */
 	Gauss* gauss=element->NewGauss(2);
@@ -116,5 +130,5 @@
 		/*Create first part of the stiffness matrix*/
 		this->GetM(M,element,xyz_list,gauss);
-		D_scalar=rho_i*thickness*gauss->weight*Jdet;
+		D_scalar=(rho_i*thickness+minimum_inertia)/dt*gauss->weight*Jdet;
 		TripleMultiply(M,1,numdof,1,
 					&D_scalar,1,1,0,
@@ -122,10 +136,10 @@
 					&Ke->values[0],1);
 
-		/*Create Elasitc part*/
+		/*Create Elastic part*/
 		this->GetB(B,element,xyz_list,gauss);
 		this->CreateCTensor(&C[0][0],element,gauss);
 		for(int i=0;i<3;i++){
 			for(int j=0;j<3;j++){
-				C[i][j] = gauss->weight*Jdet*dt*C[i][j];
+				C[i][j] = dt*time_ratio*gauss->weight*Jdet*C[i][j];
 			}
 		}
@@ -141,5 +155,5 @@
 		vy_input->GetInputValue(&vy,gauss);
 		vnorm = sqrt(pow(oceanvx-vx,2) + pow(oceanvy-vy,2));
-		D_scalar = dt*concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm)*cos(ocean_turning_angle)*gauss->weight*Jdet;
+		D_scalar = concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm)*cos(ocean_turning_angle)*gauss->weight*Jdet;
 		TripleMultiply(M,1,numdof,1,
 					&D_scalar,1,1,0,
@@ -160,13 +174,15 @@
 	/* Check if there is ice in this element */
 	Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
-	if(concentration_input->Max()==0.) return NULL;
+	IssmDouble c_min; element->FindParam(&c_min,SeaiceMinConcentrationEnum);
+	if(concentration_input->Max()<=c_min) return NULL;
 
 	/*Intermediaries */
-	IssmDouble  air_coef,ocean_coef,constant_part;
-	IssmDouble  rho_ice,rho_air,rho_ocean,gravity;
+	IssmDouble  air_coef,ocean_coef,constant_part,time_relaxation_stress;
+	IssmDouble  rho_ice,rho_air,rho_ocean,gravity,omega;
 	IssmDouble  vx,vy,vxstar,vystar,windvx,windvy,oceanvx,oceanvy,vnorm;
 	IssmDouble  air_lin_drag_coef,air_quad_drag_coef;
 	IssmDouble  ocean_lin_drag_coef,ocean_quad_drag_coef;
-	IssmDouble  concentration,thickness,coriolis_factor,dt,Jdet;
+	IssmDouble  concentration,thickness,coriolis_factor,dt,Jdet,D_scalar;
+	IssmDouble  sigma_xx,sigma_yy,sigma_xy,sigma_vec[3];
 	IssmDouble  ocean_turning_angle,dssh[2];
 	IssmDouble* xyz_list = NULL;
@@ -177,6 +193,8 @@
 
 	/*Initialize Element vector and vectors*/
-	ElementVector* pe    = element->NewElementVector();
-	IssmDouble*    basis = xNew<IssmDouble>(numnodes);
+	ElementVector* pe      = element->NewElementVector();
+	IssmDouble*    B       = xNew<IssmDouble>(3*numdof);
+	IssmDouble*    basis   = xNew<IssmDouble>(numnodes);
+	IssmDouble     D[3][3] = {0.};
 
 	/*Retrieve all inputs and parameters*/
@@ -192,6 +210,8 @@
 	element->FindParam(&ocean_quad_drag_coef,BasalforcingsOceanQuadDragCoefEnum);
 	element->FindParam(&ocean_turning_angle,BasalforcingsOceanTurningAngleEnum);
-	rho_ice = element->GetMaterialParameter(MaterialsRhoIceEnum);
-	gravity = element->GetMaterialParameter(ConstantsGEnum);
+	rho_ice                = element->GetMaterialParameter(MaterialsRhoIceEnum);
+	gravity                = element->GetMaterialParameter(ConstantsGEnum);
+	omega                  = element->GetMaterialParameter(ConstantsOmegaEnum);
+	time_relaxation_stress = element->GetMaterialParameter(MaterialsTimeRelaxationStressEnum);
 	Input* thickness_input     = element->GetInput(SeaiceThicknessEnum);       _assert_(thickness_input);
 	Input* coriolis_fact_input = element->GetInput(SeaiceCoriolisFactorEnum);  _assert_(coriolis_fact_input);
@@ -205,4 +225,10 @@
 	Input* oceanvy_input       = element->GetInput(BasalforcingsOceanVyEnum);  _assert_(oceanvy_input);
 	Input* oceanssh_input      = element->GetInput(BasalforcingsOceanSshEnum); _assert_(oceanssh_input);
+	Input* sigma_xx_input      = element->GetInput(StressTensorxxEnum);        _assert_(sigma_xx_input);
+	Input* sigma_yy_input      = element->GetInput(StressTensoryyEnum);        _assert_(sigma_yy_input);
+	Input* sigma_xy_input      = element->GetInput(StressTensorxyEnum);        _assert_(sigma_xy_input);
+
+	/*Calculate time_ratio*/
+	IssmDouble time_ratio=(1-dt/time_relaxation_stress);
 
 	/* Start  looping on the number of gaussian points: */
@@ -214,4 +240,5 @@
 		element->JacobianDeterminant(&Jdet,xyz_list,gauss);
 		element->NodalFunctions(basis, gauss);
+		this->GetB(B,element,xyz_list,gauss);
 
 		/*Get all inputs on gauss point*/
@@ -227,4 +254,7 @@
 		oceanvx_input->GetInputValue(&oceanvx,gauss);
 		oceanvy_input->GetInputValue(&oceanvy,gauss);
+		sigma_xx_input->GetInputValue(&sigma_xx,gauss);
+		sigma_yy_input->GetInputValue(&sigma_yy,gauss);
+		sigma_xy_input->GetInputValue(&sigma_xy,gauss);
 		oceanssh_input->GetInputDerivativeValue(&dssh[0],xyz_list,gauss);
 
@@ -239,6 +269,6 @@
 		constant_part = concentration*air_coef*rho_air*(air_lin_drag_coef+air_quad_drag_coef*vnorm);
 		for(int i=0;i<numnodes;i++){
-			pe->values[i*2+0] += dt*constant_part*windvx*Jdet*gauss->weight*basis[i];
-			pe->values[i*2+1] += dt*constant_part*windvy*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+0] += constant_part*windvx*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1] += constant_part*windvy*Jdet*gauss->weight*basis[i];
 		}
 
@@ -247,19 +277,29 @@
 		constant_part = concentration*ocean_coef*rho_ocean*(ocean_lin_drag_coef+ocean_quad_drag_coef*vnorm);
 		for(int i=0;i<numnodes;i++){
-			pe->values[i*2+0] += dt*constant_part*(oceanvy-vy)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
-			pe->values[i*2+1] += dt*constant_part*(vx-oceanvx)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
-
-			pe->values[i*2+0] += dt*constant_part*oceanvx*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
-			pe->values[i*2+1] += dt*constant_part*oceanvy*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+0] += constant_part*omega*(oceanvy-vy)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1] += constant_part*omega*(vx-oceanvx)*sin(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
+
+			pe->values[i*2+0] += constant_part*oceanvx*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1] += constant_part*oceanvy*cos(ocean_turning_angle)*Jdet*gauss->weight*basis[i];
+
+			pe->values[i*2+0] += (-rho_ice*thickness*gravity*omega*dssh[0])*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1] += (-rho_ice*thickness*gravity*omega*dssh[1])*Jdet*gauss->weight*basis[i];
 		}
 
 		/*Coriolis forces (use ustar)*/
 		for(int i=0;i<numnodes;i++){
-			pe->values[i*2+0] += dt*(-rho_ice*thickness*coriolis_factor*vystar)*Jdet*gauss->weight*basis[i];
-			pe->values[i*2+1] += dt*(+rho_ice*thickness*coriolis_factor*vxstar)*Jdet*gauss->weight*basis[i];
-
-			pe->values[i*2+0] += dt*(-rho_ice*thickness*gravity*dssh[0])*Jdet*gauss->weight*basis[i];
-			pe->values[i*2+1] += dt*(-rho_ice*thickness*gravity*dssh[1])*Jdet*gauss->weight*basis[i];
-		}
+			pe->values[i*2+0] += (-rho_ice*thickness*coriolis_factor*vystar)*Jdet*gauss->weight*basis[i];
+			pe->values[i*2+1] += (+rho_ice*thickness*coriolis_factor*vxstar)*Jdet*gauss->weight*basis[i];
+		}
+		
+		/*Add elastic part of previous time step*/
+		sigma_vec[0] = sigma_xx;
+		sigma_vec[1] = sigma_yy;
+		sigma_vec[2] = sigma_xy;
+		D[0][0] = D[1][1] = D[2][2] = time_ratio*thickness*Jdet*gauss->weight;
+		TripleMultiply(B,3,numdof,1,
+					&D[0][0],3,3,0,
+					&sigma_vec[0],3,1,0,
+					&pe->values[0],1);
 	}
 
@@ -267,4 +307,5 @@
 	xDelete<IssmDouble>(xyz_list);
 	xDelete<IssmDouble>(basis);
+	xDelete<IssmDouble>(B);
 	delete gauss;
 	return pe;
@@ -323,6 +364,10 @@
 
 	/*Intermediaries*/
+	IssmDouble          c_min;
 	Vector<IssmDouble>* mask        = NULL;
 	IssmDouble*         serial_mask = NULL;
+
+	/*Get minimum concentration allowed*/
+	femmodel->parameters->FindParam(&c_min,SeaiceMinConcentrationEnum);
 
 	/*Step 1: update mask of active nodes*/
@@ -334,5 +379,5 @@
 		int    numnodes            = element->GetNumberOfNodes();
 		Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
-		if(concentration_input->Max()>0.){
+		if(concentration_input->Max()>c_min){
 			for(int in=0;in<numnodes;in++) mask->SetValue(element->nodes[in]->Sid(),1.,INS_VAL);
 		}
@@ -379,5 +424,5 @@
 
 	/*Get damage input at this location*/
-	Input* damage_input        = element->GetInput(MaterialsDamageEnum);     _assert_(damage_input);
+	Input* damage_input        = element->GetInput(DamageEnum);              _assert_(damage_input);
 	Input* thickness_input     = element->GetInput(SeaiceThicknessEnum);     _assert_(thickness_input);
 	Input* concentration_input = element->GetInput(SeaiceConcentrationEnum); _assert_(concentration_input);
@@ -518,13 +563,10 @@
 
 		/*Get current stress state*/
-		Input*   sigma_xx_input = element->GetInput(StressTensorxxEnum);
-		Input*   sigma_yy_input = element->GetInput(StressTensoryyEnum);
-		Input*   sigma_xy_input = element->GetInput(StressTensorxyEnum);
-		if(sigma_xx_input) sigma_xx_input->GetInputAverage(&sigma_xx);
-		else               sigma_xx = 0.;
-		if(sigma_yy_input) sigma_yy_input->GetInputAverage(&sigma_yy);
-		else               sigma_yy = 0.;
-		if(sigma_xy_input) sigma_xy_input->GetInputAverage(&sigma_xy);
-		else               sigma_xy = 0.;
+		Input*   sigma_xx_input = element->GetInput(StressTensorPredictorxxEnum); _assert_(sigma_xx_input);
+		Input*   sigma_yy_input = element->GetInput(StressTensorPredictoryyEnum); _assert_(sigma_yy_input);
+		Input*   sigma_xy_input = element->GetInput(StressTensorPredictorxyEnum); _assert_(sigma_xy_input);
+		sigma_xx_input->GetInputAverage(&sigma_xx);
+		sigma_yy_input->GetInputAverage(&sigma_yy);
+		sigma_xy_input->GetInputAverage(&sigma_xy);
 
 		/* Compute the invariants of the elastic deformation and instantaneous deformation rate */
@@ -537,9 +579,8 @@
 
 		/* estimate the internal constraints using the current elastic deformation */
-		Input* damage_input    = element->GetInput(MaterialsDamageEnum); _assert_(damage_input);
-		Input* damagenew_input = element->GetInput(MaterialsDamageEnum); _assert_(damagenew_input);//FIXME
+		Input* damage_input    = element->GetInput(DamageEnum); _assert_(damage_input);
 		damage_input->GetInputAverage(&damage);
-		damagenew_input->GetInputAverage(&damage_new);
 		damage_test = damage;
+		damage_new  = damage;
 		if(sigma_n>traction || sigma_n<-compression_max){
 			if(sigma_n>traction){
@@ -564,5 +605,5 @@
 		/* The damage variable is changed */
 		damage_new=damage_test;
-		element->AddInput(MaterialsDamageEnum,&damage_test,P0Enum);//FIXME
+		element->AddInput(DamageEnum,&damage_new,P0Enum);
 
 		/* Recompute the internal stress*/
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 18504)
@@ -105,4 +105,7 @@
 			iomodel->Constant(&this->traction_coef,MaterialsTractionCoefEnum);
 			iomodel->Constant(&this->g,ConstantsGEnum);
+			iomodel->Constant(&this->omega,ConstantsOmegaEnum);
+			iomodel->Constant(&this->time_relaxation_stress,MaterialsTimeRelaxationStressEnum);
+			iomodel->Constant(&this->time_relaxation_damage,MaterialsTimeRelaxationDamageEnum);
 			break;
 		default:
@@ -319,4 +322,7 @@
 		case MaterialsCompressionCoefEnum:				return this->compression_coef;
 		case MaterialsTractionCoefEnum:					return this->traction_coef;
+		case ConstantsOmegaEnum:							return this->omega;
+		case MaterialsTimeRelaxationStressEnum:		return this->time_relaxation_stress;
+		case MaterialsTimeRelaxationDamageEnum:		return this->time_relaxation_damage;
 		default: _error_("Enum "<<EnumToStringx(enum_in)<<" not supported yet");
 	}
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 18503)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.h	(revision 18504)
@@ -30,4 +30,5 @@
 		IssmDouble  thermal_exchange_velocity;
 		IssmDouble  g;
+		IssmDouble  omega;
 		IssmDouble  desfac;
 		IssmDouble  s0p;
@@ -59,4 +60,6 @@
 		IssmDouble compression_coef;
 		IssmDouble traction_coef;
+		IssmDouble time_relaxation_stress;
+		IssmDouble time_relaxation_damage;
 
 	public:
Index: /issm/trunk-jpl/src/c/cores/seaice_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/seaice_core.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/cores/seaice_core.cpp	(revision 18504)
@@ -20,9 +20,11 @@
 	/*Launch solution sequence for the only analysis we are interested in*/
 	femmodel->SetCurrentConfiguration(SeaiceAnalysisEnum);
+	SeaiceAnalysis* analysis = new SeaiceAnalysis();
+	analysis->UpdateDamageAndStress(femmodel);
 	solutionsequence_linear(femmodel);
 
 	if(save_results){
 		if(VerboseSolution()) _printf0_("   saving results\n");
-		int outputs[6] = {VxEnum,VyEnum,VelEnum,SeaiceConcentrationEnum,SeaiceThicknessEnum,MaterialsDamageEnum};
+		int outputs[6] = {VxEnum,VyEnum,VelEnum,SeaiceConcentrationEnum,SeaiceThicknessEnum,DamageEnum};
 		femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],6);
 	}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp	(revision 18504)
@@ -80,5 +80,5 @@
 			break;
 		case MatseaiceEnum:
-			iomodel->FetchDataToInput(elements,MaterialsDamageEnum);
+			iomodel->FetchDataToInput(elements,DamageEnum);
 			for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matseaice(i+1,i,iomodel));
 			break;
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 18503)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 18504)
@@ -50,4 +50,5 @@
 	BaseEnum,
 	ConstantsGEnum,
+	ConstantsOmegaEnum,
 	ConstantsReferencetemperatureEnum,
 	ConstantsYtsEnum,
@@ -198,4 +199,5 @@
 	DamageEvolutionNumRequestedOutputsEnum,
 	DamageEvolutionRequestedOutputsEnum,
+	DamageEnum,
 	NewDamageEnum,
 	MaterialsRhoIceEnum,
@@ -749,4 +751,7 @@
 	SeaiceThicknessEnum,
 	SeaiceConcentrationEnum,
+	SeaiceMinConcentrationEnum,
+	SeaiceMinThicknessEnum,
+	SeaiceMaxThicknessEnum,
 	SeaiceSpcvxEnum,
 	SeaiceSpcvyEnum,
@@ -769,5 +774,6 @@
 	MaterialsPoissonEnum,
 	MaterialsYoungModulusEnum,
-	MaterialsDamageEnum,
+	MaterialsTimeRelaxationStressEnum,
+	MaterialsTimeRelaxationDamageEnum,
 	MaterialsRidgingExponentEnum,
 	MaterialsCohesionEnum,
@@ -777,4 +783,7 @@
 	VxStarEnum,
 	VyStarEnum,
+	StressTensorPredictorxxEnum,
+	StressTensorPredictoryyEnum,
+	StressTensorPredictorxyEnum,
 	/*}}}*/
 	MaximumNumberOfDefinitionsEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 18504)
@@ -58,4 +58,5 @@
 		case BaseEnum : return "Base";
 		case ConstantsGEnum : return "ConstantsG";
+		case ConstantsOmegaEnum : return "ConstantsOmega";
 		case ConstantsReferencetemperatureEnum : return "ConstantsReferencetemperature";
 		case ConstantsYtsEnum : return "ConstantsYts";
@@ -206,4 +207,5 @@
 		case DamageEvolutionNumRequestedOutputsEnum : return "DamageEvolutionNumRequestedOutputs";
 		case DamageEvolutionRequestedOutputsEnum : return "DamageEvolutionRequestedOutputs";
+		case DamageEnum : return "Damage";
 		case NewDamageEnum : return "NewDamage";
 		case MaterialsRhoIceEnum : return "MaterialsRhoIce";
@@ -708,4 +710,7 @@
 		case SeaiceThicknessEnum : return "SeaiceThickness";
 		case SeaiceConcentrationEnum : return "SeaiceConcentration";
+		case SeaiceMinConcentrationEnum : return "SeaiceMinConcentration";
+		case SeaiceMinThicknessEnum : return "SeaiceMinThickness";
+		case SeaiceMaxThicknessEnum : return "SeaiceMaxThickness";
 		case SeaiceSpcvxEnum : return "SeaiceSpcvx";
 		case SeaiceSpcvyEnum : return "SeaiceSpcvy";
@@ -728,5 +733,6 @@
 		case MaterialsPoissonEnum : return "MaterialsPoisson";
 		case MaterialsYoungModulusEnum : return "MaterialsYoungModulus";
-		case MaterialsDamageEnum : return "MaterialsDamage";
+		case MaterialsTimeRelaxationStressEnum : return "MaterialsTimeRelaxationStress";
+		case MaterialsTimeRelaxationDamageEnum : return "MaterialsTimeRelaxationDamage";
 		case MaterialsRidgingExponentEnum : return "MaterialsRidgingExponent";
 		case MaterialsCohesionEnum : return "MaterialsCohesion";
@@ -736,4 +742,7 @@
 		case VxStarEnum : return "VxStar";
 		case VyStarEnum : return "VyStar";
+		case StressTensorPredictorxxEnum : return "StressTensorPredictorxx";
+		case StressTensorPredictoryyEnum : return "StressTensorPredictoryy";
+		case StressTensorPredictorxyEnum : return "StressTensorPredictorxy";
 		case MaximumNumberOfDefinitionsEnum : return "MaximumNumberOfDefinitions";
 		default : return "unknown";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 18503)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 18504)
@@ -58,4 +58,5 @@
 	      else if (strcmp(name,"Base")==0) return BaseEnum;
 	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+	      else if (strcmp(name,"ConstantsOmega")==0) return ConstantsOmegaEnum;
 	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
 	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
@@ -136,9 +137,9 @@
 	      else if (strcmp(name,"HydrologydcSedimentlimitFlag")==0) return HydrologydcSedimentlimitFlagEnum;
 	      else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
-	      else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
+	      if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
+	      else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
 	      else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
 	      else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
@@ -209,4 +210,5 @@
 	      else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum;
 	      else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum;
+	      else if (strcmp(name,"Damage")==0) return DamageEnum;
 	      else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
 	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
@@ -258,10 +260,10 @@
 	      else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum;
 	      else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum;
-	      else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
-	      else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
+	      if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
+	      else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
+	      else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
 	      else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
 	      else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
@@ -381,10 +383,10 @@
 	      else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
 	      else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
-	      else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
-	      else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
+	      if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
+	      else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum;
+	      else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
 	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
 	      else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
@@ -504,10 +506,10 @@
 	      else if (strcmp(name,"Internal")==0) return InternalEnum;
 	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
-	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
-	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Pressure")==0) return PressureEnum;
+	      if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
+	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
+	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
 	      else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
 	      else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
@@ -627,10 +629,10 @@
 	      else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum;
 	      else if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum;
-	      else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
-	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	      if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
+	      else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
+	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
 	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
 	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
@@ -723,4 +725,7 @@
 	      else if (strcmp(name,"SeaiceThickness")==0) return SeaiceThicknessEnum;
 	      else if (strcmp(name,"SeaiceConcentration")==0) return SeaiceConcentrationEnum;
+	      else if (strcmp(name,"SeaiceMinConcentration")==0) return SeaiceMinConcentrationEnum;
+	      else if (strcmp(name,"SeaiceMinThickness")==0) return SeaiceMinThicknessEnum;
+	      else if (strcmp(name,"SeaiceMaxThickness")==0) return SeaiceMaxThicknessEnum;
 	      else if (strcmp(name,"SeaiceSpcvx")==0) return SeaiceSpcvxEnum;
 	      else if (strcmp(name,"SeaiceSpcvy")==0) return SeaiceSpcvyEnum;
@@ -743,14 +748,21 @@
 	      else if (strcmp(name,"MaterialsPoisson")==0) return MaterialsPoissonEnum;
 	      else if (strcmp(name,"MaterialsYoungModulus")==0) return MaterialsYoungModulusEnum;
-	      else if (strcmp(name,"MaterialsDamage")==0) return MaterialsDamageEnum;
+	      else if (strcmp(name,"MaterialsTimeRelaxationStress")==0) return MaterialsTimeRelaxationStressEnum;
+	      else if (strcmp(name,"MaterialsTimeRelaxationDamage")==0) return MaterialsTimeRelaxationDamageEnum;
 	      else if (strcmp(name,"MaterialsRidgingExponent")==0) return MaterialsRidgingExponentEnum;
 	      else if (strcmp(name,"MaterialsCohesion")==0) return MaterialsCohesionEnum;
-	      else if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"MaterialsInternalFrictionCoef")==0) return MaterialsInternalFrictionCoefEnum;
 	      else if (strcmp(name,"MaterialsCompressionCoef")==0) return MaterialsCompressionCoefEnum;
 	      else if (strcmp(name,"MaterialsTractionCoef")==0) return MaterialsTractionCoefEnum;
 	      else if (strcmp(name,"VxStar")==0) return VxStarEnum;
 	      else if (strcmp(name,"VyStar")==0) return VyStarEnum;
+	      else if (strcmp(name,"StressTensorPredictorxx")==0) return StressTensorPredictorxxEnum;
+	      else if (strcmp(name,"StressTensorPredictoryy")==0) return StressTensorPredictoryyEnum;
+	      else if (strcmp(name,"StressTensorPredictorxy")==0) return StressTensorPredictorxyEnum;
 	      else if (strcmp(name,"MaximumNumberOfDefinitions")==0) return MaximumNumberOfDefinitionsEnum;
-         else stage=7;
+         else stage=8;
    }
 	/*If we reach this point, the string provided has not been found*/
