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

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

CHG: moved GiaIvinsAnalysis to GiaAnalysis.
Made giamme the default gia offline class.
Made giacore handle giaivins, giamme and giacaron classes.
Added gia core to transient core.
Remove gia logic from sea level rise core, back into gia core.

File size: 2.6 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 (m/yr).');
53 fielddisplay(self,'Ugia','uplift (m/yr).');
54 end % }}}
55 function marshall(self,prefix,md,fid) % {{{
56
57 WriteData(fid,prefix,'name','md.gia.model','data',3,'format','Integer');
58 WriteData(fid,prefix,'name','md.gia.nummodels','data',size(self.Ngia,2),'format','Integer');
59 WriteData(fid,prefix,'object',self,'fieldname','modelid','format','Double');
60 if size(self.Ngia,2)==0,
61 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ngia');
62 WriteData(fid,prefix,'data',zeros(md.mesh.numberofvertices,1),'format','DoubleMat','mattype',1,'name','md.gia.Ugia');
63 else
64 WriteData(fid,prefix,'object',self,'fieldname','Ngia','format','DoubleMat');
65 WriteData(fid,prefix,'object',self,'fieldname','Ugia','format','DoubleMat');
66 end
67 end % }}}
68 function savemodeljs(self,fid,modelname) % {{{
69
70 writejsdouble(fid,[modelname '.gia.modelid'],self.modelid);
71 writejscellarray(fid,[modelname '.gia.Ngia'],self.Ngia);
72 writejscellarray(fid,[modelname '.gia.Ugia'],self.Ugia);
73
74 end % }}}
75 end
76end
Note: See TracBrowser for help on using the repository browser.