Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 26983)
@@ -211,4 +211,77 @@
 
    this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,&values[0],P1Enum);
+}/*}}}*/
+void       Element::CalvingFromRate(){/*{{{*/
+
+	/*We are provided a calving rate, figure out the x/y components*/
+	int         dim,domaintype;
+	IssmDouble  vx,vy,vel,dphidx,dphidy,dphi,c;
+	IssmDouble  calvingratex[MAXVERTICES];
+	IssmDouble  calvingratey[MAXVERTICES];
+
+	/*Get problem dimension and whether there is moving front or not*/
+	this->FindParam(&domaintype,DomainTypeEnum);
+
+	switch(domaintype){
+		case Domain2DverticalEnum:   dim = 1; break;
+		case Domain2DhorizontalEnum: dim = 2; break;
+		case Domain3DEnum:           dim = 2; break;
+		default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
+	}
+	if(dim==1) _error_("not implemented in 1D...");
+
+	Input *calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
+	Input *vx_input          = this->GetInput(VxEnum);  _assert_(vx_input);
+	Input *vy_input          = this->GetInput(VyEnum); _assert_(vy_input);
+	Input *lsf_slopex_input  = this->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
+	Input *lsf_slopey_input  = this->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
+
+	/*Allocate arrays*/
+	const int NUM_VERTICES = this->GetNumberOfVertices();
+
+	/* Start looping on the number of vertices: */
+	Gauss* gauss=this->NewGauss();
+	for (int iv=0;iv<NUM_VERTICES;iv++){
+		gauss->GaussVertex(iv);
+
+      calvingrate_input->GetInputValue(&c,gauss);
+		vx_input->GetInputValue(&vx,gauss);
+		vy_input->GetInputValue(&vy,gauss);
+		lsf_slopex_input->GetInputValue(&dphidx,gauss);
+		lsf_slopey_input->GetInputValue(&dphidy,gauss);
+
+		vel=sqrt(vx*vx + vy*vy) + 1e-14;
+		dphi=sqrt(dphidx*dphidx+dphidy*dphidy)+ 1e-14;
+
+		if(false){
+			/*Velocity direction*/
+			calvingratex[iv] = c*vx/vel;
+         calvingratey[iv] = c*vy/vel;
+		}
+		else{
+			/*Lelvelset gradient (perpendicular to ice front)*/
+         calvingratex[iv] = c*dphidx/dphi;
+         calvingratey[iv] = c*dphidy/dphi;
+		}
+	}
+
+
+	/*Add to inputs*/
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+	//this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum); /*Do not change calving rate, that's our input!*/
+
+	/*Clean up and return*/
+	delete gauss;
+}/*}}}*/
+void       Element::CalvingSetZeroRate(){/*{{{*/
+
+	/*Set calving rate as 0, this is probably because we are  dealing with discrete calving laws*/
+	IssmDouble  calvingratex[MAXVERTICES] = {0.};
+	IssmDouble  calvingratey[MAXVERTICES] = {0.};
+	IssmDouble  calvingrate[MAXVERTICES]  = {0.};
+	this->AddInput(CalvingratexEnum,&calvingratex[0],P1DGEnum);
+	this->AddInput(CalvingrateyEnum,&calvingratey[0],P1DGEnum);
+	this->AddInput(CalvingCalvingrateEnum,&calvingrate[0],P1DGEnum);
 }/*}}}*/
 void       Element::ComputeLambdaS(){/*{{{*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 26982)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 26983)
@@ -71,4 +71,6 @@
       void               Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,bool isfieldstochastic,int enum_type);
 		void               BasinLinearFloatingiceMeltingRate(IssmDouble* deepwaterel,IssmDouble* upperwatermelt,IssmDouble* upperwaterel,IssmDouble* perturbation);
+		void               CalvingSetZeroRate(void);
+		void               CalvingFromRate(void);
 		void               ComputeLambdaS(void);
 		void               ComputeNewDamage();
@@ -230,5 +232,4 @@
 		virtual void       AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
 		virtual void		 BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");};
-		virtual void       CalvingProjectionXY(void){_error_("not implemented yet");};
 		virtual void       CalvingRateParameterization(void){_error_("not implemented yet");};
 		virtual void       CalvingRateVonmises(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 26983)
@@ -2906,6 +2906,6 @@
 			break;
 		case CalvingLevermannEnum:
-			calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-			calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
+			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
 			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
 			break;
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 26983)
@@ -660,15 +660,7 @@
 		IssmDouble calvingratex,calvingratey,thickness,Jdet,flux_per_area;
 		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
-		Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
-		Input* calvingratex_input=NULL;
-		Input* calvingratey_input=NULL;
-		if(domaintype==Domain2DhorizontalEnum){
-			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-		}
-		else{
-			calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-			calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
-		}
+		Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
 
 		/*Start looping on Gaussian points*/
@@ -794,21 +786,10 @@
 		IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet,flux_per_area;
 		IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
-		Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
-		Input* calvingratex_input=NULL;
-		Input* calvingratey_input=NULL;
-		Input* vx_input=NULL;
-		Input* vy_input=NULL;
-		Input* meltingrate_input=NULL;
-		if(domaintype==Domain2DhorizontalEnum){
-			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-			vx_input=this->GetInput(VxEnum); _assert_(vx_input);
-			vy_input=this->GetInput(VyEnum); _assert_(vy_input);
-			meltingrate_input=this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
-		}
-		else{
-			calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-			calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
-		}
+		Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+		Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+		Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+		Input* vx_input           = this->GetInput(VxEnum); _assert_(vx_input);
+		Input* vy_input           = this->GetInput(VyEnum); _assert_(vy_input);
+		Input* meltingrate_input  = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
 
 		/*Start looping on Gaussian points*/
@@ -4345,4 +4326,8 @@
 	switch(calvinglaw){
 		case DefaultCalvingEnum:
+			calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+			calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+			meltingrate_input = this->GetInput(CalvingMeltingrateEnum);     _assert_(meltingrate_input);
+			break;
 		case CalvingVonmisesEnum:
 			calvingrate_input = this->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
@@ -4355,10 +4340,7 @@
 					break;
 				case Domain2DhorizontalEnum:
+            case Domain3DEnum:
 					calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
 					calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-					break;
-				case Domain3DEnum:
-					calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-					calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
 					break;
 				default: _error_("mesh "<<EnumToStringx(domaintype)<<" not supported yet");
@@ -4407,4 +4389,17 @@
 		switch(calvinglaw){
 			case DefaultCalvingEnum:
+				calvingratex_input->GetInputValue(&c[0],&gauss);
+				calvingratey_input->GetInputValue(&c[1],&gauss);
+				meltingrate_input->GetInputValue(&meltingrate,&gauss);
+				if(groundedice<0) meltingrate = 0.;
+				m[0]=meltingrate*dlsf[0]/norm_dlsf;
+				m[1]=meltingrate*dlsf[1]/norm_dlsf;
+
+				if(norm_dlsf<1.e-10){
+					for(i=0;i<dim;i++){
+						c[i]=0.; m[i]=0.;
+					}
+				}
+				break;
 			case CalvingVonmisesEnum:
 				calvingrate_input->GetInputValue(&calvingrate,&gauss);
@@ -5374,15 +5369,7 @@
 	IssmDouble calvingratex,calvingratey,thickness,Jdet;
 	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
-	Input* thickness_input=this->GetInput(ThicknessEnum); _assert_(thickness_input);
-	Input* calvingratex_input=NULL;
-	Input* calvingratey_input=NULL;
-	if(domaintype==Domain2DhorizontalEnum){
-		calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-		calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-	}
-	else{
-		calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-		calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
-	}
+	Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
 
 	/*Start looping on Gaussian points*/
@@ -5502,22 +5489,11 @@
 	IssmDouble calvingratex,calvingratey,vx,vy,vel,meltingrate,meltingratex,meltingratey,thickness,Jdet,groundedice;
 	IssmDouble rho_ice=FindParam(MaterialsRhoIceEnum);
-	Input* thickness_input = this->GetInput(ThicknessEnum); _assert_(thickness_input);
-	Input *gr_input        = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
-	Input* calvingratex_input=NULL;
-	Input* calvingratey_input=NULL;
-	Input* vx_input=NULL;
-	Input* vy_input=NULL;
-	Input* meltingrate_input=NULL;
-	if(domaintype==Domain2DhorizontalEnum){
-		calvingratex_input=this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
-		calvingratey_input=this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
-		vx_input=this->GetInput(VxEnum); _assert_(vx_input);
-		vy_input=this->GetInput(VyEnum); _assert_(vy_input);
-		meltingrate_input=this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
-	}
-	else{
-		calvingratex_input=this->GetInput(CalvingratexAverageEnum); _assert_(calvingratex_input);
-		calvingratey_input=this->GetInput(CalvingrateyAverageEnum); _assert_(calvingratey_input);
-	}
+	Input* thickness_input    = this->GetInput(ThicknessEnum); _assert_(thickness_input);
+	Input *gr_input           = this->GetInput(MaskOceanLevelsetEnum); _assert_(gr_input);
+	Input* calvingratex_input = this->GetInput(CalvingratexEnum); _assert_(calvingratex_input);
+	Input* calvingratey_input = this->GetInput(CalvingrateyEnum); _assert_(calvingratey_input);
+	Input* vx_input           = this->GetInput(VxEnum); _assert_(vx_input);
+	Input* vy_input           = this->GetInput(VyEnum); _assert_(vy_input);
+	Input* meltingrate_input  = this->GetInput(CalvingMeltingrateEnum); _assert_(meltingrate_input);
 
 	/*Start looping on Gaussian points*/
Index: /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp	(revision 26983)
@@ -15,9 +15,14 @@
 	/*Calculate calving rate*/
 	switch(calvinglaw){
-		case DefaultCalvingEnum:
 		case CalvingMinthicknessEnum:
 		case CalvingHabEnum:
+			femmodel->ElementOperationx(&Element::CalvingSetZeroRate);
+			break;
+		case DefaultCalvingEnum:
+			femmodel->ElementOperationx(&Element::CalvingFromRate);
 			break;
 		case CalvingCrevasseDepthEnum:
+			femmodel->ElementOperationx(&Element::CalvingSetZeroRate);
+			/*rate is 0 but we need to calculate a few things to determine where it will calve*/
 			femmodel->StrainRateparallelx();
 			femmodel->StrainRateeffectivex();
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26982)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 26983)
@@ -662,7 +662,5 @@
 syn keyword cConstant CalvingStressThresholdGroundediceEnum
 syn keyword cConstant CalvinglevermannCoeffEnum
-syn keyword cConstant CalvingratexAverageEnum
 syn keyword cConstant CalvingratexEnum
-syn keyword cConstant CalvingrateyAverageEnum
 syn keyword cConstant CalvingrateyEnum
 syn keyword cConstant CalvingFluxLevelsetEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26982)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 26983)
