Changeset 26825
- Timestamp:
- 01/26/22 10:55:55 (3 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
r26789 r26825 112 112 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum); 113 113 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum); 114 if(isstochastic){ 115 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 116 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); 117 } 114 118 break; 115 119 case BasalforcingsPicoEnum: -
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r26789 r26825 187 187 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum); 188 188 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.perturbation_melting_rate",BasalforcingsPerturbationMeltingRateEnum,0.); 189 if(isstochastic){ 190 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 191 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); 192 } 189 193 break; 190 194 case BasalforcingsPicoEnum: -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r26789 r26825 840 840 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum); 841 841 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum); 842 if(isstochastic){ 843 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 844 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); 845 } 842 846 break; 843 847 case BasalforcingsPicoEnum: -
issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
r26789 r26825 143 143 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum); 144 144 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum); 145 if(isstochastic){ 146 iomodel->FetchDataToInput(inputs,elements,"md.stochasticforcing.default_id",StochasticForcingDefaultIdEnum); 147 iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.deepwater_melting_rate",BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); 148 } 145 149 break; 146 150 case BasalforcingsPicoEnum: -
issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp
r26777 r26825 100 100 /*Already done above*/ 101 101 break; 102 case BasalforcingsSpatialDeepwaterMeltingRateEnum: 103 /*Delete BasalforcingsSpatialDeepwaterMeltingRateEnum at previous time step (required if it is transient)*/ 104 femmodel->inputs->DeleteInput(BasalforcingsSpatialDeepwaterMeltingRateEnum); 105 for(Object* &object:femmodel->elements->objects){ 106 Element* element = xDynamicCast<Element*>(object); 107 int numvertices = element->GetNumberOfVertices(); 108 IssmDouble baselinedeepwatermelt; 109 IssmDouble deepwatermelt_tot[numvertices]; 110 Input* baselinedeepwatermelt_input = NULL; 111 baselinedeepwatermelt_input = element->GetInput(BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum); _assert_(baselinedeepwatermelt_input); 112 element->GetInputValue(&dimensionid,StochasticForcingDefaultIdEnum); 113 Gauss* gauss = element->NewGauss(); 114 for(int i=0;i<numvertices;i++){ 115 gauss->GaussVertex(i); 116 baselinedeepwatermelt_input->GetInputValue(&baselinedeepwatermelt,gauss); 117 deepwatermelt_tot[i] = baselinedeepwatermelt+noisefield[dimensionid]; 118 } 119 element->AddInput(BasalforcingsSpatialDeepwaterMeltingRateEnum,&deepwatermelt_tot[0],P1DGEnum); 120 delete gauss; 121 } 122 break; 102 123 case DefaultCalvingEnum: 103 124 /*Delete CalvingCalvingrateEnum at previous time step (required if it is transient)*/ -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26810 r26825 621 621 syn keyword cConstant BaseSlopeYEnum 622 622 syn keyword cConstant BaselineBasalforcingsFloatingiceMeltingRateEnum 623 syn keyword cConstant BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum 623 624 syn keyword cConstant BaselineCalvingCalvingrateEnum 624 625 syn keyword cConstant BaselineFrictionEffectivePressureEnum -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26810 r26825 617 617 BaseSlopeYEnum, 618 618 BaselineBasalforcingsFloatingiceMeltingRateEnum, 619 BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum, 619 620 BaselineCalvingCalvingrateEnum, 620 621 BaselineFrictionEffectivePressureEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26810 r26825 623 623 case BaseSlopeYEnum : return "BaseSlopeY"; 624 624 case BaselineBasalforcingsFloatingiceMeltingRateEnum : return "BaselineBasalforcingsFloatingiceMeltingRate"; 625 case BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum : return "BaselineBasalforcingsSpatialDeepwaterMeltingRate"; 625 626 case BaselineCalvingCalvingrateEnum : return "BaselineCalvingCalvingrate"; 626 627 case BaselineFrictionEffectivePressureEnum : return "BaselineFrictionEffectivePressure"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26810 r26825 614 614 syn keyword juliaConstC BaseSlopeYEnum 615 615 syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum 616 syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum 616 617 syn keyword juliaConstC BaselineCalvingCalvingrateEnum 617 618 syn keyword juliaConstC BaselineFrictionEffectivePressureEnum -
issm/trunk-jpl/src/m/classes/stochasticforcing.m
r26750 r26825 78 78 end 79 79 end 80 if(contains(field,'BasalforcingsSpatialDeepwaterMeltingRate')) 81 mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field)))); 82 if~(isequal(class(md.basalforcings),char(mdname))) 83 error('md.basalforcings does not agree with stochasticforcing field %s', char(field)); 84 end 85 end 80 86 if(contains(field,'WaterPressure')) 81 87 mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field)))); … … 127 133 disp(sprintf(' stochasticforcing parameters:')); 128 134 fielddisplay(self,'isstochasticforcing','is stochasticity activated?'); 129 fielddisplay(self,'fields','fields with stochasticity applied, ex: {''SMBautoregression''}, or {''FrontalForcingsRignotAutoregression''}');135 fielddisplay(self,'fields','fields with stochasticity applied, ex: [{''SMBautoregression''}], or [{''SMBforcing''},{''DefaultCalving''}]'); 130 136 fielddisplay(self,'defaultdimension','dimensionality of the noise terms (does not apply to fields with their specific dimension)'); 131 137 fielddisplay(self,'default_id','id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)'); … … 162 168 163 169 %Scaling covariance matrix (scale column-by-column and row-by-row) 164 scaledfields = {' DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'}; %list of fields that need scaling *1/yts170 scaledfields = {'BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'}; %list of fields that need scaling *1/yts 165 171 tempcovariance = self.covariance; %copy of covariance to avoid writing back in member variable 166 172 for i=1:num_fields … … 201 207 % supported and corresponding md names 202 208 structure.fields = {... 209 'BasalforcingsSpatialDeepwaterMeltingRate',... 203 210 'DefaultCalving',... 204 211 'FloatingMeltRate',... … … 209 216 }; 210 217 structure.mdnames = {... 218 'spatiallinearbasalforcings',... 211 219 'calving',... 212 220 'basalforcings',... -
issm/trunk-jpl/src/m/classes/stochasticforcing.py
r26760 r26825 28 28 s = ' stochasticforcing parameters:\n' 29 29 s += '{}\n'.format(fielddisplay(self, 'isstochasticforcing', 'is stochasticity activated?')) 30 s += '{}\n'.format(fielddisplay(self, 'fields', 'fields with stochasticity applied, ex: [\'SMBautoregression\'], or [\' FrontalForcingsRignotAutoregression\']'))30 s += '{}\n'.format(fielddisplay(self, 'fields', 'fields with stochasticity applied, ex: [\'SMBautoregression\'], or [\'SMBforcing\',\'DefaultCalving\']')) 31 31 s += '{}\n'.format(fielddisplay(self, 'defaultdimension', 'dimensionality of the noise terms (does not apply to fields with their specific dimension)')) 32 32 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)')) … … 34 34 s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)')) 35 35 s += 'Available fields:\n' 36 s += ' BasalforcingsSpatialDeepwaterMeltingRate\n' 36 37 s += ' DefaultCalving\n' 37 38 s += ' FloatingMeltRate\n' 39 s += ' FrictionWaterPressure\n' 40 s += ' FrontalForcingsRignotAutoregression (thermal forcing)\n' 38 41 s += ' SMBautoregression\n' 39 s += ' FrontalForcingsRignotAutoregression (thermal forcing)\n'42 s += ' SMBforcing\n' 40 43 return s 41 44 #}}} … … 84 87 raise TypeError('md.calving does not agree with stochasticforcing field {}'.format(field)) 85 88 if 'BasalforcingsFloatingice' in field: 89 mdname = structstoch[field] 90 if (type(md.basalforcings).__name__ != mdname): 91 raise TypeError('md.basalforcings does not agree with stochasticforcing field {}'.format(field)) 92 if 'BasalforcingsDpatialDeepwaterMeltingRate' in field: 86 93 mdname = structstoch[field] 87 94 if (type(md.basalforcings).__name__ != mdname): … … 148 155 149 156 # Scaling covariance matrix (scale column-by-column and row-by-row) 150 scaledfields = [' DefaultCalving', 'FloatingMeltRate', 'SMBautoregression', 'SMBforcing'] # list of fields that need scaling * 1/yts157 scaledfields = ['BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving', 'FloatingMeltRate', 'SMBautoregression', 'SMBforcing'] # list of fields that need scaling * 1/yts 151 158 tempcovariance = np.copy(self.covariance) 152 159 for i in range(num_fields): … … 184 191 supported and corresponding md names 185 192 """ 186 structure = {'DefaultCalving': 'calving', 193 structure = {'BasalforcingsSpatialDeepwaterMeltingRate': 'spatiallinearbasalforcings', 194 'DefaultCalving': 'calving', 187 195 'FloatingMeltRate': 'basalforcings', 188 196 'FrictionWaterPressure': 'friction',
Note:
See TracChangeset
for help on using the changeset viewer.