Index: ../trunk-jpl/src/jl/issmenums.jl =================================================================== --- ../trunk-jpl/src/jl/issmenums.jl (nonexistent) +++ ../trunk-jpl/src/jl/issmenums.jl (revision 26500) @@ -0,0 +1,1544 @@ +@enum IssmEnum begin + ParametersSTARTEnum + #Parameters{{{ + AdolcParamEnum + AmrDeviatoricErrorGroupThresholdEnum + AmrDeviatoricErrorMaximumEnum + AmrDeviatoricErrorResolutionEnum + AmrDeviatoricErrorThresholdEnum + AmrErrEnum + AmrFieldEnum + AmrGradationEnum + AmrGroundingLineDistanceEnum + AmrGroundingLineResolutionEnum + AmrHmaxEnum + AmrHminEnum + AmrIceFrontDistanceEnum + AmrIceFrontResolutionEnum + AmrKeepMetricEnum + AmrLagEnum + AmrLevelMaxEnum + AmrRestartEnum + AmrThicknessErrorGroupThresholdEnum + AmrThicknessErrorMaximumEnum + AmrThicknessErrorResolutionEnum + AmrThicknessErrorThresholdEnum + AmrTypeEnum + AnalysisCounterEnum + AnalysisTypeEnum + AugmentedLagrangianREnum + AugmentedLagrangianRholambdaEnum + AugmentedLagrangianRhopEnum + AugmentedLagrangianRlambdaEnum + AugmentedLagrangianThetaEnum + AutodiffCbufsizeEnum + AutodiffDependentObjectsEnum + AutodiffDriverEnum + AutodiffFosForwardIndexEnum + AutodiffFosReverseIndexEnum + AutodiffFovForwardIndicesEnum + AutodiffGcTriggerMaxSizeEnum + AutodiffGcTriggerRatioEnum + AutodiffIsautodiffEnum + AutodiffLbufsizeEnum + AutodiffNumDependentsEnum + AutodiffNumIndependentsEnum + AutodiffObufsizeEnum + AutodiffTapeAllocEnum + AutodiffTbufsizeEnum + AutodiffXpEnum + BalancethicknessStabilizationEnum + BarystaticContributionsEnum + BasalforcingsBottomplumedepthEnum + BasalforcingsCrustthicknessEnum + BasalforcingsDeepwaterElevationEnum + BasalforcingsDeepwaterMeltingRateEnum + BasalforcingsDtbgEnum + BasalforcingsEnum + BasalforcingsIsmip6AverageTfEnum + BasalforcingsIsmip6BasinAreaEnum + BasalforcingsIsmip6DeltaTEnum + BasalforcingsIsmip6Gamma0Enum + BasalforcingsIsmip6IsLocalEnum + BasalforcingsIsmip6NumBasinsEnum + BasalforcingsIsmip6TfDepthsEnum + BasalforcingsLowercrustheatEnum + BasalforcingsMantleconductivityEnum + BasalforcingsNusseltEnum + BasalforcingsPicoAverageOverturningEnum + BasalforcingsPicoAverageSalinityEnum + BasalforcingsPicoAverageTemperatureEnum + BasalforcingsPicoBoxAreaEnum + BasalforcingsPicoFarOceansalinityEnum + BasalforcingsPicoFarOceantemperatureEnum + BasalforcingsPicoGammaTEnum + BasalforcingsPicoIsplumeEnum + BasalforcingsPicoMaxboxcountEnum + BasalforcingsPicoNumBasinsEnum + BasalforcingsPlumeradiusEnum + BasalforcingsPlumexEnum + BasalforcingsPlumeyEnum + BasalforcingsThresholdThicknessEnum + BasalforcingsTopplumedepthEnum + BasalforcingsUppercrustheatEnum + BasalforcingsUppercrustthicknessEnum + BasalforcingsUpperdepthMeltEnum + BasalforcingsUpperwaterElevationEnum + BasalforcingsUpperwaterMeltingRateEnum + CalvingCrevasseDepthEnum + CalvingCrevasseThresholdEnum + CalvingHeightAboveFloatationEnum + CalvingLawEnum + CalvingMinthicknessEnum + ConfigurationTypeEnum + ConstantsGEnum + ConstantsNewtonGravityEnum + ConstantsReferencetemperatureEnum + ConstantsYtsEnum + ControlInputSizeMEnum + ControlInputSizeNEnum + ControlInputInterpolationEnum + CumBslcEnum + CumBslcIceEnum + CumBslcHydroEnum + CumBslcOceanEnum + CumBslcIcePartitionEnum + CumBslcHydroPartitionEnum + CumBslcOceanPartitionEnum + CumGmtslcEnum + CumGmslcEnum + DamageC1Enum + DamageC2Enum + DamageC3Enum + DamageC4Enum + DamageEnum + DamageEquivStressEnum + DamageEvolutionNumRequestedOutputsEnum + DamageEvolutionRequestedOutputsEnum + DamageHealingEnum + DamageKappaEnum + DamageLawEnum + DamageMaxDamageEnum + DamageStabilizationEnum + DamageStressThresholdEnum + DamageStressUBoundEnum + DebugProfilingEnum + DomainDimensionEnum + DomainTypeEnum + DslModelEnum + DslModelidEnum + DslNummodelsEnum + SolidearthIsExternalEnum + SolidearthExternalNatureEnum + SolidearthExternalModelidEnum + SolidearthExternalNummodelsEnum + SolidearthSettingsComputeBpGrdEnum + EarthIdEnum + ElasticEnum + EplZigZagCounterEnum + EsaHElasticEnum + EsaHemisphereEnum + EsaRequestedOutputsEnum + EsaUElasticEnum + ExtrapolationVariableEnum + FemModelCommEnum + FieldsEnum + FlowequationFeFSEnum + FlowequationIsFSEnum + FlowequationIsHOEnum + FlowequationIsL1L2Enum + FlowequationIsMLHOEnum + FlowequationIsSIAEnum + FlowequationIsSSAEnum + FlowequationIsNitscheEnum + FeFSNitscheGammaEnum + FrictionCouplingEnum + FrictionDeltaEnum + FrictionEffectivePressureLimitEnum + FrictionFEnum + FrictionGammaEnum + FrictionLawEnum + FrictionPseudoplasticityExponentEnum + FrictionThresholdSpeedEnum + FrictionVoidRatioEnum + FrontalForcingsBasinIcefrontAreaEnum + FrontalForcingsNumberofBasinsEnum + FrontalForcingsParamEnum + GrdModelEnum + GroundinglineFrictionInterpolationEnum + GroundinglineMeltInterpolationEnum + GroundinglineMigrationEnum + HydrologyAveragingEnum + HydrologyCavitySpacingEnum + HydrologyChannelConductivityEnum + HydrologyChannelSheetWidthEnum + HydrologyEnglacialVoidRatioEnum + HydrologyIschannelsEnum + HydrologyMeltFlagEnum + HydrologyModelEnum + HydrologyNumRequestedOutputsEnum + HydrologyPressureMeltCoefficientEnum + HydrologyRelaxationEnum + HydrologyRequestedOutputsEnum + HydrologySedimentKmaxEnum + HydrologyStepsPerStepEnum + HydrologyStorageEnum + HydrologydcEplColapseThicknessEnum + HydrologydcEplConductivityEnum + HydrologydcEplInitialThicknessEnum + HydrologydcEplLayerCompressibilityEnum + HydrologydcEplMaxThicknessEnum + HydrologydcEplPoreWaterMassEnum + HydrologydcEplThickCompEnum + HydrologydcEplflipLockEnum + HydrologydcIsefficientlayerEnum + HydrologydcLeakageFactorEnum + HydrologydcMaxIterEnum + HydrologydcPenaltyFactorEnum + HydrologydcPenaltyLockEnum + HydrologydcRelTolEnum + HydrologydcSedimentlimitEnum + HydrologydcSedimentlimitFlagEnum + HydrologydcSedimentLayerCompressibilityEnum + HydrologydcSedimentPoreWaterMassEnum + HydrologydcSedimentPorosityEnum + HydrologydcSedimentThicknessEnum + HydrologydcTransferFlagEnum + HydrologydcUnconfinedFlagEnum + HydrologyshreveStabilizationEnum + IcecapToEarthCommEnum + IndexEnum + InputFileNameEnum + DirectoryNameEnum + IndicesEnum + InputToDepthaverageInEnum + InputToDepthaverageOutEnum + InputToExtrudeEnum + InputToL2ProjectEnum + InputToSmoothEnum + InversionAlgorithmEnum + InversionControlParametersEnum + InversionControlScalingFactorsEnum + InversionCostFunctionsEnum + InversionDxminEnum + InversionGatolEnum + InversionGradientScalingEnum + InversionGrtolEnum + InversionGttolEnum + InversionIncompleteAdjointEnum + InversionIscontrolEnum + InversionMaxiterEnum + InversionMaxiterPerStepEnum + InversionMaxstepsEnum + InversionNstepsEnum + InversionNumControlParametersEnum + InversionNumCostFunctionsEnum + InversionStepThresholdEnum + InversionTypeEnum + IvinsEnum + IsSlcCouplingEnum + LevelsetKillIcebergsEnum + LevelsetReinitFrequencyEnum + LevelsetStabilizationEnum + LockFileNameEnum + LoveAllowLayerDeletionEnum + LoveCoreMantleBoundaryEnum + LoveEarthMassEnum + LoveForcingTypeEnum + LoveFrequenciesEnum + LoveIsTemporalEnum + LoveG0Enum + LoveGravitationalConstantEnum + LoveInnerCoreBoundaryEnum + LoveComplexComputationEnum + LoveIntStepsPerLayerEnum + LoveKernelsEnum + LoveMu0Enum + LoveNfreqEnum + LoveNTemporalIterationsEnum + LoveNYiEquationsEnum + LoveR0Enum + LoveShNmaxEnum + LoveShNminEnum + LoveStartingLayerEnum + LoveUnderflowTolEnum + MassFluxSegmentsEnum + MassFluxSegmentsPresentEnum + MasstransportHydrostaticAdjustmentEnum + MasstransportIsfreesurfaceEnum + MasstransportMinThicknessEnum + MasstransportNumRequestedOutputsEnum + MasstransportPenaltyFactorEnum + MasstransportRequestedOutputsEnum + MasstransportStabilizationEnum + MaterialsBetaEnum + MaterialsEarthDensityEnum + MaterialsEffectiveconductivityAveragingEnum + MaterialsHeatcapacityEnum + MaterialsLatentheatEnum + MaterialsMeltingpointEnum + MaterialsMixedLayerCapacityEnum + MaterialsMuWaterEnum + MaterialsRheologyLawEnum + MaterialsRhoFreshwaterEnum + MaterialsRhoIceEnum + MaterialsRhoSeawaterEnum + MaterialsTemperateiceconductivityEnum + MaterialsThermalExchangeVelocityEnum + MaterialsThermalconductivityEnum + MeltingOffsetEnum + MeshAverageVertexConnectivityEnum + MeshElementtypeEnum + MeshNumberoflayersEnum + MeshNumberofverticesEnum + MeshNumberofelementsEnum + MigrationMaxEnum + ModelIdEnum + NbinsEnum + NodesEnum + NumModelsEnum + OceanGridNxEnum + OceanGridNyEnum + OceanGridXEnum + OceanGridYEnum + OutputBufferPointerEnum + OutputBufferSizePointerEnum + OutputFileNameEnum + OutputFilePointerEnum + OutputdefinitionEnum + QmuErrNameEnum + QmuInNameEnum + QmuIsdakotaEnum + QmuOutNameEnum + QmuOutputEnum + QmuCurrEvalIdEnum + QmuNsampleEnum + QmuResponsedescriptorsEnum + QmuVariableDescriptorsEnum + QmuVariablePartitionsEnum + QmuVariablePartitionsNpartEnum + QmuVariablePartitionsNtEnum + QmuResponsePartitionsEnum + QmuResponsePartitionsNpartEnum + QmuStatisticsEnum + QmuNumstatisticsEnum + QmuNdirectoriesEnum + QmuNfilesPerDirectoryEnum + QmuStatisticsMethodEnum + QmuMethodsEnum + RestartFileNameEnum + ResultsEnum + RootPathEnum + ModelnameEnum + SamplingAlphaEnum + SamplingPhiEnum + SamplingNumRequestedOutputsEnum + SamplingRequestedOutputsEnum + SamplingRobinEnum + SamplingSeedEnum + SamplingTauEnum + SaveResultsEnum + SolidearthPartitionIceEnum + SolidearthPartitionHydroEnum + SolidearthPartitionOceanEnum + SolidearthNpartIceEnum + SolidearthNpartOceanEnum + SolidearthNpartHydroEnum + SolidearthPlanetRadiusEnum + SolidearthPlanetAreaEnum + SolidearthSettingsAbstolEnum + SolidearthSettingsCrossSectionShapeEnum + RotationalAngularVelocityEnum + SolidearthSettingsElasticEnum + SolidearthSettingsViscousEnum + SealevelchangeGeometryDoneEnum + SealevelchangeViscousNumStepsEnum + SealevelchangeViscousTimesEnum + SealevelchangeViscousIndexEnum + RotationalEquatorialMoiEnum + TidalLoveHEnum + TidalLoveKEnum + TidalLoveLEnum + TidalLoveK2SecularEnum + LoadLoveHEnum + LoadLoveKEnum + LoadLoveLEnum + LoveTimeFreqEnum + LoveIsTimeEnum + SealevelchangeGSelfAttractionEnum + SealevelchangeGViscoElasticEnum + SolidearthSettingsSealevelLoadingEnum + SolidearthSettingsGRDEnum + SolidearthSettingsRunFrequencyEnum + SolidearthSettingsTimeAccEnum + SealevelchangeHViscoElasticEnum + SolidearthSettingsHorizEnum + SolidearthSettingsMaxiterEnum + SolidearthSettingsGrdOceanEnum + SolidearthSettingsOceanAreaScalingEnum + RotationalPolarMoiEnum + SolidearthSettingsReltolEnum + SealevelchangeRequestedOutputsEnum + SolidearthSettingsSelfAttractionEnum + SolidearthSettingsRotationEnum + SolidearthSettingsMaxSHCoeffEnum + SealevelchangeRunCountEnum + SealevelchangeTransitionsEnum + SealevelchangeUViscoElasticEnum + SettingsIoGatherEnum + SettingsNumResultsOnNodesEnum + SettingsOutputFrequencyEnum + SettingsCheckpointFrequencyEnum + SettingsResultsOnNodesEnum + SettingsSbCouplingFrequencyEnum + SettingsSolverResidueThresholdEnum + SettingsWaitonlockEnum + SmbAIceEnum + SmbAIdxEnum + SmbASnowEnum + SmbAccualtiEnum + SmbAccugradEnum + SmbAccurefEnum + SmbAdThreshEnum + SmbAutoregressionInitialTimeEnum + SmbAutoregressionTimestepEnum + SmbAutoregressiveOrderEnum + SmbAveragingEnum + SmbBeta0Enum + SmbBeta1Enum + SmbCovmatEnum + SmbDesfacEnum + SmbDpermilEnum + SmbDsnowIdxEnum + SmbCldFracEnum + SmbDelta18oEnum + SmbDelta18oSurfaceEnum + SmbDenIdxEnum + SmbDtEnum + SmbEnum + SmbFEnum + SmbInitDensityScalingEnum + SmbIsaccumulationEnum + SmbIsalbedoEnum + SmbIsconstrainsurfaceTEnum + SmbIsd18opdEnum + SmbIsdelta18oEnum + SmbIsdensificationEnum + SmbIsfirnwarmingEnum + SmbIsgraingrowthEnum + SmbIsmeltEnum + SmbIsmungsmEnum + SmbIsprecipscaledEnum + SmbIssetpddfacEnum + SmbIsshortwaveEnum + SmbIstemperaturescaledEnum + SmbIsthermalEnum + SmbIsturbulentfluxEnum + SmbKEnum + SmbNumBasinsEnum + SmbNumRequestedOutputsEnum + SmbPfacEnum + SmbPhiEnum + SmbRandomflagEnum + SmbRdlEnum + SmbRequestedOutputsEnum + SmbRlapsEnum + SmbRlapslgmEnum + SmbRunoffaltiEnum + SmbRunoffgradEnum + SmbRunoffrefEnum + SmbSealevEnum + SmbStepsPerStepEnum + SmbSwIdxEnum + SmbT0dryEnum + SmbT0wetEnum + SmbTdiffEnum + SmbThermoDeltaTScalingEnum + SmbTemperaturesReconstructedYearsEnum + SmbPrecipitationsReconstructedYearsEnum + SmoothThicknessMultiplierEnum + SolutionTypeEnum + SteadystateMaxiterEnum + SteadystateNumRequestedOutputsEnum + SteadystateReltolEnum + SteadystateRequestedOutputsEnum + StepEnum + StepsEnum + StressbalanceAbstolEnum + StressbalanceFSreconditioningEnum + StressbalanceIsnewtonEnum + StressbalanceMaxiterEnum + StressbalanceNumRequestedOutputsEnum + StressbalancePenaltyFactorEnum + StressbalanceReltolEnum + StressbalanceRequestedOutputsEnum + StressbalanceRestolEnum + StressbalanceRiftPenaltyThresholdEnum + StressbalanceShelfDampeningEnum + ThermalIsdrainicecolumnEnum + ThermalIsdynamicbasalspcEnum + ThermalIsenthalpyEnum + ThermalMaxiterEnum + ThermalNumRequestedOutputsEnum + ThermalPenaltyFactorEnum + ThermalPenaltyLockEnum + ThermalPenaltyThresholdEnum + ThermalReltolEnum + ThermalRequestedOutputsEnum + ThermalStabilizationEnum + ThermalWatercolumnUpperlimitEnum + TimeEnum + TimesteppingCflCoefficientEnum + TimesteppingCouplingTimeEnum + TimesteppingFinalTimeEnum + TimesteppingInterpForcingEnum + TimesteppingCycleForcingEnum + TimesteppingStartTimeEnum + TimesteppingTimeStepEnum + TimesteppingTimeStepMaxEnum + TimesteppingTimeStepMinEnum + TimesteppingTypeEnum + ToMITgcmCommEnum + ToolkitsFileNameEnum + ToolkitsOptionsAnalysesEnum + ToolkitsOptionsStringsEnum + ToolkitsTypesEnum + TransientAmrFrequencyEnum + TransientIsdamageevolutionEnum + TransientIsesaEnum + TransientIsgiaEnum + TransientIsgroundinglineEnum + TransientIshydrologyEnum + TransientIsmasstransportEnum + TransientIsoceantransportEnum + TransientIsmovingfrontEnum + TransientIsoceancouplingEnum + TransientIssamplingEnum + TransientIsslcEnum + TransientIssmbEnum + TransientIsstressbalanceEnum + TransientIsthermalEnum + TransientNumRequestedOutputsEnum + TransientRequestedOutputsEnum + VelocityEnum + XxeEnum + YyeEnum + ZzeEnum + AreaeEnum + WorldCommEnum + #}}} + ParametersENDEnum + InputsSTARTEnum + #Inputs{{{ + AccumulatedDeltaBottomPressureEnum + AccumulatedDeltaIceThicknessEnum + AccumulatedDeltaTwsEnum + AdjointEnum + AdjointpEnum + AdjointxEnum + AdjointxBaseEnum + AdjointxShearEnum + AdjointyEnum + AdjointyBaseEnum + AdjointyShearEnum + AdjointzEnum + AirEnum + ApproximationEnum + BalancethicknessMisfitEnum + BalancethicknessOmega0Enum + BalancethicknessOmegaEnum + BalancethicknessSpcthicknessEnum + BalancethicknessThickeningRateEnum + BasalCrevasseEnum + BasalforcingsFloatingiceMeltingRateEnum + BasalforcingsGeothermalfluxEnum + BasalforcingsGroundediceMeltingRateEnum + BasalforcingsPerturbationMeltingRateEnum + BasalforcingsIsmip6BasinIdEnum + BasalforcingsIsmip6TfEnum + BasalforcingsIsmip6TfShelfEnum + BasalforcingsIsmip6MeltAnomalyEnum + BasalforcingsMeltrateFactorEnum + BasalforcingsOceanSalinityEnum + BasalforcingsOceanTempEnum + BasalforcingsPicoBasinIdEnum + BasalforcingsPicoBoxIdEnum + BasalforcingsPicoOverturningCoeffEnum + BasalforcingsPicoSubShelfOceanOverturningEnum + BasalforcingsPicoSubShelfOceanSalinityEnum + BasalforcingsPicoSubShelfOceanTempEnum + BasalStressxEnum + BasalStressyEnum + BasalStressEnum + BaseEnum + BaseOldEnum + BaseSlopeXEnum + BaseSlopeYEnum + BedEnum + BedGRDEnum + BedEastEnum + BedEastGRDEnum + BedNorthEnum + BedNorthGRDEnum + BedSlopeXEnum + BedSlopeYEnum + BottomPressureEnum + BottomPressureOldEnum + CalvingCalvingrateEnum + CalvingHabFractionEnum + CalvingMeltingrateEnum + CalvingStressThresholdFloatingiceEnum + CalvingStressThresholdGroundediceEnum + CalvinglevermannCoeffEnum + CalvingratexAverageEnum + CalvingratexEnum + CalvingrateyAverageEnum + CalvingrateyEnum + CalvingFluxLevelsetEnum + CalvingMeltingFluxLevelsetEnum + ConvergedEnum + CrevasseDepthEnum + DamageDEnum + DamageDOldEnum + DamageDbarEnum + DamageDbarOldEnum + DamageFEnum + DegreeOfChannelizationEnum + DepthBelowSurfaceEnum + DeltaIceThicknessEnum + DeltaTwsEnum + DeltaBottomPressureEnum + DeltaDslEnum + DslOldEnum + DslEnum + DeltaStrEnum + StrOldEnum + StrEnum + DeviatoricStresseffectiveEnum + DeviatoricStressxxEnum + DeviatoricStressxyEnum + DeviatoricStressxzEnum + DeviatoricStressyyEnum + DeviatoricStressyzEnum + DeviatoricStresszzEnum + DeviatoricStress1Enum + DeviatoricStress2Enum + DistanceToCalvingfrontEnum + DistanceToGroundinglineEnum + Domain2DhorizontalEnum + Domain2DverticalEnum + Domain3DEnum + DragCoefficientAbsGradientEnum + DrivingStressXEnum + DrivingStressYEnum + DummyEnum + EffectivePressureEnum + EffectivePressureSubstepEnum + EffectivePressureTransientEnum + EnthalpyEnum + EnthalpyPicardEnum + EplHeadEnum + EplHeadOldEnum + EplHeadSlopeXEnum + EplHeadSlopeYEnum + EplHeadSubstepEnum + EplHeadTransientEnum + EsaEmotionEnum + EsaNmotionEnum + EsaRotationrateEnum + EsaStrainratexxEnum + EsaStrainratexyEnum + EsaStrainrateyyEnum + EsaUmotionEnum + EsaXmotionEnum + EsaYmotionEnum + EtaDiffEnum + FlowequationBorderFSEnum + FrictionAsEnum + FrictionCEnum + FrictionCmaxEnum + FrictionCoefficientEnum + FrictionCoefficientcoulombEnum + FrictionEffectivePressureEnum + FrictionMEnum + FrictionPEnum + FrictionPressureAdjustedTemperatureEnum + FrictionQEnum + FrictionSedimentCompressibilityCoefficientEnum + FrictionTillFrictionAngleEnum + FrictionWaterLayerEnum + FrictionfEnum + FrontalForcingsBasinIdEnum + FrontalForcingsSubglacialDischargeEnum + FrontalForcingsThermalForcingEnum + GeometryHydrostaticRatioEnum + NGiaEnum + NGiaRateEnum + UGiaEnum + UGiaRateEnum + GradientEnum + GroundinglineHeightEnum + HydraulicPotentialEnum + HydraulicPotentialOldEnum + HydrologyBasalFluxEnum + HydrologyBumpHeightEnum + HydrologyBumpSpacingEnum + HydrologydcBasalMoulinInputEnum + HydrologydcEplThicknessEnum + HydrologydcEplThicknessOldEnum + HydrologydcEplThicknessSubstepEnum + HydrologydcEplThicknessTransientEnum + HydrologydcMaskEplactiveEltEnum + HydrologydcMaskEplactiveNodeEnum + HydrologydcMaskThawedEltEnum + HydrologydcMaskThawedNodeEnum + HydrologydcSedimentTransmitivityEnum + HydrologyDrainageRateEnum + HydrologyEnglacialInputEnum + HydrologyGapHeightEnum + HydrologyGapHeightXEnum + HydrologyGapHeightXXEnum + HydrologyGapHeightYEnum + HydrologyGapHeightYYEnum + HydrologyHeadEnum + HydrologyHeadOldEnum + HydrologyMoulinInputEnum + HydrologyNeumannfluxEnum + HydrologyReynoldsEnum + HydrologySheetConductivityEnum + HydrologySheetThicknessEnum + HydrologySheetThicknessOldEnum + HydrologyTwsEnum + HydrologyTwsSpcEnum + HydrologyTwsAnalysisEnum + HydrologyWatercolumnMaxEnum + HydrologyWaterVxEnum + HydrologyWaterVyEnum + IceEnum + IceMaskNodeActivationEnum + InputEnum + InversionCostFunctionsCoefficientsEnum + InversionSurfaceObsEnum + InversionThicknessObsEnum + InversionVelObsEnum + InversionVxObsEnum + InversionVyObsEnum + LevelsetfunctionSlopeXEnum + LevelsetfunctionSlopeYEnum + LevelsetObservationEnum + LoadingforceXEnum + LoadingforceYEnum + LoadingforceZEnum + MaskOceanLevelsetEnum + MaskIceLevelsetEnum + MaskIceRefLevelsetEnum + MasstransportSpcthicknessEnum + MaterialsRheologyBEnum + MaterialsRheologyBbarEnum + MaterialsRheologyEEnum + MaterialsRheologyEbarEnum + MaterialsRheologyEcEnum + MaterialsRheologyEcbarEnum + MaterialsRheologyEsEnum + MaterialsRheologyEsbarEnum + MaterialsRheologyNEnum + MeshScaleFactorEnum + MeshVertexonbaseEnum + MeshVertexonboundaryEnum + MeshVertexonsurfaceEnum + MisfitEnum + MovingFrontalVxEnum + MovingFrontalVyEnum + NeumannfluxEnum + NewDamageEnum + NodeEnum + OmegaAbsGradientEnum + OceantransportSpcbottompressureEnum + OceantransportSpcstrEnum + OceantransportSpcdslEnum + P0Enum + P1Enum + PartitioningEnum + PressureEnum + RadarEnum + RadarAttenuationMacGregorEnum + RadarAttenuationWolffEnum + RadarIcePeriodEnum + RadarPowerMacGregorEnum + RadarPowerWolffEnum + RheologyBAbsGradientEnum + RheologyBInitialguessEnum + RheologyBInitialguessMisfitEnum + RheologyBbarAbsGradientEnum + SampleEnum + SamplingBetaEnum + SamplingKappaEnum + SealevelEnum + SealevelGRDEnum + SealevelBarystaticMaskEnum + SealevelBarystaticIceMaskEnum + SealevelBarystaticIceWeightsEnum + SealevelBarystaticIceAreaEnum + SealevelBarystaticIceLatbarEnum + SealevelBarystaticIceLongbarEnum + SealevelBarystaticIceLoadEnum + SealevelBarystaticHydroMaskEnum + SealevelBarystaticHydroWeightsEnum + SealevelBarystaticHydroAreaEnum + SealevelBarystaticHydroLatbarEnum + SealevelBarystaticHydroLongbarEnum + SealevelBarystaticHydroLoadEnum + SealevelBarystaticBpMaskEnum + SealevelBarystaticBpWeightsEnum + SealevelBarystaticBpAreaEnum + SealevelBarystaticBpLoadEnum + SealevelBarystaticOceanMaskEnum + SealevelBarystaticOceanWeightsEnum + SealevelBarystaticOceanAreaEnum + SealevelBarystaticOceanLatbarEnum + SealevelBarystaticOceanLongbarEnum + SealevelBarystaticOceanLoadEnum + SealevelNEsaEnum + SealevelNEsaRateEnum + SealevelRSLEnum + BslcEnum + BslcIceEnum + BslcHydroEnum + BslcOceanEnum + BslcRateEnum + GmtslcEnum + SealevelGrotm1Enum + SealevelGrotm2Enum + SealevelGrotm3Enum + SealevelGUrotm1Enum + SealevelGUrotm2Enum + SealevelGUrotm3Enum + SealevelGNrotm1Enum + SealevelGNrotm2Enum + SealevelGNrotm3Enum + SealevelGErotm1Enum + SealevelGErotm2Enum + SealevelGErotm3Enum + SealevelRSLBarystaticEnum + SealevelRSLRateEnum + SealevelUGrdEnum + SealevelNGrdEnum + SealevelUEastEsaEnum + SealevelUNorthEsaEnum + SealevelchangeIndicesEnum + SealevelchangeGEnum + SealevelchangeGUEnum + SealevelchangeGEEnum + SealevelchangeGNEnum + SealevelchangeGsubelOceanEnum + SealevelchangeGUsubelOceanEnum + SealevelchangeGEsubelOceanEnum + SealevelchangeGNsubelOceanEnum + SealevelchangeGsubelIceEnum + SealevelchangeGUsubelIceEnum + SealevelchangeGEsubelIceEnum + SealevelchangeGNsubelIceEnum + SealevelchangeGsubelHydroEnum + SealevelchangeGUsubelHydroEnum + SealevelchangeGEsubelHydroEnum + SealevelchangeGNsubelHydroEnum + SealevelchangeViscousRSLEnum + SealevelchangeViscousUEnum + SealevelchangeViscousNEnum + SealevelchangeViscousEEnum + SedimentHeadEnum + SedimentHeadOldEnum + SedimentHeadSubstepEnum + SedimentHeadTransientEnum + SedimentHeadResidualEnum + SedimentHeadStackedEnum + SigmaNNEnum + SigmaVMEnum + SmbAccumulatedECEnum + SmbAccumulatedMassBalanceEnum + SmbAccumulatedMeltEnum + SmbAccumulatedPrecipitationEnum + SmbAccumulatedRainEnum + SmbAccumulatedRefreezeEnum + SmbAccumulatedRunoffEnum + SmbAEnum + SmbAdiffEnum + SmbAValueEnum + SmbAccumulationEnum + SmbAdiffiniEnum + SmbAiniEnum + SmbBasinsIdEnum + SmbBMaxEnum + SmbBMinEnum + SmbBNegEnum + SmbBPosEnum + SmbCEnum + SmbCcsnowValueEnum + SmbCciceValueEnum + SmbCotValueEnum + SmbDEnum + SmbDailyairdensityEnum + SmbDailyairhumidityEnum + SmbDailydlradiationEnum + SmbDailydsradiationEnum + SmbDailypressureEnum + SmbDailyrainfallEnum + SmbDailysnowfallEnum + SmbDailytemperatureEnum + SmbDailywindspeedEnum + SmbDiniEnum + SmbDlwrfEnum + SmbDswrfEnum + SmbDswdiffrfEnum + SmbDzAddEnum + SmbDzEnum + SmbDzMinEnum + SmbDzTopEnum + SmbDziniEnum + SmbEAirEnum + SmbECEnum + SmbECDtEnum + SmbECiniEnum + SmbElaEnum + SmbEvaporationEnum + SmbFACEnum + SmbGdnEnum + SmbGdniniEnum + SmbGspEnum + SmbGspiniEnum + SmbHrefEnum + SmbIsInitializedEnum + SmbMAddEnum + SmbMassBalanceEnum + SmbMassBalanceSubstepEnum + SmbMassBalanceTransientEnum + SmbMeanLHFEnum + SmbMeanSHFEnum + SmbMeanULWEnum + SmbMeltEnum + SmbMInitnum + SmbMonthlytemperaturesEnum + SmbMSurfEnum + SmbNetLWEnum + SmbNetSWEnum + SmbPAirEnum + SmbPEnum + SmbPddfacIceEnum + SmbPddfacSnowEnum + SmbPrecipitationEnum + SmbPrecipitationsAnomalyEnum + SmbPrecipitationsLgmEnum + SmbPrecipitationsPresentdayEnum + SmbPrecipitationsReconstructedEnum + SmbRainEnum + SmbReEnum + SmbRefreezeEnum + SmbReiniEnum + SmbRunoffEnum + SmbRunoffSubstepEnum + SmbRunoffTransientEnum + SmbS0gcmEnum + SmbS0pEnum + SmbS0tEnum + SmbSizeiniEnum + SmbSmbCorrEnum + SmbSmbrefEnum + SmbSzaValueEnum + SmbTEnum + SmbTaEnum + SmbTeValueEnum + SmbTemperaturesAnomalyEnum + SmbTemperaturesLgmEnum + SmbTemperaturesPresentdayEnum + SmbTemperaturesReconstructedEnum + SmbTiniEnum + SmbTmeanEnum + SmbTzEnum + SmbValuesAutoregressionEnum + SmbVEnum + SmbVmeanEnum + SmbVzEnum + SmbWEnum + SmbWAddEnum + SmbWiniEnum + SmbZMaxEnum + SmbZMinEnum + SmbZTopEnum + SmbZYEnum + SolidearthExternalDisplacementEastRateEnum + SolidearthExternalDisplacementNorthRateEnum + SolidearthExternalDisplacementUpRateEnum + SolidearthExternalGeoidRateEnum + StrainRateeffectiveEnum + StrainRateparallelEnum + StrainRateperpendicularEnum + StrainRatexxEnum + StrainRatexyEnum + StrainRatexzEnum + StrainRateyyEnum + StrainRateyzEnum + StrainRatezzEnum + StressMaxPrincipalEnum + StressTensorxxEnum + StressTensorxyEnum + StressTensorxzEnum + StressTensoryyEnum + StressTensoryzEnum + StressTensorzzEnum + SurfaceAbsMisfitEnum + SurfaceAbsVelMisfitEnum + AreaEnum + SealevelAreaEnum + SurfaceAreaEnum + SurfaceAverageVelMisfitEnum + SurfaceCrevasseEnum + SurfaceEnum + SurfaceOldEnum + SurfaceLogVelMisfitEnum + SurfaceLogVxVyMisfitEnum + SurfaceObservationEnum + SurfaceRelVelMisfitEnum + SurfaceSlopeXEnum + SurfaceSlopeYEnum + TemperatureEnum + TemperaturePDDEnum + TemperaturePicardEnum + TemperatureSEMICEnum + ThermalSpctemperatureEnum + ThicknessAbsGradientEnum + ThicknessAbsMisfitEnum + ThicknessAcrossGradientEnum + ThicknessAlongGradientEnum + ThicknessEnum + ThicknessOldEnum + ThicknessPositiveEnum + ThicknessResidualEnum + TransientAccumulatedDeltaIceThicknessEnum + VelEnum + VxAverageEnum + VxBaseEnum + VxEnum + VxMeshEnum + VxObsEnum + VxShearEnum + VxSurfaceEnum + VyAverageEnum + VyBaseEnum + VyEnum + VyMeshEnum + VyObsEnum + VyShearEnum + VySurfaceEnum + VzEnum + VzFSEnum + VzHOEnum + VzMeshEnum + VzSSAEnum + WaterColumnOldEnum + WatercolumnEnum + WaterfractionDrainageEnum + WaterfractionDrainageIntegratedEnum + WaterfractionEnum + WaterheightEnum + WeightsLevelsetObservationEnum + WeightsSurfaceObservationEnum + OldAccumulatedDeltaBottomPressureEnum + OldAccumulatedDeltaIceThicknessEnum + OldAccumulatedDeltaTwsEnum + Outputdefinition1Enum + Outputdefinition10Enum + Outputdefinition11Enum + Outputdefinition12Enum + Outputdefinition13Enum + Outputdefinition14Enum + Outputdefinition15Enum + Outputdefinition16Enum + Outputdefinition17Enum + Outputdefinition18Enum + Outputdefinition19Enum + Outputdefinition20Enum + Outputdefinition21Enum + Outputdefinition22Enum + Outputdefinition23Enum + Outputdefinition24Enum + Outputdefinition25Enum + Outputdefinition26Enum + Outputdefinition27Enum + Outputdefinition28Enum + Outputdefinition29Enum + Outputdefinition2Enum + Outputdefinition30Enum + Outputdefinition31Enum + Outputdefinition32Enum + Outputdefinition33Enum + Outputdefinition34Enum + Outputdefinition35Enum + Outputdefinition36Enum + Outputdefinition37Enum + Outputdefinition38Enum + Outputdefinition39Enum + Outputdefinition3Enum + Outputdefinition40Enum + Outputdefinition41Enum + Outputdefinition42Enum + Outputdefinition43Enum + Outputdefinition44Enum + Outputdefinition45Enum + Outputdefinition46Enum + Outputdefinition47Enum + Outputdefinition48Enum + Outputdefinition49Enum + Outputdefinition4Enum + Outputdefinition50Enum + Outputdefinition51Enum + Outputdefinition52Enum + Outputdefinition53Enum + Outputdefinition54Enum + Outputdefinition55Enum + Outputdefinition56Enum + Outputdefinition57Enum + Outputdefinition58Enum + Outputdefinition59Enum + Outputdefinition5Enum + Outputdefinition60Enum + Outputdefinition61Enum + Outputdefinition62Enum + Outputdefinition63Enum + Outputdefinition64Enum + Outputdefinition65Enum + Outputdefinition66Enum + Outputdefinition67Enum + Outputdefinition68Enum + Outputdefinition69Enum + Outputdefinition6Enum + Outputdefinition70Enum + Outputdefinition71Enum + Outputdefinition72Enum + Outputdefinition73Enum + Outputdefinition74Enum + Outputdefinition75Enum + Outputdefinition76Enum + Outputdefinition77Enum + Outputdefinition78Enum + Outputdefinition79Enum + Outputdefinition7Enum + Outputdefinition80Enum + Outputdefinition81Enum + Outputdefinition82Enum + Outputdefinition83Enum + Outputdefinition84Enum + Outputdefinition85Enum + Outputdefinition86Enum + Outputdefinition87Enum + Outputdefinition88Enum + Outputdefinition89Enum + Outputdefinition8Enum + Outputdefinition90Enum + Outputdefinition91Enum + Outputdefinition92Enum + Outputdefinition93Enum + Outputdefinition94Enum + Outputdefinition95Enum + Outputdefinition96Enum + Outputdefinition97Enum + Outputdefinition98Enum + Outputdefinition99Enum + Outputdefinition9Enum + Outputdefinition100Enum + #}}} + InputsENDEnum + #Other{{{ + AbsoluteEnum + AdaptiveTimesteppingEnum + AdjointBalancethickness2AnalysisEnum + AdjointBalancethicknessAnalysisEnum + AdjointHorizAnalysisEnum + AggressiveMigrationEnum + AmrBamgEnum + AmrNeopzEnum + AndroidFrictionCoefficientEnum + ArrheniusEnum + AutodiffJacobianEnum + Balancethickness2AnalysisEnum + Balancethickness2SolutionEnum + BalancethicknessAnalysisEnum + BalancethicknessApparentMassbalanceEnum + BalancethicknessSoftAnalysisEnum + BalancethicknessSoftSolutionEnum + BalancethicknessSolutionEnum + BalancevelocityAnalysisEnum + BalancevelocitySolutionEnum + BasalforcingsIsmip6Enum + BasalforcingsPicoEnum + BeckmannGoosseFloatingMeltRateEnum + BedSlopeSolutionEnum + BoolExternalResultEnum + BoolInputEnum + IntInputEnum + DoubleInputEnum + BoolParamEnum + BoundaryEnum + BuddJackaEnum + CalvingDev2Enum + CalvingHabEnum + CalvingLevermannEnum + CalvingVonmisesEnum + CfdragcoeffabsgradEnum + CfsurfacelogvelEnum + CfsurfacesquareEnum + CflevelsetmisfitEnum + ChannelEnum + ChannelAreaEnum + ChannelAreaOldEnum + ChannelDischargeEnum + ClosedEnum + ColinearEnum + ConstraintsEnum + ContactEnum + ContourEnum + ContoursEnum + ControlInputEnum + ControlInputGradEnum + ControlInputMaxsEnum + ControlInputMinsEnum + ControlInputValuesEnum + CrouzeixRaviartEnum + CuffeyEnum + CuffeyTemperateEnum + DamageEvolutionAnalysisEnum + DamageEvolutionSolutionEnum + DataSetEnum + DataSetParamEnum + DatasetInputEnum + DefaultAnalysisEnum + DefaultCalvingEnum + DenseEnum + DependentObjectEnum + DepthAverageAnalysisEnum + DeviatoricStressErrorEstimatorEnum + DivergenceEnum + Domain3DsurfaceEnum + DoubleArrayInputEnum + ArrayInputEnum + DoubleExternalResultEnum + DoubleMatArrayParamEnum + DoubleMatExternalResultEnum + DoubleMatParamEnum + DoubleParamEnum + DoubleVecParamEnum + ElementEnum + ElementHookEnum + ElementSIdEnum + EnthalpyAnalysisEnum + EsaAnalysisEnum + EsaSolutionEnum + EsaTransitionsEnum + ExternalResultEnum + ExtrapolationAnalysisEnum + ExtrudeFromBaseAnalysisEnum + ExtrudeFromTopAnalysisEnum + FSApproximationEnum + FSSolverEnum + FSpressureEnum + FSvelocityEnum + FemModelEnum + FileParamEnum + FixedTimesteppingEnum + FloatingAreaEnum + FloatingAreaScaledEnum + FloatingMeltRateEnum + FreeEnum + FreeSurfaceBaseAnalysisEnum + FreeSurfaceTopAnalysisEnum + FrontalForcingsDefaultEnum + FrontalForcingsRignotEnum + FsetEnum + FullMeltOnPartiallyFloatingEnum + GLheightadvectionAnalysisEnum + GaussPentaEnum + GaussSegEnum + GaussTetraEnum + GaussTriaEnum + GenericOptionEnum + GenericParamEnum + GenericExternalResultEnum + Gradient1Enum + Gradient2Enum + Gradient3Enum + Gradient4Enum + GroundedAreaEnum + GroundedAreaScaledEnum + GroundingOnlyEnum + GroundinglineMassFluxEnum + GsetEnum + GslEnum + HOApproximationEnum + HOFSApproximationEnum + HookEnum + HydrologyDCEfficientAnalysisEnum + HydrologyDCInefficientAnalysisEnum + HydrologyGlaDSAnalysisEnum + HydrologyGlaDSEnum + HydrologyPismAnalysisEnum + HydrologyShaktiAnalysisEnum + HydrologyShreveAnalysisEnum + HydrologySolutionEnum + HydrologydcEnum + HydrologypismEnum + HydrologyshaktiEnum + HydrologyshreveEnum + IceMassEnum + IceMassScaledEnum + IceVolumeAboveFloatationEnum + IceVolumeAboveFloatationScaledEnum + IceVolumeEnum + IceVolumeScaledEnum + IcefrontMassFluxEnum + IcefrontMassFluxLevelsetEnum + IncrementalEnum + IndexedEnum + IntExternalResultEnum + ElementInputEnum + IntMatExternalResultEnum + IntMatParamEnum + IntParamEnum + IntVecParamEnum + InputsEnum + InternalEnum + IntersectEnum + InversionVzObsEnum + JEnum + L1L2ApproximationEnum + MLHOApproximationEnum + L2ProjectionBaseAnalysisEnum + L2ProjectionEPLAnalysisEnum + LACrouzeixRaviartEnum + LATaylorHoodEnum + LambdaSEnum + LevelsetAnalysisEnum + LevelsetfunctionPicardEnum + LinearFloatingMeltRateEnum + LliboutryDuvalEnum + LoadsEnum + LoveAnalysisEnum + LoveHiEnum + LoveHrEnum + LoveKernelsImagEnum + LoveKernelsRealEnum + LoveKiEnum + LoveKrEnum + LoveLiEnum + LoveLrEnum + LoveSolutionEnum + MINIEnum + MINIcondensedEnum + MantlePlumeGeothermalFluxEnum + MassFluxEnum + MassconEnum + MassconaxpbyEnum + MassfluxatgateEnum + MasstransportAnalysisEnum + MasstransportSolutionEnum + MatdamageiceEnum + MatenhancediceEnum + MaterialsEnum + MatestarEnum + MaticeEnum + MatlithoEnum + MathydroEnum + MatrixParamEnum + MaxAbsVxEnum + MaxAbsVyEnum + MaxAbsVzEnum + MaxDivergenceEnum + MaxVelEnum + MaxVxEnum + MaxVyEnum + MaxVzEnum + MelangeEnum + MeltingAnalysisEnum + MeshElementsEnum + MeshXEnum + MeshYEnum + MinVelEnum + MinVxEnum + MinVyEnum + MinVzEnum + MismipFloatingMeltRateEnum + MoulinEnum + MpiDenseEnum + MpiEnum + MpiSparseEnum + MumpsEnum + NoFrictionOnPartiallyFloatingEnum + NoMeltOnPartiallyFloatingEnum + NodalEnum + NodalvalueEnum + NodeSIdEnum + NoneApproximationEnum + NoneEnum + NumberedcostfunctionEnum + NyeCO2Enum + NyeH2OEnum + NumericalfluxEnum + OceantransportAnalysisEnum + OceantransportSolutionEnum + OldGradientEnum + OneLayerP4zEnum + OpenEnum + OptionEnum + ParamEnum + ParametersEnum + P0ArrayEnum + P0DGEnum + P1DGEnum + P1P1Enum + P1P1GLSEnum + P1bubbleEnum + P1bubblecondensedEnum + P1xP2Enum + P1xP3Enum + P1xP4Enum + P2Enum + P2bubbleEnum + P2bubblecondensedEnum + P2xP1Enum + P2xP4Enum + PatersonEnum + PengridEnum + PenpairEnum + PentaEnum + PentaInputEnum + ProfilerEnum + ProfilingCurrentFlopsEnum + ProfilingCurrentMemEnum + ProfilingSolutionTimeEnum + RegionaloutputEnum + RegularEnum + RecoveryAnalysisEnum + RiftfrontEnum + SamplingAnalysisEnum + SamplingSolutionEnum + SIAApproximationEnum + SMBautoregressionEnum + SMBcomponentsEnum + SMBd18opddEnum + SMBforcingEnum + SMBgcmEnum + SMBgembEnum + SMBgradientsEnum + SMBgradientscomponentsEnum + SMBgradientselaEnum + SMBhenningEnum + SMBmeltcomponentsEnum + SMBpddEnum + SMBpddSicopolisEnum + SMBsemicEnum + SSAApproximationEnum + SSAFSApproximationEnum + SSAHOApproximationEnum + ScaledEnum + SealevelAbsoluteEnum + SealevelEmotionEnum + SealevelInertiaTensorXZEnum + SealevelInertiaTensorYZEnum + SealevelInertiaTensorZZEnum + SealevelchangePolarMotionEnum + SealevelNmotionEnum + SealevelUmotionEnum + SealevelchangeAnalysisEnum + SegEnum + SegInputEnum + SegmentEnum + SegmentRiftfrontEnum + SeparateEnum + SeqEnum + SmbAnalysisEnum + SmbSolutionEnum + SmoothAnalysisEnum + SoftMigrationEnum + SpatialLinearFloatingMeltRateEnum + SpcDynamicEnum + SpcStaticEnum + SpcTransientEnum + SsetEnum + StatisticsSolutionEnum + SteadystateSolutionEnum + StressIntensityFactorEnum + StressbalanceAnalysisEnum + StressbalanceConvergenceNumStepsEnum + StressbalanceSIAAnalysisEnum + StressbalanceSolutionEnum + StressbalanceVerticalAnalysisEnum + StringArrayParamEnum + StringExternalResultEnum + StringParamEnum + SubelementFriction1Enum + SubelementFriction2Enum + SubelementMelt1Enum + SubelementMelt2Enum + SubelementMigrationEnum + SurfaceSlopeSolutionEnum + TaylorHoodEnum + TetraEnum + TetraInputEnum + ThermalAnalysisEnum + ThermalSolutionEnum + ThicknessErrorEstimatorEnum + TotalCalvingFluxLevelsetEnum + TotalCalvingMeltingFluxLevelsetEnum + TotalFloatingBmbEnum + TotalFloatingBmbScaledEnum + TotalGroundedBmbEnum + TotalGroundedBmbScaledEnum + TotalSmbEnum + TotalSmbScaledEnum + TransientArrayParamEnum + TransientInputEnum + TransientParamEnum + TransientSolutionEnum + TriaEnum + TriaInputEnum + UzawaPressureAnalysisEnum + VectorParamEnum + VertexEnum + VertexLIdEnum + VertexPIdEnum + VertexSIdEnum + VerticesEnum + ViscousHeatingEnum + WaterEnum + XTaylorHoodEnum + XYEnum + XYZEnum + #}}} + MaximumNumberOfDefinitionsEnum +end + +function EnumToString(enum::IssmEnum) + + #Make dictionnary from enums + inst = instances(IssmEnum) + syms = Symbol.(inst) + enumdic = Dict(zip(inst, syms)) + + return enumdic[enum] +end + +function EnumToString(enum::Int64) + return EnumToString(IssmEnum(enum)) +end + +function StringToEnum(string::String) + + #Make dictionnary from enums + inst = instances(IssmEnum) + syms = Symbol.(inst) + enumdic = Dict(zip(syms, inst)) + + return enumdic[Symbol(string)] +end + +function StringToEnumInt(string::String) + return Integer(StringToEnum(string)) +end Index: ../trunk-jpl/src/jl/parameterization.jl =================================================================== --- ../trunk-jpl/src/jl/parameterization.jl (nonexistent) +++ ../trunk-jpl/src/jl/parameterization.jl (revision 26500) @@ -0,0 +1,55 @@ +include("issm.jl") +include("exp.jl") + +# setmask {{{ +""" +SETMASK - establish boundaries between grounded and floating ice. + + By default, ice is considered grounded. The contour floatingicename defines nodes + for which ice is floating. The contour groundedicename defines nodes inside an floatingice, + that are grounded (ie: ice rises, islands, etc ...) + All input files are in the Argus format (extension .exp). + + Usage: + md=setmask(md,floatingicename,groundedicename) + + Examples: + md=setmask(md,'all',''); + md=setmask(md,'Iceshelves.exp','Islands.exp'); +""" +function setmask(md::model,floatingicename::String,groundedicename::String) + + elementonfloatingice = FlagElements( md, floatingicename); + elementongroundedice = FlagElements( md, groundedicename); + + elementonfloatingice = convert( Array{Float64}, (elementonfloatingice.>0) .& (elementongroundedice.==0.)) + elementongroundedice = convert( Array{Float64}, elementonfloatingice.==0.) + + vertexonfloatingice=zeros(md.mesh.numberofvertices) + vertexongroundedice=zeros(md.mesh.numberofvertices) + + vertexongroundedice[md.mesh.elements[findall(elementongroundedice.>0),:]] .= 1. + vertexonfloatingice[findall(vertexongroundedice.==0.)] .= 1. + + #define levelsets + md.mask.ocean_levelset = vertexongroundedice + md.mask.ocean_levelset[findall(vertexongroundedice .==0.)] .= -1. + md.mask.ice_levelset = -1*ones(md.mesh.numberofvertices) + + return md +end +#}}} +# FlagElements {{{ +function FlagElements(md::model,region::String) + + if isempty(region) + flags = zeros(md.mesh.numberofelements) + elseif region == "all" + flags = ones(md.mesh.numberofelements) + else + flags = InContour(md.mesh.x,md.mesh.y,region); + end + + return flags +end +#}}} Index: ../trunk-jpl/src/jl/test101.jl =================================================================== --- ../trunk-jpl/src/jl/test101.jl (nonexistent) +++ ../trunk-jpl/src/jl/test101.jl (revision 26500) @@ -0,0 +1,38 @@ +#!/Applications/Julia-1.6.app/Contents/Resources/julia/bin/julia +include("triangle.jl") +include("parameterization.jl") +include("solve.jl") + +md = model() +md = triangle(md,"../../test/Exp/Square.exp",180000.) +md = setmask(md,"all","") + +#Geometry +hmin=300. +hmax=1000. +ymin=minimum(md.mesh.y) +ymax=maximum(md.mesh.y) +xmin=minimum(md.mesh.x) +xmax=maximum(md.mesh.x) +md.geometry.thickness = hmax .+ (hmin-hmax)*(md.mesh.y .- ymin)./(ymax-ymin) .+ 0.1*(hmin-hmax)*(md.mesh.x .- xmin)./(xmax-xmin) +md.geometry.base = -md.materials.rho_ice/md.materials.rho_water*md.geometry.thickness +md.geometry.surface = md.geometry.base+md.geometry.thickness +md.geometry.bed = md.geometry.base .-10 + +#Initial velocity +x = archread(issmdir()*"/test/Data/SquareShelfConstrained.arch","x") +y = archread(issmdir()*"/test/Data/SquareShelfConstrained.arch","y") +vx = archread(issmdir()*"/test/Data/SquareShelfConstrained.arch","vx") +vy = archread(issmdir()*"/test/Data/SquareShelfConstrained.arch","vy") +index = archread(issmdir()*"/test/Data/SquareShelfConstrained.arch","index") +md.initialization.vx=zeros(md.mesh.numberofvertices)#InterpFromMeshToMesh2d(index,x,y,vx,md.mesh.x,md.mesh.y) +md.initialization.vy=zeros(md.mesh.numberofvertices)#InterpFromMeshToMesh2d(index,x,y,vy,md.mesh.x,md.mesh.y) + +md.materials.rheology_B=1.815730284801701e+08*ones(md.mesh.numberofvertices) +md.materials.rheology_n=3*ones(md.mesh.numberofelements) + +md.stressbalance.restol=0.05 +md.stressbalance.reltol=0.05 +md.stressbalance.abstol=NaN + +md=solve(md,"Stressbalance") Property changes on: ../trunk-jpl/src/jl/test101.jl ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Index: ../trunk-jpl/src/jl/triangle.jl =================================================================== --- ../trunk-jpl/src/jl/triangle.jl (revision 26499) +++ ../trunk-jpl/src/jl/triangle.jl (revision 26500) @@ -153,11 +153,10 @@ #Call triangle using ISSM's default options triangle_switches = "pQzDq30ia"*@sprintf("%lf",area) #replace V by Q to quiet down the logging - #rc=ccall( (:triangulate,"../../externalpackages/triangle/src/libtriangle.dylib"), - rc=ccall( (:triangulate,"libtriangle"), + #rc=ccall( (:triangulate,"libtriangle"), + rc=ccall( (:triangulate,"../../externalpackages/triangle/src/libtriangle.dylib"), Cint, ( Cstring, Ref{CTriangulateIO}, Ref{CTriangulateIO}, Ref{CTriangulateIO}), triangle_switches, Ref(ctio_in), Ref(ctio_out), Ref(vor_out)) - println("number of elements: ",ctio_out.numberoftriangles) #post process output points = convert(Array{Cdouble,2}, Base.unsafe_wrap(Array, ctio_out.pointlist, (2,Int(ctio_out.numberofpoints)), own=true))' Index: ../trunk-jpl/src/jl/issm.jl =================================================================== --- ../trunk-jpl/src/jl/issm.jl (revision 26499) +++ ../trunk-jpl/src/jl/issm.jl (revision 26500) @@ -60,6 +60,17 @@ function Initialization() #{{{ return Initialization( Vector{Float64}(undef,0), Vector{Float64}(undef,0)) end# }}} +mutable struct Stressbalance + spcvx::Vector{Float64} + spcvy::Vector{Float64} + restol::Float64 + reltol::Float64 + abstol::Float64 + maxiter::Int32 +end +function Stressbalance() #{{{ + return Stressbalance( Vector{Float64}(undef,0), Vector{Float64}(undef,0), 0., 0., 0., 0) +end# }}} mutable struct Materials rho_ice::Float64 rho_water::Float64 @@ -88,9 +99,10 @@ mask::Mask materials::Materials initialization::Initialization + stressbalance::Stressbalance end function model() #{{{ - return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization()) + return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization(),Stressbalance()) end#}}} function Base.show(io::IO, md::model)# {{{ @@ -102,6 +114,7 @@ @printf "%19s: %-22s -- %s\n" "mask" typeof(md.mask) "defines grounded and floating regions" @printf "%19s: %-22s -- %s\n" "materials" typeof(md.materials) "material properties" @printf "%19s: %-22s -- %s\n" "initialization" typeof(md.initialization) "initial state" + @printf "%19s: %-22s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters" end# }}} @@ -142,6 +155,10 @@ data = reinterpret(Float64, read(f, sizeof(Float64)*rows*cols)) data .= ntoh.(data) data = reshape(data, (rows,cols)) + data = collect(data) + if cols == 1 + data = vec(data) + end else error("Error: Encountered invalid field type when reading data.") end @@ -155,3 +172,57 @@ return output end# }}} +function InterpFromMeshToMesh2d(index::Array,x::Vector,y::Vector,data::Vector,xout::Vector,yout::Vector) #{{{ + #prepare input arrays + nods = Cint(length(x)) + nels = Cint(size(index,1)) + nods_interp = Cint(length(xout)) + Cindex=Array{Cint,1}(undef,length(index)) + for i in 1:size(index,1) + for j in 1:3 + Cindex[(i-1)*3+j] = Int32(index[i,j]) + end + end + Cx = Array{Cdouble,1}(undef,nods) + Cy = Array{Cdouble,1}(undef,nods) + Cdata = Array{Cdouble,1}(undef,nods) + for i in 1:nods + Cx[i] = x[i] + Cy[i] = y[i] + Cdata[i] = data[i] + end + Cxout = Array{Cdouble,1}(undef,nods_interp) + Cyout = Array{Cdouble,1}(undef,nods_interp) + for i in 1:nods_interp + Cxout[i] = xout[i] + Cyout[i] = yout[i] + end + + Cdataout = Vector{Float64}(undef,nods_interp) + + #This is not working.... + rc=ccall( (:InterpFromMeshToMesh2dx,"libISSMCore"), + Cint, (Ptr{Ptr{Cdouble}},Ptr{Cint}, Ptr{Cdouble}, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Cint), + Ref(Ref(Cdataout)), Ref(Cindex), Ref(Cx), Ref(Cy), nods, nels, + Ref(Cdata), nods, 1, Ref(Cxout), Ref(Cyout), nods_interp) + + #Process output + dataout = Vector{Float64}(undef,nods_interp) + for i in 1:nods_interp + dataout[i] = Cdataout[i] + end + + return dataout +end #}}} +function solve(md::model,solution::String) #{{{ + + if solution=="sb" || solution=="Stressbalance" + solutionstring = "StressbalanceSolution" + else + error("solutionstring "*solution*" not supported!"); + end + + IssmCore(md) + + return md +end #}}} Index: ../trunk-jpl/src/jl/solve.jl =================================================================== --- ../trunk-jpl/src/jl/solve.jl (nonexistent) +++ ../trunk-jpl/src/jl/solve.jl (revision 26500) @@ -0,0 +1,277 @@ +include("issm.jl") +include("issmenums.jl") + +#define classes first +abstract type Parameter end +struct DoubleParam <: Parameter #{{{ + enum::IssmEnum + value::Float64 +end# }}} +struct IntParam <: Parameter #{{{ + enum::IssmEnum + value::Int64 +end# }}} +mutable struct Parameters #{{{ + lookup::Dict{IssmEnum,Parameter} +end# }}} +function AddParam(parameters::Parameters,value::Float64,enum::IssmEnum) #{{{ + + parameters.lookup[enum] = DoubleParam(enum,value) + +end#}}} +function AddParam(parameters::Parameters,value::Int64,enum::IssmEnum) #{{{ + + parameters.lookup[enum] = IntParam(enum,value) + +end#}}} + +abstract type Input end +struct BoolInput <: Input#{{{ + enum::IssmEnum + values::Matrix{Bool} +end# }}} +struct IntInput <: Input#{{{ + enum::IssmEnum + values::Matrix{Int32} +end# }}} +struct ElementInput <: Input#{{{ + enum::IssmEnum + interp::IssmEnum + values::Vector{Float64} +end# }}} +mutable struct Inputs #{{{ + numberofelements::Int32 + numberofvertices::Int32 + lookup::Dict{IssmEnum,Input} +end# }}} +function SetInput(inputs::Inputs,enum::IssmEnum,index::Int32,value::Bool) #{{{ + + #Does this input exist + if !haskey(inputs.lookup,enum) + #it does not exist yet, we need to create it... + @assert inputs.numberofelements > 0 + input = BoolInput(enum,zeros(Bool,inputs.numberofelements)) + inputs.lookup[enum] = BoolInput(enum,zeros(Bool,inputs.numberofelements)) + end + + #Get this input and check type + input = inputs.lookup[enum] + if typeof(input)!=BoolInput error("not consistent") end + + #set value + @assert index>0 && index<=inputs.numberofelements + input.values[index] = value +end#}}} +function SetTriaInput(inputs::Inputs,enum::IssmEnum,interp::IssmEnum,index::Int32,value::Float64) #{{{ + + #Does this input exist + if !haskey(inputs.lookup,enum) + #it does not exist yet, we need to create it... + @assert inputs.numberofelements > 0 + if interp==P0Enum + inputs.lookup[enum] = ElementInput(enum,interp,zeros(inputs.numberofelements)) + elseif interp==P1Enum + inputs.lookup[enum] = ElementInput(enum,interp,zeros(inputs.numberofvertices)) + else + error("not supported yet") + end + end + + #Get this input and check type + input = inputs.lookup[enum] + if typeof(input)!=ElementInput error("input type not consistent") end + if interp!=input.interp error("input interpolations not consistent") end + + #set value + input.values[index] = value +end#}}} +function SetTriaInput(inputs::Inputs,enum::IssmEnum,interp::IssmEnum,indices::Vector{Int32},values::Vector{Float64}) #{{{ + + #Does this input exist + if !haskey(inputs.lookup,enum) + #it does not exist yet, we need to create it... + @assert inputs.numberofvertices>0 + if interp==P1Enum + inputs.lookup[enum] = ElementInput(enum,interp,zeros(inputs.numberofvertices)) + else + error("not supported yet") + end + end + + #Get this input and check type + input = inputs.lookup[enum] + if typeof(input)!=ElementInput error("input type not consistent") end + if interp!=input.interp error("input interpolations not consistent") end + + #set value + input.values[indices] = values +end#}}} + +mutable struct Node #{{{ + id::Int32 + sid::Int32 + indexingupdate::Bool + gsize::Int32 + gdoflist::Vector{Int32} + fdoflist::Vector{Int32} + sdoflist::Vector{Int32} + svalues::Vector{Float64} +end# }}} +struct Constraint #{{{ + id::Int32 + nodeid::Int32 + dof::Int8 + value::Float64 +end# }}} +mutable struct Vertex#{{{ + sid::Int32 + x::Float64 + y::Float64 +end# }}} +mutable struct Tria #{{{ + sid::Int32 + pid::Int32 + #vertexids::Int64[3] + #vertices::Vertex[3] + vertexids::Vector{Int32} + vertices::Vector{Vertex} + nodes::Vector{Node} + parameters::Parameters + inputs::Inputs +end# }}} +mutable struct FemModel #{{{ + elements::Vector{Tria} + vertices::Vector{Vertex} + nodes::Vector{Node} + parameters::Vector{Parameter} + inputs::Inputs + constraints::Vector{Constraint} + #loads::Vector{Loads} +end#}}} +struct GaussTria #{{{ + numgauss::Int32 + weights::Vector{Float64} + coords1::Vector{Float64} + coords2::Vector{Float64} + coords3::Vector{Float64} +end #}}} +function GaussTria(order::Int32) #{{{ + + #=Gauss quadrature points for the triangle. + Higher-order points from D.A. Dunavant, "High Degree Efficient + Symmetrical Gaussian Quadrature Rules for the Triangle", IJNME, + Vol. 21, pp. 1129-1148 (1985), as transcribed for Probe rules3.=# + + if(order==1) + npoints = 1 + weights = [1.732050807568877] + coords1 = [0.333333333333333] + coords2 = [0.333333333333333] + coords3 = [0.333333333333333] + elseif(order==2) + weights = [0.577350269189625, 0.577350269189625, 0.577350269189625] + coords1 = [0.666666666666667, 0.166666666666667, 0.166666666666667] + coords2 = [0.166666666666667, 0.666666666666667, 0.166666666666667] + coords3 = [0.166666666666667, 0.166666666666667, 0.666666666666667] + elseif(order==3) + npoints=4 + weights = [-0.974278579257493, 0.902109795608790, 0.902109795608790, 0.902109795608790] + coords1 = [0.333333333333333, 0.600000000000000, 0.200000000000000, 0.200000000000000] + coords2 = [0.333333333333333, 0.200000000000000, 0.600000000000000, 0.200000000000000] + coords3 = [0.333333333333333, 0.200000000000000, 0.200000000000000, 0.600000000000000] + else + error("order ",order," not supported yet"); + end + + return GaussTria(npoints,weights,coords1,coords2,coords3) +end# }}} + +#Modules +function FetchDataToInput(md::model,inputs::Inputs,elements::Vector{Tria},data::Vector{Float64},enum::IssmEnum) #{{{ + for i in 1:length(elements) + InputCreate(elements[i],inputs,data,enum) + end +end#}}} +function IssmCore(md::model) #{{{ + + #Construct FemModel + femmodel=ModelProcessor(md) + + #Solve + Stressbalance(femmodel) + + #then what?? + +end# }}} +function ModelProcessor(md::model) #{{{ + + #Initialize structures + elements = Vector{Tria}(undef,0) + vertices = Vector{Vertex}(undef,0) + parameters = Parameters(Dict{IssmEnum,Parameter}()) + inputs = Inputs(md.mesh.numberofelements,md.mesh.numberofvertices,Dict{IssmEnum,Input}()) + + #Create elements, vertices and materials (independent of the analysis) + CreateElements(elements,md) + CreateVertices(vertices,md) + CreateParameters(parameters,md) + CreateInputs(inputs,elements,md) + + #Now create analysis specific data structure + StressbalanceUpdateParameters(parameters,md) +end# }}} +function CreateElements(elements::Vector{Tria},md::model) #{{{ + + #Make sure elements is currently empty + @assert length(elements)==0 + + tempparams = Parameters(Dict{IssmEnum,Parameter}()) + tempinputs = Inputs(-1,-1,Dict{IssmEnum,Input}()) + tempvertices = Vector{Vertex}(undef,0) + tempnodes = Vector{Node}(undef,0) + + count = 0 + for i in 1:md.mesh.numberofelements + push!(elements,Tria(i,count,md.mesh.elements[i,:],tempvertices,tempnodes,tempparams,tempinputs)) + end + +end# }}} +function CreateVertices(vertices::Vector{Vertex},md::model) #{{{ + + #Make sure vertices is currently empty + @assert length(vertices)==0 + + #Get data from md + x = md.mesh.x + y = md.mesh.y + + count = 0 + for i in 1:md.mesh.numberofvertices + push!(vertices,Vertex(i,x[i],y[i])) + end + +end# }}} +function CreateParameters(parameters::Parameters,md::model) #{{{ + + #Get data from md + AddParam(parameters,md.materials.rho_ice,MaterialsRhoIceEnum) + AddParam(parameters,md.materials.rho_water,MaterialsRhoSeawaterEnum) + AddParam(parameters,md.materials.rho_freshwater,MaterialsRhoFreshwaterEnum) +end# }}} +function CreateInputs(inputs::Inputs,elements::Vector{Tria},md::model) #{{{ + + #Only assume we have Matice for now + FetchDataToInput(md,inputs,elements,md.materials.rheology_B,MaterialsRheologyBEnum); + FetchDataToInput(md,inputs,elements,md.materials.rheology_n,MaterialsRheologyNEnum); +end# }}} + +#Element functions +function InputCreate(element::Tria,inputs::Inputs,data::Vector{Float64},enum::IssmEnum) #{{{ + if size(data,1)==inputs.numberofelements + SetTriaInput(inputs,enum,P0Enum,element.sid,data[element.sid]) + elseif size(data,1)==inputs.numberofvertices + SetTriaInput(inputs,enum,P1Enum,element.vertexids,data[element.vertexids]) + else + error("size ",size(data,1)," not supported yet"); + end +end #}}}