@@ -658,7 +658,5 @@
 	CalvingStressThresholdGroundediceEnum,
 	CalvinglevermannCoeffEnum,
-	CalvingratexAverageEnum,
 	CalvingratexEnum,
-	CalvingrateyAverageEnum,
 	CalvingrateyEnum,
 	CalvingFluxLevelsetEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 26983)
@@ -664,7 +664,5 @@
 		case CalvingStressThresholdGroundediceEnum : return "CalvingStressThresholdGroundedice";
 		case CalvinglevermannCoeffEnum : return "CalvinglevermannCoeff";
-		case CalvingratexAverageEnum : return "CalvingratexAverage";
 		case CalvingratexEnum : return "Calvingratex";
-		case CalvingrateyAverageEnum : return "CalvingrateyAverage";
 		case CalvingrateyEnum : return "Calvingratey";
 		case CalvingFluxLevelsetEnum : return "CalvingFluxLevelset";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 26982)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 26983)
@@ -655,7 +655,5 @@
 syn keyword juliaConstC CalvingStressThresholdGroundediceEnum
 syn keyword juliaConstC CalvinglevermannCoeffEnum
-syn keyword juliaConstC CalvingratexAverageEnum
 syn keyword juliaConstC CalvingratexEnum
-syn keyword juliaConstC CalvingrateyAverageEnum
 syn keyword juliaConstC CalvingrateyEnum
 syn keyword juliaConstC CalvingFluxLevelsetEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 26982)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 26983)
