Changeset 26750
- Timestamp:
- 12/27/21 08:23:23 (3 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SmbAnalysis.cpp
r26550 r26750 24 24 25 25 int smb_model; 26 bool isdelta18o,ismungsm,isd18opd,issetpddfac,isprecipscaled,istemperaturescaled,isfirnwarming ;26 bool isdelta18o,ismungsm,isd18opd,issetpddfac,isprecipscaled,istemperaturescaled,isfirnwarming,isstochastic; 27 27 28 28 /*Update elements: */ … … 38 38 /*Figure out smb model: */ 39 39 iomodel->FindConstant(&smb_model,"md.smb.model"); 40 iomodel->FindConstant(&isstochastic,"md.stochasticforcing.isstochasticforcing"); 40 41 switch(smb_model){ 41 42 case SMBforcingEnum: 42 43 iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",SmbMassBalanceEnum,0.); 44 if(isstochastic){ 45 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 46 iomodel->FetchDataToInput(inputs,elements,"md.smb.mass_balance",BaselineSmbMassBalanceEnum,0.); 47 } 43 48 break; 44 49 case SMBgembEnum: -
issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
r26676 r26750 58 58 multivariateNormal(&temparray,dimtot,0.0,covariance,fixedseed); 59 59 for(int i=0;i<dimtot;i++) noiseterms[i]=temparray[i]; 60 60 xDelete<IssmDouble>(temparray); 61 61 } 62 62 ISSM_MPI_Bcast(noiseterms,dimtot,ISSM_MPI_DOUBLE,0,IssmComm::GetComm()); … … 142 142 } 143 143 break; 144 case SMBforcingEnum: 145 /*Delete SmbMassBalanceEnum at previous time step (required if it is transient)*/ 146 femmodel->inputs->DeleteInput(SmbMassBalanceEnum); 147 for(Object* &object:femmodel->elements->objects){ 148 Element* element = xDynamicCast<Element*>(object); 149 int numvertices = element->GetNumberOfVertices(); 150 IssmDouble baselinesmb; 151 IssmDouble smb_tot[numvertices]; 152 Input* baselinesmb_input = NULL; 153 baselinesmb_input = element->GetInput(BaselineSmbMassBalanceEnum); _assert_(baselinesmb_input); 154 element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum); 155 Gauss* gauss = element->NewGauss(); 156 for(int i=0;i<numvertices;i++){ 157 gauss->GaussVertex(i); 158 baselinesmb_input->GetInputValue(&baselinesmb,gauss); 159 smb_tot[i] = baselinesmb+noisefield[dimensionid]; 160 } 161 element->AddInput(SmbMassBalanceEnum,&smb_tot[0],P1DGEnum); 162 delete gauss; 163 } 164 break; 144 165 //VV working(29Nov2021) 145 166 case FrictionWaterPressureEnum: -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26747 r26750 604 604 syn keyword cConstant BaselineCalvingCalvingrateEnum 605 605 syn keyword cConstant BaselineFrictionEffectivePressureEnum 606 syn keyword cConstant BaselineSmbMassBalanceEnum 606 607 syn keyword cConstant BedEnum 607 608 syn keyword cConstant BedGRDEnum … … 1582 1583 syn keyword cType Cfsurfacesquare 1583 1584 syn keyword cType Channel 1585 syn keyword cType classes 1584 1586 syn keyword cType Constraint 1585 1587 syn keyword cType Constraints … … 1588 1590 syn keyword cType ControlInput 1589 1591 syn keyword cType Covertree 1592 syn keyword cType DatasetInput 1590 1593 syn keyword cType DataSetParam 1591 syn keyword cType DatasetInput1592 1594 syn keyword cType Definition 1593 1595 syn keyword cType DependentObject … … 1602 1604 syn keyword cType ElementInput 1603 1605 syn keyword cType ElementMatrix 1606 syn keyword cType Elements 1604 1607 syn keyword cType ElementVector 1605 syn keyword cType Elements1606 1608 syn keyword cType ExponentialVariogram 1607 1609 syn keyword cType ExternalResult … … 1610 1612 syn keyword cType Friction 1611 1613 syn keyword cType Gauss 1614 syn keyword cType GaussianVariogram 1615 syn keyword cType gaussobjects 1612 1616 syn keyword cType GaussPenta 1613 1617 syn keyword cType GaussSeg 1614 1618 syn keyword cType GaussTetra 1615 1619 syn keyword cType GaussTria 1616 syn keyword cType GaussianVariogram1617 1620 syn keyword cType GenericExternalResult 1618 1621 syn keyword cType GenericOption … … 1630 1633 syn keyword cType IssmDirectApplicInterface 1631 1634 syn keyword cType IssmParallelDirectApplicInterface 1635 syn keyword cType krigingobjects 1632 1636 syn keyword cType Load 1633 1637 syn keyword cType Loads … … 1640 1644 syn keyword cType Matice 1641 1645 syn keyword cType Matlitho 1646 syn keyword cType matrixobjects 1642 1647 syn keyword cType MatrixParam 1643 1648 syn keyword cType Misfit … … 1652 1657 syn keyword cType Observations 1653 1658 syn keyword cType Option 1659 syn keyword cType Options 1654 1660 syn keyword cType OptionUtilities 1655 syn keyword cType Options1656 1661 syn keyword cType Param 1657 1662 syn keyword cType Parameters … … 1667 1672 syn keyword cType Regionaloutput 1668 1673 syn keyword cType Results 1674 syn keyword cType Riftfront 1669 1675 syn keyword cType RiftStruct 1670 syn keyword cType Riftfront1671 1676 syn keyword cType SealevelGeometry 1672 1677 syn keyword cType Seg 1673 1678 syn keyword cType SegInput 1679 syn keyword cType Segment 1674 1680 syn keyword cType SegRef 1675 syn keyword cType Segment1676 1681 syn keyword cType SpcDynamic 1677 1682 syn keyword cType SpcStatic … … 1692 1697 syn keyword cType Vertex 1693 1698 syn keyword cType Vertices 1694 syn keyword cType classes1695 syn keyword cType gaussobjects1696 syn keyword cType krigingobjects1697 syn keyword cType matrixobjects1698 1699 syn keyword cType AdjointBalancethickness2Analysis 1699 1700 syn keyword cType AdjointBalancethicknessAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26747 r26750 600 600 BaselineCalvingCalvingrateEnum, 601 601 BaselineFrictionEffectivePressureEnum, 602 BaselineSmbMassBalanceEnum, 602 603 BedEnum, 603 604 BedGRDEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26747 r26750 606 606 case BaselineCalvingCalvingrateEnum : return "BaselineCalvingCalvingrate"; 607 607 case BaselineFrictionEffectivePressureEnum : return "BaselineFrictionEffectivePressure"; 608 case BaselineSmbMassBalanceEnum : return "BaselineSmbMassBalance"; 608 609 case BedEnum : return "Bed"; 609 610 case BedGRDEnum : return "BedGRD"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26747 r26750 597 597 syn keyword juliaConstC BaselineCalvingCalvingrateEnum 598 598 syn keyword juliaConstC BaselineFrictionEffectivePressureEnum 599 syn keyword juliaConstC BaselineSmbMassBalanceEnum 599 600 syn keyword juliaConstC BedEnum 600 601 syn keyword juliaConstC BedGRDEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26747 r26750 618 618 else if (strcmp(name,"BaselineCalvingCalvingrate")==0) return BaselineCalvingCalvingrateEnum; 619 619 else if (strcmp(name,"BaselineFrictionEffectivePressure")==0) return BaselineFrictionEffectivePressureEnum; 620 else if (strcmp(name,"BaselineSmbMassBalance")==0) return BaselineSmbMassBalanceEnum; 620 621 else if (strcmp(name,"Bed")==0) return BedEnum; 621 622 else if (strcmp(name,"BedGRD")==0) return BedGRDEnum; … … 628 629 else if (strcmp(name,"BottomPressure")==0) return BottomPressureEnum; 629 630 else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum; 630 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 634 if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 635 else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 635 636 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum; 636 637 else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum; … … 751 752 else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum; 752 753 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 753 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 757 if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 758 else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 758 759 else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum; 759 760 else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum; … … 874 875 else if (strcmp(name,"SealevelGErotm3")==0) return SealevelGErotm3Enum; 875 876 else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum; 876 else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"SealevelUGrd")==0) return SealevelUGrdEnum; 880 if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum; 881 else if (strcmp(name,"SealevelUGrd")==0) return SealevelUGrdEnum; 881 882 else if (strcmp(name,"SealevelNGrd")==0) return SealevelNGrdEnum; 882 883 else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum; … … 997 998 else if (strcmp(name,"SmbS0gcm")==0) return SmbS0gcmEnum; 998 999 else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum; 999 else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum; 1003 if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum; 1004 else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum; 1004 1005 else if (strcmp(name,"SmbSmbCorr")==0) return SmbSmbCorrEnum; 1005 1006 else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum; … … 1120 1121 else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; 1121 1122 else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum; 1122 else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 1126 if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum; 1127 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 1127 1128 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 1128 1129 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; … … 1243 1244 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 1244 1245 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 1245 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"Boundary")==0) return BoundaryEnum; 1249 if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 1250 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 1250 1251 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1251 1252 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; … … 1366 1367 else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum; 1367 1368 else if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum; 1368 else if (strcmp(name,"Incremental")==0) return IncrementalEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"Indexed")==0) return IndexedEnum; 1372 if (strcmp(name,"Incremental")==0) return IncrementalEnum; 1373 else if (strcmp(name,"Indexed")==0) return IndexedEnum; 1373 1374 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 1374 1375 else if (strcmp(name,"ElementInput")==0) return ElementInputEnum; … … 1489 1490 else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum; 1490 1491 else if (strcmp(name,"Regular")==0) return RegularEnum; 1491 else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 1495 if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum; 1496 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 1496 1497 else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum; 1497 1498 else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum; -
issm/trunk-jpl/src/m/classes/stochasticforcing.m
r26676 r26750 48 48 for field=self.fields 49 49 %Checking agreement of classes 50 if(contains(field,'SMB')) 50 if(contains(field,'SMBautoregression')) 51 mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field)))); 52 if~(isequal(class(md.smb),char(mdname))) 53 error('md.smb does not agree with stochasticforcing field %s', char(field)); 54 end 55 end 56 if(contains(field,'SMBforcing')) 51 57 mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field)))); 52 58 if~(isequal(class(md.smb),char(mdname))) … … 156 162 157 163 %Scaling covariance matrix (scale column-by-column and row-by-row) 158 scaledfields = {'DefaultCalving','FloatingMeltRate','SMBautoregression' }; %list of fields that need scaling *1/yts164 scaledfields = {'DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'}; %list of fields that need scaling *1/yts 159 165 tempcovariance = self.covariance; %copy of covariance to avoid writing back in member variable 160 166 for i=1:num_fields … … 199 205 'FrictionWaterPressure',... 200 206 'FrontalForcingsRignotAutoregression',... 201 'SMBautoregression' 207 'SMBautoregression',... 208 'SMBforcing' 202 209 }; 203 210 structure.mdnames = {... … … 206 213 'friction',... 207 214 'frontalforcingsrignotautoregression',... 208 'SMBautoregression' 215 'SMBautoregression',... 216 'SMBforcing' 209 217 }; 210 218 end % }}} -
issm/trunk-jpl/src/m/classes/stochasticforcing.py
r26677 r26750 67 67 for field in self.fields: 68 68 # Checking agreement of classes 69 if 'SMB' in field: 69 if 'SMBautoregression' in field: 70 mdname = structstoch[field] 71 if (type(md.smb).__name__ != mdname): 72 raise TypeError('md.smb does not agree with stochasticforcing field {}'.format(field)) 73 if 'SMBforcing' in field: 70 74 mdname = structstoch[field] 71 75 if (type(md.smb).__name__ != mdname): … … 144 148 145 149 # Scaling covariance matrix (scale column-by-column and row-by-row) 146 scaledfields = ['DefaultCalving','FloatingMeltRate','SMBautoregression' ] # list of fields that need scaling * 1/yts150 scaledfields = ['DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'] # list of fields that need scaling * 1/yts 147 151 tempcovariance = np.copy(self.covariance) 148 152 for i in range(num_fields): … … 184 188 'FrictionWaterPressure': 'friction', 185 189 'FrontalForcingsRignotAutoregression': 'frontalforcingsrignotautoregression', 186 'SMBautoregression': 'SMBautoregression'} 190 'SMBautoregression': 'SMBautoregression', 191 'SMBforcing': 'SMBforcing'} 187 192 return structure 188 193 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.