Index: /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11404)
+++ /issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp	(revision 11405)
@@ -14,449 +14,446 @@
 int  StringToEnumx(const char* name){
 
-	int stage=0;
+   int  stage=1;
 
-	if(stage==0){
-
-		if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
-		else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
-		else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
-		else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
-		else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
-		else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
-		else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
-		else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum;
-		else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum;
-		else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;
-		else if (strcmp(name,"Bed")==0) return BedEnum;
-		else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
-		else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
-		else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
-		else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;
-		else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;
-		else if (strcmp(name,"DiagnosticIsnewton")==0) return DiagnosticIsnewtonEnum;
-		else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;
-		else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;
-		else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;
-		else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;
-		else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;
-		else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;
-		else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;
-		else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;
-		else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;
-		else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;
-		else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;
-		else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;
-		else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;
-		else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;
-		else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
-		else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
-		else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
-		else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;
-		else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum;
-		else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;
-		else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
-		else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
-		else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;
-		else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum;
-		else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
-		else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
-		else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
-		else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
-		else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;
-		else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum;
-		else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum;
-		else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum;
-		else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;
-		else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum;
-		else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum;
-		else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
-		else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum;
-		else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
-		else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
-		else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
-		else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
-		else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
-		else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
-		else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
-		else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
-		else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
-		else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
-		else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
-		else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
-		else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
-		else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
-		else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
-		else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
-		else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
-		else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
-		else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
-		else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
-		else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
-		else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
-		else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;
-		else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum;
-		else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum;
-		else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
-		else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
-		else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
-		else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
-		else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
-		else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
-		else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
-		else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
-		else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
-		else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
-		else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
-		else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
-		else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
-		else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
-		else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
-		else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
-		else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
-		else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
-		else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
-		else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
-		else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
-		else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
-		else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
-		else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum;
-		else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
-		else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
-		else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
-		else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
-		else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
-		else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
-		else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum;
-		else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
-		else if (strcmp(name,"MeshX")==0) return MeshXEnum;
-		else if (strcmp(name,"MeshY")==0) return MeshYEnum;
-		else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
-		else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
-		else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
-		else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
-		else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
-		else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
-		else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
-		else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
-		else stage=1;
-	}
-
-	if(stage==1){
-
-		if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
-		else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
-		else 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;
-		else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;
-		else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum;
-		else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
-		else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
-		else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
-		else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;
-		else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
-		else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
-		else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
-		else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
-		else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
-		else if (strcmp(name,"Surface")==0) return SurfaceEnum;
-		else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;
-		else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum;
-		else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
-		else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
-		else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
-		else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
-		else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
-		else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
-		else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
-		else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
-		else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
-		else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
-		else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
-		else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
-		else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
-		else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
-		else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
-		else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
-		else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
-		else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
-		else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
-		else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
-		else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
-		else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
-		else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
-		else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
-		else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum;
-		else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
-		else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
-		else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
-		else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
-		else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
-		else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
-		else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
-		else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;
-		else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;
-		else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;
-		else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
-		else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
-		else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;
-		else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
-		else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
-		else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
-		else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
-		else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
-		else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
-		else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
-		else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
-		else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
-		else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
-		else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
-		else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
-		else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
-		else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
-		else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
-		else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
-		else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
-		else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
-		else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
-		else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
-		else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;
-		else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
-		else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;
-		else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;
-		else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;
-		else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
-		else if (strcmp(name,"Loads")==0) return LoadsEnum;
-		else if (strcmp(name,"Materials")==0) return MaterialsEnum;
-		else if (strcmp(name,"Nodes")==0) return NodesEnum;
-		else if (strcmp(name,"Parameters")==0) return ParametersEnum;
-		else if (strcmp(name,"Vertices")==0) return VerticesEnum;
-		else if (strcmp(name,"Results")==0) return ResultsEnum;
-		else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
-		else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
-		else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
-		else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
-		else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
-		else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
-		else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
-		else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
-		else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
-		else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
-		else if (strcmp(name,"Element")==0) return ElementEnum;
-		else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;
-		else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
-		else if (strcmp(name,"FileParam")==0) return FileParamEnum;
-		else if (strcmp(name,"Hook")==0) return HookEnum;
-		else if (strcmp(name,"Icefront")==0) return IcefrontEnum;
-		else 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,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
-		else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
-		else if (strcmp(name,"Matice")==0) return MaticeEnum;
-		else if (strcmp(name,"Matpar")==0) return MatparEnum;
-		else if (strcmp(name,"Node")==0) return NodeEnum;
-		else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
-		else if (strcmp(name,"Param")==0) return ParamEnum;
-		else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
-		else if (strcmp(name,"Pengrid")==0) return PengridEnum;
-		else stage=2;
-	}
-	if(stage==2){
-		if (strcmp(name,"Penpair")==0) return PenpairEnum;
-		else if (strcmp(name,"Penta")==0) return PentaEnum;
-		else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;
-		else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum;
-		else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum;
-		else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
-		else if (strcmp(name,"Segment")==0) return SegmentEnum;
-		else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
-		else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
-		else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
-		else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
-		else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum;
-		else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
-		else if (strcmp(name,"StringParam")==0) return StringParamEnum;
-		else if (strcmp(name,"Tria")==0) return TriaEnum;
-		else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;
-		else if (strcmp(name,"Vertex")==0) return VertexEnum;
-		else if (strcmp(name,"Air")==0) return AirEnum;
-		else if (strcmp(name,"Ice")==0) return IceEnum;
-		else if (strcmp(name,"Melange")==0) return MelangeEnum;
-		else if (strcmp(name,"Water")==0) return WaterEnum;
-		else if (strcmp(name,"Closed")==0) return ClosedEnum;
-		else if (strcmp(name,"Free")==0) return FreeEnum;
-		else if (strcmp(name,"Open")==0) return OpenEnum;
-		else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
-		else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
-		else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
-		else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
-		else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
-		else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
-		else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
-		else if (strcmp(name,"Constant")==0) return ConstantEnum;
-		else if (strcmp(name,"Converged")==0) return ConvergedEnum;
-		else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;
-		else if (strcmp(name,"Fill")==0) return FillEnum;
-		else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
-		else if (strcmp(name,"Friction")==0) return FrictionEnum;
-		else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
-		else if (strcmp(name,"Internal")==0) return InternalEnum;
-		else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;
-		else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
-		else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;
-		else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
-		else if (strcmp(name,"Misfit")==0) return MisfitEnum;
-		else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
-		else if (strcmp(name,"Pressure")==0) return PressureEnum;
-		else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
-		else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
-		else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
-		else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
-		else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
-		else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;
-		else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;
-		else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
-		else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
-		else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
-		else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
-		else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
-		else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
-		else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
-		else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
-		else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
-		else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
-		else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
-		else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
-		else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
-		else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
-		else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
-		else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
-		else if (strcmp(name,"Type")==0) return TypeEnum;
-		else if (strcmp(name,"Vel")==0) return VelEnum;
-		else if (strcmp(name,"Velocity")==0) return VelocityEnum;
-		else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
-		else if (strcmp(name,"Vx")==0) return VxEnum;
-		else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
-		else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
-		else if (strcmp(name,"Vy")==0) return VyEnum;
-		else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
-		else if (strcmp(name,"Vz")==0) return VzEnum;
-		else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum;
-		else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum;
-		else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;
-		else if (strcmp(name,"VzStokes")==0) return VzStokesEnum;
-		else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
-		else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
-		else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
-		else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
-		else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
-		else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
-		else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
-		else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
-		else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
-		else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
-		else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
-		else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
-		else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
-		else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
-		else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
-		else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
-		else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
-		else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
-		else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
-		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 if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
-		else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
-		else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
-		else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
-		else if (strcmp(name,"P0")==0) return P0Enum;
-		else if (strcmp(name,"P1")==0) return P1Enum;
-		else if (strcmp(name,"P1DG")==0) return P1DGEnum;
-		else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
-		else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
-		else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
-		else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
-		else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
-		else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
-		else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
-		else stage=3;
-	}
-	if(stage==3){
-		if (strcmp(name,"J")==0) return JEnum;
-		else if (strcmp(name,"Patch")==0) return PatchEnum;
-		else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
-		else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum;
-		else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;
-		else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;
-		else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
-		else if (strcmp(name,"Time")==0) return TimeEnum;
-		else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;
-		else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
-		else if (strcmp(name,"MinVel")==0) return MinVelEnum;
-		else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
-		else if (strcmp(name,"MinVx")==0) return MinVxEnum;
-		else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
-		else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
-		else if (strcmp(name,"MinVy")==0) return MinVyEnum;
-		else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
-		else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
-		else if (strcmp(name,"MinVz")==0) return MinVzEnum;
-		else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
-		else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
-		else if (strcmp(name,"Relative")==0) return RelativeEnum;
-		else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
-		else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
-		else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
-		else if (strcmp(name,"None")==0) return NoneEnum;
-		else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
-		else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
-		else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
-		else if (strcmp(name,"Colinear")==0) return ColinearEnum;
-		else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
-		else if (strcmp(name,"Fset")==0) return FsetEnum;
-		else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
-		else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
-		else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
-		else if (strcmp(name,"Gradient")==0) return GradientEnum;
-		else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
-		else if (strcmp(name,"Gset")==0) return GsetEnum;
-		else if (strcmp(name,"Index")==0) return IndexEnum;
-		else if (strcmp(name,"Indexed")==0) return IndexedEnum;
-		else if (strcmp(name,"Intersect")==0) return IntersectEnum;
-		else if (strcmp(name,"Nodal")==0) return NodalEnum;
-		else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
-		else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
-		else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
-		else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
-		else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
-		else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
-		else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
-		else if (strcmp(name,"Regular")==0) return RegularEnum;
-		else if (strcmp(name,"Scaled")==0) return ScaledEnum;
-		else if (strcmp(name,"Separate")==0) return SeparateEnum;
-		else if (strcmp(name,"Sset")==0) return SsetEnum;
-		else if (strcmp(name,"Verbose")==0) return VerboseEnum;
-		else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
-		else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
-		else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
-		else if (strcmp(name,"XY")==0) return XYEnum;
-		else if (strcmp(name,"XYZP")==0) return XYZPEnum;
-		else if (strcmp(name,"Option")==0) return OptionEnum;
-		else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
-		else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
-		else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
-		else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
-		else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;
-		else if (strcmp(name,"Paterson")==0) return PatersonEnum;
-		else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
-		else _error_("Enum %s not found",name);
-	}
-
+   if(stage==1){
+	      if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;
+	      else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;
+	      else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;
+	      else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;
+	      else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
+	      else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
+	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
+	      else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum;
+	      else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum;
+	      else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;
+	      else if (strcmp(name,"Bed")==0) return BedEnum;
+	      else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;
+	      else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;
+	      else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;
+	      else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;
+	      else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;
+	      else if (strcmp(name,"DiagnosticIsnewton")==0) return DiagnosticIsnewtonEnum;
+	      else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;
+	      else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;
+	      else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;
+	      else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;
+	      else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;
+	      else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;
+	      else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;
+	      else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;
+	      else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;
+	      else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;
+	      else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;
+	      else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;
+	      else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;
+	      else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;
+	      else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;
+	      else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;
+	      else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;
+	      else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;
+	      else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum;
+	      else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;
+	      else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;
+	      else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;
+	      else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;
+	      else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum;
+	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
+	      else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;
+	      else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
+	      else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
+	      else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;
+	      else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum;
+	      else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum;
+	      else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum;
+	      else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;
+	      else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum;
+	      else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum;
+	      else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
+	      else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum;
+	      else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;
+	      else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;
+	      else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;
+	      else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;
+	      else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
+	      else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
+	      else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
+	      else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
+	      else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;
+	      else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;
+	      else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;
+	      else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;
+	      else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;
+	      else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
+	      else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;
+	      else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;
+	      else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;
+	      else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;
+	      else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;
+	      else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;
+	      else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;
+	      else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;
+	      else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;
+	      else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum;
+	      else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum;
+	      else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;
+	      else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;
+	      else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;
+	      else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
+	      else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
+	      else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;
+	      else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;
+	      else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
+	      else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;
+	      else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
+	      else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
+	      else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
+	      else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
+	      else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
+	      else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
+	      else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
+	      else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
+	      else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;
+	      else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;
+	      else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;
+	      else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
+	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
+	      else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
+	      else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum;
+	      else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;
+	      else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;
+	      else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;
+	      else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;
+	      else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;
+	      else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;
+	      else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum;
+	      else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;
+	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
+	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
+	      else if (strcmp(name,"MeshZ")==0) return MeshZEnum;
+	      else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;
+	      else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;
+	      else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;
+	      else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;
+	      else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;
+	      else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;
+         else stage=2;
+   }
+   if(stage==2){
+	      if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;
+	      else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;
+	      else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;
+	      else 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;
+	      else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;
+	      else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum;
+	      else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;
+	      else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;
+	      else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;
+	      else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;
+	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
+	      else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
+	      else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;
+	      else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;
+	      else if (strcmp(name,"Surface")==0) return SurfaceEnum;
+	      else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;
+	      else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum;
+	      else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	      else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;
+	      else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;
+	      else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;
+	      else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;
+	      else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;
+	      else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
+	      else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
+	      else if (strcmp(name,"Thickness")==0) return ThicknessEnum;
+	      else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
+	      else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
+	      else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
+	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
+	      else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
+	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
+	      else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
+	      else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
+	      else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
+	      else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
+	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
+	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
+	      else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;
+	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
+	      else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum;
+	      else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;
+	      else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;
+	      else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;
+	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
+	      else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;
+	      else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;
+	      else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;
+	      else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;
+	      else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;
+	      else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;
+	      else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
+	      else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;
+	      else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
+	      else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
+	      else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
+	      else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
+	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
+	      else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;
+	      else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
+	      else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
+	      else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
+	      else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
+	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
+	      else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;
+	      else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;
+	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
+	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
+	      else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;
+	      else if (strcmp(name,"Approximation")==0) return ApproximationEnum;
+	      else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;
+	      else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;
+	      else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;
+	      else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;
+	      else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;
+	      else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;
+	      else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;
+	      else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;
+	      else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;
+	      else if (strcmp(name,"Loads")==0) return LoadsEnum;
+	      else if (strcmp(name,"Materials")==0) return MaterialsEnum;
+	      else if (strcmp(name,"Nodes")==0) return NodesEnum;
+	      else if (strcmp(name,"Parameters")==0) return ParametersEnum;
+	      else if (strcmp(name,"Vertices")==0) return VerticesEnum;
+	      else if (strcmp(name,"Results")==0) return ResultsEnum;
+	      else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;
+	      else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;
+	      else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;
+	      else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;
+	      else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;
+	      else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;
+	      else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;
+	      else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;
+	      else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;
+	      else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;
+	      else if (strcmp(name,"Element")==0) return ElementEnum;
+	      else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;
+	      else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;
+	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
+	      else if (strcmp(name,"Hook")==0) return HookEnum;
+	      else if (strcmp(name,"Icefront")==0) return IcefrontEnum;
+	      else 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,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;
+	      else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;
+	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
+	      else if (strcmp(name,"Matpar")==0) return MatparEnum;
+	      else if (strcmp(name,"Node")==0) return NodeEnum;
+	      else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
+	      else if (strcmp(name,"Param")==0) return ParamEnum;
+	      else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
+         else stage=3;
+   }
+   if(stage==3){
+	      if (strcmp(name,"Pengrid")==0) return PengridEnum;
+	      else if (strcmp(name,"Penpair")==0) return PenpairEnum;
+	      else if (strcmp(name,"Penta")==0) return PentaEnum;
+	      else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;
+	      else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum;
+	      else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum;
+	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+	      else if (strcmp(name,"Segment")==0) return SegmentEnum;
+	      else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;
+	      else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;
+	      else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;
+	      else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;
+	      else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum;
+	      else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;
+	      else if (strcmp(name,"StringParam")==0) return StringParamEnum;
+	      else if (strcmp(name,"Tria")==0) return TriaEnum;
+	      else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;
+	      else if (strcmp(name,"Vertex")==0) return VertexEnum;
+	      else if (strcmp(name,"Air")==0) return AirEnum;
+	      else if (strcmp(name,"Ice")==0) return IceEnum;
+	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
+	      else if (strcmp(name,"Water")==0) return WaterEnum;
+	      else if (strcmp(name,"Closed")==0) return ClosedEnum;
+	      else if (strcmp(name,"Free")==0) return FreeEnum;
+	      else if (strcmp(name,"Open")==0) return OpenEnum;
+	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
+	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
+	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
+	      else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
+	      else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
+	      else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;
+	      else if (strcmp(name,"Boundary")==0) return BoundaryEnum;
+	      else if (strcmp(name,"Constant")==0) return ConstantEnum;
+	      else if (strcmp(name,"Converged")==0) return ConvergedEnum;
+	      else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;
+	      else if (strcmp(name,"Fill")==0) return FillEnum;
+	      else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
+	      else if (strcmp(name,"Friction")==0) return FrictionEnum;
+	      else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;
+	      else if (strcmp(name,"Internal")==0) return InternalEnum;
+	      else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;
+	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
+	      else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;
+	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
+	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
+	      else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;
+	      else if (strcmp(name,"Pressure")==0) return PressureEnum;
+	      else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
+	      else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
+	      else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
+	      else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
+	      else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
+	      else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;
+	      else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;
+	      else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
+	      else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
+	      else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
+	      else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
+	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
+	      else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;
+	      else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;
+	      else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;
+	      else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;
+	      else if (strcmp(name,"Temperature")==0) return TemperatureEnum;
+	      else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;
+	      else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;
+	      else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;
+	      else if (strcmp(name,"Type")==0) return TypeEnum;
+	      else if (strcmp(name,"Vel")==0) return VelEnum;
+	      else if (strcmp(name,"Velocity")==0) return VelocityEnum;
+	      else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;
+	      else if (strcmp(name,"Vx")==0) return VxEnum;
+	      else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;
+	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"Vy")==0) return VyEnum;
+	      else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;
+	      else if (strcmp(name,"Vz")==0) return VzEnum;
+	      else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum;
+	      else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum;
+	      else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;
+	      else if (strcmp(name,"VzStokes")==0) return VzStokesEnum;
+	      else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;
+	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
+	      else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;
+	      else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;
+	      else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;
+	      else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;
+	      else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;
+	      else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;
+	      else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;
+	      else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;
+	      else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;
+	      else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;
+	      else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;
+	      else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;
+	      else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
+	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
+	      else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;
+	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
+	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
+	      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 if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
+	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
+	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
+	      else if (strcmp(name,"P0")==0) return P0Enum;
+	      else if (strcmp(name,"P1")==0) return P1Enum;
+	      else if (strcmp(name,"P1DG")==0) return P1DGEnum;
+	      else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;
+	      else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
+	      else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
+	      else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
+	      else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
+	      else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
+         else stage=4;
+   }
+   if(stage==4){
+	      if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
+	      else if (strcmp(name,"J")==0) return JEnum;
+	      else if (strcmp(name,"Patch")==0) return PatchEnum;
+	      else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
+	      else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum;
+	      else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;
+	      else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;
+	      else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
+	      else if (strcmp(name,"Time")==0) return TimeEnum;
+	      else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;
+	      else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
+	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
+	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
+	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
+	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
+	      else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;
+	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
+	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+	      else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
+	      else if (strcmp(name,"Relative")==0) return RelativeEnum;
+	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
+	      else if (strcmp(name,"Incremental")==0) return IncrementalEnum;
+	      else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;
+	      else if (strcmp(name,"None")==0) return NoneEnum;
+	      else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;
+	      else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;
+	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
+	      else if (strcmp(name,"Colinear")==0) return ColinearEnum;
+	      else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;
+	      else if (strcmp(name,"Fset")==0) return FsetEnum;
+	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
+	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
+	      else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
+	      else if (strcmp(name,"Gradient")==0) return GradientEnum;
+	      else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
+	      else if (strcmp(name,"Gset")==0) return GsetEnum;
+	      else if (strcmp(name,"Index")==0) return IndexEnum;
+	      else if (strcmp(name,"Indexed")==0) return IndexedEnum;
+	      else if (strcmp(name,"Intersect")==0) return IntersectEnum;
+	      else if (strcmp(name,"Nodal")==0) return NodalEnum;
+	      else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
+	      else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
+	      else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
+	      else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
+	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
+	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
+	      else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
+	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
+	      else if (strcmp(name,"Separate")==0) return SeparateEnum;
+	      else if (strcmp(name,"Sset")==0) return SsetEnum;
+	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
+	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	      else if (strcmp(name,"XY")==0) return XYEnum;
+	      else if (strcmp(name,"XYZP")==0) return XYZPEnum;
+	      else if (strcmp(name,"Option")==0) return OptionEnum;
+	      else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;
+	      else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;
+	      else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;
+	      else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;
+	      else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;
+	      else if (strcmp(name,"Paterson")==0) return PatersonEnum;
+	      else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;
+         else stage=5;
+   }
+   else _error_("Enum %s not found",name);
 }
