Ignore:
Timestamp:
11/07/14 15:38:27 (10 years ago)
Author:
srebuffi
Message:

CHG: added calving class

File:
1 edited

Legend:

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

    r18738 r18757  
    77        properties (SetAccess=public)
    88                 spcthickness           = NaN;
    9                  iscalvingrate          = 0;
    10                  calvingrate            = NaN;
    11                  levermann_calving_coeff= 0;
    129                 isfreesurface          = 0;
    1310                 min_thickness          = 0;
     
    4542        end
    4643        methods
    47          function createxml(obj,fid) % {{{
    48             fprintf(fid, '<!-- masstransport -->\n');           
    49                    
    50             % Masstransport solution parameters
    51             fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Masstransport solution parameters">','<section name="masstransport" />');                   
    52             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="spcthickness" type="',class(obj.spcthickness),'" default="',convert2str(obj.spcthickness),'">','     <section name="masstransport" />','     <help> thickness constraints (NaN means no constraint) [m] </help>','  </parameter>');
    53                                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="iscalvingrate" type="',class(obj.iscalvingrate),'" default="',convert2str(obj.iscalvingrate),'">','     <section name="masstransport" />','     <help> do we use calving (loss of ice) </help>','  </parameter>');
    54             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="calvingrate" type="',class(obj.calvingrate),'" default="',convert2str(obj.calvingrate),'">','     <section name="masstransport" />','     <help> calving rate at given location [m/a] </help>','  </parameter>');
    55                                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="levermann_calving_coeff" type="',class(obj.levermann_calving_coeff),'" default="',convert2str(obj.levermann_calving_coeff),'">','     <section name="masstransport" />','     <help> Proportionality coefficient in Levermann model  </help>','  </parameter>');
    56             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isfreesurface" type="',class(obj.isfreesurface),'" default="',convert2str(obj.isfreesurface),'">','     <section name="masstransport" />','     <help> do we use free surfaces (FS only) are mass conservation </help>','  </parameter>');
    57             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="min_thickness" type="',class(obj.min_thickness),'" default="',convert2str(obj.min_thickness),'">','     <section name="masstransport" />','     <help> minimum ice thickness allowed [m] </help>','  </parameter>');
    58            
    59             % hydrostatic_adjustment drop-down (incremental or absolute )
    60             fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="hydrostatic_adjustment" type="alternative" optional ="false">','     <section name="masstransport" />','     <help> adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute''  </help>');
    61             fprintf(fid,'%s\n','       <option value="Incremental" type="string" default="true"> </option>');
    62             fprintf(fid,'%s\n%s\n','       <option value="Absolute" type="string" default="false"> </option>','</parameter>');
    63            
    64             %stabilization drop-down (0, 1, 2, or 3)
    65             fprintf(fid,'%s\n%s\n%s\n%s\n','  <parameter key ="stabilization" type="alternative" optional="false">','     <section name="masstransport" />','     <help> 0: no, 1:  artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin </help>');
    66             fprintf(fid,'%s\n','       <option value="0" type="string" default="true"> </option>');
    67             fprintf(fid,'%s\n','       <option value="1" type="string" default="false"> </option>');
    68             fprintf(fid,'%s\n','       <option value="2" type="string" default="false"> </option>');
    69             fprintf(fid,'%s\n%s\n','       <option value="3" type="string" default="false"> </option>','</parameter>');
    70 
    71             fprintf(fid,'%s\n%s\n','</frame>');   
    72            
    73             %Penalty options
    74             fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Penalty options">','<section name="masstransport" />');
    75             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="vertex_pairing" type="',class(obj.vertex_pairing),'" default="',convert2str(obj.vertex_pairing),'">','     <section name="masstransport" />','     <help> offset used by penalties: penalty = Kmax*10^offset </help>','  </parameter>');
    76             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="penalty_factor" type="',class(obj.penalty_factor),'" default="',convert2str(obj.penalty_factor),'">','     <section name="masstransport" />','     <help> pairs of vertices that are penalized </help>','  </parameter>');
    77             fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">','     <section name="masstransport" />','     <help> additional outputs requested </help>','  </parameter>');
    78             fprintf(fid,'%s\n%s\n','</frame>');
    79        
    80         end % }}}
    8144                function obj = masstransport(varargin) % {{{
    8245                        switch nargin
     
    10467                function obj = setdefaultparameters(obj) % {{{
    10568
    106                         %Proportionality coefficient in Levermann model
    107                         obj.levermann_calving_coeff=8e21;
    108                        
    10969                        %Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin
    11070                        obj.stabilization=1;
     
    12888
    12989                        md = checkfield(md,'fieldname','masstransport.spcthickness','forcing',1);
    130                         if(ismember(LevelsetAnalysisEnum(), analyses) & md.transient.islevelset)
    131                                 md = checkfield(md,'fieldname','masstransport.iscalvingrate','values',[0 1]);
    132                                 md = checkfield(md,'fieldname','masstransport.calvingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
    133                                 md = checkfield(md,'fieldname','masstransport.levermann_calving_coeff','>',0);
    134                         end
    135 
    13690                        md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 1]);
    13791                        md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',{'Absolute' 'Incremental'});
     
    14498                        disp(sprintf('   Masstransport solution parameters:'));
    14599                        fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint) [m]');
    146                         fielddisplay(obj,'iscalvingrate','do we use calving (loss of ice)');
    147                         fielddisplay(obj,'calvingrate','calving rate at given location [m/a]');
    148                         fielddisplay(obj,'levermann_calving_coeff','proportionality coefficient in Levermann model');
    149100                        fielddisplay(obj,'isfreesurface','do we use free surfaces (FS only) are mass conservation');
    150101                        fielddisplay(obj,'min_thickness','minimum ice thickness allowed [m]');
     
    163114
    164115                        WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1);
    165                         WriteData(fid,'object',obj,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
    166                         WriteData(fid,'object',obj,'fieldname','iscalvingrate','format','Boolean');
    167116                        WriteData(fid,'object',obj,'fieldname','isfreesurface','format','Boolean');
    168                         WriteData(fid,'object',obj,'fieldname','levermann_calving_coeff','format','Double');
    169117                        WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double');
    170118                        WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum());
Note: See TracChangeset for help on using the changeset viewer.