Changeset 19024


Ignore:
Timestamp:
01/20/15 14:08:09 (10 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added stabilization to calving

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

Legend:

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

    r18955 r19024  
    66classdef calving
    77        properties (SetAccess=public)
    8                  calvingrate            = NaN;
    9                  meltingrate            = NaN;
    10         end
    11         methods (Static)
    12                 function obj = loadobj(obj) % {{{
    13                         % This function is directly called by matlab when a model object is
    14                         % loaded. If the input is a struct it is an old version of this class and
    15                         % old fields must be recovered (make sure they are in the deprecated
    16                         % model properties)
    17 
    18                         if verLessThan('matlab','7.9'),
    19                                 disp('Warning: your matlab version is old and there is a risk that load does not work correctly');
    20                                 disp('         if the model is not loaded correctly, rename temporarily loadobj so that matlab does not use it');
    21 
    22                                 % This is a Matlab bug: all the fields of md have their default value
    23                                 % Example of error message:
    24                                 % Warning: Error loading an object of class 'model':
    25                                 % Undefined function or method 'exist' for input arguments of type 'cell'
    26                                 %
    27                                 % This has been fixed in MATLAB 7.9 (R2009b) and later versions
    28                         end
    29 
    30                         if isstruct(obj)
    31                                 disp('Recovering calving from older version');
    32                                 objstruct = obj;
    33                                 obj = structtoobj(calving(),objstruct);
    34                         end
    35                 end% }}}
     8                stabilization = 0;
     9                calvingrate   = NaN;
     10                meltingrate   = NaN;
    3611        end
    3712        methods
     
    5631                function obj = setdefaultparameters(obj) % {{{
    5732
     33                        %stabilization = 2 by default
     34                        obj.stabilization = 2;
     35
    5836                end % }}}
    5937                function md = checkconsistency(obj,md,solution,analyses) % {{{
    6038                        %Early return
    6139                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     40
     41                        md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
    6242                        md = checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'forcing',1,'NaN',1);
    6343                        md = checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'forcing',1,'NaN',1);
     
    6545                function disp(obj) % {{{
    6646                        disp(sprintf('   Calving parameters:'));
     47                        fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    6748                        fielddisplay(obj,'calvingrate','calving rate at given location [m/a]');
    6849                        fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     
    7152                        yts=365.0*24.0*3600.0;
    7253                        WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
     54                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    7355                        WriteData(fid,'object',obj,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
    7456                        WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
  • issm/trunk-jpl/src/m/classes/calving.py

    r18965 r19024  
    1414
    1515        def __init__(self): # {{{
    16                 self.calvingrate            = float('NaN')
    17                 self.meltingrate            = float('NaN')
     16
     17                self.stabilization = 0
     18                self.calvingrate   = float('NaN')
     19                self.meltingrate   = float('NaN')
    1820
    1921                #set defaults
     
    2325        def __repr__(self): # {{{
    2426                string='   Calving parameters:'
     27                string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
    2528                string="%s\n%s"%(string,fielddisplay(self,'calvingrate','calving rate at given location [m/a]'))
    2629                string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
     
    2932                #}}}
    3033        def setdefaultparameters(self): # {{{
     34
     35                #stabilization = 2 by default
     36                self.stabilization = 2
    3137
    3238                return self
     
    3844                        return md
    3945
     46                md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
    4047                md = checkfield(md,'fieldname','calving.calvingrate','>=',0,'forcing',1,'NaN',1);
    4148                md = checkfield(md,'fieldname','calving.meltingrate','>=',0,'forcing',1,'NaN',1);
     
    4855
    4956                WriteData(fid,'enum',CalvingLawEnum(),'data',DefaultCalvingEnum(),'format','Integer');
     57                WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
    5058                WriteData(fid,'object',self,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts)
    5159                WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts)
  • issm/trunk-jpl/src/m/classes/calvinglevermann.m

    r18816 r19024  
    66classdef calvinglevermann
    77        properties (SetAccess=public)
    8                  coeff       = NaN;
    9                  meltingrate = NaN;
     8                stabilization = 0;
     9                coeff         = NaN;
     10                meltingrate   = NaN;
    1011        end
    1112        methods
     
    2930                end % }}}
    3031                function obj = setdefaultparameters(obj) % {{{
     32
     33                        %stabilization = 2 by default
     34                        obj.stabilization = 2;
     35
    3136                        %Proportionality coefficient in Levermann model
    3237                        obj.coeff=2e13;
     
    3540                        %Early return
    3641                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     42
     43                        md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
    3744                        md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
    3845                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
     
    4047                function disp(obj) % {{{
    4148                        disp(sprintf('   Calving Levermann parameters:'));
     49                        fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    4250                        fielddisplay(obj,'coeff','proportionality coefficient in Levermann model');
    4351                        fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     
    4755                        yts=365.0*24.0*3600.0;
    4856                        WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
     57                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    4958                        WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
    5059                        WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
  • issm/trunk-jpl/src/m/classes/calvinglevermann.py

    r18816 r19024  
    1414
    1515        def __init__(self): # {{{
    16                 self.coeff       = float('NaN')
    17                 self.meltingrate = float('NaN')
     16                self.stabilization = 0
     17                self.coeff         = float('NaN')
     18                self.meltingrate   = float('NaN')
    1819
    1920                #set defaults
     
    2324        def __repr__(self): # {{{
    2425                string='   Calving Levermann parameters:'
     26                string="%s\n%s"%(string,fielddisplay(self,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding'))
    2527                string="%s\n%s"%(string,fielddisplay(self,'coeff','proportionality coefficient in Levermann model'))
    2628                string="%s\n%s"%(string,fielddisplay(self,'meltingrate','melting rate at given location [m/a]'))
     
    2931                #}}}
    3032        def setdefaultparameters(self): # {{{
     33
     34                #stabilization = 2 by default
     35                self.stabilization = 2
    3136
    3237                #Proportionality coefficient in Levermann model
     
    3944                        return md
    4045
     46                md = checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
    4147                md = checkfield(md,'fieldname','calving.coeff','size',[md.mesh.numberofvertices],'>',0)
    4248                md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices],'>=',0)
     
    4652                yts=365.*24.*3600.
    4753                WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingLevermannEnum(),'format','Integer');
     54                WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',self.stabilization,'format','Integer');
    4855                WriteData(fid,'enum',CalvinglevermannCoeffEnum(),'data',self.coeff,'format','DoubleMat','mattype',1)
    4956                WriteData(fid,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts)
  • issm/trunk-jpl/src/m/classes/calvingpi.m

    r18953 r19024  
    66classdef calvingpi
    77        properties (SetAccess=public)
    8                  coeff       = NaN;
    9                  meltingrate = NaN;
     8                stabilization = 0;
     9                coeff         = NaN;
     10                meltingrate   = NaN;
    1011        end
    1112        methods
     
    2930                end % }}}
    3031                function obj = setdefaultparameters(obj) % {{{
     32
     33                        %stabilization = 2 by default
     34                        obj.stabilization = 2;
     35
    3136                        %Proportionality coefficient in Pi model
    3237                        obj.coeff=2e13;
     
    3540                        %Early return
    3641                        if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
     42
     43                        md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
    3744                        md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
    3845                        md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
     
    4047                function disp(obj) % {{{
    4148                        disp(sprintf('   Calving Pi parameters:'));
     49                        fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
    4250                        fielddisplay(obj,'coeff','proportionality coefficient in Pi model');
    4351                        fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
     
    4755                        yts=365.0*24.0*3600.0;
    4856                        WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingPiEnum(),'format','Integer');
     57                        WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
    4958                        WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
    5059                        WriteData(fid,'object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
  • issm/trunk-jpl/src/wrappers/M1qn3/M1qn3.cpp

    r19022 r19024  
    55#include "./M1qn3.h"
    66
    7 #ifndef _HAVE_M1QN3_
     7#ifdef _HAVE_M1QN3_
    88/*m1qn3 prototypes {{{*/
    99extern "C" void *ctonbe_; // DIS mode : Conversion
     
    3838WRAPPER(M1qn3){
    3939
    40 #ifndef _HAVE_M1QN3_
     40#ifdef _HAVE_M1QN3_
    4141        /*input: */
    4242        double* Xs=NULL;
     
    161161
    162162
    163 #ifndef _HAVE_M1QN3_
     163#ifdef _HAVE_M1QN3_
    164164void fakesimul(long* indic,long* n,double* X,double* pf,double* G,long izs[1],float rzs[1],void* dzs){
    165165
Note: See TracChangeset for help on using the changeset viewer.