Changeset 26195


Ignore:
Timestamp:
04/16/21 10:24:43 (4 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added cycle through forcing field, not implemented in C++ yet

Location:
issm/trunk-jpl/src/m/classes
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/timestepping.js

    r22459 r26195  
    1515                //should we interpolate forcings between timesteps?
    1616                this.interp_forcings=1;
     17                this.cycle_forcing=0;
    1718        }// }}}
    1819        this.disp= function(){// {{{
     
    2526                fielddisplay(this,'time_step','length of time steps [' +unit+ ']');
    2627                fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
     28                fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
    2729                fielddisplay(this,'coupling_time','length of coupling time steps with ocean model [' +unit+ ']');
    2830
     
    3840                checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
    3941                checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
     42                checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
    4043                checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',0,'NaN',1,'Inf',1);
    4144                if (this.final_time-this.start_time<0){
     
    5356                WriteData(fid,prefix,'object',this,'fieldname','time_step','format','Double','scale',scale);
    5457                WriteData(fid,prefix,'object',this,'fieldname','interp_forcings','format','Boolean');
     58                WriteData(fid,prefix,'object',this,'fieldname','cycle_forcing','format','Boolean');
    5559                WriteData(fid,prefix,'object',this,'fieldname','coupling_time','format','Double','scale',scale);
    5660
     
    6468        this.time_step       = 0.;
    6569        this.interp_forcings = 1;
     70        this.cycle_forcing   = 0;
    6671        this.coupling_time   = 0.;
    6772
  • issm/trunk-jpl/src/m/classes/timestepping.m

    r22459 r26195  
    1010                time_step       = 0.;
    1111                interp_forcings = 1;
     12                cycle_forcing   = 0;
    1213                coupling_time   = 0.;
    1314        end
     
    3334                        %should we interpolate forcings between timesteps?
    3435                        self.interp_forcings=1;
     36                        self.cycle_forcing=0;
    3537                end % }}}
    3638                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    4042                        md = checkfield(md,'fieldname','timestepping.time_step','numel',[1],'>=',0,'NaN',1,'Inf',1);
    4143                        md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
     44                        md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
    4245                        if self.final_time-self.start_time<0,
    4346                                md = checkmessage(md,'timestepping.final_time should be larger than timestepping.start_time');
     
    5659                        fielddisplay(self,'time_step',['length of time steps [' unit ']']);
    5760                        fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
     61                        fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
    5862                        fielddisplay(self,'coupling_time',['length of coupling time step with ocean model  [' unit ']']);
    5963
     
    6771                        WriteData(fid,prefix,'object',self,'fieldname','time_step','format','Double','scale',scale);
    6872                        WriteData(fid,prefix,'object',self,'fieldname','interp_forcings','format','Boolean');
     73                        WriteData(fid,prefix,'object',self,'fieldname','cycle_forcing','format','Boolean');
    6974                        WriteData(fid,prefix,'object',self,'fieldname','coupling_time','format','Double','scale',scale);
    7075                end % }}}
     
    7580                        writejsdouble(fid,[modelname '.timestepping.time_step'],self.time_step);
    7681                        writejsdouble(fid,[modelname '.timestepping.interp_forcings'],self.interp_forcings);
     82                        writejsdouble(fid,[modelname '.timestepping.cycle_forcing'],self.cycle_forcing);
    7783
    7884                end % }}}
  • issm/trunk-jpl/src/m/classes/timestepping.py

    r24213 r26195  
    1717        self.time_step = 0.
    1818        self.interp_forcings = 1
     19        self.cycle_forcing = 0
    1920        self.coupling_time = 0.
    2021
     
    3031        string = "%s\n%s" % (string, fielddisplay(self, "time_step", "length of time steps [yr]"))
    3132        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
     33        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
    3234        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "length of coupling time steps with ocean model [yr]"))
    3335        return string
     
    4143        #should we interpolate forcings between timesteps?
    4244        self.interp_forcings = 1
     45        self.cycle_forcing = 0
    4346
    4447        return self
     
    5457            md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
    5558        md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
     59        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
    5660
    5761        return md
     
    6670        WriteData(fid, prefix, 'object', self, 'fieldname', 'time_step', 'format', 'Double', 'scale', yts)
    6771        WriteData(fid, prefix, 'object', self, 'fieldname', 'interp_forcings', 'format', 'Boolean')
     72        WriteData(fid, prefix, 'object', self, 'fieldname', 'cycle_forcing', 'format', 'Boolean')
    6873        WriteData(fid, prefix, 'object', self, 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
    6974    # }}}
  • issm/trunk-jpl/src/m/classes/timesteppingadaptive.js

    r22459 r26195  
    1919                //should we interpolate forcings between timesteps?
    2020                this.interp_forcings=1;
     21                this.cycle_forcing=0;
    2122        }// }}}
    2223        this.disp= function(){// {{{
     
    3132                fielddisplay(this,'cfl_coefficient','coefficient applied to cfl condition');
    3233                fielddisplay(this,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
     34                fielddisplay(this,'cycle_forcing','cycle through forcing ? (0 or 1)');
    3335                fielddisplay(this,'coupling_time','coupling time steps with ocean model [' +unit+ ']');
    3436
     
    4648                checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
    4749                checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0,1]);
     50                checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0,1]);
    4851                if (this.final_time-this.start_time<0){
    4952                        md.checkmessage('timestepping.final_time should be larger than timestepping.start_time');
     
    6366                WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cfl_coefficient','format','Double');
    6467                WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','interp_forcings','format','Boolean');
     68                WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
    6569                WriteData(fid,prefix,'object',this,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
    6670
     
    7680        this.cfl_coefficient = 0.;
    7781        this.interp_forcings = 1;
     82        this.cycle_forcing   = 0;
    7883        this.coupling_time   = 0.;
    7984
  • issm/trunk-jpl/src/m/classes/timesteppingadaptive.m

    r22459 r26195  
    1212                cfl_coefficient = 0.;
    1313                interp_forcings = 1;
     14                cycle_forcing = 1;
    1415                coupling_time   = 0.;
    1516        end
     
    3940                        %should we interpolate forcings between timesteps?
    4041                        self.interp_forcings=1;
     42                        self.cycle_forcing=0;
    4143                end % }}}
    4244                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    4850                        md = checkfield(md,'fieldname','timestepping.cfl_coefficient','numel',[1],'>',0,'<=',1);
    4951                        md = checkfield(md,'fieldname','timestepping.interp_forcings','numel',[1],'values',[0 1]);
     52                        md = checkfield(md,'fieldname','timestepping.cycle_forcing','numel',[1],'values',[0 1]);
    5053                        md = checkfield(md,'fieldname','timestepping.coupling_time','numel',[1],'>=',md.timestepping.coupling_time,'NaN',1,'Inf',1);
    5154                        if self.final_time-self.start_time<0,
     
    6366                        fielddisplay(self,'cfl_coefficient','coefficient applied to cfl condition');
    6467                        fielddisplay(self,'interp_forcings','interpolate in time between requested forcing values ? (0 or 1)');
     68                        fielddisplay(self,'cycle_forcing','cycle through forcing ? (0 or 1)');
    6569                        fielddisplay(self,'coupling_time',['coupling time step with ocean model [' unit ']']);
    6670
     
    7680                        WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cfl_coefficient','format','Double');
    7781                        WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','interp_forcings','format','Boolean');
     82                        WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','cycle_forcing','format','Boolean');
    7883                        WriteData(fid,prefix,'object',self,'class','timestepping','fieldname','coupling_time','format','Double','scale',scale);
    7984                end % }}}
     
    8691                        writejsdouble(fid,[modelname '.timesteppingadaptive.cfl_coefficient'],self.cfl_coefficient);
    8792                        writejsdouble(fid,[modelname '.timesteppingadaptive.interp_forcings'],self.interp_forcings);
     93                        writejsdouble(fid,[modelname '.timesteppingadaptive.cycle_forcing'],self.cycle_forcing);
    8894                        writejsdouble(fid,[modelname '.timesteppingadaptive.coupling_time'],self.time_step_max);
    8995
  • issm/trunk-jpl/src/m/classes/timesteppingadaptive.py

    r24213 r26195  
    2020            self.cfl_coefficient = 0.
    2121            self.interp_forcings = 1
     22            self.cycle_forcing = 0
    2223            self.coupling_time = 0.
    2324
     
    3233            self.final_time = old.final_time
    3334            self.interp_forcings = old.interp_forcings
     35            self.cycle_forcing = old.cycle_forcing
    3436            self.coupling_time = old.coupling_time
    3537
     
    4648        string = "%s\n%s" % (string, fielddisplay(self, "cfl_coefficient", "coefficient applied to cfl condition"))
    4749        string = "%s\n%s" % (string, fielddisplay(self, "interp_forcings", "interpolate in time between requested forcing values ? (0 or 1)"))
     50        string = "%s\n%s" % (string, fielddisplay(self, "cycle_forcing", "cycle through forcing ? (0 or 1)"))
    4851        string = "%s\n%s" % (string, fielddisplay(self, "coupling_time", "coupling time steps with ocean model [yr]"))
    4952        return string
     
    6063        #should we interpolate forcings between timesteps?
    6164        self.interp_forcings = 1
     65        self.cycle_forcing   = 0
    6266        return self
    6367    #}}}
     
    7276            md.checkmessage("timestepping.final_time should be larger than timestepping.start_time")
    7377        md = checkfield(md, 'fieldname', 'timestepping.interp_forcings', 'numel', [1], 'values', [0, 1])
     78        md = checkfield(md, 'fieldname', 'timestepping.cycle_forcing', 'numel', [1], 'values', [0, 1])
    7479        md = checkfield(md, 'fieldname', 'timestepping.coupling_time', 'numel', [1], '>=', 0, 'NaN', 1, 'Inf', 1)
    7580
     
    8691        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cfl_coefficient', 'format', 'Double')
    8792        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'interp_forcings', 'format', 'Boolean')
     93        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'cycle_forcing', 'format', 'Boolean')
    8894        WriteData(fid, prefix, 'object', self, 'class', 'timestepping', 'fieldname', 'coupling_time', 'format', 'Double', 'scale', yts)
    8995    # }}}
Note: See TracChangeset for help on using the changeset viewer.