Changeset 26859
- Timestamp:
- 02/08/22 08:59:38 (3 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r26836 r26859 545 545 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.num_fields",StochasticForcingNumFieldsEnum)); 546 546 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.defaultdimension",StochasticForcingDefaultDimensionEnum)); 547 parameters->AddObject(iomodel->CopyConstantObject("md.stochasticforcing.stochastictimestep",StochasticForcingTimestepEnum)); 547 548 iomodel->FindConstant(&fields,&num_fields,"md.stochasticforcing.fields"); 548 549 if(num_fields<1) _error_("no stochasticforcing fields found"); -
issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
r26837 r26859 26 26 femmodel->parameters->FindParam(&covariance,&M,&N,StochasticForcingCovarianceEnum); _assert_(M==dimtot); _assert_(N==dimtot); 27 27 28 /*Check if this is a timestep for new noiseterms computation*/ 29 bool isstepforstoch = false; 30 IssmDouble time,dt,starttime,tstep_stoch; 31 femmodel->parameters->FindParam(&time,TimeEnum); 32 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 33 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 34 femmodel->parameters->FindParam(&tstep_stoch,StochasticForcingTimestepEnum); 35 36 #ifndef _HAVE_AD_ 37 if((fmod(time,tstep_stoch)<fmod((time-dt),tstep_stoch)) || (time<=starttime+dt) || tstep_stoch==dt) isstepforstoch = true; 38 #else 39 _error_("not implemented yet"); 40 #endif 41 28 42 /*Compute noise terms*/ 29 IssmDouble* noiseterms = xNew<IssmDouble>(dimtot); 30 my_rank=IssmComm::GetRank(); 31 if(my_rank==0){ 32 int fixedseed; 33 IssmDouble time,dt,starttime; 34 femmodel->parameters->FindParam(&time,TimeEnum); 35 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 36 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 37 /*Determine whether random seed is fixed to time step (randomflag==false) or random seed truly random (randomflag==true)*/ 38 if(randomflag) fixedseed=-1; 39 else fixedseed = reCast<int,IssmDouble>((time-starttime)/dt); 40 /*multivariateNormal needs to be passed a NULL pointer to avoid memory leak issues*/ 41 IssmDouble* temparray = NULL; 42 multivariateNormal(&temparray,dimtot,0.0,covariance,fixedseed); 43 for(int i=0;i<dimtot;i++) noiseterms[i]=temparray[i]; 43 IssmDouble* noiseterms = xNew<IssmDouble>(dimtot); 44 if(isstepforstoch){ 45 my_rank=IssmComm::GetRank(); 46 if(my_rank==0){ 47 int fixedseed; 48 /*Determine whether random seed is fixed to time step (randomflag==false) or random seed truly random (randomflag==true)*/ 49 if(randomflag) fixedseed=-1; 50 else fixedseed = reCast<int,IssmDouble>((time-starttime)/dt); 51 /*multivariateNormal needs to be passed a NULL pointer to avoid memory leak issues*/ 52 IssmDouble* temparray = NULL; 53 multivariateNormal(&temparray,dimtot,0.0,covariance,fixedseed); 54 for(int i=0;i<dimtot;i++) noiseterms[i]=temparray[i]; 55 xDelete<IssmDouble>(temparray); 56 } 57 ISSM_MPI_Bcast(noiseterms,dimtot,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 58 femmodel->parameters->SetParam(noiseterms,dimtot,StochasticForcingNoisetermsEnum); 59 } 60 else{ 61 IssmDouble* temparray = NULL; 62 femmodel->parameters->FindParam(&temparray,&N,StochasticForcingNoisetermsEnum); _assert_(N==dimtot); 63 for(int i=0;i<dimtot;i++) noiseterms[i] = temparray[i]; 44 64 xDelete<IssmDouble>(temparray); 45 } 46 ISSM_MPI_Bcast(noiseterms,dimtot,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); 47 65 } 66 48 67 int i=0; 49 68 for(int j=0;j<numfields;j++){ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26837 r26859 113 113 syn keyword cConstant CalvingMinthicknessEnum 114 114 syn keyword cConstant CalvingTestSpeedfactorEnum 115 syn keyword cConstant CalvingUseParamEnum 116 syn keyword cConstant CalvingScaleThetaEnum 117 syn keyword cConstant CalvingAmpAlphaEnum 118 syn keyword cConstant CalvingMidpointEnum 119 syn keyword cConstant CalvingNonlinearLawEnum 115 120 syn keyword cConstant ConfigurationTypeEnum 116 121 syn keyword cConstant ConstantsGEnum … … 428 433 syn keyword cConstant StochasticForcingIsStochasticForcingEnum 429 434 syn keyword cConstant StochasticForcingIsWaterPressureEnum 435 syn keyword cConstant StochasticForcingNoisetermsEnum 430 436 syn keyword cConstant StochasticForcingNumFieldsEnum 431 437 syn keyword cConstant StochasticForcingRandomflagEnum 438 syn keyword cConstant StochasticForcingTimestepEnum 432 439 syn keyword cConstant SolidearthSettingsReltolEnum 433 440 syn keyword cConstant SolidearthSettingsSelfAttractionEnum … … 1248 1255 syn keyword cConstant CalvingLevermannEnum 1249 1256 syn keyword cConstant CalvingTestEnum 1257 syn keyword cConstant CalvingParameterizationEnum 1250 1258 syn keyword cConstant CalvingVonmisesEnum 1251 1259 syn keyword cConstant CfdragcoeffabsgradEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26850 r26859 427 427 StochasticForcingIsStochasticForcingEnum, 428 428 StochasticForcingIsWaterPressureEnum, 429 StochasticForcingNoisetermsEnum, 429 430 StochasticForcingNumFieldsEnum, 430 431 StochasticForcingRandomflagEnum, 432 StochasticForcingTimestepEnum, 431 433 SolidearthSettingsReltolEnum, 432 434 SolidearthSettingsSelfAttractionEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26837 r26859 115 115 case CalvingMinthicknessEnum : return "CalvingMinthickness"; 116 116 case CalvingTestSpeedfactorEnum : return "CalvingTestSpeedfactor"; 117 case CalvingUseParamEnum : return "CalvingUseParam"; 118 case CalvingScaleThetaEnum : return "CalvingScaleTheta"; 119 case CalvingAmpAlphaEnum : return "CalvingAmpAlpha"; 120 case CalvingMidpointEnum : return "CalvingMidpoint"; 121 case CalvingNonlinearLawEnum : return "CalvingNonlinearLaw"; 117 122 case ConfigurationTypeEnum : return "ConfigurationType"; 118 123 case ConstantsGEnum : return "ConstantsG"; … … 430 435 case StochasticForcingIsStochasticForcingEnum : return "StochasticForcingIsStochasticForcing"; 431 436 case StochasticForcingIsWaterPressureEnum : return "StochasticForcingIsWaterPressure"; 437 case StochasticForcingNoisetermsEnum : return "StochasticForcingNoiseterms"; 432 438 case StochasticForcingNumFieldsEnum : return "StochasticForcingNumFields"; 433 439 case StochasticForcingRandomflagEnum : return "StochasticForcingRandomflag"; 440 case StochasticForcingTimestepEnum : return "StochasticForcingTimestep"; 434 441 case SolidearthSettingsReltolEnum : return "SolidearthSettingsReltol"; 435 442 case SolidearthSettingsSelfAttractionEnum : return "SolidearthSettingsSelfAttraction"; … … 1250 1257 case CalvingLevermannEnum : return "CalvingLevermann"; 1251 1258 case CalvingTestEnum : return "CalvingTest"; 1259 case CalvingParameterizationEnum : return "CalvingParameterization"; 1252 1260 case CalvingVonmisesEnum : return "CalvingVonmises"; 1253 1261 case CfdragcoeffabsgradEnum : return "Cfdragcoeffabsgrad"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26837 r26859 106 106 syn keyword juliaConstC CalvingMinthicknessEnum 107 107 syn keyword juliaConstC CalvingTestSpeedfactorEnum 108 syn keyword juliaConstC CalvingUseParamEnum 109 syn keyword juliaConstC CalvingScaleThetaEnum 110 syn keyword juliaConstC CalvingAmpAlphaEnum 111 syn keyword juliaConstC CalvingMidpointEnum 112 syn keyword juliaConstC CalvingNonlinearLawEnum 108 113 syn keyword juliaConstC ConfigurationTypeEnum 109 114 syn keyword juliaConstC ConstantsGEnum … … 421 426 syn keyword juliaConstC StochasticForcingIsStochasticForcingEnum 422 427 syn keyword juliaConstC StochasticForcingIsWaterPressureEnum 428 syn keyword juliaConstC StochasticForcingNoisetermsEnum 423 429 syn keyword juliaConstC StochasticForcingNumFieldsEnum 424 430 syn keyword juliaConstC StochasticForcingRandomflagEnum 431 syn keyword juliaConstC StochasticForcingTimestepEnum 425 432 syn keyword juliaConstC SolidearthSettingsReltolEnum 426 433 syn keyword juliaConstC SolidearthSettingsSelfAttractionEnum … … 1241 1248 syn keyword juliaConstC CalvingLevermannEnum 1242 1249 syn keyword juliaConstC CalvingTestEnum 1250 syn keyword juliaConstC CalvingParameterizationEnum 1243 1251 syn keyword juliaConstC CalvingVonmisesEnum 1244 1252 syn keyword juliaConstC CfdragcoeffabsgradEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26838 r26859 115 115 else if (strcmp(name,"CalvingMinthickness")==0) return CalvingMinthicknessEnum; 116 116 else if (strcmp(name,"CalvingTestSpeedfactor")==0) return CalvingTestSpeedfactorEnum; 117 else if (strcmp(name,"CalvingUseParam")==0) return CalvingUseParamEnum; 118 else if (strcmp(name,"CalvingScaleTheta")==0) return CalvingScaleThetaEnum; 119 else if (strcmp(name,"CalvingAmpAlpha")==0) return CalvingAmpAlphaEnum; 120 else if (strcmp(name,"CalvingMidpoint")==0) return CalvingMidpointEnum; 121 else if (strcmp(name,"CalvingNonlinearLaw")==0) return CalvingNonlinearLawEnum; 117 122 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 118 123 else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum; … … 132 137 else if (strcmp(name,"CumGmtslc")==0) return CumGmtslcEnum; 133 138 else if (strcmp(name,"CumGmslc")==0) return CumGmslcEnum; 134 else if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 139 else stage=2; 140 } 141 if(stage==2){ 142 if (strcmp(name,"DamageC1")==0) return DamageC1Enum; 135 143 else if (strcmp(name,"DamageC2")==0) return DamageC2Enum; 136 144 else if (strcmp(name,"DamageC3")==0) return DamageC3Enum; 137 145 else if (strcmp(name,"DamageC4")==0) return DamageC4Enum; 138 146 else if (strcmp(name,"Damage")==0) return DamageEnum; 139 else stage=2; 140 } 141 if(stage==2){ 142 if (strcmp(name,"DamageEquivStress")==0) return DamageEquivStressEnum; 147 else if (strcmp(name,"DamageEquivStress")==0) return DamageEquivStressEnum; 143 148 else if (strcmp(name,"DamageEvolutionNumRequestedOutputs")==0) return DamageEvolutionNumRequestedOutputsEnum; 144 149 else if (strcmp(name,"DamageEvolutionRequestedOutputs")==0) return DamageEvolutionRequestedOutputsEnum; … … 255 260 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 256 261 else if (strcmp(name,"InversionControlScalingFactors")==0) return InversionControlScalingFactorsEnum; 257 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 258 266 else if (strcmp(name,"InversionDxmin")==0) return InversionDxminEnum; 259 267 else if (strcmp(name,"InversionGatol")==0) return InversionGatolEnum; 260 268 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum; 261 269 else if (strcmp(name,"InversionGrtol")==0) return InversionGrtolEnum; 262 else stage=3; 263 } 264 if(stage==3){ 265 if (strcmp(name,"InversionGttol")==0) return InversionGttolEnum; 270 else if (strcmp(name,"InversionGttol")==0) return InversionGttolEnum; 266 271 else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum; 267 272 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum; … … 378 383 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 379 384 else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum; 380 else if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SolidearthPartitionHydro")==0) return SolidearthPartitionHydroEnum; 381 389 else if (strcmp(name,"SolidearthPartitionOcean")==0) return SolidearthPartitionOceanEnum; 382 390 else if (strcmp(name,"SolidearthNpartIce")==0) return SolidearthNpartIceEnum; 383 391 else if (strcmp(name,"SolidearthNpartOcean")==0) return SolidearthNpartOceanEnum; 384 392 else if (strcmp(name,"SolidearthNpartHydro")==0) return SolidearthNpartHydroEnum; 385 else stage=4; 386 } 387 if(stage==4){ 388 if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum; 393 else if (strcmp(name,"SolidearthPlanetRadius")==0) return SolidearthPlanetRadiusEnum; 389 394 else if (strcmp(name,"SolidearthPlanetArea")==0) return SolidearthPlanetAreaEnum; 390 395 else if (strcmp(name,"SolidearthSettingsAbstol")==0) return SolidearthSettingsAbstolEnum; … … 439 444 else if (strcmp(name,"StochasticForcingIsStochasticForcing")==0) return StochasticForcingIsStochasticForcingEnum; 440 445 else if (strcmp(name,"StochasticForcingIsWaterPressure")==0) return StochasticForcingIsWaterPressureEnum; 446 else if (strcmp(name,"StochasticForcingNoiseterms")==0) return StochasticForcingNoisetermsEnum; 441 447 else if (strcmp(name,"StochasticForcingNumFields")==0) return StochasticForcingNumFieldsEnum; 442 448 else if (strcmp(name,"StochasticForcingRandomflag")==0) return StochasticForcingRandomflagEnum; 449 else if (strcmp(name,"StochasticForcingTimestep")==0) return StochasticForcingTimestepEnum; 443 450 else if (strcmp(name,"SolidearthSettingsReltol")==0) return SolidearthSettingsReltolEnum; 444 451 else if (strcmp(name,"SolidearthSettingsSelfAttraction")==0) return SolidearthSettingsSelfAttractionEnum; … … 499 506 else if (strcmp(name,"SmbLapseRatePos")==0) return SmbLapseRatePosEnum; 500 507 else if (strcmp(name,"SmbNumBasins")==0) return SmbNumBasinsEnum; 501 else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum; 502 512 else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum; 503 513 else if (strcmp(name,"SmbPhi")==0) return SmbPhiEnum; … … 506 516 else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum; 507 517 else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum; 518 else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum; 512 519 else if (strcmp(name,"SmbRunoffalti")==0) return SmbRunoffaltiEnum; 513 520 else if (strcmp(name,"SmbRunoffgrad")==0) return SmbRunoffgradEnum; … … 622 629 else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum; 623 630 else if (strcmp(name,"BasalforcingsLinearBasinId")==0) return BasalforcingsLinearBasinIdEnum; 624 else if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"BasalforcingsPerturbationMeltingRate")==0) return BasalforcingsPerturbationMeltingRateEnum; 625 635 else if (strcmp(name,"BasalforcingsSpatialDeepwaterElevation")==0) return BasalforcingsSpatialDeepwaterElevationEnum; 626 636 else if (strcmp(name,"BasalforcingsSpatialDeepwaterMeltingRate")==0) return BasalforcingsSpatialDeepwaterMeltingRateEnum; … … 629 639 else if (strcmp(name,"BasalforcingsIsmip6BasinId")==0) return BasalforcingsIsmip6BasinIdEnum; 630 640 else if (strcmp(name,"BasalforcingsIsmip6Tf")==0) return BasalforcingsIsmip6TfEnum; 631 else stage=6; 632 } 633 if(stage==6){ 634 if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; 641 else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum; 635 642 else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum; 636 643 else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum; … … 745 752 else if (strcmp(name,"FrictionPressureAdjustedTemperature")==0) return FrictionPressureAdjustedTemperatureEnum; 746 753 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; 747 else if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"FrictionSedimentCompressibilityCoefficient")==0) return FrictionSedimentCompressibilityCoefficientEnum; 748 758 else if (strcmp(name,"FrictionTillFrictionAngle")==0) return FrictionTillFrictionAngleEnum; 749 759 else if (strcmp(name,"FrictionWaterLayer")==0) return FrictionWaterLayerEnum; … … 752 762 else if (strcmp(name,"FrontalForcingsSubglacialDischarge")==0) return FrontalForcingsSubglacialDischargeEnum; 753 763 else if (strcmp(name,"FrontalForcingsThermalForcing")==0) return FrontalForcingsThermalForcingEnum; 754 else stage=7; 755 } 756 if(stage==7){ 757 if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 764 else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 758 765 else if (strcmp(name,"NGia")==0) return NGiaEnum; 759 766 else if (strcmp(name,"NGiaRate")==0) return NGiaRateEnum; … … 868 875 else if (strcmp(name,"SealevelBarystaticIceArea")==0) return SealevelBarystaticIceAreaEnum; 869 876 else if (strcmp(name,"SealevelBarystaticIceLatbar")==0) return SealevelBarystaticIceLatbarEnum; 870 else if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SealevelBarystaticIceLongbar")==0) return SealevelBarystaticIceLongbarEnum; 871 881 else if (strcmp(name,"SealevelBarystaticIceLoad")==0) return SealevelBarystaticIceLoadEnum; 872 882 else if (strcmp(name,"SealevelBarystaticHydroMask")==0) return SealevelBarystaticHydroMaskEnum; … … 875 885 else if (strcmp(name,"SealevelBarystaticHydroLatbar")==0) return SealevelBarystaticHydroLatbarEnum; 876 886 else if (strcmp(name,"SealevelBarystaticHydroLongbar")==0) return SealevelBarystaticHydroLongbarEnum; 877 else stage=8; 878 } 879 if(stage==8){ 880 if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum; 887 else if (strcmp(name,"SealevelBarystaticHydroLoad")==0) return SealevelBarystaticHydroLoadEnum; 881 888 else if (strcmp(name,"SealevelBarystaticBpMask")==0) return SealevelBarystaticBpMaskEnum; 882 889 else if (strcmp(name,"SealevelBarystaticBpWeights")==0) return SealevelBarystaticBpWeightsEnum; … … 991 998 else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum; 992 999 else if (strcmp(name,"SmbGspini")==0) return SmbGspiniEnum; 993 else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"SmbHref")==0) return SmbHrefEnum; 994 1004 else if (strcmp(name,"SmbIsInitialized")==0) return SmbIsInitializedEnum; 995 1005 else if (strcmp(name,"SmbMAdd")==0) return SmbMAddEnum; … … 998 1008 else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum; 999 1009 else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum; 1000 else stage=9; 1001 } 1002 if(stage==9){ 1003 if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum; 1010 else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum; 1004 1011 else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum; 1005 1012 else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum; … … 1114 1121 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 1115 1122 else if (strcmp(name,"VyBase")==0) return VyBaseEnum; 1116 else if (strcmp(name,"Vy")==0) return VyEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"Vy")==0) return VyEnum; 1117 1127 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 1118 1128 else if (strcmp(name,"VyObs")==0) return VyObsEnum; … … 1121 1131 else if (strcmp(name,"Vz")==0) return VzEnum; 1122 1132 else if (strcmp(name,"VzFS")==0) return VzFSEnum; 1123 else stage=10; 1124 } 1125 if(stage==10){ 1126 if (strcmp(name,"VzHO")==0) return VzHOEnum; 1133 else if (strcmp(name,"VzHO")==0) return VzHOEnum; 1127 1134 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum; 1128 1135 else if (strcmp(name,"VzSSA")==0) return VzSSAEnum; … … 1237 1244 else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum; 1238 1245 else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum; 1239 else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum; 1240 1250 else if (strcmp(name,"Outputdefinition9")==0) return Outputdefinition9Enum; 1241 1251 else if (strcmp(name,"Outputdefinition100")==0) return Outputdefinition100Enum; … … 1244 1254 else if (strcmp(name,"AdaptiveTimestepping")==0) return AdaptiveTimesteppingEnum; 1245 1255 else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum; 1246 else stage=11; 1247 } 1248 if(stage==11){ 1249 if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 1256 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 1250 1257 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 1251 1258 else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum; … … 1280 1287 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; 1281 1288 else if (strcmp(name,"CalvingTest")==0) return CalvingTestEnum; 1289 else if (strcmp(name,"CalvingParameterization")==0) return CalvingParameterizationEnum; 1282 1290 else if (strcmp(name,"CalvingVonmises")==0) return CalvingVonmisesEnum; 1283 1291 else if (strcmp(name,"Cfdragcoeffabsgrad")==0) return CfdragcoeffabsgradEnum; … … 1359 1367 else if (strcmp(name,"GaussTria")==0) return GaussTriaEnum; 1360 1368 else if (strcmp(name,"GenericOption")==0) return GenericOptionEnum; 1361 else if (strcmp(name,"GenericParam")==0) return GenericParamEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"GenericParam")==0) return GenericParamEnum; 1362 1373 else if (strcmp(name,"GenericExternalResult")==0) return GenericExternalResultEnum; 1363 1374 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; … … 1367 1378 else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum; 1368 1379 else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; 1369 else stage=12; 1370 } 1371 if(stage==12){ 1372 if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum; 1380 else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum; 1373 1381 else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum; 1374 1382 else if (strcmp(name,"Gset")==0) return GsetEnum; … … 1482 1490 else if (strcmp(name,"Nodalvalue")==0) return NodalvalueEnum; 1483 1491 else if (strcmp(name,"NodeSId")==0) return NodeSIdEnum; 1484 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 1492 else stage=13; 1493 } 1494 if(stage==13){ 1495 if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 1485 1496 else if (strcmp(name,"None")==0) return NoneEnum; 1486 1497 else if (strcmp(name,"Numberedcostfunction")==0) return NumberedcostfunctionEnum; … … 1490 1501 else if (strcmp(name,"OceantransportAnalysis")==0) return OceantransportAnalysisEnum; 1491 1502 else if (strcmp(name,"OceantransportSolution")==0) return OceantransportSolutionEnum; 1492 else stage=13; 1493 } 1494 if(stage==13){ 1495 if (strcmp(name,"OldGradient")==0) return OldGradientEnum; 1503 else if (strcmp(name,"OldGradient")==0) return OldGradientEnum; 1496 1504 else if (strcmp(name,"OneLayerP4z")==0) return OneLayerP4zEnum; 1497 1505 else if (strcmp(name,"Open")==0) return OpenEnum; … … 1605 1613 else if (strcmp(name,"TransientArrayParam")==0) return TransientArrayParamEnum; 1606 1614 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 1607 else if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 1615 else stage=14; 1616 } 1617 if(stage==14){ 1618 if (strcmp(name,"TransientParam")==0) return TransientParamEnum; 1608 1619 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 1609 1620 else if (strcmp(name,"Tria")==0) return TriaEnum; … … 1613 1624 else if (strcmp(name,"Vertex")==0) return VertexEnum; 1614 1625 else if (strcmp(name,"VertexLId")==0) return VertexLIdEnum; 1615 else stage=14; 1616 } 1617 if(stage==14){ 1618 if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 1626 else if (strcmp(name,"VertexPId")==0) return VertexPIdEnum; 1619 1627 else if (strcmp(name,"VertexSId")==0) return VertexSIdEnum; 1620 1628 else if (strcmp(name,"Vertices")==0) return VerticesEnum; -
issm/trunk-jpl/src/m/classes/stochasticforcing.m
r26848 r26859 11 11 default_id = NaN; 12 12 covariance = NaN; 13 stochastictimestep = 0; 13 14 randomflag = 1; 14 15 end … … 35 36 36 37 num_fields = numel(self.fields); 38 if(self.stochastictimestep==0) 39 md.stochasticforcing.stochastictimestep = md.timestepping.time_step; %by default: stochastictimestep set to ISSM time step 40 end 37 41 38 42 %Check that covariance matrix is positive definite … … 116 120 indSMBar = find(contains(self.fields,'SMBautoregression')); %index of SMBar, now check for consistency with other ar timesteps 117 121 dimensions(indSMBar) = md.smb.num_basins; 122 if(md.smb.ar_timestep<self.stochastictimestep) 123 error('SMBautoregression cannot have a timestep shorter than stochastictimestep'); 124 end 118 125 end 119 126 if any(contains(self.fields,'FrontalForcingsRignotAutoregression')) 120 127 indTFar = find(contains(self.fields,'FrontalForcingsRignotAutoregression')); %index of TFar, now check for consistency with other ar timesteps 121 128 dimensions(indTFar) = md.frontalforcings.num_basins; 129 if(md.frontalforcings.ar_timestep<self.stochastictimestep) 130 error('FrontalForcingsRignotAutoregression cannot have a timestep shorter than stochastictimestep'); 131 end 122 132 end 123 133 if any(contains(self.fields,'BasalforcingsDeepwaterMeltingRateAutoregression')) 124 134 indBDWar = find(contains(self.fields,'BasalforcingsDeepwaterMeltingRateAutoregression')); %index of BDWar, now check for consistency with other ar timesteps 125 135 dimensions(indBDWar) = md.basalforcings.num_basins; 136 if(md.basalforcings.ar_timestep<self.stochastictimestep) 137 error('BasalforcingsDeepwaterMeltingRateAutoregression cannot have a timestep shorter than stochastictimestep'); 138 end 126 139 end 127 140 size_tot = sum(dimensions); … … 154 167 md = checkfield(md,'fieldname','stochasticforcing.fields','numel',num_fields,'cell',1,'values',supportedstochforcings()); 155 168 md = checkfield(md,'fieldname','stochasticforcing.covariance','NaN',1,'Inf',1,'size',[size_tot,size_tot]); %global covariance matrix 169 md = checkfield(md,'fieldname','stochasticforcing.stochastictimestep','NaN',1,'Inf',1,'>=',md.timestepping.time_step); 156 170 md = checkfield(md,'fieldname','stochasticforcing.randomflag','numel',[1],'values',[0 1]); 157 171 if(checkdefaults) %need to check the defaults … … 167 181 fielddisplay(self,'default_id','id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)'); 168 182 fielddisplay(self,'covariance','covariance matrix for within- and between-fields covariance (units must be squared field units)'); 183 fielddisplay(self,'stochastictimestep','timestep at which new stochastic noise terms are generated (default: md.timestepping.time_step)'); 169 184 fielddisplay(self,'randomflag','whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)'); 170 185 disp('Available fields:'); … … 182 197 return 183 198 else 199 200 if(self.stochastictimestep==0) 201 disp(' stochasticforcing.stocahstictimestep not specified: set to md.timestepping.time_step'); 202 self.stochastictimestep = md.timestepping.time_step; %by default: stochastictimestep set to ISSM time step 203 end 184 204 185 205 %Retrieve dimensionality of each field … … 225 245 WriteData(fid,prefix,'object',self,'fieldname','defaultdimension','format','Integer'); 226 246 WriteData(fid,prefix,'data',tempcovariance,'name','md.stochasticforcing.covariance','format','DoubleMat'); 247 WriteData(fid,prefix,'object',self,'fieldname','stochastictimestep','format','Double','scale',yts); 227 248 WriteData(fid,prefix,'object',self,'fieldname','randomflag','format','Boolean'); 228 249 end -
issm/trunk-jpl/src/m/classes/stochasticforcing.py
r26855 r26859 18 18 self.default_id = np.nan 19 19 self.covariance = np.nan 20 self.stochastictimestep = 0 20 21 self.randomflag = 1 21 22 … … 32 33 s += '{}\n'.format(fielddisplay(self, 'default_id', 'id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)')) 33 34 s += '{}\n'.format(fielddisplay(self, 'covariance', 'covariance matrix for within- and between-fields covariance (units must be squared field units)')) 35 s += '{}\n'.format(fielddisplay(self, 'stochastictimestep', 'timestep at which new stochastic noise terms are generated (default: md.timestepping.time_step)')) 34 36 s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)')) 35 37 s += 'Available fields:\n' … … 58 60 59 61 num_fields = len(self.fields) 62 if(self.stochastictimestep==0): 63 md.stochasticforcing.stochastictimestep = md.timestepping.time_step #by default: stochastictimestep set to ISSM time step 64 print(' stochasticforcing.stocahstictimestep not specified: set to md.timestepping.time_step') 60 65 61 66 # Check that covariance matrix is positive definite (this is done internally by linalg) … … 119 124 indSMBar = self.fields.index('SMBautoregression') # Index of SMBar, now check for consistency with other timesteps 120 125 dimensions[indSMBar] = md.smb.num_basins 126 if(md.smb.ar_timestep<self.stochastictimestep): 127 raise TypeError('SMBautoregression cannot have a timestep shorter than stochastictimestep') 121 128 if ('FrontalForcingsRignotAutoregression' in self.fields): 122 129 indTFar = self.fields.index('FrontalForcingsRignotAutoregression') # Index of TFar, now check for consistency with other timesteps 123 130 dimensions[indTFar] = md.frontalforcings.num_basins 131 if(md.frontalforcings.ar_timestep<self.stochastictimestep): 132 raise TypeError('FrontalForcingsRignotAutoregression cannot have a timestep shorter than stochastictimestep') 124 133 if ('BasalforcingsDeepwaterMeltingRateAutoregression' in self.fields): 125 134 indBDWar = self.fields.index('BasalforcingsDeepwaterMeltingRateAutoregression') # Index of BDWar, now check for consistency with other timesteps 126 135 dimensions[indTFar] = md.basalforcings.num_basins 136 if(md.basalforcings.ar_timestep<self.stochastictimestep): 137 raise TypeError('BasalforcingsDeepwaterMeltingRateAutoregression cannot have a timestep shorter than stochastictimestep') 127 138 size_tot = np.sum(dimensions) 128 139 … … 143 154 md = checkfield(md, 'fieldname', 'stochasticforcing.fields', 'numel', num_fields, 'cell', 1, 'values', self.supportedstochforcings()) 144 155 md = checkfield(md, 'fieldname', 'stochasticforcing.covariance', 'NaN', 1, 'Inf', 1, 'size', [size_tot, size_tot]) # global covariance matrix 156 md = checkfield(md, 'fieldname', 'stochasticforcing.stochastictimestep', 'NaN', 1,'Inf', 1, '>=', md.timestepping.time_step) 145 157 md = checkfield(md, 'fieldname', 'stochasticforcing.randomflag', 'numel', [1], 'values', [0, 1]) 146 158 if (checkdefaults): … … 164 176 else: 165 177 num_fields = len(self.fields) 178 if(self.stochastictimestep==0): 179 md.stochasticforcing.stochastictimestep = md.timestepping.time_step #by default: stochastictimestep set to ISSM time step 166 180 # Retrieve dimensionality of each field 167 181 dimensions = self.defaultdimension * np.ones((num_fields)) … … 197 211 WriteData(fid, prefix, 'object', self, 'fieldname', 'defaultdimension', 'format', 'Integer') 198 212 WriteData(fid, prefix, 'data', tempcovariance, 'name', 'md.stochasticforcing.covariance', 'format', 'DoubleMat') 213 WriteData(fid, prefix, 'object', self, 'fieldname', 'stochastictimestep', 'format', 'Double', 'scale', yts) 199 214 WriteData(fid, prefix, 'object', self, 'fieldname', 'randomflag', 'format', 'Boolean') 200 215 # }}} -
issm/trunk-jpl/src/m/contrib/morlighem/modeldata/interpBedmachineGreenland.m
r26535 r26859 43 43 ['/Users/larour/ModelData/BedMachine/' basename '-' ncdate '.nc'],... 44 44 ['./' basename '-' ncdate '.nc'],... 45 '/media/vincent/TOSH4TB/GeorgiaTech/DataSearch/BedMachine/BedMachineGreenland-2021-04-20.nc',... 45 46 }; 46 47 … … 87 88 if strcmp(string,'mask') | strcmp(string,'source'), 88 89 %Need nearest neighbor to avoid interpolation between 0 and 2 89 output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest'); 90 %output = InterpFromGrid(xdata,ydata,data,double(X),double(Y),'nearest'); 91 output = InterpFromGridToMesh(xdata,flipud(ydata),flipud(data),double(X),double(Y),NaN); %VV 90 92 else 91 output = InterpFromGrid(xdata,ydata,data,double(X),double(Y)); 93 %output = InterpFromGrid(xdata,ydata,data,double(X),double(Y)); 94 output = InterpFromGridToMesh(xdata,flipud(ydata),flipud(data),double(X),double(Y),NaN); %VV 92 95 end 93 96
Note:
See TracChangeset
for help on using the changeset viewer.