@@ -679,7 +679,5 @@
 	      else if (strcmp(name,"CalvingStressThresholdGroundedice")==0) return CalvingStressThresholdGroundediceEnum;
 	      else if (strcmp(name,"CalvinglevermannCoeff")==0) return CalvinglevermannCoeffEnum;
-	      else if (strcmp(name,"CalvingratexAverage")==0) return CalvingratexAverageEnum;
 	      else if (strcmp(name,"Calvingratex")==0) return CalvingratexEnum;
-	      else if (strcmp(name,"CalvingrateyAverage")==0) return CalvingrateyAverageEnum;
 	      else if (strcmp(name,"Calvingratey")==0) return CalvingrateyEnum;
 	      else if (strcmp(name,"CalvingFluxLevelset")==0) return CalvingFluxLevelsetEnum;
@@ -752,10 +750,10 @@
 	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
 	      else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum;
+	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
-	      else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum;
-	      else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
+	      if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum;
 	      else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum;
 	      else if (strcmp(name,"Frictionf")==0) return FrictionfEnum;
@@ -875,10 +873,10 @@
 	      else if (strcmp(name,"SealevelBarystaticIceWeights")==0) return SealevelBarystaticIceWeightsEnum;
 	      else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
+	      else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum;
-	      else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum;
-	      else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
+	      if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum;
 	      else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum;
 	      else if (strcmp(name,"SealevelBarystaticHydroWeights")==0) return SealevelBarystaticHydroWeightsEnum;
