source: issm/oecreview/Archive/21724-22754/ISSM-22191-22192.diff@ 22755

Last change on this file since 22755 was 22755, checked in by Mathieu Morlighem, 7 years ago

CHG: added 21724-22754

File size: 13.9 KB
  • ../trunk-jpl/src/c/modules/Calvingx/Calvingx.cpp

     
    3030                        femmodel->StrainRateperpendicularx();
    3131                        femmodel->CalvingRateLevermannx();
    3232                        break;
    33                 case CalvingDevEnum:
    34                         femmodel->CalvingRateDevx();
    35                         femmodel->ElementOperationx(&Element::CalvingRateDev);
     33                case CalvingVonmisesEnum:
     34                        femmodel->CalvingRateVonmisesx();
     35                        femmodel->ElementOperationx(&Element::CalvingRateVonmises);
    3636                        break;
    3737                default:
    3838                        _error_("Caving law "<<EnumToStringx(calvinglaw)<<" not supported yet");
  • ../trunk-jpl/src/c/classes/FemModel.cpp

     
    919919        *presponse=J;
    920920
    921921}/*}}}*/
    922 void FemModel::CalvingRateDevx(){/*{{{*/
     922void FemModel::CalvingRateVonmisesx(){/*{{{*/
    923923
    924924        for(int i=0;i<elements->Size();i++){
    925925                Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i));
    926                 element->CalvingRateDev();
     926                element->CalvingRateVonmises();
    927927        }
    928928}
    929929/*}}}*/
  • ../trunk-jpl/src/c/classes/Elements/Tria.h

     
    5151                /*}}}*/
    5252                /*Element virtual functions definitions: {{{*/
    5353                void        AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
    54                 void                    CalvingRateDev();
     54                void                    CalvingRateVonmises();
    5555                void        CalvingCrevasseDepth();
    5656                void                    CalvingRateLevermann();
    5757                IssmDouble  CharacteristicLength(void);
  • ../trunk-jpl/src/c/classes/Elements/Penta.cpp

     
    181181        _error_("Not supported yet!");
    182182}
    183183/*}}}*/
    184 void       Penta::CalvingRateDev(){/*{{{*/
     184void       Penta::CalvingRateVonmises(){/*{{{*/
    185185
    186186        if(!this->IsOnBase()) return;
    187187
  • ../trunk-jpl/src/c/classes/Elements/Penta.h

     
    4848                void           AddInput(int input_enum, IssmDouble* values, int interpolation_enum);
    4949                void           AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part);
    5050                void           BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement);
    51                 void           CalvingRateDev();
     51                void           CalvingRateVonmises();
    5252                void           CalvingRateLevermann();
    5353                IssmDouble     CharacteristicLength(void){_error_("not implemented yet");};
    5454                void           ComputeBasalStress(Vector<IssmDouble>* sigma_b);
  • ../trunk-jpl/src/c/classes/Elements/Element.cpp

     
    23522352                                case CalvingLevermannEnum:
    23532353                                        this->CalvingRateLevermann();
    23542354                                        break;
    2355                                 case CalvingDevEnum:
    2356                                         this->CalvingRateDev();
     2355                                case CalvingVonmisesEnum:
     2356                                        this->CalvingRateVonmises();
    23572357                                        break;
    23582358                                case CalvingCrevasseDepthEnum:
    23592359                                        this->CalvingCrevasseDepth();
     
    23652365                case StrainRateparallelEnum: this->StrainRateparallel(); break;
    23662366                case StrainRateperpendicularEnum: this->StrainRateperpendicular(); break;
    23672367                case SurfaceCrevasseEnum: this->CalvingCrevasseDepth(); break;
    2368                 case SigmaVMEnum: this->CalvingRateDev(); break;
     2368                case SigmaVMEnum: this->CalvingRateVonmises(); break;
    23692369        }
    23702370
    23712371        /*Find input*/
  • ../trunk-jpl/src/c/classes/Elements/Element.h

     
    187187                virtual void       AddInput(int input_enum, IssmDouble* values, int interpolation_enum)=0;
    188188                virtual void       AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part)=0;
    189189                virtual void             BasalNodeIndices(int* pnumindices,int** pindices,int finiteelement){_error_("not implemented yet");};
    190                 virtual void       CalvingRateDev(void){_error_("not implemented yet");};
     190                virtual void       CalvingRateVonmises(void){_error_("not implemented yet");};
    191191                virtual void       CalvingCrevasseDepth(void){_error_("not implemented yet");};
    192192                virtual void        CalvingRateLevermann(void)=0;
    193193                virtual IssmDouble CharacteristicLength(void)=0;
  • ../trunk-jpl/src/c/classes/Elements/Tria.cpp

     
    207207        }
    208208}
    209209/*}}}*/
    210 void       Tria::CalvingRateDev(){/*{{{*/
     210void       Tria::CalvingRateVonmises(){/*{{{*/
    211211
    212212        IssmDouble  xyz_list[NUMVERTICES][3];
    213213        IssmDouble  epsilon[3]; /* epsilon=[exx,eyy,exy];*/
  • ../trunk-jpl/src/c/classes/FemModel.h

     
    8181
    8282                /*Modules*/
    8383                void BalancethicknessMisfitx(IssmDouble* pV);
    84                 void CalvingRateDevx();
     84                void CalvingRateVonmisesx();
    8585                void CalvingRateLevermannx();
    8686                void DeviatoricStressx();
    8787                void Divergencex(IssmDouble* pdiv);
  • ../trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

     
    5959                        iomodel->FetchDataToInput(elements,"md.calving.coeff",CalvinglevermannCoeffEnum);
    6060                        iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvinglevermannMeltingrateEnum);
    6161                        break;
    62                 case CalvingDevEnum:
     62                case CalvingVonmisesEnum:
    6363                        iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_groundedice",CalvingStressThresholdGroundediceEnum);
    6464                        iomodel->FetchDataToInput(elements,"md.calving.stress_threshold_floatingice",CalvingStressThresholdFloatingiceEnum);
    6565                        iomodel->FetchDataToInput(elements,"md.calving.meltingrate",CalvingMeltingrateEnum);
     
    8888        switch(calvinglaw){
    8989                case DefaultCalvingEnum:
    9090                case CalvingLevermannEnum:
    91                 case CalvingDevEnum:
     91                case CalvingVonmisesEnum:
    9292                        break;
    9393                case CalvingMinthicknessEnum:
    9494                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.min_thickness",CalvingMinthicknessEnum));
     
    219219        /*Load calving inputs*/
    220220        switch(calvinglaw){
    221221                case DefaultCalvingEnum:
    222                 case CalvingDevEnum:
     222                case CalvingVonmisesEnum:
    223223                        lsf_slopex_input  = basalelement->GetInput(LevelsetfunctionSlopeXEnum); _assert_(lsf_slopex_input);
    224224                        if(dim==2) lsf_slopey_input  = basalelement->GetInput(LevelsetfunctionSlopeYEnum); _assert_(lsf_slopey_input);
    225225                        calvingrate_input = basalelement->GetInput(CalvingCalvingrateEnum);     _assert_(calvingrate_input);
     
    290290                /*Get calving speed*/
    291291                switch(calvinglaw){
    292292                        case DefaultCalvingEnum:
    293                         case CalvingDevEnum:
     293                        case CalvingVonmisesEnum:
    294294                                lsf_slopex_input->GetInputValue(&dlsf[0],gauss);
    295295                                if(dim==2) lsf_slopey_input->GetInputValue(&dlsf[1],gauss);
    296296                                calvingrate_input->GetInputValue(&calvingrate,gauss);
  • ../trunk-jpl/src/m/classes/calvingdev.m

     
    1 %CALVINGDEV class definition
    2 %
    3 %   Usage:
    4 %      calvingdev=calvingdev();
    5 
    6 classdef calvingdev
    7         properties (SetAccess=public)
    8                 stress_threshold_groundedice = 0.;
    9                 stress_threshold_floatingice = 0.;
    10                 meltingrate   = NaN;
    11         end
    12         methods
    13                 function self = calvingdev(varargin) % {{{
    14                         switch nargin
    15                                 case 0
    16                                         self=setdefaultparameters(self);
    17                                 case 1
    18                                         inputstruct=varargin{1};
    19                                         list1 = properties('calvingdev');
    20                                         list2 = fieldnames(inputstruct);
    21                                         for i=1:length(list1)
    22                                                 fieldname = list1{i};
    23                                                 if ismember(fieldname,list2),
    24                                                         self.(fieldname) = inputstruct.(fieldname);
    25                                                 end
    26                                         end
    27                                 otherwise
    28                                         error('constructor not supported');
    29                         end
    30                 end % }}}
    31                 function self = extrude(self,md) % {{{
    32                         self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
    33                 end % }}}
    34                 function self = setdefaultparameters(self) % {{{
    35 
    36                         %Default sigma max
    37                         self.stress_threshold_groundedice = 1e6;
    38                         self.stress_threshold_floatingice = 150e3;
    39                 end % }}}
    40                 function md = checkconsistency(self,md,solution,analyses) % {{{
    41                         %Early return
    42                         if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
    43 
    44                         md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);
    45                         md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
    46                         md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    47                 end % }}}
    48                 function disp(self) % {{{
    49                         disp(sprintf('   Calving Pi parameters:'));
    50                         fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
    51                         fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
    52                         fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    53 
    54                 end % }}}
    55                 function marshall(self,prefix,md,fid) % {{{
    56                         yts=md.constants.yts;
    57                         WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
    58                         WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
    59                         WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);
    60                         WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
    61                 end % }}}
    62         end
    63 end
  • ../trunk-jpl/src/m/classes/calvingvonmises.m

     
     1%CALVINGVONMISES class definition
     2%
     3%   Usage:
     4%      calvingvonmises=calvingvonmises();
     5
     6classdef calvingvonmises
     7        properties (SetAccess=public)
     8                stress_threshold_groundedice = 0.;
     9                stress_threshold_floatingice = 0.;
     10                meltingrate   = NaN;
     11        end
     12        methods
     13                function self = calvingvonmises(varargin) % {{{
     14                        switch nargin
     15                                case 0
     16                                        self=setdefaultparameters(self);
     17                                case 1
     18                                        inputstruct=varargin{1};
     19                                        list1 = properties('calvingvonmises');
     20                                        list2 = fieldnames(inputstruct);
     21                                        for i=1:length(list1)
     22                                                fieldname = list1{i};
     23                                                if ismember(fieldname,list2),
     24                                                        self.(fieldname) = inputstruct.(fieldname);
     25                                                end
     26                                        end
     27                                otherwise
     28                                        error('constructor not supported');
     29                        end
     30                end % }}}
     31                function self = extrude(self,md) % {{{
     32                        self.meltingrate=project3d(md,'vector',self.meltingrate,'type','node');
     33                end % }}}
     34                function self = setdefaultparameters(self) % {{{
     35
     36                        %Default sigma max
     37                        self.stress_threshold_groundedice = 1e6;
     38                        self.stress_threshold_floatingice = 150e3;
     39                end % }}}
     40                function md = checkconsistency(self,md,solution,analyses) % {{{
     41                        %Early return
     42                        if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
     43
     44                        md = checkfield(md,'fieldname','calving.stress_threshold_groundedice','>',0,'nan',1,'Inf',1);
     45                        md = checkfield(md,'fieldname','calving.stress_threshold_floatingice','>',0,'nan',1,'Inf',1);
     46                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
     47                end % }}}
     48                function disp(self) % {{{
     49                        disp(sprintf('   Calving VonMises parameters:'));
     50                        fielddisplay(self,'stress_threshold_groundedice','sigma_max applied to grounded ice only [Pa]');
     51                        fielddisplay(self,'stress_threshold_floatingice','sigma_max applied to floating ice only [Pa]');
     52                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
     53
     54                end % }}}
     55                function marshall(self,prefix,md,fid) % {{{
     56                        yts=md.constants.yts;
     57                        WriteData(fid,prefix,'name','md.calving.law','data',2,'format','Integer');
     58                        WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_groundedice','format','DoubleMat','mattype',1);
     59                        WriteData(fid,prefix,'object',self,'fieldname','stress_threshold_floatingice','format','DoubleMat','mattype',1);
     60                        WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
     61                end % }}}
     62        end
     63end
  • ../trunk-jpl/test/NightlyRun/test540.m

     
    88
    99%calving parameters
    1010md.mask.ice_levelset = 1e4*(md.mask.ice_levelset + 0.5);
    11 md.calving=calvingdev();
     11md.calving=calvingvonmises();
    1212md.calving.meltingrate = zeros(md.mesh.numberofvertices,1);
    1313md.transient.ismovingfront = 1;
    1414md.levelset.spclevelset = NaN(md.mesh.numberofvertices,1);
Note: See TracBrowser for help on using the repository browser.