source: issm/trunk-jpl/test/SandBox/dak2002.m@ 25217

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

CHG: dak/slr related tests.

File size: 5.9 KB
Line 
1%Test Name: EarthSlr
2
3%mesh earth:
4md=model;
5md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',700.); %500 km resolution mesh
6md.cluster.np=2
7
8%parameterize slr solution:
9%slr loading: {{{
10nt=100;
11md.slr.deltathickness=zeros(md.mesh.numberofelements+1,nt);
12md.slr.deltathickness(end,:)=2000.5:1:2099.5;
13md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
14md.dsl.global_average_thermosteric_sea_level_change=[0;0];
15md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
16md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
17%antarctica
18late=sum(md.mesh.lat(md.mesh.elements),2)/3;
19longe=sum(md.mesh.long(md.mesh.elements),2)/3;
20posa=find(late <-80);
21md.slr.deltathickness(posa,:)=-100;
22%greenland
23posg=find(late > 70 & late < 80 & longe>-60 & longe<-30);
24md.slr.deltathickness(posg,:)=-100;
25
26
27%elastic loading from love numbers:
28nlov=101;
29md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
30md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
31md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
32
33%}}}
34%mask: {{{
35mask=gmtmask(md.mesh.lat,md.mesh.long);
36icemask=ones(md.mesh.numberofvertices,1);
37pos=find(mask==0); icemask(pos)=-1;
38pos=find(sum(mask(md.mesh.elements),2)<3); icemask(md.mesh.elements(pos,:))=-1;
39md.mask.ice_levelset=icemask;
40md.mask.ocean_levelset=-icemask;
41
42%make sure that the elements that have loads are fully grounded:
43pos=find(sum(md.slr.deltathickness(1:end-1,:),2));
44md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
45
46%make sure wherever there is an ice load, that the mask is set to ice:
47md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
48% }}}
49
50md.slr.ocean_area_scaling=0;
51
52%Geometry for the bed, arbitrary:
53md.geometry.bed=-ones(md.mesh.numberofvertices,1);
54
55%Materials:
56md.materials=materials('hydro');
57
58%New stuff
59md.slr.spcthickness = NaN(md.mesh.numberofvertices,1);
60md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
61
62%Miscellaneous
63md.miscellaneous.name='test2002';
64
65%Solution parameters
66md.slr.reltol=NaN;
67md.slr.abstol=1e-3;
68md.slr.geodetic=1;
69
70% max number of iteration reverted back to 10 (i.e., the original default value)
71md.slr.maxiter=10;
72
73%initialize GIA:
74md.gia=giamme();
75md.gia.Ngia=ones(md.mesh.numberofvertices,10);
76md.gia.Ugia=ones(md.mesh.numberofvertices,10);
77for i=1:10,
78 md.gia.Ngia(i)=i;
79 md.gia.Ugia(i)=i;
80end
81md.gia.modelid=1;
82
83%Uncertainty Quantification%{{{
84 md.qmu.variables=struct();;
85
86 ns=size(md.gia.Ngia,2);
87 ids=(1:(ns+1))';
88 p=rand(ns,1);
89 probs=[p(1:ns); 0]; probs=probs/sum(probs);
90 md.qmu.variables.giamodelid=histogram_bin_uncertain('GiaModelid',ns+1,ids,probs);
91
92 %partitioning
93 npart=2;
94 partition=-ones(md.mesh.numberofelements,1);
95 partition(posg)=0;
96 partition(posa)=1;
97
98 %variables:
99 md.qmu.variables.deltathickness=normal_uncertain('descriptor','scaled_SealevelriseDeltathickness',...
100 'mean',ones(2,nt),...
101 'stddev',[.1*ones(1,nt);.2*ones(1,nt)],...
102 'partition',partition,'nsteps',nt);
103
104 md.qmu.correlation_matrix=zeros(npart*nt,npart*nt);
105 for i=1:npart,
106 for j=1:nt,
107 indi=(i-1)*nt+j;
108 for k=1:npart,
109 for l=1:nt,
110 indj=(k-1)*nt+l;
111 if i~=k,
112 md.qmu.correlation_matrix(indi,indj)=0;
113 else
114 %same partition:
115 if j==l,
116 md.qmu.correlation_matrix(indi,indj)=1;
117 else
118 md.qmu.correlation_matrix(indi,indj)=.2;
119 end
120 end
121 end
122 end
123 end
124 end
125 md.qmu.correlation_matrix=[];
126
127
128
129 %responses
130 md.qmu.responses.sealevel1=response_function('descriptor','Outputdefinition1');
131 md.qmu.responses.sealevel2=response_function('descriptor','Outputdefinition2');
132 md.qmu.responses.sealevel3=response_function('descriptor','Outputdefinition3');
133 md.qmu.responses.sealevel4=response_function('descriptor','Outputdefinition4');
134 md.qmu.responses.sealevel5=response_function('descriptor','Outputdefinition5');
135 md.qmu.responses.sealevel6=response_function('descriptor','Outputdefinition6');
136 md.qmu.responses.sealevel7=response_function('descriptor','Outputdefinition7');
137 md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition8');
138 md.qmu.responses.sealevel8=response_function('descriptor','Outputdefinition9');
139 md.qmu.responses.sealevel10=response_function('descriptor','Outputdefinition10');
140
141 %output definitions:
142 for i=1:10,
143 if i==1,
144 md.outputdefinition.definitions={nodalvalue('name','SNode','definitionstring','Outputdefinition1', ...
145 'model_string','Sealevel','node',i)};
146 else
147 md.outputdefinition.definitions{end+1}=nodalvalue('name','SNode','definitionstring',['Outputdefinition' num2str(i)], ...
148 'model_string','Sealevel','node',i);
149 end
150 end
151 %algorithm:
152 md.qmu.method =dakota_method('nond_samp');
153 md.qmu.method(end)=dmeth_params_set(md.qmu.method(end),...
154 'seed',1234,...
155 'samples',3,...
156 'sample_type','lhs');
157
158 %parameters
159 md.qmu.params.direct=true;
160 md.qmu.params.interval_type='forward';
161 md.qmu.params.analysis_driver='matlab';
162 md.qmu.params.evaluation_scheduling='master';
163 md.qmu.params.processors_per_evaluation=1;
164 md.qmu.params.tabular_graphics_data=true;
165 %}}}
166md.qmu.output=1;
167
168%transient:
169md.timestepping.start_time=2000;
170md.timestepping.interp_forcings=0;
171md.timestepping.final_time=2002;
172md.transient.issmb=0;
173md.transient.ismasstransport=0;
174md.transient.isstressbalance=0;
175md.transient.isthermal=0;
176md.transient.isslr=1;
177md.transient.isgia=1;
178md.slr.requested_outputs= {'default',...
179 'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
180 'SealevelNEsaRate', 'SealevelUEsaRate', 'NGiaRate', 'UGiaRate',...
181 'SealevelEustaticMask','SealevelEustaticOceanMask'};
182
183%hack:
184md.geometry.thickness=ones(md.mesh.numberofvertices,1);
185md.geometry.base=-ones(md.mesh.numberofvertices,1);
186md.geometry.surface=zeros(md.mesh.numberofvertices,1);
187
188%eustatic + rigid + elastic + rotation run:
189md.verbose=verbose('11111111111');
190%md.verbose.qmu=1;
191md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
192md.qmu.isdakota=1;
193md=solve(md,'slr');
194
Note: See TracBrowser for help on using the repository browser.