diff --git a/packagers/mac/complete-issm-mac-silicon-binaries-matlab.sh b/packagers/mac/complete-issm-mac-silicon-binaries-matlab.sh index 3356f8e7b..b54c5b9ac 100755 --- a/packagers/mac/complete-issm-mac-silicon-binaries-matlab.sh +++ b/packagers/mac/complete-issm-mac-silicon-binaries-matlab.sh @@ -66,7 +66,7 @@ PKG="ISSM-macOS-Silicon-MATLAB" # Name of directory to copy distributable files to VARIANT_REPO_SUBPATH="silicon/matlab" -MATLAB_NROPTIONS="'benchmark','all','exclude',[119,124:126,129,216,234:235,274,362,417:418,420,423,430,433,435,441:442,444:445,448,456,462:464,470:476,508,517,544,546,701:703,808,1101:1110,1201:1208,1301:1304,1401:1402,1601:1602,2002,2004,2006,2010:2013,2020:2021,2052:2053,2085,2090:2092,2110:2113,2424:2425,3001:3300,3480:3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded +MATLAB_NROPTIONS="'benchmark','all','exclude',[119,124:126,129,216,234:235,274,362,417:418,420,423,430,433,435,441:442,444:445,448,456,462:464,470:476,508,517,544,546,550,701:703,808,1101:1110,1201:1208,1301:1304,1401:1402,1601:1602,2002,2004,2006,2010:2013,2020:2021,2052:2053,2085,2090:2092,2110:2113,2424:2425,3001:3300,3480:3481,4001:4100]" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded MATLAB_PATH="/Applications/MATLAB_R2023b.app" SIGNING_REPO_BASE_URL="https://issm.ess.uci.edu/svn/issm-macos-signing" SIGNING_REPO_URL="${SIGNING_REPO_BASE_URL}/${VARIANT_REPO_SUBPATH}" diff --git a/packagers/mac/complete-issm-mac-silicon-binaries-python-3.sh b/packagers/mac/complete-issm-mac-silicon-binaries-python-3.sh index 908bef026..137d24679 100755 --- a/packagers/mac/complete-issm-mac-silicon-binaries-python-3.sh +++ b/packagers/mac/complete-issm-mac-silicon-binaries-python-3.sh @@ -66,7 +66,7 @@ PKG="ISSM-macOS-Silicon-Python-3" # Name of directory to copy distributable files to VARIANT_REPO_SUBPATH="silicon/python" -PYTHON_NROPTIONS="--benchmark all --exclude 119 124:126 129 216 234:235 274 362 417:418 420 423 430 433 435 441:442 444:445 448 456 462:464 470:476 508 517 544 546 701:703 808 1101:1110 1201:1208 1301:1304 1401:1402 1601:1602 2002 2004 2006 2010:2013 2020:2021 2052:2053 2085 2090:2092 2110:2113 2424:2425 3001:3300 3480:3481 4001:4100" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded +PYTHON_NROPTIONS="--benchmark all --exclude 119 124:126 129 216 234:235 274 362 417:418 420 423 430 433 435 441:442 444:445 448 456 462:464 470:476 508 517 544 546 550 701:703 808 1101:1110 1201:1208 1301:1304 1401:1402 1601:1602 2002 2004 2006 2010:2013 2020:2021 2052:2053 2085 2090:2092 2110:2113 2424:2425 3001:3300 3480:3481 4001:4100" # NOTE: Combination of test suites from basic, Dakota, and Solid Earth builds, with tests that require a restart and those that require the JVM excluded SIGNING_REPO_BASE_URL="https://issm.ess.uci.edu/svn/issm-macos-signing" SIGNING_REPO_URL="${SIGNING_REPO_BASE_URL}/${VARIANT_REPO_SUBPATH}" SIGNED_REPO_COPY="./signed" diff --git a/src/c/analyses/SmbAnalysis.cpp b/src/c/analyses/SmbAnalysis.cpp index f4ea2e017..3c17be2be 100644 --- a/src/c/analyses/SmbAnalysis.cpp +++ b/src/c/analyses/SmbAnalysis.cpp @@ -402,8 +402,13 @@ void SmbAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int s parameters->AddObject(new DoubleVecParam(SmbMappedforcingelevationEnum,&temp[0],M)); iomodel->DeleteData(temp,"md.smb.mappedforcingelevation"); - parameters->AddObject(iomodel->CopyConstantObject("md.smb.lapseTaValue",SmbLapseTaValueEnum)); - parameters->AddObject(iomodel->CopyConstantObject("md.smb.lapsedlwrfValue",SmbLapsedlwrfValueEnum)); + iomodel->FetchData(&temp,&M,&N,"md.smb.lapseTaValue"); _assert_(N==1); + parameters->AddObject(new DoubleVecParam(SmbLapseTaValueEnum,&temp[0],M)); + iomodel->DeleteData(temp,"md.smb.lapseTaValue"); + iomodel->FetchData(&temp,&M,&N,"md.smb.lapsedlwrfValue"); _assert_(N==1); + parameters->AddObject(new DoubleVecParam(SmbLapsedlwrfValueEnum,&temp[0],M)); + iomodel->DeleteData(temp,"md.smb.lapsedlwrfValue"); + } parameters->AddObject(iomodel->CopyConstantObject("md.smb.aIdx",SmbAIdxEnum)); parameters->AddObject(iomodel->CopyConstantObject("md.smb.eIdx",SmbEIdxEnum)); diff --git a/src/c/classes/Elements/Element.cpp b/src/c/classes/Elements/Element.cpp index 0adfed690..1f902fc7d 100644 --- a/src/c/classes/Elements/Element.cpp +++ b/src/c/classes/Elements/Element.cpp @@ -5185,6 +5185,11 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ IssmDouble sumMassAdd=0.0; IssmDouble fac=0.0; IssmDouble sumMass=0.0; + IssmDouble sumH=0.0; + IssmDouble T0m=0.0; + IssmDouble T10m=0.0; + IssmDouble T30m=0.0; + IssmDouble T50m=0.0; IssmDouble dMass=0.0; IssmDouble accsumR=0.0; IssmDouble accsumF=0.0; @@ -5610,8 +5615,11 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ bool isprecipmap=true; parameters->FindParam(&isprecipmap,SmbIsprecipforcingremappedEnum); - parameters->FindParam(&tlapse,SmbLapseTaValueEnum); - parameters->FindParam(&dlwlapse,SmbLapsedlwrfValueEnum); + IssmDouble* tlapse = NULL; + parameters->FindParam(&tlapse,&N,SmbLapseTaValueEnum); _assert_(tlapse); + + IssmDouble* dlwlapse = NULL; + parameters->FindParam(&dlwlapse,&N,SmbLapsedlwrfValueEnum); _assert_(dlwlapse); IssmDouble* elevation = NULL; parameters->FindParam(&elevation,&N,SmbMappedforcingelevationEnum); _assert_(elevation); @@ -5629,9 +5637,11 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ parameters->FindParam(&dsw, Mappedpoint-1, timeinputs, timestepping, dt, SmbDswrfParamEnum); parameters->FindParam(&dswdiff, Mappedpoint-1, timeinputs, timestepping, dt, SmbDswdiffrfParamEnum); - Ta = taparam + (currentsurface - elevation[Mappedpoint-1])*tlapse; - if (fabs(dlwlapse) > Dtol) dlw = fmax(dlwrfparam + (currentsurface - elevation[Mappedpoint-1])*dlwlapse,0.0); - else{ + Ta = taparam + (currentsurface - elevation[Mappedpoint-1])*tlapse[Mappedpoint-1]; + Tmean = Tmean + (currentsurface - elevation[Mappedpoint-1])*tlapse[Mappedpoint-1]; + if (fabs(dlwlapse[Mappedpoint-1]) > Dtol){ + dlw = fmax(dlwrfparam + (currentsurface - elevation[Mappedpoint-1])*dlwlapse[Mappedpoint-1],0.0); + }else{ //adjust downward longwave, holding emissivity equal (Glover et al, 1999) IssmDouble SB = 5.67e-8; // Stefan-Boltzmann constant (W m-2 K-4) IssmDouble effe = 1.; @@ -5639,7 +5649,7 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ dlw = fmax(effe*SB*pow(Ta,4.0),0.0); } - if ( (fabs(dlwlapse) > Dtol) || (fabs(tlapse) > Dtol)){ + if ( (fabs(dlwlapse[Mappedpoint-1]) > Dtol) || (fabs(tlapse[Mappedpoint-1]) > Dtol)){ IssmDouble Rg = 8.314; // gas constant (J mol-1 K-1) IssmDouble dAir = 0.0; // calculated air density [kg/m3] @@ -5655,14 +5665,17 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ //Ding et al., 2019 after Bolton, 1980 //ea37 = rh37*100*6.112.*exp((17.67*(t237-273.15))./(t237-29.65)); rhparam=eaparam/6.112/exp((17.67*(taparam-273.15))/(taparam-29.65)); - eAir=rhparam*6.112*exp((17.67*(Ta-273.15))/(Ta-29.65)); + eAir=fmax(rhparam*6.112*exp((17.67*(Ta-273.15))/(Ta-29.65)),0.0); - if (isprecipmap && (eaparam>0)){ + if (isprecipmap && (eaparam>0) && (eAir>0)){ P=prparam*eAir/eaparam; + C=C*eAir/eaparam; } else P=prparam; xDelete(elevation); + xDelete(tlapse); + xDelete(dlwlapse); } /*}}}*/ @@ -5739,9 +5752,18 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ /*Calculate total system mass:*/ sumMass=0; fac=0; + T0m=0; + T10m=0; + T30m=0; + T50m=0; for(int i=0;i 0) fac += dz[i]*(rho_ice - fmin(d[i],rho_ice)); + if (i==0 || (d[i]0 && sumH <= 50)) T50m = T[i]; + if (i==0 || (d[i]0 && sumH <= 30)) T30m = T[i]; + if (i==0 || (d[i]0 && sumH <= 10)) T10m = T[i]; + if (i==0) T0m = T[i]; } #if defined(_HAVE_AD_) @@ -5852,6 +5874,10 @@ void Element::SmbGemb(IssmDouble timeinputs, int count, int steps){/*{{{*/ this->SetElementInput(SmbMSurfSumEnum,sumMsurf/dt/rho_ice); this->SetElementInput(SmbWAddEnum,sumW/dt); this->SetElementInput(SmbFACEnum,fac/1000.); // output in meters + this->SetElementInput(SmbTsEnum,T0m); // output in K at surface + this->SetElementInput(SmbT10Enum,T10m); // output in K at 10m depth + this->SetElementInput(SmbT30Enum,T30m); // output in K at 10m depth + this->SetElementInput(SmbT50Enum,T50m); // output in K ar 10m depth this->SetElementInput(SmbECDtEnum,EC); /*Free allocations:{{{*/ diff --git a/src/c/shared/Enum/Enum.vim b/src/c/shared/Enum/Enum.vim index 740c75553..0c6266e60 100644 --- a/src/c/shared/Enum/Enum.vim +++ b/src/c/shared/Enum/Enum.vim @@ -211,6 +211,11 @@ syn keyword cConstant FlowequationIsNitscheEnum syn keyword cConstant FeFSNitscheGammaEnum syn keyword cConstant FrictionCouplingEnum syn keyword cConstant FrictionDeltaEnum +syn keyword cConstant FrictionDNNEnum +syn keyword cConstant FrictionDNNpsEnum +syn keyword cConstant FrictionDNNstEnum +syn keyword cConstant FrictionDNNInputScaleEnum +syn keyword cConstant FrictionDNNOutputScaleEnum syn keyword cConstant FrictionEffectivePressureLimitEnum syn keyword cConstant FrictionFEnum syn keyword cConstant FrictionGammaEnum @@ -249,7 +254,6 @@ syn keyword cConstant FrontalForcingsSdNumberofParamsEnum syn keyword cConstant FrontalForcingsSdpolyparamsEnum syn keyword cConstant GrdModelEnum syn keyword cConstant GroundinglineFrictionInterpolationEnum -syn keyword cConstant GroundinglineIntrusionDistanceEnum syn keyword cConstant GroundinglineMeltInterpolationEnum syn keyword cConstant GroundinglineMigrationEnum syn keyword cConstant GroundinglineNumRequestedOutputsEnum @@ -911,6 +915,7 @@ syn keyword cConstant FrontalForcingsBasinIdEnum syn keyword cConstant FrontalForcingsSubglacialDischargearmaEnum syn keyword cConstant FrontalForcingsSubglacialDischargeEnum syn keyword cConstant GeometryHydrostaticRatioEnum +syn keyword cConstant GroundinglineIntrusionDistanceEnum syn keyword cConstant NGiaEnum syn keyword cConstant NGiaRateEnum syn keyword cConstant UGiaEnum @@ -1237,6 +1242,9 @@ syn keyword cConstant SmbSummerMeltEnum syn keyword cConstant SmbSummerAlbedoEnum syn keyword cConstant SmbSnowheightEnum syn keyword cConstant SmbTEnum +syn keyword cConstant SmbT10Enum +syn keyword cConstant SmbT30Enum +syn keyword cConstant SmbT50Enum syn keyword cConstant SmbTaEnum syn keyword cConstant SmbTampEnum syn keyword cConstant SmbTeValueEnum @@ -1247,6 +1255,7 @@ syn keyword cConstant SmbTemperaturesPresentdayEnum syn keyword cConstant SmbTemperaturesReconstructedEnum syn keyword cConstant SmbTiniEnum syn keyword cConstant SmbTmeanEnum +syn keyword cConstant SmbTsEnum syn keyword cConstant SmbTzEnum syn keyword cConstant SmbValuesAutoregressionEnum syn keyword cConstant SmbValuesMovingaverageEnum @@ -3796,7 +3805,6 @@ syn keyword cType Cfsurfacelogvel syn keyword cType Cfsurfacesquare syn keyword cType Cfsurfacesquaretransient syn keyword cType Channel -syn keyword cType classes syn keyword cType Constraint syn keyword cType Constraints syn keyword cType Contour @@ -3804,8 +3812,8 @@ syn keyword cType Contours syn keyword cType ControlInput syn keyword cType ControlParam syn keyword cType Covertree -syn keyword cType DatasetInput syn keyword cType DataSetParam +syn keyword cType DatasetInput syn keyword cType Definition syn keyword cType DependentObject syn keyword cType DoubleInput @@ -3818,20 +3826,19 @@ syn keyword cType Element syn keyword cType ElementHook syn keyword cType ElementInput syn keyword cType ElementMatrix -syn keyword cType Elements syn keyword cType ElementVector +syn keyword cType Elements syn keyword cType ExponentialVariogram syn keyword cType ExternalResult syn keyword cType FemModel syn keyword cType FileParam syn keyword cType Friction syn keyword cType Gauss -syn keyword cType GaussianVariogram -syn keyword cType gaussobjects syn keyword cType GaussPenta syn keyword cType GaussSeg syn keyword cType GaussTetra syn keyword cType GaussTria +syn keyword cType GaussianVariogram syn keyword cType GenericExternalResult syn keyword cType GenericOption syn keyword cType GenericParam @@ -3848,7 +3855,6 @@ syn keyword cType IntVecParam syn keyword cType IoModel syn keyword cType IssmDirectApplicInterface syn keyword cType IssmParallelDirectApplicInterface -syn keyword cType krigingobjects syn keyword cType Load syn keyword cType Loads syn keyword cType Masscon @@ -3859,7 +3865,6 @@ syn keyword cType Materials syn keyword cType Matestar syn keyword cType Matice syn keyword cType Matlitho -syn keyword cType matrixobjects syn keyword cType MatrixParam syn keyword cType Misfit syn keyword cType Moulin @@ -3886,13 +3891,13 @@ syn keyword cType Quadtree syn keyword cType Radar syn keyword cType Regionaloutput syn keyword cType Results -syn keyword cType Riftfront syn keyword cType RiftStruct +syn keyword cType Riftfront syn keyword cType SealevelGeometry syn keyword cType Seg syn keyword cType SegInput -syn keyword cType Segment syn keyword cType SegRef +syn keyword cType Segment syn keyword cType SpcDynamic syn keyword cType SpcStatic syn keyword cType SpcTransient @@ -3913,6 +3918,10 @@ syn keyword cType Variogram syn keyword cType VectorParam syn keyword cType Vertex syn keyword cType Vertices +syn keyword cType classes +syn keyword cType gaussobjects +syn keyword cType krigingobjects +syn keyword cType matrixobjects syn keyword cType AdjointBalancethickness2Analysis syn keyword cType AdjointBalancethicknessAnalysis syn keyword cType AdjointHorizAnalysis diff --git a/src/c/shared/Enum/EnumDefinitions.h b/src/c/shared/Enum/EnumDefinitions.h index 013464a4a..70557519f 100644 --- a/src/c/shared/Enum/EnumDefinitions.h +++ b/src/c/shared/Enum/EnumDefinitions.h @@ -1239,6 +1239,9 @@ enum definitions{ SmbSummerAlbedoEnum, SmbSnowheightEnum, SmbTEnum, + SmbT10Enum, + SmbT30Enum, + SmbT50Enum, SmbTaEnum, SmbTampEnum, SmbTeValueEnum, @@ -1249,6 +1252,7 @@ enum definitions{ SmbTemperaturesReconstructedEnum, SmbTiniEnum, SmbTmeanEnum, + SmbTsEnum, SmbTzEnum, SmbValuesAutoregressionEnum, SmbValuesMovingaverageEnum, diff --git a/src/c/shared/Enum/EnumToStringx.cpp b/src/c/shared/Enum/EnumToStringx.cpp index 76f1492e3..2d4d382b0 100644 --- a/src/c/shared/Enum/EnumToStringx.cpp +++ b/src/c/shared/Enum/EnumToStringx.cpp @@ -213,6 +213,11 @@ const char* EnumToStringx(int en){ case FeFSNitscheGammaEnum : return "FeFSNitscheGamma"; case FrictionCouplingEnum : return "FrictionCoupling"; case FrictionDeltaEnum : return "FrictionDelta"; + case FrictionDNNEnum : return "FrictionDNN"; + case FrictionDNNpsEnum : return "FrictionDNNps"; + case FrictionDNNstEnum : return "FrictionDNNst"; + case FrictionDNNInputScaleEnum : return "FrictionDNNInputScale"; + case FrictionDNNOutputScaleEnum : return "FrictionDNNOutputScale"; case FrictionEffectivePressureLimitEnum : return "FrictionEffectivePressureLimit"; case FrictionFEnum : return "FrictionF"; case FrictionGammaEnum : return "FrictionGamma"; @@ -251,7 +256,6 @@ const char* EnumToStringx(int en){ case FrontalForcingsSdpolyparamsEnum : return "FrontalForcingsSdpolyparams"; case GrdModelEnum : return "GrdModel"; case GroundinglineFrictionInterpolationEnum : return "GroundinglineFrictionInterpolation"; - case GroundinglineIntrusionDistanceEnum : return "GroundinglineIntrusionDistance"; case GroundinglineMeltInterpolationEnum : return "GroundinglineMeltInterpolation"; case GroundinglineMigrationEnum : return "GroundinglineMigration"; case GroundinglineNumRequestedOutputsEnum : return "GroundinglineNumRequestedOutputs"; @@ -913,6 +917,7 @@ const char* EnumToStringx(int en){ case FrontalForcingsSubglacialDischargearmaEnum : return "FrontalForcingsSubglacialDischargearma"; case FrontalForcingsSubglacialDischargeEnum : return "FrontalForcingsSubglacialDischarge"; case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio"; + case GroundinglineIntrusionDistanceEnum : return "GroundinglineIntrusionDistance"; case NGiaEnum : return "NGia"; case NGiaRateEnum : return "NGiaRate"; case UGiaEnum : return "UGia"; @@ -1239,6 +1244,9 @@ const char* EnumToStringx(int en){ case SmbSummerAlbedoEnum : return "SmbSummerAlbedo"; case SmbSnowheightEnum : return "SmbSnowheight"; case SmbTEnum : return "SmbT"; + case SmbT10Enum : return "SmbT10"; + case SmbT30Enum : return "SmbT30"; + case SmbT50Enum : return "SmbT50"; case SmbTaEnum : return "SmbTa"; case SmbTampEnum : return "SmbTamp"; case SmbTeValueEnum : return "SmbTeValue"; @@ -1249,6 +1257,7 @@ const char* EnumToStringx(int en){ case SmbTemperaturesReconstructedEnum : return "SmbTemperaturesReconstructed"; case SmbTiniEnum : return "SmbTini"; case SmbTmeanEnum : return "SmbTmean"; + case SmbTsEnum : return "SmbTs"; case SmbTzEnum : return "SmbTz"; case SmbValuesAutoregressionEnum : return "SmbValuesAutoregression"; case SmbValuesMovingaverageEnum : return "SmbValuesMovingaverage"; diff --git a/src/c/shared/Enum/Enumjl.vim b/src/c/shared/Enum/Enumjl.vim index 9f5e39f84..14c41d125 100644 --- a/src/c/shared/Enum/Enumjl.vim +++ b/src/c/shared/Enum/Enumjl.vim @@ -204,6 +204,11 @@ syn keyword juliaConstC FlowequationIsNitscheEnum syn keyword juliaConstC FeFSNitscheGammaEnum syn keyword juliaConstC FrictionCouplingEnum syn keyword juliaConstC FrictionDeltaEnum +syn keyword juliaConstC FrictionDNNEnum +syn keyword juliaConstC FrictionDNNpsEnum +syn keyword juliaConstC FrictionDNNstEnum +syn keyword juliaConstC FrictionDNNInputScaleEnum +syn keyword juliaConstC FrictionDNNOutputScaleEnum syn keyword juliaConstC FrictionEffectivePressureLimitEnum syn keyword juliaConstC FrictionFEnum syn keyword juliaConstC FrictionGammaEnum @@ -242,7 +247,6 @@ syn keyword juliaConstC FrontalForcingsSdNumberofParamsEnum syn keyword juliaConstC FrontalForcingsSdpolyparamsEnum syn keyword juliaConstC GrdModelEnum syn keyword juliaConstC GroundinglineFrictionInterpolationEnum -syn keyword juliaConstC GroundinglineIntrusionDistanceEnum syn keyword juliaConstC GroundinglineMeltInterpolationEnum syn keyword juliaConstC GroundinglineMigrationEnum syn keyword juliaConstC GroundinglineNumRequestedOutputsEnum @@ -904,6 +908,7 @@ syn keyword juliaConstC FrontalForcingsBasinIdEnum syn keyword juliaConstC FrontalForcingsSubglacialDischargearmaEnum syn keyword juliaConstC FrontalForcingsSubglacialDischargeEnum syn keyword juliaConstC GeometryHydrostaticRatioEnum +syn keyword juliaConstC GroundinglineIntrusionDistanceEnum syn keyword juliaConstC NGiaEnum syn keyword juliaConstC NGiaRateEnum syn keyword juliaConstC UGiaEnum @@ -1230,6 +1235,9 @@ syn keyword juliaConstC SmbSummerMeltEnum syn keyword juliaConstC SmbSummerAlbedoEnum syn keyword juliaConstC SmbSnowheightEnum syn keyword juliaConstC SmbTEnum +syn keyword juliaConstC SmbT10Enum +syn keyword juliaConstC SmbT30Enum +syn keyword juliaConstC SmbT50Enum syn keyword juliaConstC SmbTaEnum syn keyword juliaConstC SmbTampEnum syn keyword juliaConstC SmbTeValueEnum @@ -1240,6 +1248,7 @@ syn keyword juliaConstC SmbTemperaturesPresentdayEnum syn keyword juliaConstC SmbTemperaturesReconstructedEnum syn keyword juliaConstC SmbTiniEnum syn keyword juliaConstC SmbTmeanEnum +syn keyword juliaConstC SmbTsEnum syn keyword juliaConstC SmbTzEnum syn keyword juliaConstC SmbValuesAutoregressionEnum syn keyword juliaConstC SmbValuesMovingaverageEnum diff --git a/src/c/shared/Enum/StringToEnumx.cpp b/src/c/shared/Enum/StringToEnumx.cpp index 073a6e160..f31d143ae 100644 --- a/src/c/shared/Enum/StringToEnumx.cpp +++ b/src/c/shared/Enum/StringToEnumx.cpp @@ -216,6 +216,11 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"FeFSNitscheGamma")==0) return FeFSNitscheGammaEnum; else if (strcmp(name,"FrictionCoupling")==0) return FrictionCouplingEnum; else if (strcmp(name,"FrictionDelta")==0) return FrictionDeltaEnum; + else if (strcmp(name,"FrictionDNN")==0) return FrictionDNNEnum; + else if (strcmp(name,"FrictionDNNps")==0) return FrictionDNNpsEnum; + else if (strcmp(name,"FrictionDNNst")==0) return FrictionDNNstEnum; + else if (strcmp(name,"FrictionDNNInputScale")==0) return FrictionDNNInputScaleEnum; + else if (strcmp(name,"FrictionDNNOutputScale")==0) return FrictionDNNOutputScaleEnum; else if (strcmp(name,"FrictionEffectivePressureLimit")==0) return FrictionEffectivePressureLimitEnum; else if (strcmp(name,"FrictionF")==0) return FrictionFEnum; else if (strcmp(name,"FrictionGamma")==0) return FrictionGammaEnum; @@ -254,15 +259,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"FrontalForcingsSdpolyparams")==0) return FrontalForcingsSdpolyparamsEnum; else if (strcmp(name,"GrdModel")==0) return GrdModelEnum; else if (strcmp(name,"GroundinglineFrictionInterpolation")==0) return GroundinglineFrictionInterpolationEnum; - else if (strcmp(name,"GroundinglineIntrusionDistance")==0) return GroundinglineIntrusionDistanceEnum; - else if (strcmp(name,"GroundinglineMeltInterpolation")==0) return GroundinglineMeltInterpolationEnum; - else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; - else if (strcmp(name,"GroundinglineNumRequestedOutputs")==0) return GroundinglineNumRequestedOutputsEnum; - else if (strcmp(name,"GroundinglineRequestedOutputs")==0) return GroundinglineRequestedOutputsEnum; else stage=3; } if(stage==3){ - if (strcmp(name,"HydrologyarmaarOrder")==0) return HydrologyarmaarOrderEnum; + if (strcmp(name,"GroundinglineMeltInterpolation")==0) return GroundinglineMeltInterpolationEnum; + else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; + else if (strcmp(name,"GroundinglineNumRequestedOutputs")==0) return GroundinglineNumRequestedOutputsEnum; + else if (strcmp(name,"GroundinglineRequestedOutputs")==0) return GroundinglineRequestedOutputsEnum; + else if (strcmp(name,"HydrologyarmaarOrder")==0) return HydrologyarmaarOrderEnum; else if (strcmp(name,"Hydrologyarmaarlagcoefs")==0) return HydrologyarmaarlagcoefsEnum; else if (strcmp(name,"Hydrologyarmadatebreaks")==0) return HydrologyarmadatebreaksEnum; else if (strcmp(name,"Hydrologyarmamalagcoefs")==0) return HydrologyarmamalagcoefsEnum; @@ -378,14 +382,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"LoveKernels")==0) return LoveKernelsEnum; else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum; else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum; - else if (strcmp(name,"LoveNTemporalIterations")==0) return LoveNTemporalIterationsEnum; - else if (strcmp(name,"LoveNYiEquations")==0) return LoveNYiEquationsEnum; - else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; - else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; else stage=4; } if(stage==4){ - if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; + if (strcmp(name,"LoveNTemporalIterations")==0) return LoveNTemporalIterationsEnum; + else if (strcmp(name,"LoveNYiEquations")==0) return LoveNYiEquationsEnum; + else if (strcmp(name,"LoveR0")==0) return LoveR0Enum; + else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum; + else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum; else if (strcmp(name,"LoveStartingLayer")==0) return LoveStartingLayerEnum; else if (strcmp(name,"LoveUnderflowTol")==0) return LoveUnderflowTolEnum; else if (strcmp(name,"LovePostWidderThreshold")==0) return LovePostWidderThresholdEnum; @@ -501,14 +505,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"TidalLoveK")==0) return TidalLoveKEnum; else if (strcmp(name,"TidalLoveL")==0) return TidalLoveLEnum; else if (strcmp(name,"TidalLoveK2Secular")==0) return TidalLoveK2SecularEnum; - else if (strcmp(name,"LoadLoveH")==0) return LoadLoveHEnum; - else if (strcmp(name,"LoadLoveK")==0) return LoadLoveKEnum; - else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum; - else if (strcmp(name,"LoveTimeFreq")==0) return LoveTimeFreqEnum; else stage=5; } if(stage==5){ - if (strcmp(name,"LoveIsTime")==0) return LoveIsTimeEnum; + if (strcmp(name,"LoadLoveH")==0) return LoadLoveHEnum; + else if (strcmp(name,"LoadLoveK")==0) return LoadLoveKEnum; + else if (strcmp(name,"LoadLoveL")==0) return LoadLoveLEnum; + else if (strcmp(name,"LoveTimeFreq")==0) return LoveTimeFreqEnum; + else if (strcmp(name,"LoveIsTime")==0) return LoveIsTimeEnum; else if (strcmp(name,"LoveHypergeomZ")==0) return LoveHypergeomZEnum; else if (strcmp(name,"LoveHypergeomTable1")==0) return LoveHypergeomTable1Enum; else if (strcmp(name,"LoveHypergeomTable2")==0) return LoveHypergeomTable2Enum; @@ -624,14 +628,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SmbIsprecipforcingremapped")==0) return SmbIsprecipforcingremappedEnum; else if (strcmp(name,"SmbIsprecipscaled")==0) return SmbIsprecipscaledEnum; else if (strcmp(name,"SmbIssetpddfac")==0) return SmbIssetpddfacEnum; - else if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum; - else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum; - else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum; - else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum; else stage=6; } if(stage==6){ - if (strcmp(name,"SmbK")==0) return SmbKEnum; + if (strcmp(name,"SmbIsshortwave")==0) return SmbIsshortwaveEnum; + else if (strcmp(name,"SmbIstemperaturescaled")==0) return SmbIstemperaturescaledEnum; + else if (strcmp(name,"SmbIsthermal")==0) return SmbIsthermalEnum; + else if (strcmp(name,"SmbIsturbulentflux")==0) return SmbIsturbulentfluxEnum; + else if (strcmp(name,"SmbK")==0) return SmbKEnum; else if (strcmp(name,"SmbLapsedlwrfValue")==0) return SmbLapsedlwrfValueEnum; else if (strcmp(name,"SmbLapseRates")==0) return SmbLapseRatesEnum; else if (strcmp(name,"SmbLapseTaValue")==0) return SmbLapseTaValueEnum; @@ -747,14 +751,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"TransientIsmmemasstransport")==0) return TransientIsmmemasstransportEnum; else if (strcmp(name,"TransientIsoceantransport")==0) return TransientIsoceantransportEnum; else if (strcmp(name,"TransientIsmovingfront")==0) return TransientIsmovingfrontEnum; - else if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum; - else if (strcmp(name,"TransientIssampling")==0) return TransientIssamplingEnum; - else if (strcmp(name,"TransientIsslc")==0) return TransientIsslcEnum; - else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum; else stage=7; } if(stage==7){ - if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; + if (strcmp(name,"TransientIsoceancoupling")==0) return TransientIsoceancouplingEnum; + else if (strcmp(name,"TransientIssampling")==0) return TransientIssamplingEnum; + else if (strcmp(name,"TransientIsslc")==0) return TransientIsslcEnum; + else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum; + else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum; else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum; else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; @@ -870,14 +874,14 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Str")==0) return StrEnum; else if (strcmp(name,"DeviatoricStresseffective")==0) return DeviatoricStresseffectiveEnum; else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum; - else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; - else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum; - else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum; - else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum; else stage=8; } if(stage==8){ - if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum; + if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; + else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum; + else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum; + else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum; + else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum; else if (strcmp(name,"DeviatoricStress1")==0) return DeviatoricStress1Enum; else if (strcmp(name,"DeviatoricStress2")==0) return DeviatoricStress2Enum; else if (strcmp(name,"DistanceToCalvingfront")==0) return DistanceToCalvingfrontEnum; @@ -934,6 +938,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"FrontalForcingsSubglacialDischargearma")==0) return FrontalForcingsSubglacialDischargearmaEnum; else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum; else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; + else if (strcmp(name,"GroundinglineIntrusionDistance")==0) return GroundinglineIntrusionDistanceEnum; else if (strcmp(name,"NGia")==0) return NGiaEnum; else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum; else if (strcmp(name,"UGia")==0) return UGiaEnum; @@ -992,15 +997,15 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Input")==0) return InputEnum; else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; else if (strcmp(name,"InversionSurfaceObs")==0) return InversionSurfaceObsEnum; - else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; + else stage=9; + } + if(stage==9){ + 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,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; - else stage=9; - } - if(stage==9){ - if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; + else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; else if (strcmp(name,"LevelsetObservation")==0) return LevelsetObservationEnum; else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum; else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum; @@ -1115,15 +1120,15 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SealevelchangeViscousRSL")==0) return SealevelchangeViscousRSLEnum; else if (strcmp(name,"SealevelchangeViscousSG")==0) return SealevelchangeViscousSGEnum; else if (strcmp(name,"SealevelchangeViscousU")==0) return SealevelchangeViscousUEnum; - else if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum; + else stage=10; + } + if(stage==10){ + if (strcmp(name,"SealevelchangeViscousN")==0) return SealevelchangeViscousNEnum; else if (strcmp(name,"SealevelchangeViscousE")==0) return SealevelchangeViscousEEnum; else if (strcmp(name,"CouplingTransferCount")==0) return CouplingTransferCountEnum; else if (strcmp(name,"SedimentHead")==0) return SedimentHeadEnum; else if (strcmp(name,"SedimentHeadOld")==0) return SedimentHeadOldEnum; - else stage=10; - } - if(stage==10){ - if (strcmp(name,"SedimentHeadSubstep")==0) return SedimentHeadSubstepEnum; + else if (strcmp(name,"SedimentHeadSubstep")==0) return SedimentHeadSubstepEnum; else if (strcmp(name,"SedimentHeadTransient")==0) return SedimentHeadTransientEnum; else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum; else if (strcmp(name,"SedimentHeadStacked")==0) return SedimentHeadStackedEnum; @@ -1238,15 +1243,15 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SmbPrecipitationSubstep")==0) return SmbPrecipitationSubstepEnum; else if (strcmp(name,"SmbPrecipitationsAnomaly")==0) return SmbPrecipitationsAnomalyEnum; else if (strcmp(name,"SmbDsradiationAnomaly")==0) return SmbDsradiationAnomalyEnum; - else if (strcmp(name,"SmbDlradiationAnomaly")==0) return SmbDlradiationAnomalyEnum; + else stage=11; + } + if(stage==11){ + if (strcmp(name,"SmbDlradiationAnomaly")==0) return SmbDlradiationAnomalyEnum; else if (strcmp(name,"SmbWindspeedAnomaly")==0) return SmbWindspeedAnomalyEnum; else if (strcmp(name,"SmbAirhumidityAnomaly")==0) return SmbAirhumidityAnomalyEnum; else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum; else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum; - else stage=11; - } - if(stage==11){ - if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum; + else if (strcmp(name,"SmbPrecipitationsReconstructed")==0) return SmbPrecipitationsReconstructedEnum; else if (strcmp(name,"SmbRain")==0) return SmbRainEnum; else if (strcmp(name,"SmbRainSubstep")==0) return SmbRainSubstepEnum; else if (strcmp(name,"SmbRe")==0) return SmbReEnum; @@ -1269,6 +1274,9 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SmbSummerAlbedo")==0) return SmbSummerAlbedoEnum; else if (strcmp(name,"SmbSnowheight")==0) return SmbSnowheightEnum; else if (strcmp(name,"SmbT")==0) return SmbTEnum; + else if (strcmp(name,"SmbT10")==0) return SmbT10Enum; + else if (strcmp(name,"SmbT30")==0) return SmbT30Enum; + else if (strcmp(name,"SmbT50")==0) return SmbT50Enum; else if (strcmp(name,"SmbTa")==0) return SmbTaEnum; else if (strcmp(name,"SmbTamp")==0) return SmbTampEnum; else if (strcmp(name,"SmbTeValue")==0) return SmbTeValueEnum; @@ -1279,6 +1287,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SmbTemperaturesReconstructed")==0) return SmbTemperaturesReconstructedEnum; else if (strcmp(name,"SmbTini")==0) return SmbTiniEnum; else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum; + else if (strcmp(name,"SmbTs")==0) return SmbTsEnum; else if (strcmp(name,"SmbTz")==0) return SmbTzEnum; else if (strcmp(name,"SmbValuesAutoregression")==0) return SmbValuesAutoregressionEnum; else if (strcmp(name,"SmbValuesMovingaverage")==0) return SmbValuesMovingaverageEnum; @@ -1357,7 +1366,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Vx")==0) return VxEnum; else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; else if (strcmp(name,"VxObs")==0) return VxObsEnum; - else if (strcmp(name,"VxShear")==0) return VxShearEnum; + else stage=12; + } + if(stage==12){ + if (strcmp(name,"VxShear")==0) return VxShearEnum; else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum; else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; else if (strcmp(name,"VyBase")==0) return VyBaseEnum; @@ -1366,10 +1378,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; else if (strcmp(name,"VyObs")==0) return VyObsEnum; else if (strcmp(name,"VyShear")==0) return VyShearEnum; - else stage=12; - } - if(stage==12){ - if (strcmp(name,"VySurface")==0) return VySurfaceEnum; + else if (strcmp(name,"VySurface")==0) return VySurfaceEnum; else if (strcmp(name,"Vz")==0) return VzEnum; else if (strcmp(name,"VzFS")==0) return VzFSEnum; else if (strcmp(name,"VzHO")==0) return VzHOEnum; @@ -1480,7 +1489,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition88")==0) return Outputdefinition88Enum; else if (strcmp(name,"Outputdefinition89")==0) return Outputdefinition89Enum; else if (strcmp(name,"Outputdefinition8")==0) return Outputdefinition8Enum; - else if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum; + else stage=13; + } + if(stage==13){ + if (strcmp(name,"Outputdefinition90")==0) return Outputdefinition90Enum; else if (strcmp(name,"Outputdefinition91")==0) return Outputdefinition91Enum; else if (strcmp(name,"Outputdefinition92")==0) return Outputdefinition92Enum; else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum; @@ -1489,10 +1501,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum; else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum; else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum; - else stage=13; - } - if(stage==13){ - if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; + else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum; else if (strcmp(name,"Outputdefinition101")==0) return Outputdefinition101Enum; @@ -1603,7 +1612,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition214")==0) return Outputdefinition214Enum; else if (strcmp(name,"Outputdefinition215")==0) return Outputdefinition215Enum; else if (strcmp(name,"Outputdefinition216")==0) return Outputdefinition216Enum; - else if (strcmp(name,"Outputdefinition217")==0) return Outputdefinition217Enum; + else stage=14; + } + if(stage==14){ + if (strcmp(name,"Outputdefinition217")==0) return Outputdefinition217Enum; else if (strcmp(name,"Outputdefinition218")==0) return Outputdefinition218Enum; else if (strcmp(name,"Outputdefinition219")==0) return Outputdefinition219Enum; else if (strcmp(name,"Outputdefinition220")==0) return Outputdefinition220Enum; @@ -1612,10 +1624,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition223")==0) return Outputdefinition223Enum; else if (strcmp(name,"Outputdefinition224")==0) return Outputdefinition224Enum; else if (strcmp(name,"Outputdefinition225")==0) return Outputdefinition225Enum; - else stage=14; - } - if(stage==14){ - if (strcmp(name,"Outputdefinition226")==0) return Outputdefinition226Enum; + else if (strcmp(name,"Outputdefinition226")==0) return Outputdefinition226Enum; else if (strcmp(name,"Outputdefinition227")==0) return Outputdefinition227Enum; else if (strcmp(name,"Outputdefinition228")==0) return Outputdefinition228Enum; else if (strcmp(name,"Outputdefinition229")==0) return Outputdefinition229Enum; @@ -1726,7 +1735,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition333")==0) return Outputdefinition333Enum; else if (strcmp(name,"Outputdefinition334")==0) return Outputdefinition334Enum; else if (strcmp(name,"Outputdefinition335")==0) return Outputdefinition335Enum; - else if (strcmp(name,"Outputdefinition336")==0) return Outputdefinition336Enum; + else stage=15; + } + if(stage==15){ + if (strcmp(name,"Outputdefinition336")==0) return Outputdefinition336Enum; else if (strcmp(name,"Outputdefinition337")==0) return Outputdefinition337Enum; else if (strcmp(name,"Outputdefinition338")==0) return Outputdefinition338Enum; else if (strcmp(name,"Outputdefinition339")==0) return Outputdefinition339Enum; @@ -1735,10 +1747,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition341")==0) return Outputdefinition341Enum; else if (strcmp(name,"Outputdefinition342")==0) return Outputdefinition342Enum; else if (strcmp(name,"Outputdefinition343")==0) return Outputdefinition343Enum; - else stage=15; - } - if(stage==15){ - if (strcmp(name,"Outputdefinition344")==0) return Outputdefinition344Enum; + else if (strcmp(name,"Outputdefinition344")==0) return Outputdefinition344Enum; else if (strcmp(name,"Outputdefinition345")==0) return Outputdefinition345Enum; else if (strcmp(name,"Outputdefinition346")==0) return Outputdefinition346Enum; else if (strcmp(name,"Outputdefinition347")==0) return Outputdefinition347Enum; @@ -1849,7 +1858,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition451")==0) return Outputdefinition451Enum; else if (strcmp(name,"Outputdefinition452")==0) return Outputdefinition452Enum; else if (strcmp(name,"Outputdefinition453")==0) return Outputdefinition453Enum; - else if (strcmp(name,"Outputdefinition454")==0) return Outputdefinition454Enum; + else stage=16; + } + if(stage==16){ + if (strcmp(name,"Outputdefinition454")==0) return Outputdefinition454Enum; else if (strcmp(name,"Outputdefinition455")==0) return Outputdefinition455Enum; else if (strcmp(name,"Outputdefinition456")==0) return Outputdefinition456Enum; else if (strcmp(name,"Outputdefinition457")==0) return Outputdefinition457Enum; @@ -1858,10 +1870,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition405")==0) return Outputdefinition405Enum; else if (strcmp(name,"Outputdefinition460")==0) return Outputdefinition460Enum; else if (strcmp(name,"Outputdefinition461")==0) return Outputdefinition461Enum; - else stage=16; - } - if(stage==16){ - if (strcmp(name,"Outputdefinition462")==0) return Outputdefinition462Enum; + else if (strcmp(name,"Outputdefinition462")==0) return Outputdefinition462Enum; else if (strcmp(name,"Outputdefinition463")==0) return Outputdefinition463Enum; else if (strcmp(name,"Outputdefinition464")==0) return Outputdefinition464Enum; else if (strcmp(name,"Outputdefinition465")==0) return Outputdefinition465Enum; @@ -1972,7 +1981,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition506")==0) return Outputdefinition506Enum; else if (strcmp(name,"Outputdefinition570")==0) return Outputdefinition570Enum; else if (strcmp(name,"Outputdefinition571")==0) return Outputdefinition571Enum; - else if (strcmp(name,"Outputdefinition572")==0) return Outputdefinition572Enum; + else stage=17; + } + if(stage==17){ + if (strcmp(name,"Outputdefinition572")==0) return Outputdefinition572Enum; else if (strcmp(name,"Outputdefinition573")==0) return Outputdefinition573Enum; else if (strcmp(name,"Outputdefinition574")==0) return Outputdefinition574Enum; else if (strcmp(name,"Outputdefinition575")==0) return Outputdefinition575Enum; @@ -1981,10 +1993,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition578")==0) return Outputdefinition578Enum; else if (strcmp(name,"Outputdefinition579")==0) return Outputdefinition579Enum; else if (strcmp(name,"Outputdefinition507")==0) return Outputdefinition507Enum; - else stage=17; - } - if(stage==17){ - if (strcmp(name,"Outputdefinition580")==0) return Outputdefinition580Enum; + else if (strcmp(name,"Outputdefinition580")==0) return Outputdefinition580Enum; else if (strcmp(name,"Outputdefinition581")==0) return Outputdefinition581Enum; else if (strcmp(name,"Outputdefinition582")==0) return Outputdefinition582Enum; else if (strcmp(name,"Outputdefinition583")==0) return Outputdefinition583Enum; @@ -2095,7 +2104,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition688")==0) return Outputdefinition688Enum; else if (strcmp(name,"Outputdefinition689")==0) return Outputdefinition689Enum; else if (strcmp(name,"Outputdefinition608")==0) return Outputdefinition608Enum; - else if (strcmp(name,"Outputdefinition690")==0) return Outputdefinition690Enum; + else stage=18; + } + if(stage==18){ + if (strcmp(name,"Outputdefinition690")==0) return Outputdefinition690Enum; else if (strcmp(name,"Outputdefinition691")==0) return Outputdefinition691Enum; else if (strcmp(name,"Outputdefinition692")==0) return Outputdefinition692Enum; else if (strcmp(name,"Outputdefinition693")==0) return Outputdefinition693Enum; @@ -2104,10 +2116,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition696")==0) return Outputdefinition696Enum; else if (strcmp(name,"Outputdefinition697")==0) return Outputdefinition697Enum; else if (strcmp(name,"Outputdefinition698")==0) return Outputdefinition698Enum; - else stage=18; - } - if(stage==18){ - if (strcmp(name,"Outputdefinition699")==0) return Outputdefinition699Enum; + else if (strcmp(name,"Outputdefinition699")==0) return Outputdefinition699Enum; else if (strcmp(name,"Outputdefinition609")==0) return Outputdefinition609Enum; else if (strcmp(name,"Outputdefinition700")==0) return Outputdefinition700Enum; else if (strcmp(name,"Outputdefinition701")==0) return Outputdefinition701Enum; @@ -2218,7 +2227,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition814")==0) return Outputdefinition814Enum; else if (strcmp(name,"Outputdefinition815")==0) return Outputdefinition815Enum; else if (strcmp(name,"Outputdefinition816")==0) return Outputdefinition816Enum; - else if (strcmp(name,"Outputdefinition817")==0) return Outputdefinition817Enum; + else stage=19; + } + if(stage==19){ + if (strcmp(name,"Outputdefinition817")==0) return Outputdefinition817Enum; else if (strcmp(name,"Outputdefinition818")==0) return Outputdefinition818Enum; else if (strcmp(name,"Outputdefinition819")==0) return Outputdefinition819Enum; else if (strcmp(name,"Outputdefinition820")==0) return Outputdefinition820Enum; @@ -2227,10 +2239,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition823")==0) return Outputdefinition823Enum; else if (strcmp(name,"Outputdefinition824")==0) return Outputdefinition824Enum; else if (strcmp(name,"Outputdefinition825")==0) return Outputdefinition825Enum; - else stage=19; - } - if(stage==19){ - if (strcmp(name,"Outputdefinition826")==0) return Outputdefinition826Enum; + else if (strcmp(name,"Outputdefinition826")==0) return Outputdefinition826Enum; else if (strcmp(name,"Outputdefinition827")==0) return Outputdefinition827Enum; else if (strcmp(name,"Outputdefinition828")==0) return Outputdefinition828Enum; else if (strcmp(name,"Outputdefinition829")==0) return Outputdefinition829Enum; @@ -2341,7 +2350,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition933")==0) return Outputdefinition933Enum; else if (strcmp(name,"Outputdefinition934")==0) return Outputdefinition934Enum; else if (strcmp(name,"Outputdefinition935")==0) return Outputdefinition935Enum; - else if (strcmp(name,"Outputdefinition936")==0) return Outputdefinition936Enum; + else stage=20; + } + if(stage==20){ + if (strcmp(name,"Outputdefinition936")==0) return Outputdefinition936Enum; else if (strcmp(name,"Outputdefinition937")==0) return Outputdefinition937Enum; else if (strcmp(name,"Outputdefinition938")==0) return Outputdefinition938Enum; else if (strcmp(name,"Outputdefinition939")==0) return Outputdefinition939Enum; @@ -2350,10 +2362,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition941")==0) return Outputdefinition941Enum; else if (strcmp(name,"Outputdefinition942")==0) return Outputdefinition942Enum; else if (strcmp(name,"Outputdefinition943")==0) return Outputdefinition943Enum; - else stage=20; - } - if(stage==20){ - if (strcmp(name,"Outputdefinition944")==0) return Outputdefinition944Enum; + else if (strcmp(name,"Outputdefinition944")==0) return Outputdefinition944Enum; else if (strcmp(name,"Outputdefinition945")==0) return Outputdefinition945Enum; else if (strcmp(name,"Outputdefinition946")==0) return Outputdefinition946Enum; else if (strcmp(name,"Outputdefinition947")==0) return Outputdefinition947Enum; @@ -2464,7 +2473,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1051")==0) return Outputdefinition1051Enum; else if (strcmp(name,"Outputdefinition1052")==0) return Outputdefinition1052Enum; else if (strcmp(name,"Outputdefinition1053")==0) return Outputdefinition1053Enum; - else if (strcmp(name,"Outputdefinition1054")==0) return Outputdefinition1054Enum; + else stage=21; + } + if(stage==21){ + if (strcmp(name,"Outputdefinition1054")==0) return Outputdefinition1054Enum; else if (strcmp(name,"Outputdefinition1055")==0) return Outputdefinition1055Enum; else if (strcmp(name,"Outputdefinition1056")==0) return Outputdefinition1056Enum; else if (strcmp(name,"Outputdefinition1057")==0) return Outputdefinition1057Enum; @@ -2473,10 +2485,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1005")==0) return Outputdefinition1005Enum; else if (strcmp(name,"Outputdefinition1060")==0) return Outputdefinition1060Enum; else if (strcmp(name,"Outputdefinition1061")==0) return Outputdefinition1061Enum; - else stage=21; - } - if(stage==21){ - if (strcmp(name,"Outputdefinition1062")==0) return Outputdefinition1062Enum; + else if (strcmp(name,"Outputdefinition1062")==0) return Outputdefinition1062Enum; else if (strcmp(name,"Outputdefinition1063")==0) return Outputdefinition1063Enum; else if (strcmp(name,"Outputdefinition1064")==0) return Outputdefinition1064Enum; else if (strcmp(name,"Outputdefinition1065")==0) return Outputdefinition1065Enum; @@ -2587,7 +2596,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1106")==0) return Outputdefinition1106Enum; else if (strcmp(name,"Outputdefinition1170")==0) return Outputdefinition1170Enum; else if (strcmp(name,"Outputdefinition1171")==0) return Outputdefinition1171Enum; - else if (strcmp(name,"Outputdefinition1172")==0) return Outputdefinition1172Enum; + else stage=22; + } + if(stage==22){ + if (strcmp(name,"Outputdefinition1172")==0) return Outputdefinition1172Enum; else if (strcmp(name,"Outputdefinition1173")==0) return Outputdefinition1173Enum; else if (strcmp(name,"Outputdefinition1174")==0) return Outputdefinition1174Enum; else if (strcmp(name,"Outputdefinition1175")==0) return Outputdefinition1175Enum; @@ -2596,10 +2608,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1178")==0) return Outputdefinition1178Enum; else if (strcmp(name,"Outputdefinition1179")==0) return Outputdefinition1179Enum; else if (strcmp(name,"Outputdefinition1107")==0) return Outputdefinition1107Enum; - else stage=22; - } - if(stage==22){ - if (strcmp(name,"Outputdefinition1180")==0) return Outputdefinition1180Enum; + else if (strcmp(name,"Outputdefinition1180")==0) return Outputdefinition1180Enum; else if (strcmp(name,"Outputdefinition1181")==0) return Outputdefinition1181Enum; else if (strcmp(name,"Outputdefinition1182")==0) return Outputdefinition1182Enum; else if (strcmp(name,"Outputdefinition1183")==0) return Outputdefinition1183Enum; @@ -2710,7 +2719,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1288")==0) return Outputdefinition1288Enum; else if (strcmp(name,"Outputdefinition1289")==0) return Outputdefinition1289Enum; else if (strcmp(name,"Outputdefinition1208")==0) return Outputdefinition1208Enum; - else if (strcmp(name,"Outputdefinition1290")==0) return Outputdefinition1290Enum; + else stage=23; + } + if(stage==23){ + if (strcmp(name,"Outputdefinition1290")==0) return Outputdefinition1290Enum; else if (strcmp(name,"Outputdefinition1291")==0) return Outputdefinition1291Enum; else if (strcmp(name,"Outputdefinition1292")==0) return Outputdefinition1292Enum; else if (strcmp(name,"Outputdefinition1293")==0) return Outputdefinition1293Enum; @@ -2719,10 +2731,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1296")==0) return Outputdefinition1296Enum; else if (strcmp(name,"Outputdefinition1297")==0) return Outputdefinition1297Enum; else if (strcmp(name,"Outputdefinition1298")==0) return Outputdefinition1298Enum; - else stage=23; - } - if(stage==23){ - if (strcmp(name,"Outputdefinition1299")==0) return Outputdefinition1299Enum; + else if (strcmp(name,"Outputdefinition1299")==0) return Outputdefinition1299Enum; else if (strcmp(name,"Outputdefinition1209")==0) return Outputdefinition1209Enum; else if (strcmp(name,"Outputdefinition1300")==0) return Outputdefinition1300Enum; else if (strcmp(name,"Outputdefinition1301")==0) return Outputdefinition1301Enum; @@ -2833,7 +2842,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1414")==0) return Outputdefinition1414Enum; else if (strcmp(name,"Outputdefinition1415")==0) return Outputdefinition1415Enum; else if (strcmp(name,"Outputdefinition1416")==0) return Outputdefinition1416Enum; - else if (strcmp(name,"Outputdefinition1417")==0) return Outputdefinition1417Enum; + else stage=24; + } + if(stage==24){ + if (strcmp(name,"Outputdefinition1417")==0) return Outputdefinition1417Enum; else if (strcmp(name,"Outputdefinition1418")==0) return Outputdefinition1418Enum; else if (strcmp(name,"Outputdefinition1419")==0) return Outputdefinition1419Enum; else if (strcmp(name,"Outputdefinition1420")==0) return Outputdefinition1420Enum; @@ -2842,10 +2854,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1423")==0) return Outputdefinition1423Enum; else if (strcmp(name,"Outputdefinition1424")==0) return Outputdefinition1424Enum; else if (strcmp(name,"Outputdefinition1425")==0) return Outputdefinition1425Enum; - else stage=24; - } - if(stage==24){ - if (strcmp(name,"Outputdefinition1426")==0) return Outputdefinition1426Enum; + else if (strcmp(name,"Outputdefinition1426")==0) return Outputdefinition1426Enum; else if (strcmp(name,"Outputdefinition1427")==0) return Outputdefinition1427Enum; else if (strcmp(name,"Outputdefinition1428")==0) return Outputdefinition1428Enum; else if (strcmp(name,"Outputdefinition1429")==0) return Outputdefinition1429Enum; @@ -2956,7 +2965,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1533")==0) return Outputdefinition1533Enum; else if (strcmp(name,"Outputdefinition1534")==0) return Outputdefinition1534Enum; else if (strcmp(name,"Outputdefinition1535")==0) return Outputdefinition1535Enum; - else if (strcmp(name,"Outputdefinition1536")==0) return Outputdefinition1536Enum; + else stage=25; + } + if(stage==25){ + if (strcmp(name,"Outputdefinition1536")==0) return Outputdefinition1536Enum; else if (strcmp(name,"Outputdefinition1537")==0) return Outputdefinition1537Enum; else if (strcmp(name,"Outputdefinition1538")==0) return Outputdefinition1538Enum; else if (strcmp(name,"Outputdefinition1539")==0) return Outputdefinition1539Enum; @@ -2965,10 +2977,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1541")==0) return Outputdefinition1541Enum; else if (strcmp(name,"Outputdefinition1542")==0) return Outputdefinition1542Enum; else if (strcmp(name,"Outputdefinition1543")==0) return Outputdefinition1543Enum; - else stage=25; - } - if(stage==25){ - if (strcmp(name,"Outputdefinition1544")==0) return Outputdefinition1544Enum; + else if (strcmp(name,"Outputdefinition1544")==0) return Outputdefinition1544Enum; else if (strcmp(name,"Outputdefinition1545")==0) return Outputdefinition1545Enum; else if (strcmp(name,"Outputdefinition1546")==0) return Outputdefinition1546Enum; else if (strcmp(name,"Outputdefinition1547")==0) return Outputdefinition1547Enum; @@ -3079,7 +3088,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1651")==0) return Outputdefinition1651Enum; else if (strcmp(name,"Outputdefinition1652")==0) return Outputdefinition1652Enum; else if (strcmp(name,"Outputdefinition1653")==0) return Outputdefinition1653Enum; - else if (strcmp(name,"Outputdefinition1654")==0) return Outputdefinition1654Enum; + else stage=26; + } + if(stage==26){ + if (strcmp(name,"Outputdefinition1654")==0) return Outputdefinition1654Enum; else if (strcmp(name,"Outputdefinition1655")==0) return Outputdefinition1655Enum; else if (strcmp(name,"Outputdefinition1656")==0) return Outputdefinition1656Enum; else if (strcmp(name,"Outputdefinition1657")==0) return Outputdefinition1657Enum; @@ -3088,10 +3100,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1605")==0) return Outputdefinition1605Enum; else if (strcmp(name,"Outputdefinition1660")==0) return Outputdefinition1660Enum; else if (strcmp(name,"Outputdefinition1661")==0) return Outputdefinition1661Enum; - else stage=26; - } - if(stage==26){ - if (strcmp(name,"Outputdefinition1662")==0) return Outputdefinition1662Enum; + else if (strcmp(name,"Outputdefinition1662")==0) return Outputdefinition1662Enum; else if (strcmp(name,"Outputdefinition1663")==0) return Outputdefinition1663Enum; else if (strcmp(name,"Outputdefinition1664")==0) return Outputdefinition1664Enum; else if (strcmp(name,"Outputdefinition1665")==0) return Outputdefinition1665Enum; @@ -3202,7 +3211,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1706")==0) return Outputdefinition1706Enum; else if (strcmp(name,"Outputdefinition1770")==0) return Outputdefinition1770Enum; else if (strcmp(name,"Outputdefinition1771")==0) return Outputdefinition1771Enum; - else if (strcmp(name,"Outputdefinition1772")==0) return Outputdefinition1772Enum; + else stage=27; + } + if(stage==27){ + if (strcmp(name,"Outputdefinition1772")==0) return Outputdefinition1772Enum; else if (strcmp(name,"Outputdefinition1773")==0) return Outputdefinition1773Enum; else if (strcmp(name,"Outputdefinition1774")==0) return Outputdefinition1774Enum; else if (strcmp(name,"Outputdefinition1775")==0) return Outputdefinition1775Enum; @@ -3211,10 +3223,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1778")==0) return Outputdefinition1778Enum; else if (strcmp(name,"Outputdefinition1779")==0) return Outputdefinition1779Enum; else if (strcmp(name,"Outputdefinition1707")==0) return Outputdefinition1707Enum; - else stage=27; - } - if(stage==27){ - if (strcmp(name,"Outputdefinition1780")==0) return Outputdefinition1780Enum; + else if (strcmp(name,"Outputdefinition1780")==0) return Outputdefinition1780Enum; else if (strcmp(name,"Outputdefinition1781")==0) return Outputdefinition1781Enum; else if (strcmp(name,"Outputdefinition1782")==0) return Outputdefinition1782Enum; else if (strcmp(name,"Outputdefinition1783")==0) return Outputdefinition1783Enum; @@ -3325,7 +3334,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1888")==0) return Outputdefinition1888Enum; else if (strcmp(name,"Outputdefinition1889")==0) return Outputdefinition1889Enum; else if (strcmp(name,"Outputdefinition1808")==0) return Outputdefinition1808Enum; - else if (strcmp(name,"Outputdefinition1890")==0) return Outputdefinition1890Enum; + else stage=28; + } + if(stage==28){ + if (strcmp(name,"Outputdefinition1890")==0) return Outputdefinition1890Enum; else if (strcmp(name,"Outputdefinition1891")==0) return Outputdefinition1891Enum; else if (strcmp(name,"Outputdefinition1892")==0) return Outputdefinition1892Enum; else if (strcmp(name,"Outputdefinition1893")==0) return Outputdefinition1893Enum; @@ -3334,10 +3346,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Outputdefinition1896")==0) return Outputdefinition1896Enum; else if (strcmp(name,"Outputdefinition1897")==0) return Outputdefinition1897Enum; else if (strcmp(name,"Outputdefinition1898")==0) return Outputdefinition1898Enum; - else stage=28; - } - if(stage==28){ - if (strcmp(name,"Outputdefinition1899")==0) return Outputdefinition1899Enum; + else if (strcmp(name,"Outputdefinition1899")==0) return Outputdefinition1899Enum; else if (strcmp(name,"Outputdefinition1809")==0) return Outputdefinition1809Enum; else if (strcmp(name,"Outputdefinition1900")==0) return Outputdefinition1900Enum; else if (strcmp(name,"Outputdefinition1901")==0) return Outputdefinition1901Enum; @@ -3448,7 +3457,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; else if (strcmp(name,"AgeAnalysis")==0) return AgeAnalysisEnum; else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum; - else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum; + else stage=29; + } + if(stage==29){ + if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum; else if (strcmp(name,"AmrNeopz")==0) return AmrNeopzEnum; else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; else if (strcmp(name,"AutodiffJacobian")==0) return AutodiffJacobianEnum; @@ -3457,10 +3469,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Balancethickness2Solution")==0) return Balancethickness2SolutionEnum; else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; else if (strcmp(name,"BalancethicknessApparentMassbalance")==0) return BalancethicknessApparentMassbalanceEnum; - else stage=29; - } - if(stage==29){ - if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum; + else if (strcmp(name,"BalancethicknessSoftAnalysis")==0) return BalancethicknessSoftAnalysisEnum; else if (strcmp(name,"BalancethicknessSoftSolution")==0) return BalancethicknessSoftSolutionEnum; else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; else if (strcmp(name,"BalancevelocityAnalysis")==0) return BalancevelocityAnalysisEnum; @@ -3571,7 +3580,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"GaussTetra")==0) return GaussTetraEnum; else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; - else if (strcmp(name,"GenericParam")==0) return GenericParamEnum; + else stage=30; + } + if(stage==30){ + if (strcmp(name,"GenericParam")==0) return GenericParamEnum; else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum; else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; else if (strcmp(name,"Gradient2")==0) return Gradient2Enum; @@ -3580,10 +3592,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum; else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum; - else stage=30; - } - if(stage==30){ - if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum; + else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum; else if (strcmp(name,"Gset")==0) return GsetEnum; else if (strcmp(name,"Gsl")==0) return GslEnum; else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum; @@ -3694,7 +3703,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"MinVel")==0) return MinVelEnum; else if (strcmp(name,"MinVx")==0) return MinVxEnum; else if (strcmp(name,"MinVy")==0) return MinVyEnum; - else if (strcmp(name,"MinVz")==0) return MinVzEnum; + else stage=31; + } + if(stage==31){ + if (strcmp(name,"MinVz")==0) return MinVzEnum; else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum; else if (strcmp(name,"Moulin")==0) return MoulinEnum; else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; @@ -3703,10 +3715,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"Mumps")==0) return MumpsEnum; else if (strcmp(name,"NoFrictionOnPartiallyFloating")==0) return NoFrictionOnPartiallyFloatingEnum; else if (strcmp(name,"NoMeltOnPartiallyFloating")==0) return NoMeltOnPartiallyFloatingEnum; - else stage=31; - } - if(stage==31){ - if (strcmp(name,"Nodal")==0) return NodalEnum; + else if (strcmp(name,"Nodal")==0) return NodalEnum; else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum; else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; @@ -3817,7 +3826,10 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum; else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum; - else if (strcmp(name,"Tetra")==0) return TetraEnum; + else stage=32; + } + if(stage==32){ + if (strcmp(name,"Tetra")==0) return TetraEnum; else if (strcmp(name,"TetraInput")==0) return TetraInputEnum; else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; @@ -3826,10 +3838,7 @@ int StringToEnumx(const char* name,bool notfounderror){ else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum; else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum; else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum; - else stage=32; - } - if(stage==32){ - if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum; + else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum; else if (strcmp(name,"TotalGroundedBmbScaled")==0) return TotalGroundedBmbScaledEnum; else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum; else if (strcmp(name,"TotalSmbScaled")==0) return TotalSmbScaledEnum; diff --git a/src/c/shared/Enum/issmenums.jl b/src/c/shared/Enum/issmenums.jl index 9d8807a8b..666e47e26 100644 --- a/src/c/shared/Enum/issmenums.jl +++ b/src/c/shared/Enum/issmenums.jl @@ -200,6 +200,11 @@ FeFSNitscheGammaEnum FrictionCouplingEnum FrictionDeltaEnum + FrictionDNNEnum + FrictionDNNpsEnum + FrictionDNNstEnum + FrictionDNNInputScaleEnum + FrictionDNNOutputScaleEnum FrictionEffectivePressureLimitEnum FrictionFEnum FrictionGammaEnum @@ -238,7 +243,6 @@ FrontalForcingsSdpolyparamsEnum GrdModelEnum GroundinglineFrictionInterpolationEnum - GroundinglineIntrusionDistanceEnum GroundinglineMeltInterpolationEnum GroundinglineMigrationEnum GroundinglineNumRequestedOutputsEnum @@ -900,6 +904,7 @@ FrontalForcingsSubglacialDischargearmaEnum FrontalForcingsSubglacialDischargeEnum GeometryHydrostaticRatioEnum + GroundinglineIntrusionDistanceEnum NGiaEnum NGiaRateEnum UGiaEnum @@ -1226,6 +1231,9 @@ SmbSummerAlbedoEnum SmbSnowheightEnum SmbTEnum + SmbT10Enum + SmbT30Enum + SmbT50Enum SmbTaEnum SmbTampEnum SmbTeValueEnum @@ -1236,6 +1244,7 @@ SmbTemperaturesReconstructedEnum SmbTiniEnum SmbTmeanEnum + SmbTsEnum SmbTzEnum SmbValuesAutoregressionEnum SmbValuesMovingaverageEnum @@ -3967,6 +3976,11 @@ function EnumToString(enum::IssmEnum) if(enum==FeFSNitscheGammaEnum) return "FeFSNitscheGamma" end if(enum==FrictionCouplingEnum) return "FrictionCoupling" end if(enum==FrictionDeltaEnum) return "FrictionDelta" end + if(enum==FrictionDNNEnum) return "FrictionDNN" end + if(enum==FrictionDNNpsEnum) return "FrictionDNNps" end + if(enum==FrictionDNNstEnum) return "FrictionDNNst" end + if(enum==FrictionDNNInputScaleEnum) return "FrictionDNNInputScale" end + if(enum==FrictionDNNOutputScaleEnum) return "FrictionDNNOutputScale" end if(enum==FrictionEffectivePressureLimitEnum) return "FrictionEffectivePressureLimit" end if(enum==FrictionFEnum) return "FrictionF" end if(enum==FrictionGammaEnum) return "FrictionGamma" end @@ -4005,7 +4019,6 @@ function EnumToString(enum::IssmEnum) if(enum==FrontalForcingsSdpolyparamsEnum) return "FrontalForcingsSdpolyparams" end if(enum==GrdModelEnum) return "GrdModel" end if(enum==GroundinglineFrictionInterpolationEnum) return "GroundinglineFrictionInterpolation" end - if(enum==GroundinglineIntrusionDistanceEnum) return "GroundinglineIntrusionDistance" end if(enum==GroundinglineMeltInterpolationEnum) return "GroundinglineMeltInterpolation" end if(enum==GroundinglineMigrationEnum) return "GroundinglineMigration" end if(enum==GroundinglineNumRequestedOutputsEnum) return "GroundinglineNumRequestedOutputs" end @@ -4667,6 +4680,7 @@ function EnumToString(enum::IssmEnum) if(enum==FrontalForcingsSubglacialDischargearmaEnum) return "FrontalForcingsSubglacialDischargearma" end if(enum==FrontalForcingsSubglacialDischargeEnum) return "FrontalForcingsSubglacialDischarge" end if(enum==GeometryHydrostaticRatioEnum) return "GeometryHydrostaticRatio" end + if(enum==GroundinglineIntrusionDistanceEnum) return "GroundinglineIntrusionDistance" end if(enum==NGiaEnum) return "NGia" end if(enum==NGiaRateEnum) return "NGiaRate" end if(enum==UGiaEnum) return "UGia" end @@ -4993,6 +5007,9 @@ function EnumToString(enum::IssmEnum) if(enum==SmbSummerAlbedoEnum) return "SmbSummerAlbedo" end if(enum==SmbSnowheightEnum) return "SmbSnowheight" end if(enum==SmbTEnum) return "SmbT" end + if(enum==SmbT10Enum) return "SmbT10" end + if(enum==SmbT30Enum) return "SmbT30" end + if(enum==SmbT50Enum) return "SmbT50" end if(enum==SmbTaEnum) return "SmbTa" end if(enum==SmbTampEnum) return "SmbTamp" end if(enum==SmbTeValueEnum) return "SmbTeValue" end @@ -5003,6 +5020,7 @@ function EnumToString(enum::IssmEnum) if(enum==SmbTemperaturesReconstructedEnum) return "SmbTemperaturesReconstructed" end if(enum==SmbTiniEnum) return "SmbTini" end if(enum==SmbTmeanEnum) return "SmbTmean" end + if(enum==SmbTsEnum) return "SmbTs" end if(enum==SmbTzEnum) return "SmbTz" end if(enum==SmbValuesAutoregressionEnum) return "SmbValuesAutoregression" end if(enum==SmbValuesMovingaverageEnum) return "SmbValuesMovingaverage" end @@ -7734,6 +7752,11 @@ function StringToEnum(name::String) if(name=="FeFSNitscheGamma") return FeFSNitscheGammaEnum end if(name=="FrictionCoupling") return FrictionCouplingEnum end if(name=="FrictionDelta") return FrictionDeltaEnum end + if(name=="FrictionDNN") return FrictionDNNEnum end + if(name=="FrictionDNNps") return FrictionDNNpsEnum end + if(name=="FrictionDNNst") return FrictionDNNstEnum end + if(name=="FrictionDNNInputScale") return FrictionDNNInputScaleEnum end + if(name=="FrictionDNNOutputScale") return FrictionDNNOutputScaleEnum end if(name=="FrictionEffectivePressureLimit") return FrictionEffectivePressureLimitEnum end if(name=="FrictionF") return FrictionFEnum end if(name=="FrictionGamma") return FrictionGammaEnum end @@ -7772,7 +7795,6 @@ function StringToEnum(name::String) if(name=="FrontalForcingsSdpolyparams") return FrontalForcingsSdpolyparamsEnum end if(name=="GrdModel") return GrdModelEnum end if(name=="GroundinglineFrictionInterpolation") return GroundinglineFrictionInterpolationEnum end - if(name=="GroundinglineIntrusionDistance") return GroundinglineIntrusionDistanceEnum end if(name=="GroundinglineMeltInterpolation") return GroundinglineMeltInterpolationEnum end if(name=="GroundinglineMigration") return GroundinglineMigrationEnum end if(name=="GroundinglineNumRequestedOutputs") return GroundinglineNumRequestedOutputsEnum end @@ -8434,6 +8456,7 @@ function StringToEnum(name::String) if(name=="FrontalForcingsSubglacialDischargearma") return FrontalForcingsSubglacialDischargearmaEnum end if(name=="FrontalForcingsSubglacialDischarge") return FrontalForcingsSubglacialDischargeEnum end if(name=="GeometryHydrostaticRatio") return GeometryHydrostaticRatioEnum end + if(name=="GroundinglineIntrusionDistance") return GroundinglineIntrusionDistanceEnum end if(name=="NGia") return NGiaEnum end if(name=="NGiaRate") return NGiaRateEnum end if(name=="UGia") return UGiaEnum end @@ -8760,6 +8783,9 @@ function StringToEnum(name::String) if(name=="SmbSummerAlbedo") return SmbSummerAlbedoEnum end if(name=="SmbSnowheight") return SmbSnowheightEnum end if(name=="SmbT") return SmbTEnum end + if(name=="SmbT10") return SmbT10Enum end + if(name=="SmbT30") return SmbT30Enum end + if(name=="SmbT50") return SmbT50Enum end if(name=="SmbTa") return SmbTaEnum end if(name=="SmbTamp") return SmbTampEnum end if(name=="SmbTeValue") return SmbTeValueEnum end @@ -8770,6 +8796,7 @@ function StringToEnum(name::String) if(name=="SmbTemperaturesReconstructed") return SmbTemperaturesReconstructedEnum end if(name=="SmbTini") return SmbTiniEnum end if(name=="SmbTmean") return SmbTmeanEnum end + if(name=="SmbTs") return SmbTsEnum end if(name=="SmbTz") return SmbTzEnum end if(name=="SmbValuesAutoregression") return SmbValuesAutoregressionEnum end if(name=="SmbValuesMovingaverage") return SmbValuesMovingaverageEnum end diff --git a/src/m/classes/SMBgemb.m b/src/m/classes/SMBgemb.m index 66cbece71..7884b9408 100644 --- a/src/m/classes/SMBgemb.m +++ b/src/m/classes/SMBgemb.m @@ -52,9 +52,10 @@ mappedforcingelevation = NaN; %The elevation of each mapped forcing location (m above sea level). Of size number %of forcing points. Use if ismappedforcing is true. lapseTaValue = NaN; %Temperature lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. - % (Default value is -0.006 K m-1.) + % (Default value is -0.006 K m-1., vector of mapping points) lapsedlwrfValue = NaN; %Longwave down lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. - % If set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1.) + % Where set to 0, dlwrf will scale with a constant effective atmospheric emissivity. + % (Default value is -0.032 W m-2 m-1., vector of mapping points) % Initialization of snow properties Dzini = NaN; %cell depth (m) @@ -224,8 +225,8 @@ function disp(self) % {{{ fielddisplay(self,'mappedforcingpoint','Mapping of which forcing point will map to each mesh element for ismappedforcing option (integer). Size number of elements.'); fielddisplay(self,'mappedforcingelevation','The elevation of each mapped forcing location (m above sea level) for ismappedforcing option. Size number of forcing points.'); - fielddisplay(self,'lapseTaValue','Temperature lapse rate if forcing has different grid and should be remapped for ismappedforcing option. (Default value is -0.006 K m-1.)'); - fielddisplay(self,'lapsedlwrfValue','Longwave down lapse rate if forcing has different grid and should be remapped for ismappedforcing option. If set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1.)'); + fielddisplay(self,'lapseTaValue','Temperature lapse rate of each mapped forcing location, if forcing has different grid and should be remapped for ismappedforcing option. (Default value is -0.006 K m-1, vector of mapping points)'); + fielddisplay(self,'lapsedlwrfValue','Longwave down lapse rate of each mapped forcing location, if forcing has different grid and should be remapped for ismappedforcing option. Where set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1, vector of mapping points)'); %snow properties init fielddisplay(self,'Dzini','Initial cell depth when restart [m]'); @@ -295,6 +296,8 @@ function disp(self) % {{{ self.P=project3d(md,'vector',self.P,'type','element'); self.eAir=project3d(md,'vector',self.eAir,'type','element'); self.pAir=project3d(md,'vector',self.pAir,'type','element'); + self.C=project3d(md,'vector',self.C,'type','element'); + self.Tmean=project3d(md,'vector',self.Tmean,'type','element'); end if ~isnan(self.Dzini) @@ -467,8 +470,14 @@ function disp(self) % {{{ if (self.ismappedforcing) md = checkfield(md,'fieldname','smb.mappedforcingpoint','size',[md.mesh.numberofelements 1],'NaN',1,'Inf',1,'>',0,'<=',sizeta(1)-1); md = checkfield(md,'fieldname','smb.mappedforcingelevation','size',[sizeta(1)-1 1],'NaN',1,'Inf',1); - md = checkfield(md,'fieldname','smb.lapseTaValue','NaN',1,'Inf',1); - md = checkfield(md,'fieldname','smb.lapsedlwrfValue','NaN',1,'Inf',1); + if prod(size(self.lapseTaValue))==1 + disp('WARNING:smb.lapseTaValue is now a vector of mapped elements. Set to md.smb.lapseTaValue*ones(size(md.smb.mappedforcingelevation)).'); + end + if prod(size(self.lapsedlwrfValue))==1 + disp('WARNING:smb.lapsedlwrfValue is now a vector of mapped elements. Set to md.smb.lapsedlwrfValue*ones(size(md.smb.mappedforcingelevation)).'); + end + md = checkfield(md,'fieldname','smb.lapseTaValue','size',[sizeta(1)-1 1],'NaN',1,'Inf',1); + md = checkfield(md,'fieldname','smb.lapsedlwrfValue','size',[sizeta(1)-1 1], 'NaN',1,'Inf',1); end md = checkfield(md,'fieldname','smb.aIdx','NaN',1,'Inf',1,'values',[0,1,2,3,4]); @@ -607,8 +616,8 @@ function marshall(self,prefix,md,fid) % {{{ if (self.ismappedforcing) WriteData(fid,prefix,'object',self,'class','smb','fieldname','mappedforcingpoint','format','IntMat','mattype',2); WriteData(fid,prefix,'object',self,'class','smb','fieldname','mappedforcingelevation','format','DoubleMat','mattype',3); - WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapseTaValue','format','Double'); - WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapsedlwrfValue','format','Double'); + WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapseTaValue','format','DoubleMat','mattype',3); + WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapsedlwrfValue','format','DoubleMat','mattype',3); end %figure out dt from forcings: diff --git a/src/m/classes/SMBgemb.py b/src/m/classes/SMBgemb.py index dad4ab10f..ed05e7407 100644 --- a/src/m/classes/SMBgemb.py +++ b/src/m/classes/SMBgemb.py @@ -56,8 +56,8 @@ def __init__(self, *args): # {{{ self.dulwrfValue = np.nan #Delta with which to perturb the long wave radiation upwards. Use if isdeltaLWup is true. self.mappedforcingpoint = np.nan #Mapping of which forcing point will map to each mesh element (integer). Of size number of elements. Use if ismappedforcing is true. self.mappedforcingelevation = np.nan #The elevation of each mapped forcing location (m above sea level). Of size number of forcing points. Use if ismappedforcing is true. - self.lapseTaValue = np.nan #Temperature lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. (Default value is -0.006 K m-1.) - self.lapsedlwrfValue = np.nan #Longwave down lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. If set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1.) + self.lapseTaValue = np.nan #Temperature lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. (Default value is -0.006 K m-1., vector of mapping points) + self.lapsedlwrfValue = np.nan #Longwave down lapse rate if forcing has different grid and should be remapped. Use if ismappedforcing is true. Where set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1., vector of mapping points) # Initialization of snow properties self.Dzini = np.nan # cell depth (m) @@ -224,8 +224,8 @@ def __repr__(self): # {{{ s += '{}\n'.format(fielddisplay(self,'mappedforcingpoint','Mapping of which forcing point will map to each mesh element for ismappedforcing option (integer). Size number of elements.')) s += '{}\n'.format(fielddisplay(self,'mappedforcingelevation','The elevation of each mapped forcing location (m above sea level) for ismappedforcing option. Size number of forcing points.')) - s += '{}\n'.format(fielddisplay(self,'lapseTaValue','Temperature lapse rate if forcing has different grid and should be remapped for ismappedforcing option. (Default value is -0.006 K m-1.)')) - s += '{}\n'.format(fielddisplay(self,'lapsedlwrfValue','Longwave down lapse rate if forcing has different grid and should be remapped for ismappedforcing option. If set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1.)')) + s += '{}\n'.format(fielddisplay(self,'lapseTaValue','Temperature lapse rate of each mapped forcing location, if forcing has different grid and should be remapped for ismappedforcing option. (Default value is -0.006 K m-1, vector of mapping points)')) + s += '{}\n'.format(fielddisplay(self,'lapsedlwrfValue','Longwave down lapse rate of each mapped forcing location if forcing has different grid and should be remapped for ismappedforcing option. Where set to 0, dlwrf will scale with a constant effective atmospheric emissivity. (Default value is -0.032 W m-2 m-1., vector of mapping points)')) # Snow properties init s += '{}\n'.format(fielddisplay(self, 'Dzini', 'Initial cell depth when restart [m]')) @@ -450,8 +450,14 @@ def checkconsistency(self, md, solution, analyses): # {{{ if self.ismappedforcing: md = checkfield(md, 'fieldname', 'smb.mappedforcingpoint', 'size',[md.mesh.numberofelements], 'NaN', 1, 'Inf', 1, '>', 0, '<=' ,sizeta[0]-1) md = checkfield(md, 'fieldname', 'smb.mappedforcingelevation', 'size', [sizeta[0]-1], 'NaN', 1, 'Inf', 1) - md = checkfield(md, 'fieldname', 'smb.lapseTaValue', 'NaN', 1, 'Inf', 1) - md = checkfield(md, 'fieldname', 'smb.lapsedlwrfValue', 'NaN', 1, 'Inf', 1) + if np.prod(np.shape(self.lapseTaValue))==1: + print("WARNING:smb.lapseTaValue is now a vector of mapped elements. Set to md.smb.lapseTaValue*ones.np(np.shape(md.smb.mappedforcingelevation)).") + + if np.prod(np.shape(self.lapsedlwrfValue))==1: + print("WARNING:smb.lapsedlwrfValue is now a vector of mapped elements. Set to md.smb.lapsedlwrfValue*np.ones(np.shape(md.smb.mappedforcingelevation)).") + + md = checkfield(md, 'fieldname', 'smb.lapseTaValue', 'size',[sizeta[0]-1],'NaN',1,'Inf',1); + md = checkfield(md, 'fieldname', 'smb.lapsedlwrfValue', 'size',[sizeta[0]-1], 'NaN',1,'Inf',1); md = checkfield(md, 'fieldname', 'smb.aIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2, 3, 4]) md = checkfield(md, 'fieldname', 'smb.eIdx', 'NaN', 1, 'Inf', 1, 'values', [0, 1, 2]) @@ -584,8 +590,8 @@ def marshall(self, prefix, md, fid): # {{{ if self.ismappedforcing: WriteData(fid,prefix,'object',self,'class','smb','fieldname','mappedforcingpoint','format','IntMat','mattype',2) WriteData(fid,prefix,'object',self,'class','smb','fieldname','mappedforcingelevation','format','DoubleMat','mattype',3) - WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapseTaValue','format','Double') - WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapsedlwrfValue','format','Double') + WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapseTaValue','format','DoubleMat','mattype',3) + WriteData(fid,prefix,'object',self,'class','smb','fieldname','lapsedlwrfValue','format','DoubleMat','mattype',3) # Figure out dt from forcings if (np.any(self.P[-1] - self.Ta[-1] != 0) | np.any(self.V[-1] - self.Ta[-1] != 0) | np.any(self.dswrf[-1] - self.Ta[-1] != 0) | np.any(self.dlwrf[-1] - self.Ta[-1] != 0) | np.any(self.eAir[-1] - self.Ta[-1] != 0) | np.any(self.pAir[-1] - self.Ta[-1] != 0)): diff --git a/src/m/classes/clusters/lonestar.m b/src/m/classes/clusters/lonestar.m index 0bba3edbd..1b3e39b97 100644 --- a/src/m/classes/clusters/lonestar.m +++ b/src/m/classes/clusters/lonestar.m @@ -8,12 +8,12 @@ classdef lonestar properties (SetAccess=public) % {{{ - name = 'ls5.tacc.utexas.edu' + name = 'ls6.tacc.utexas.edu' login = ''; - modules = {'intel/18.0.2' 'gsl'}; + modules = {'intel/24.1' 'impi/21.12' 'gsl/2.8'}; numnodes = 1; cpuspernode = 24; - port = 1099; + port = 0; queue = 'normal'; codepath = ''; executionpath = ''; diff --git a/src/m/inversions/velocitymisfit.m b/src/m/inversions/velocitymisfit.m index 989a3067c..8b7be83eb 100644 --- a/src/m/inversions/velocitymisfit.m +++ b/src/m/inversions/velocitymisfit.m @@ -1,12 +1,12 @@ -function J=misfit(md) +function J=velocitymisfit(md) %MISFIT - compute misfit % % Usage: -% J=misfit(md) -% -% Example: -% J=misfit(md) +% J = velocitymisfit(md) % +% - modeled velocities will be pulled from md.initialization.vx/vy +% - observed velocities will be pulled from md.inversion.vx_obs/vy_obs + if dimension(md.mesh)==2, elements=md.mesh.elements; diff --git a/src/m/solve/listoutputs.m b/src/m/solve/listoutputs.m index 117382680..f9b2e4d11 100644 --- a/src/m/solve/listoutputs.m +++ b/src/m/solve/listoutputs.m @@ -175,6 +175,7 @@ FrontalForcingsSubglacialDischargearma FrontalForcingsSubglacialDischarge GeometryHydrostaticRatio +GroundinglineIntrusionDistance NGia NGiaRate UGia @@ -501,6 +502,9 @@ SmbSummerAlbedo SmbSnowheight SmbT +SmbT10 +SmbT30 +SmbT50 SmbTa SmbTamp SmbTeValue @@ -511,6 +515,7 @@ SmbTemperaturesReconstructed SmbTini SmbTmean +SmbTs SmbTz SmbValuesAutoregression SmbValuesMovingaverage @@ -623,6 +628,7 @@ OldAccumulatedDeltaTws %Scalar outputs +AverageButtressing Divergence MaxDivergence IceMass diff --git a/test/Archives/Archive258.arch b/test/Archives/Archive258.arch index b408bc93d..48c6811b5 100644 Binary files a/test/Archives/Archive258.arch and b/test/Archives/Archive258.arch differ diff --git a/test/Archives/Archive259.arch b/test/Archives/Archive259.arch index 7e67c3df5..52c8af74f 100644 Binary files a/test/Archives/Archive259.arch and b/test/Archives/Archive259.arch differ diff --git a/test/NightlyRun/test258.m b/test/NightlyRun/test258.m index 0137c0554..f44b26caf 100644 --- a/test/NightlyRun/test258.m +++ b/test/NightlyRun/test258.m @@ -42,6 +42,8 @@ md.smb.isprecipforcingremapped=1; md.smb.mappedforcingpoint=griddata(xe2,ye2,mpoints,xe,ye,'nearest'); md.smb.mappedforcingelevation=mean(md2.geometry.surface(md2.mesh.elements),2); +md.smb.lapseTaValue=md.smb.lapseTaValue*ones(size(md.smb.mappedforcingelevation)); +md.smb.lapsedlwrfValue=md.smb.lapsedlwrfValue*ones(size(md.smb.mappedforcingelevation)); %smb settings md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',... @@ -49,7 +51,7 @@ 'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt',... 'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',... 'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain',... - 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze'}; + 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze','SmbTs','SmbT10','SmbT30','SmbT50'}; %only run smb core: md.transient.isstressbalance=0; @@ -71,8 +73,8 @@ end %Fields and tolerances to track changes -field_names ={'Layers','SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain','SmbAccumulatedRefreeze','SmbRunoff','SmbMelt','SmbEC','SmbPrecipitation','SmbRain','SmbRefreeze','SmbWAdd'}; -field_tolerances ={1e-12,4e-11,2e-11,3e-11,6e-11,8e-11,8e-11,1e-12,5e-11,2e-12,1e-12,1e-12,4e-11,2e-11,5e-11,1e-11,9e-10,2e-11,1e-11,9e-10,2e-11,2e-09,1e-11,1e-11,1e-11,8e-10,2e-11,2e-11,1e-11,1e-11,2e-11,1e-11}; +field_names ={'Layers','SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbTs','SmbT10','SmbT30','SmbT50','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain','SmbAccumulatedRefreeze','SmbRunoff','SmbMelt','SmbEC','SmbPrecipitation','SmbRain','SmbRefreeze','SmbWAdd'}; +field_tolerances ={1e-12,4e-11,2e-11,3e-11,6e-11,8e-11,8e-11,1e-12,5e-11,2e-12,1e-12,1e-12,4e-11,2e-11,5e-11,1e-11,9e-10,2e-11,2e-11,2e-11,2e-11,2e-11,1e-11,9e-10,2e-11,2e-09,1e-11,1e-11,1e-11,8e-10,2e-11,2e-11,1e-11,1e-11,2e-11,1e-11}; field_values={... (nlayers),... @@ -93,6 +95,10 @@ (md.results.TransientSolution(end).SmbMeanULW(1)),... (md.results.TransientSolution(end).SmbNetLW(1)),... (md.results.TransientSolution(end).SmbNetSW(1)),... + (md.results.TransientSolution(end).SmbTs(1)),... + (md.results.TransientSolution(end).SmbT10(1)),... + (md.results.TransientSolution(end).SmbT30(1)),... + (md.results.TransientSolution(end).SmbT50(1)),... (md.results.TransientSolution(end).SmbAccumulatedMassBalance(1)),... (md.results.TransientSolution(end).SmbAccumulatedRunoff(1)),... (md.results.TransientSolution(end).SmbAccumulatedMelt(1)),... diff --git a/test/NightlyRun/test258.py b/test/NightlyRun/test258.py index c325da6f2..7a865b70b 100644 --- a/test/NightlyRun/test258.py +++ b/test/NightlyRun/test258.py @@ -60,6 +60,8 @@ interpp = NearestNDInterpolator((xe2, ye2), mpoints) md.smb.mappedforcingpoint=interpp(xe,ye) md.smb.mappedforcingelevation=np.mean(md2.geometry.surface[md2.mesh.elements-1],axis=1) +md.smb.lapseTaValue=md.smb.lapseTaValue*np.ones(np.shape(md.smb.mappedforcingelevation)) +md.smb.lapsedlwrfValue=md.smb.lapsedlwrfValue*np.ones(np.shape(md.smb.mappedforcingelevation)) #smb settings md.smb.requested_outputs = ['SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC', @@ -67,7 +69,7 @@ 'SmbMeanULW','SmbNetLW','SmbNetSW','SmbWAdd','SmbRunoff','SmbRefreeze','SmbMelt', 'SmbEC','SmbPrecipitation','SmbRain','SmbAccumulatedMassBalance','SmbAccumulatedRunoff', 'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation','SmbAccumulatedRain', - 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze'] + 'SmbAccumulatedPrecipitation','SmbAccumulatedRefreeze','SmbTs','SmbT10','SmbT30','SmbT50'] #only run smb core: md.transient.isstressbalance = 0 @@ -88,8 +90,8 @@ nlayers=np.minimum(md.results.TransientSolution[i].SmbT.shape[1], nlayers) #Fields and tolerances to track changes -field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance', 'SmbAccumulatedRunoff', 'SmbAccumulatedMelt', 'SmbAccumulatedEC', 'SmbAccumulatedPrecipitation', 'SmbAccumulatedRain', 'SmbAccumulatedRefreeze', 'SmbRunoff', 'SmbMelt', 'SmbEC', 'SmbPrecipitation', 'SmbRain', 'SmbRefreeze', 'SmbWAdd'] -field_tolerances = [1e-12, 4e-11, 2e-11, 3e-11, 6e-11, 8e-11, 8e-11, 1e-12, 5e-11, 2e-12, 1e-12, 1e-12, 4e-11, 2e-11, 5e-11, 1e-11, 9e-10, 2e-11, 1e-11, 9e-10, 2e-11, 2e-09, 1e-11, 1e-11, 1e-11, 8e-10, 2e-11, 2e-11, 1e-11, 1e-11, 2e-11, 1e-11] +field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbTs', 'SmbT10', 'SmbT30', 'SmbT50', 'SmbAccumulatedMassBalance', 'SmbAccumulatedRunoff', 'SmbAccumulatedMelt', 'SmbAccumulatedEC', 'SmbAccumulatedPrecipitation', 'SmbAccumulatedRain', 'SmbAccumulatedRefreeze', 'SmbRunoff', 'SmbMelt', 'SmbEC', 'SmbPrecipitation', 'SmbRain', 'SmbRefreeze', 'SmbWAdd'] +field_tolerances = [1e-12, 4e-11, 2e-11, 3e-11, 6e-11, 8e-11, 8e-11, 1e-12, 5e-11, 2e-12, 1e-12, 1e-12, 4e-11, 2e-11, 5e-11, 1e-11, 9e-10, 2e-11, 2e-11, 2e-11, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11, 2e-09, 1e-11, 1e-11, 1e-11, 8e-10, 2e-11, 2e-11, 1e-11, 1e-11, 2e-11, 1e-11] # Shape is different in python solution (fixed using reshape) which can cause test failure field_values = [ @@ -111,6 +113,10 @@ md.results.TransientSolution[-1].SmbMeanULW[0], md.results.TransientSolution[-1].SmbNetLW[0], md.results.TransientSolution[-1].SmbNetSW[0], + md.results.TransientSolution[-1].SmbTs[0], + md.results.TransientSolution[-1].SmbT10[0], + md.results.TransientSolution[-1].SmbT30[0], + md.results.TransientSolution[-1].SmbT50[0], md.results.TransientSolution[-1].SmbAccumulatedMassBalance[0], md.results.TransientSolution[-1].SmbAccumulatedRunoff[0], md.results.TransientSolution[-1].SmbAccumulatedMelt[0], diff --git a/test/NightlyRun/test259.m b/test/NightlyRun/test259.m index 5b7816c26..0a504ee1b 100644 --- a/test/NightlyRun/test259.m +++ b/test/NightlyRun/test259.m @@ -43,6 +43,8 @@ md.smb.lapsedlwrfValue=0; md.smb.mappedforcingpoint=griddata(xe2,ye2,mpoints,xe,ye,'nearest'); md.smb.mappedforcingelevation=mean(md2.geometry.surface(md2.mesh.elements),2); +md.smb.lapseTaValue=md.smb.lapseTaValue*ones(size(md.smb.mappedforcingelevation)); +md.smb.lapsedlwrfValue=md.smb.lapsedlwrfValue*ones(size(md.smb.mappedforcingelevation)); %smb settings md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',... diff --git a/test/NightlyRun/test259.py b/test/NightlyRun/test259.py index d65fc217b..bb113bc1d 100644 --- a/test/NightlyRun/test259.py +++ b/test/NightlyRun/test259.py @@ -61,6 +61,8 @@ interpp = NearestNDInterpolator((xe2, ye2), mpoints) md.smb.mappedforcingpoint=interpp(xe,ye) md.smb.mappedforcingelevation=np.mean(md2.geometry.surface[md2.mesh.elements-1],axis=1) +md.smb.lapseTaValue=md.smb.lapseTaValue*np.ones(np.shape(md.smb.mappedforcingelevation)) +md.smb.lapsedlwrfValue=md.smb.lapsedlwrfValue*np.ones(np.shape(md.smb.mappedforcingelevation)) #smb settings md.smb.requested_outputs = ['SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',