@@ -998,10 +996,10 @@
 	      else if (strcmp(name,"SmbGdnini")==0) return SmbGdniniEnum;
 	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
+	      else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
+	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum;
-	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
-	      else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
+	      if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum;
 	      else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum;
 	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
@@ -1121,10 +1119,10 @@
 	      else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
 	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
+	      else if (strcmp(name,"Vy")==0) return VyEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"VyBase")==0) return VyBaseEnum;
-	      else if (strcmp(name,"Vy")==0) return VyEnum;
-	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+	      if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
 	      else if (strcmp(name,"VyObs")==0) return VyObsEnum;
 	      else if (strcmp(name,"VyShear")==0) return VyShearEnum;
@@ -1244,10 +1242,10 @@
 	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
 	      else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
+	      else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
+	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
-	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
-	      else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
+	      if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum;
 	      else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum;
 	      else if (strcmp(name,"InputsEND")==0) return InputsENDEnum;
@@ -1367,10 +1365,10 @@
 	      else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum;
 	      else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum;
+	      else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
+	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"GenericOption")==0) return GenericOptionEnum;
-	      else if (strcmp(name,"GenericParam")==0) return GenericParamEnum;
-	      else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
+	      if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum;
 	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
 	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
@@ -1490,10 +1488,10 @@
 	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
 	      else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum;
+	      else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
+	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
          else stage=13;
    }
    if(stage==13){
-	      if (strcmp(name,"NodeSId")==0) return NodeSIdEnum;
-	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
-	      else if (strcmp(name,"None")==0) return NoneEnum;
+	      if (strcmp(name,"None")==0) return NoneEnum;
 	      else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum;
 	      else if (strcmp(name,"NyeCO2")==0) return NyeCO2Enum;
@@ -1613,10 +1611,10 @@
 	      else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum;
 	      else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum;
+	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
          else stage=14;
    }
    if(stage==14){
-	      if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
-	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
-	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
 	      else if (strcmp(name,"Tria")==0) return TriaEnum;
 	      else if (strcmp(name,"TriaInput")==0) return TriaInputEnum;
