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

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

CHG: changing sea level rise to sea level change. Mostly cosmetic.

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