Changeset 26825


Ignore:
Timestamp:
01/26/22 10:55:55 (3 years ago)
Author:
vverjans
Message:

CHG: added stochasticity to DeepwaterMeltingRate of spatiallinearbasalforcings

Location:
issm/trunk-jpl/src
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp

    r26789 r26825  
    112112                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
    113113                        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         }
    114118                        break;
    115119                case BasalforcingsPicoEnum:
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r26789 r26825  
    187187                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_elevation",BasalforcingsSpatialUpperwaterElevationEnum);
    188188                        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         }
    189193                        break;
    190194                case BasalforcingsPicoEnum:
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r26789 r26825  
    840840                                iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
    841841                                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                                }
    842846                                break;
    843847                        case BasalforcingsPicoEnum:
  • issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp

    r26789 r26825  
    143143                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.upperwater_melting_rate",BasalforcingsSpatialUpperwaterMeltingRateEnum);
    144144                        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         }
    145149                        break;
    146150                case BasalforcingsPicoEnum:
  • issm/trunk-jpl/src/c/modules/StochasticForcingx/StochasticForcingx.cpp

    r26777 r26825  
    100100                                        /*Already done above*/
    101101                                        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;
    102123                                case DefaultCalvingEnum:
    103124                                        /*Delete CalvingCalvingrateEnum at previous time step (required if it is transient)*/
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r26810 r26825  
    621621syn keyword cConstant BaseSlopeYEnum
    622622syn keyword cConstant BaselineBasalforcingsFloatingiceMeltingRateEnum
     623syn keyword cConstant BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
    623624syn keyword cConstant BaselineCalvingCalvingrateEnum
    624625syn keyword cConstant BaselineFrictionEffectivePressureEnum
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r26810 r26825  
    617617        BaseSlopeYEnum,
    618618        BaselineBasalforcingsFloatingiceMeltingRateEnum,
     619        BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum,
    619620        BaselineCalvingCalvingrateEnum,
    620621        BaselineFrictionEffectivePressureEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r26810 r26825  
    623623                case BaseSlopeYEnum : return "BaseSlopeY";
    624624                case BaselineBasalforcingsFloatingiceMeltingRateEnum : return "BaselineBasalforcingsFloatingiceMeltingRate";
     625                case BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum : return "BaselineBasalforcingsSpatialDeepwaterMeltingRate";
    625626                case BaselineCalvingCalvingrateEnum : return "BaselineCalvingCalvingrate";
    626627                case BaselineFrictionEffectivePressureEnum : return "BaselineFrictionEffectivePressure";
  • issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim

    r26810 r26825  
    614614syn keyword juliaConstC BaseSlopeYEnum
    615615syn keyword juliaConstC BaselineBasalforcingsFloatingiceMeltingRateEnum
     616syn keyword juliaConstC BaselineBasalforcingsSpatialDeepwaterMeltingRateEnum
    616617syn keyword juliaConstC BaselineCalvingCalvingrateEnum
    617618syn keyword juliaConstC BaselineFrictionEffectivePressureEnum
  • issm/trunk-jpl/src/m/classes/stochasticforcing.m

    r26750 r26825  
    7878                                        end
    7979                                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
    8086                                if(contains(field,'WaterPressure'))
    8187               mdname = structstoch.mdnames(find(strcmp(structstoch.fields,char(field))));
     
    127133                        disp(sprintf('   stochasticforcing parameters:'));
    128134                        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''}]');
    130136                        fielddisplay(self,'defaultdimension','dimensionality of the noise terms (does not apply to fields with their specific dimension)');
    131137                        fielddisplay(self,'default_id','id of each element for partitioning of the noise terms (does not apply to fields with their specific partition)');
     
    162168
    163169                                %Scaling covariance matrix (scale column-by-column and row-by-row)
    164                                 scaledfields = {'DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'}; %list of fields that need scaling *1/yts
     170                                scaledfields = {'BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving','FloatingMeltRate','SMBautoregression','SMBforcing'}; %list of fields that need scaling *1/yts
    165171                                tempcovariance = self.covariance; %copy of covariance to avoid writing back in member variable
    166172                                for i=1:num_fields
     
    201207        % supported and corresponding md names
    202208        structure.fields = {...
     209                'BasalforcingsSpatialDeepwaterMeltingRate',...
    203210                'DefaultCalving',...
    204211                'FloatingMeltRate',...
     
    209216                };
    210217        structure.mdnames = {...
     218                'spatiallinearbasalforcings',...
    211219                'calving',...
    212220                'basalforcings',...
  • issm/trunk-jpl/src/m/classes/stochasticforcing.py

    r26760 r26825  
    2828        s = '   stochasticforcing parameters:\n'
    2929        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\']'))
    3131        s += '{}\n'.format(fielddisplay(self, 'defaultdimension', 'dimensionality of the noise terms (does not apply to fields with their specific dimension)'))
    3232        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)'))
     
    3434        s += '{}\n'.format(fielddisplay(self, 'randomflag', 'whether to apply real randomness (true) or pseudo-randomness with fixed seed (false)'))
    3535        s += 'Available fields:\n'
     36        s += '   BasalforcingsSpatialDeepwaterMeltingRate\n'
    3637        s += '   DefaultCalving\n'
    3738        s += '   FloatingMeltRate\n'
     39        s += '   FrictionWaterPressure\n'
     40        s += '   FrontalForcingsRignotAutoregression (thermal forcing)\n'
    3841        s += '   SMBautoregression\n'
    39         s += '   FrontalForcingsRignotAutoregression (thermal forcing)\n'
     42        s += '   SMBforcing\n'
    4043        return s
    4144    #}}}
     
    8487                    raise TypeError('md.calving does not agree with stochasticforcing field {}'.format(field))
    8588            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:
    8693                mdname = structstoch[field]
    8794                if (type(md.basalforcings).__name__ != mdname):
     
    148155
    149156            # Scaling covariance matrix (scale column-by-column and row-by-row)
    150             scaledfields = ['DefaultCalving', 'FloatingMeltRate', 'SMBautoregression', 'SMBforcing']  # list of fields that need scaling * 1/yts
     157            scaledfields = ['BasalforcingsSpatialDeepwaterMeltingRate','DefaultCalving', 'FloatingMeltRate', 'SMBautoregression', 'SMBforcing']  # list of fields that need scaling * 1/yts
    151158            tempcovariance = np.copy(self.covariance)
    152159            for i in range(num_fields):
     
    184191           supported and corresponding md names
    185192        """
    186         structure = {'DefaultCalving': 'calving',
     193        structure = {'BasalforcingsSpatialDeepwaterMeltingRate': 'spatiallinearbasalforcings',
     194                     'DefaultCalving': 'calving',
    187195                     'FloatingMeltRate': 'basalforcings',
    188196                     'FrictionWaterPressure': 'friction',
Note: See TracChangeset for help on using the changeset viewer.