source: issm/trunk-jpl/src/m/classes/calvingdev.m@ 19034

Last change on this file since 19034 was 19034, checked in by Mathieu Morlighem, 10 years ago

NEW: adding new calving law

File size: 2.1 KB
Line 
1%CALVINGDEV class definition
2%
3% Usage:
4% calvingdev=calvingdev();
5
6classdef calvingdev
7 properties (SetAccess=public)
8 stabilization = 0;
9 coeff = NaN;
10 meltingrate = NaN;
11 end
12 methods
13 function obj = calvingdev(varargin) % {{{
14 switch nargin
15 case 0
16 obj=setdefaultparameters(obj);
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 obj.(fieldname) = inputstruct.(fieldname);
25 end
26 end
27 otherwise
28 error('constructor not supported');
29 end
30 end % }}}
31 function obj = setdefaultparameters(obj) % {{{
32
33 %stabilization = 2 by default
34 obj.stabilization = 2;
35
36 %Proportionality coefficient in Pi model
37 obj.coeff=2e13;
38 end % }}}
39 function md = checkconsistency(obj,md,solution,analyses) % {{{
40 %Early return
41 if (solution~=TransientSolutionEnum() | md.transient.iscalving==0), return; end
42
43 md = checkfield(md,'fieldname','calving.stabilization','values',[0 1 2]);
44 md = checkfield(md,'fieldname','calving.coeff','>',0,'size',[md.mesh.numberofvertices 1]);
45 md = checkfield(md,'fieldname','calving.meltingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);
46 end % }}}
47 function disp(obj) % {{{
48 disp(sprintf(' Calving Pi parameters:'));
49 fielddisplay(obj,'stabilization','0: no, 1: artificial_diffusivity, 2: streamline upwinding');
50 fielddisplay(obj,'coeff','proportionality coefficient in Pi model');
51 fielddisplay(obj,'meltingrate','melting rate at given location [m/a]');
52
53 end % }}}
54 function marshall(obj,md,fid) % {{{
55 yts=365.0*24.0*3600.0;
56 WriteData(fid,'enum',CalvingLawEnum(),'data',CalvingDevEnum(),'format','Integer');
57 WriteData(fid,'enum',LevelsetStabilizationEnum(),'data',obj.stabilization,'format','Integer');
58 WriteData(fid,'enum',CalvingpiCoeffEnum(),'data',obj.coeff,'format','DoubleMat','mattype',1);
59 WriteData(fid,'class','calving','object',obj,'fieldname','meltingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);
60 end % }}}
61 end
62end
Note: See TracBrowser for help on using the repository browser.