source: issm/trunk-jpl/src/m/classes/giamme.m@ 25082

Last change on this file since 25082 was 25082, checked in by Eric.Larour, 5 years ago

CHG: rates should be in mm/yr.

File size: 2.8 KB
Line 
1%GIAMME class definition
2%
3% Usage:
4% gia=giamme(); %gia class based on a multi-model
5% ensemble (ex: Caron et al 2017 statistics)
6
7classdef giamme
8 properties (SetAccess=public)
9
10 modelid; %index into the multi-model ensemble
11 Ngia; %geoid ensemble
12 Ugia; %uplift ensemble
13
14 end
15 methods
16 function self = extrude(self,md) % {{{
17 for i=1:length(self.Ngia),
18 self.Ngia{i}=project3d(md,'vector',self.Ngia{i},'type','node','layer',1);
19 self.Ugia{i}=project3d(md,'vector',self.Ugia{i},'type','node','layer',1);
20 end
21 end % }}}
22 function self = giamme(varargin) % {{{
23 switch nargin
24 case 0
25 self=setdefaultparameters(self);
26 case 1
27 self=structtoobj(gia(),varargin{1});
28 otherwise
29 error('constructor not supported');
30 end
31 end % }}}
32 function self = setdefaultparameters(self) % {{{
33
34 self.modelid=0;
35 self.Ngia=[];
36 self.Ugia=[];
37
38 end % }}}
39 function md = checkconsistency(self,md,solution,analyses) % {{{
40
41 %Early return
42 if ~ismember('SealevelriseAnalysis',analyses), return; end
43 if (strcmp(solution,'TransientSolution') & md.transient.isslr == 0), return; end
44 md = checkfield(md,'field',self.Ngia,'NaN',1,'Inf',1);
45 md = checkfield(md,'field',self.Ugia,'NaN',1,'Inf',1);
46 md = checkfield(md,'field',self.modelid,'NaN',1,'Inf',1,'>=',0,'<=',length(self.Ngia));
47 end % }}}
48 function disp(self) % {{{
49
50 disp(sprintf(' gia mme parameters:'));
51 fielddisplay(self,'modelid','index into the multi-model ensemble, determines which field will be used.');
52 fielddisplay(self,'Ngia','geoid (mm/yr).');
53 fielddisplay(self,'Ugia','uplift (mm/yr).');
54 end % }}}
55 function marshall(self,prefix,md,fid) % {{{
56 WriteData(fid,prefix,'name','md.gia.model','data',3,'format','Integer');
57 if size(self.Ngia,2)==0,
58 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ngia');
59 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ugia');
60 WriteData(fid,prefix,'data',1,'name','modelid','format','Double');
61 WriteData(fid,prefix,'name','md.gia.nummodels','data',1,'format','Integer');
62 else
63 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat','scale',1/1000/md.constants.yts);
64 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat','scale',1/1000/md.constants.yts);
65 WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
66 WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer');
67 end
68 end % }}}
69 function savemodeljs(self,fid,modelname) % {{{
70
71 writejsdouble(fid,[modelname '.gia.modelid'],self.modelid);
72 writejscellarray(fid,[modelname '.gia.Ngia'],self.Ngia);
73 writejscellarray(fid,[modelname '.gia.Ugia'],self.Ugia);
74
75 end % }}}
76 end
77end
Note: See TracBrowser for help on using the repository browser.