Changeset 27203


Ignore:
Timestamp:
08/16/22 11:38:38 (3 years ago)
Author:
Cheng Gong
Message:

CHG: add a scaling of calving rate based on ice velocity

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

Legend:

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

    r27121 r27203  
    225225                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.xoffset",CalvingXoffsetEnum));
    226226                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.yoffset",CalvingYoffsetEnum));
     227                        parameters->AddObject(iomodel->CopyConstantObject("md.calving.vel_threshold",CalvingVelThresholdEnum));
    227228                        break;
    228229                default:
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r27131 r27203  
    844844        IssmDouble  arate, rho_ice, rho_water, thickness;
    845845        int                     use_parameter=-1;
    846         IssmDouble  gamma, theta, alpha, xoffset, yoffset;
     846        IssmDouble  gamma, theta, alpha, xoffset, yoffset, vel_threshold, vrate;
    847847
    848848        /* Get node coordinates and dof list: */
     
    870870        this->FindParam(&xoffset, CalvingXoffsetEnum);
    871871        this->FindParam(&yoffset, CalvingYoffsetEnum);
     872        this->FindParam(&vel_threshold, CalvingVelThresholdEnum);
    872873
    873874        /* Start looping on the number of vertices: */
     
    883884                gr_input->GetInputValue(&groundedice,gauss);
    884885                bs_input->GetInputValue(&bed,gauss);
     886                H_input->GetInputValue(&thickness,gauss);
    885887                vel=sqrt(vx*vx+vy*vy)+1.e-14;
    886888                sl_input->GetInputValue(&sealevel,gauss);
    887889                arate_input->GetInputValue(&arate,gauss);
     890                vrate = 1.0;
     891                if (vel < vel_threshold) vrate = vel / vel_threshold;
    888892
    889893                /*Compute strain rate and viscosity: */
     
    912916                                gamma = yoffset -  0.5*theta*tanh(alpha*(bed+xoffset));
    913917                                break;
     918                        case 2:
     919                                /* 2 tanh(thicknes): f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})) */
     920                                gamma = yoffset -  0.5*theta*tanh(alpha*(-thickness+xoffset));
     921                                break;
    914922                        case -1:
    915923                                /* nothing, just the arate*/
     
    926934
    927935                /*-------------------------------------------*/
    928                 calvingrate[iv] = arate*gamma;
     936                calvingrate[iv] = arate*gamma*vrate;
    929937        }
    930938
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r27179 r27203  
    116116        CalvingXoffsetEnum,
    117117        CalvingYoffsetEnum,
     118        CalvingVelThresholdEnum,
    118119        ConfigurationTypeEnum,
    119120        ConstantsGEnum,
  • issm/trunk-jpl/src/m/classes/calvingparameterization.m

    r27121 r27203  
    1212                xoffset = 0;
    1313                yoffset = 0;
     14                vel_threshold = 6000;
    1415        end
    1516        methods
     
    5152                        % offset in y-axis
    5253                        self.yoffset = 0;
     54                        % velocity threshold to reduce calving rate
     55                        vel_threshold = 6000; % m/a
    5356                end % }}}
    5457                function md = checkconsistency(self,md,solution,analyses) % {{{
     
    5760
    5861                        md = checkfield(md,'fieldname','calving.min_thickness','>=',0,'NaN',1,'Inf',1,'numel',1);
    59                         md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1]);
     62                        md = checkfield(md,'fieldname','calving.use_param','values',[-1, 0, 1, 2]);
    6063                        md = checkfield(md,'fieldname','calving.theta','NaN',1,'Inf',1,'numel',1);
    6164                        md = checkfield(md,'fieldname','calving.alpha','NaN',1,'Inf',1,'numel',1);
    6265                        md = checkfield(md,'fieldname','calving.xoffset','NaN',1,'Inf',1,'numel',1);
    6366                        md = checkfield(md,'fieldname','calving.yoffset','NaN',1,'Inf',1,'numel',1);
     67                        md = checkfield(md,'fieldname','calving.vel_threshold','NaN',1,'Inf',1,'numel',1);
    6468                end % }}}
    6569                function disp(self) % {{{
    6670                        disp(sprintf('   Calving test parameters:'));
    6771                        fielddisplay(self,'min_thickness','minimum thickness below which no ice is allowed [m]');
    68                         fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o}))');
     72                        fielddisplay(self,'use_param','-1 - just use frontal ablation rate, 0 - f(x) = y_{o} + \alpha (x+x_{o}), 1 - f(x)=y_{o}-\frac{\theta}{2}\tanh(\alpha(x+x_{o})), 2 - tanh(thickness)');
    6973                        fielddisplay(self,'theta','the amplifier');
    7074                        fielddisplay(self,'alpha','the slope');
    7175                        fielddisplay(self,'xoffset','offset in x-axis');
    7276                        fielddisplay(self,'yoffset','offset in y-axis');
     77                        fielddisplay(self,'vel_threshold','threshold of ice velocity to reduce the calving rate');
    7378                end % }}}
    7479                function marshall(self,prefix,md,fid) % {{{
     
    8186                        WriteData(fid,prefix,'object',self,'fieldname','xoffset','format','Double');
    8287                        WriteData(fid,prefix,'object',self,'fieldname','yoffset','format','Double');
     88                        WriteData(fid,prefix,'object',self,'fieldname','vel_threshold','format','Double','scale', 1./yts);
    8389                end % }}}
    8490        end
Note: See TracChangeset for help on using the changeset viewer.