source: issm/oecreview/Archive/26740-27031/ISSM-27019-27020.diff@ 27032

Last change on this file since 27032 was 27032, checked in by Mathieu Morlighem, 3 years ago

CHG: added 26740-27031

File size: 5.1 KB
  • ../trunk-jpl/src/m/classes/calvingtest.m

     
     1%CALVINGTEST class definition
     2%  For testing calving laws and coefficients
     3%   Usage:
     4%      calvingtest=calvingtest();
     5
     6classdef calvingtest
     7        properties (SetAccess=public)
     8                speedfactor = 1;
     9        end
     10        methods
     11                function self = calvingtest(varargin) % {{{
     12                        switch nargin
     13                                case 0
     14                                        self=setdefaultparameters(self);
     15                                case 1
     16                                        inputstruct=varargin{1};
     17                                        list1 = properties('calvingtest');
     18                                        list2 = fieldnames(inputstruct);
     19                                        for i=1:length(list1)
     20                                                fieldname = list1{i};
     21                                                if ismember(fieldname,list2),
     22                                                        self.(fieldname) = inputstruct.(fieldname);
     23                                                end
     24                                        end
     25                                otherwise
     26                                        error('constructor not supported');
     27                        end
     28                end % }}}
     29                function self = extrude(self,md) % {{{
     30                end % }}}
     31                function self = setdefaultparameters(self) % {{{
     32                        self.speedfactor = 1;
     33                end % }}}
     34                function md = checkconsistency(self,md,solution,analyses) % {{{
     35                        %Early return
     36                        if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
     37                        md = checkfield(md,'fieldname','calving.speedfactor','NaN',1,'Inf',1, 'singletimeseries', 1);
     38                end % }}}
     39                function disp(self) % {{{
     40                        disp(sprintf('   Calving test parameters:'));
     41                        fielddisplay(self,'speedfactor','calving rate is proportional to the ice velocity.');
     42                end % }}}
     43                function marshall(self,prefix,md,fid) % {{{
     44                        yts=md.constants.yts;
     45                        WriteData(fid,prefix,'name','md.calving.law','data',8,'format','Integer');
     46                        WriteData(fid,prefix,'object',self,'fieldname','speedfactor','format','DoubleMat','mattype',1,'timeserieslength',2,'yts',md.constants.yts);
     47                end % }}}
     48        end
     49end
  • ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

     
    170170        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.migration_max",MigrationMaxEnum));
    171171
    172172        int  calvinglaw;
     173   IssmDouble *transparam = NULL;
     174   IssmDouble  yts;
     175   int         N,M;
     176   bool        interp,cycle;
     177
    173178        iomodel->FindConstant(&calvinglaw,"md.calving.law");
    174179        switch(calvinglaw){
    175180                case DefaultCalvingEnum:
     
    191196                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.height_above_floatation",CalvingHeightAboveFloatationEnum));
    192197                        break;
    193198                case CalvingTestEnum:
    194                         parameters->AddObject(iomodel->CopyConstantObject("md.calving.speedfactor",CalvingTestSpeedfactorEnum));
     199                        iomodel->FetchData(&transparam,&N,&M,"md.calving.speedfactor");
     200                        iomodel->FindConstant(&interp,"md.timestepping.interp_forcing");
     201                        iomodel->FindConstant(&cycle,"md.timestepping.cycle_forcing");
     202                        if(N==1){
     203                                _assert_(M==1);
     204                                parameters->AddObject(new DoubleParam(CalvingTestSpeedfactorEnum,transparam[0]));
     205         }
     206         else{
     207            _assert_(N==2);
     208            parameters->AddObject(new TransientParam(CalvingTestSpeedfactorEnum,&transparam[0],&transparam[M],interp,cycle,M));
     209         }
     210                        xDelete<IssmDouble>(transparam);
    195211                        break;
    196212                case CalvingParameterizationEnum:
    197213                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
     
    208224        /*Get frontal melt parameters*/
    209225        int melt_parameterization;
    210226        iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
    211         int M,N;
    212         IssmDouble* transparam = NULL;
    213227        switch(melt_parameterization){
    214228                case FrontalForcingsDefaultEnum:
    215229                        break;
  • ../trunk-jpl/src/c/classes/Elements/Element.cpp

     
    35563556                                                                                                          case CalvingParameterizationEnum:
    35573557                                                                                                                  this->CalvingRateParameterization();
    35583558                                                                                                                  break;
     3559                                                                                                          case CalvingTestEnum:
     3560                                                                                                                  this->CalvingRateTest();
     3561                                                                                                                  break;
    35593562                                                                                                          default:
    35603563                                                                                                                  _error_("Calving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
    35613564                                                                                                  }
  • ../trunk-jpl/src/c/classes/Elements/Tria.cpp

     
    372372        IssmDouble  calvingratey[NUMVERTICES];
    373373        IssmDouble  calvingrate[NUMVERTICES];
    374374        IssmDouble  vx,vy;
     375        IssmDouble  time;
     376        IssmDouble  coeff;
    375377
    376378        /*Retrieve all inputs and parameters we will need*/
    377         IssmDouble coeff = parameters->FindParam(CalvingTestSpeedfactorEnum);
     379        parameters->FindParam(&time,TimeEnum);
     380        parameters->FindParam(&coeff,CalvingTestSpeedfactorEnum,time);
     381
    378382        Input* vx_input = this->GetInput(VxEnum); _assert_(vx_input);
    379383        Input* vy_input = this->GetInput(VyEnum); _assert_(vy_input);
    380384
Note: See TracBrowser for help on using the repository browser.