1 | %Test Name: Earth_Antarctica_GIA
|
---|
2 |
|
---|
3 | testagainst2002=1;
|
---|
4 |
|
---|
5 | %Data paths: {{{
|
---|
6 | modeldatapath='/Users/larour/ModelData';
|
---|
7 | shppath='/Users/larour/issm-jpl/proj-group/qgis/NightlyRun';
|
---|
8 | gshhsshapefile=[modeldatapath '/Gshhg/Shp/GSHHS_shp/c/GSHHS_c_L1-NightlyRun.shp'];
|
---|
9 | %}}}
|
---|
10 |
|
---|
11 | %create sealevel model to hold our information:
|
---|
12 | sl=sealevelmodel();
|
---|
13 |
|
---|
14 | %Create basins using boundaries from shapefile:
|
---|
15 | %some projections we'll rely on: %{{{
|
---|
16 | proj4326=epsg2proj(4326);
|
---|
17 | proj3031=epsg2proj(3031);
|
---|
18 | %}}}
|
---|
19 | %HemisphereWest: {{{
|
---|
20 | sl.addbasin(basin('continent','hemispherewest','name','hemispherewest','proj',laea(0,-90),'boundaries',{... %Peru projection 3587
|
---|
21 | boundary('shppath',shppath,'shpfilename','HemisphereSplit','proj',proj4326,'orientation','reverse'),...
|
---|
22 | boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031),...
|
---|
23 | boundary('shppath',shppath,'shpfilename','RonneBrunt','proj',proj3031,'orientation','reverse'),...
|
---|
24 | boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031),...
|
---|
25 | boundary('shppath',shppath,'shpfilename','RonneFront','proj',proj3031,'orientation','reverse'),...
|
---|
26 | boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031),...
|
---|
27 | boundary('shppath',shppath,'shpfilename','WestAntarctica2','proj',proj3031,'orientation','reverse'),...
|
---|
28 | boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031)...
|
---|
29 | }));
|
---|
30 | %}}}
|
---|
31 | %HemisphereEast: {{{
|
---|
32 | sl.addbasin(basin('continent','hemisphereeast','name','hemisphereeast','proj',laea(0,+90),'boundaries',{... %Australian projection lat,long
|
---|
33 | boundary('shppath',shppath,'shpfilename','HemisphereSplit','proj',proj4326),...
|
---|
34 | boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
|
---|
35 | boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031,'orientation','reverse'),...
|
---|
36 | boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031)...
|
---|
37 | }));
|
---|
38 | %}}}
|
---|
39 | %Antarctica excluding Ronne: {{{
|
---|
40 | sl.addbasin(basin('continent','antarctica','name','antarctica-grounded','proj',proj3031,'boundaries',{...
|
---|
41 | boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031),...
|
---|
42 | boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031),...
|
---|
43 | boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
|
---|
44 | boundary('shppath',shppath,'shpfilename','WestAntarctica2','proj',proj3031)...
|
---|
45 | boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031)...
|
---|
46 | boundary('shppath',shppath,'shpfilename','RonneIceShelf','proj',proj3031)...
|
---|
47 | boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031)...
|
---|
48 | boundary('shppath',shppath,'shpfilename','RonneBrunt','proj',proj3031)...
|
---|
49 | }));
|
---|
50 | %}}}
|
---|
51 | %Ronne: {{{
|
---|
52 | sl.addbasin(basin('continent','antarctica','name','ronne','proj',proj3031,'boundaries',{...
|
---|
53 | boundary('shppath',shppath,'shpfilename','RonneWestSummit','proj',proj3031),...
|
---|
54 | boundary('shppath',shppath,'shpfilename','RonneIceShelf','proj',proj3031),...
|
---|
55 | boundary('shppath',shppath,'shpfilename','RonneEastSummit','proj',proj3031),...
|
---|
56 | boundary('shppath',shppath,'shpfilename','RonneFront','proj',proj3031,'orientation','reverse')...
|
---|
57 | }));
|
---|
58 | %}}}
|
---|
59 |
|
---|
60 | %Meshing
|
---|
61 | %Go through basins and mesh: %{{{
|
---|
62 | %meshing parameters: {{{
|
---|
63 | hmin=2000; hmax=10000; hmin=hmin*1000; hmax=hmax*1000;
|
---|
64 | tolerance=100; %tolerance of 100m on Earth position when mergin 3d meshes
|
---|
65 | threshold=5;
|
---|
66 | defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinment',1};
|
---|
67 | alreadyloaded=0;
|
---|
68 | %}}}
|
---|
69 | for i=sl.basinindx('basin','all'),
|
---|
70 |
|
---|
71 | bas=sl.basins{i};
|
---|
72 | disp(sprintf('Meshing basin %s\n',bas.name));
|
---|
73 |
|
---|
74 | %recover basin domain:
|
---|
75 | domain=bas.contour();
|
---|
76 |
|
---|
77 | %recover coastline inside basin, using GSHHS_c_L1. It's a lat,long file, hence epsg 4326
|
---|
78 | coastline=bas.shapefilecrop('shapefile',gshhsshapefile,'epsgshapefile',4326,'threshold',threshold);
|
---|
79 |
|
---|
80 | %mesh:
|
---|
81 | md=bamg(model,'domain',domain,'subdomains',coastline,'hmin',hmin,'hmax',hmax,defaultoptions{:});
|
---|
82 | plotmodel(md,'data','mesh');pause(1);
|
---|
83 |
|
---|
84 | %miscellaneous:
|
---|
85 | md.mesh.proj=bas.proj; md.miscellaneous.name=bas.name;
|
---|
86 |
|
---|
87 | %recover mask where we have land:
|
---|
88 | md.private.bamg.landmask=double(md.private.bamg.mesh.Triangles(:,4)>=1);
|
---|
89 |
|
---|
90 | %vertex connectivity:
|
---|
91 | md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
|
---|
92 |
|
---|
93 | %add model to sl icecaps:
|
---|
94 | sl.addicecap(md);
|
---|
95 | end
|
---|
96 | %}}}
|
---|
97 |
|
---|
98 | %Parameterization:
|
---|
99 | %Parameterize ice sheets : {{{
|
---|
100 |
|
---|
101 | for ind=sl.basinindx('continent',{'antarctica'}),
|
---|
102 | disp(sprintf('Parameterizing basin %s\n', sl.icecaps{ind}.miscellaneous.name));
|
---|
103 |
|
---|
104 | md=sl.icecaps{ind}; bas=sl.basins{ind};
|
---|
105 | %masks : %{{{
|
---|
106 | %new type of mask:
|
---|
107 | md.mask=maskpsl;
|
---|
108 |
|
---|
109 | %land and ocean:
|
---|
110 | md.mask.land_levelset=ones(md.mesh.numberofvertices,1);
|
---|
111 | md.mask.ocean_levelset=zeros(md.mesh.numberofvertices,1);
|
---|
112 |
|
---|
113 | %ice levelset from domain outlines:
|
---|
114 | md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
|
---|
115 | pos=find(md.mesh.vertexonboundary); md.mask.ice_levelset(pos)=0;
|
---|
116 |
|
---|
117 | %ice front:
|
---|
118 | pos=find(md.mask.ice_levelset==0); md.mask.ocean_levelset(pos)=-1; md.mask.land_levelset(pos)=1;
|
---|
119 |
|
---|
120 | %now, glaciers:
|
---|
121 | md.mask.glacier_levelset=zeros(md.mesh.numberofvertices,1);
|
---|
122 | %}}}
|
---|
123 | %initial grounding line position: {{{
|
---|
124 | if bas.isnameany('antarctica-grounded'),
|
---|
125 |
|
---|
126 | md.mask.groundedice_levelset=ones(md.mesh.numberofvertices,1);
|
---|
127 | end
|
---|
128 | if bas.isnameany('ronne'),
|
---|
129 |
|
---|
130 | md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
|
---|
131 |
|
---|
132 | %correction to land and ocean levelset: ice shelf is not on land!
|
---|
133 | pos=find(md.mask.ice_levelset<=0 & md.mask.groundedice_levelset<=0);
|
---|
134 | md.mask.ocean_levelset(pos)=1;
|
---|
135 | md.mask.land_levelset(pos)=-1;
|
---|
136 | end
|
---|
137 | %}}}
|
---|
138 | %latlong: % {{{
|
---|
139 | [md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
|
---|
140 | %}}}
|
---|
141 | %geometry: {{{
|
---|
142 | if bas.iscontinentany('antarctica'),
|
---|
143 | di=md.materials.rho_ice/md.materials.rho_water;
|
---|
144 |
|
---|
145 | disp(' reading bedrock');
|
---|
146 | md.geometry.bed=interpBedmap2(md.mesh.x,md.mesh.y,'bed');
|
---|
147 | end % }}}
|
---|
148 | %Slr: {{{
|
---|
149 | if bas.iscontinentany('antarctica'),
|
---|
150 | if testagainst2002,
|
---|
151 | md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
|
---|
152 | %antarctica
|
---|
153 | late=sum(md.mesh.lat(md.mesh.elements),2)/3;
|
---|
154 | longe=sum(md.mesh.long(md.mesh.elements),2)/3;
|
---|
155 | pos=find(late <-80);
|
---|
156 | md.slr.deltathickness(pos)=-100;
|
---|
157 | else
|
---|
158 | delH=textread([modeldatapath '/AdhikariSciAdvTrends/AIS_delH_trend.txt']);
|
---|
159 | longAIS=delH(:,1);
|
---|
160 | latAIS=delH(:,2);
|
---|
161 | delHAIS=delH(:,3);
|
---|
162 | index=delaunay(latAIS,longAIS);
|
---|
163 |
|
---|
164 | lat=md.mesh.lat;
|
---|
165 | long=md.mesh.long+360;
|
---|
166 | pos=find(long>360);long(pos)=long(pos)-360;
|
---|
167 |
|
---|
168 | delHAIS=InterpFromMesh2d(index,longAIS,latAIS,delHAIS,long,lat);
|
---|
169 | northpole=find_point(md.mesh.long,md.mesh.lat,0,90); delHAIS(northpole)=0;
|
---|
170 |
|
---|
171 | md.slr.deltathickness=delHAIS(md.mesh.elements)*[1;1;1]/3/100;
|
---|
172 | end
|
---|
173 |
|
---|
174 | md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
|
---|
175 | md.slr.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
|
---|
176 | md.slr.Ngia=zeros(md.mesh.numberofvertices,1);
|
---|
177 | md.slr.Ugia=zeros(md.mesh.numberofvertices,1);
|
---|
178 |
|
---|
179 | md.dsl.global_average_thermosteric_sea_level_change=[0;0];
|
---|
180 | md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
|
---|
181 | md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
|
---|
182 | md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
|
---|
183 |
|
---|
184 | end %}}}
|
---|
185 | % material properties: {{{
|
---|
186 | md.materials=materials('hydro');
|
---|
187 | %}}}
|
---|
188 | %diverse: {{{
|
---|
189 | md.miscellaneous.name=bas.name;
|
---|
190 | % }}}
|
---|
191 |
|
---|
192 | sl.icecaps{ind}=md;
|
---|
193 | end
|
---|
194 | %}}}
|
---|
195 | % ParameterizeContinents {{{
|
---|
196 |
|
---|
197 | sl.basinindx('continent',{'hemisphereeast','hemispherewest'})
|
---|
198 |
|
---|
199 | for ind=sl.basinindx('continent',{'hemisphereeast','hemispherewest'}),
|
---|
200 | disp(sprintf('Masks for basin %s\n', sl.icecaps{ind}.miscellaneous.name));
|
---|
201 | md=sl.icecaps{ind}; bas=sl.basins{ind};
|
---|
202 |
|
---|
203 | %recover lat,long:
|
---|
204 | [md.mesh.long,md.mesh.lat]=gdaltransform(md.mesh.x,md.mesh.y,md.mesh.proj,'EPSG:4326');
|
---|
205 |
|
---|
206 | %mask: %{{{
|
---|
207 | %new type of mask:
|
---|
208 | md.mask=maskpsl;
|
---|
209 | %Figure out mask from initial mesh: deal with land and ocean masks (land include grounded ice). %{{{
|
---|
210 | %first, transform land element mask into vertex driven one.
|
---|
211 | land=md.private.bamg.landmask;
|
---|
212 | land_mask=-ones(md.mesh.numberofvertices,1);
|
---|
213 |
|
---|
214 | landels=find(land);
|
---|
215 | land_mask(md.mesh.elements(landels,:))=1;
|
---|
216 |
|
---|
217 | %gothrough edges of each land element
|
---|
218 | connectedels=md.mesh.elementconnectivity(landels,:);
|
---|
219 | connectedisonocean=~land(connectedels);
|
---|
220 | sumconnectedisonocean=sum(connectedisonocean,2);
|
---|
221 |
|
---|
222 | %figure out which land elements are connected to the ocean:
|
---|
223 | landelsconocean=landels(find(sumconnectedisonocean));
|
---|
224 |
|
---|
225 | ind1=[md.mesh.elements(landelsconocean,1); md.mesh.elements(landelsconocean,2); md.mesh.elements(landelsconocean,3)];
|
---|
226 | ind2=[md.mesh.elements(landelsconocean,2); md.mesh.elements(landelsconocean,3); md.mesh.elements(landelsconocean,1)];
|
---|
227 |
|
---|
228 | h=waitbar(0,'Starting mask processing');
|
---|
229 |
|
---|
230 | %edge ind1 and ind2:
|
---|
231 | for i=1:length(ind1),
|
---|
232 | if ~mod(i,100),
|
---|
233 | waitbar(i/length(ind1),h,sprintf('%.2i%% along...',i/length(ind1)*100));
|
---|
234 | end
|
---|
235 |
|
---|
236 | els1=md.mesh.vertexconnectivity(ind1(i),1: md.mesh.vertexconnectivity(ind1(i),end));
|
---|
237 | els2=md.mesh.vertexconnectivity(ind2(i),1: md.mesh.vertexconnectivity(ind2(i),end));
|
---|
238 | els=intersect(els1,els2);
|
---|
239 |
|
---|
240 | if length(find(land(els)))==1,
|
---|
241 | %this edge is on the beach, 0 the edge:
|
---|
242 | land_mask(ind1(i))=0;
|
---|
243 | land_mask(ind2(i))=0;
|
---|
244 | end
|
---|
245 | end
|
---|
246 | md.mask.land_levelset=land_mask;
|
---|
247 | close(h);
|
---|
248 | %}}}
|
---|
249 | %work on ocean, glaciers and ice: {{{
|
---|
250 | %ocean: opposite of land:
|
---|
251 | md.mask.ocean_levelset=-md.mask.land_levelset;
|
---|
252 |
|
---|
253 | %initliaze:
|
---|
254 | md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
|
---|
255 |
|
---|
256 | %grounded ice:
|
---|
257 | md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
|
---|
258 |
|
---|
259 | md.mask.glacier_levelset=zeros(md.mesh.numberofvertices,1);
|
---|
260 |
|
---|
261 | % }}}
|
---|
262 | %}}}
|
---|
263 | %slr loading/calibration: {{{
|
---|
264 |
|
---|
265 | if testagainst2002,
|
---|
266 | md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
|
---|
267 | %greenland
|
---|
268 | late=sum(md.mesh.lat(md.mesh.elements),2)/3;
|
---|
269 | longe=sum(md.mesh.long(md.mesh.elements),2)/3;
|
---|
270 | pos=find(late > 70 & late < 80 & longe>-60 & longe<-30);
|
---|
271 | md.slr.deltathickness(pos)=-100;
|
---|
272 |
|
---|
273 | %correct mask:
|
---|
274 | md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
|
---|
275 | else
|
---|
276 | md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
|
---|
277 | end
|
---|
278 |
|
---|
279 | md.slr.sealevel=zeros(md.mesh.numberofvertices,1);
|
---|
280 | md.slr.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
|
---|
281 | md.slr.Ngia=zeros(md.mesh.numberofvertices,1);
|
---|
282 | md.slr.Ugia=zeros(md.mesh.numberofvertices,1);
|
---|
283 |
|
---|
284 | md.dsl.global_average_thermosteric_sea_level_change=[0;0];
|
---|
285 | %md.slr.steric_rate=(1.1+.38)*ones(md.mesh.numberofvertices,1); %steric + water storage.
|
---|
286 | md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
|
---|
287 | md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
|
---|
288 | md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
|
---|
289 |
|
---|
290 | %love numbers:
|
---|
291 | md.slr.ocean_area_scaling=1;
|
---|
292 | %}}}
|
---|
293 | %geometry: {{{
|
---|
294 | di=md.materials.rho_ice/md.materials.rho_water;
|
---|
295 | md.geometry.bed=-ones(md.mesh.numberofvertices,1);
|
---|
296 | % }}}
|
---|
297 | %materials: {{{
|
---|
298 | md.materials=materials('hydro');
|
---|
299 | % }}}
|
---|
300 | sl.icecaps{ind}=md;
|
---|
301 | end
|
---|
302 | % }}}
|
---|
303 |
|
---|
304 | %%Assemble Earth in 3D {{{
|
---|
305 |
|
---|
306 | %parameters:
|
---|
307 | plotting=1;
|
---|
308 | tolerance=100;
|
---|
309 | loneedgesdetect=0;
|
---|
310 |
|
---|
311 | %create earth model by concatenating all the icecaps in 3d:
|
---|
312 | sl.caticecaps('tolerance',tolerance,'loneedgesdetect',loneedgesdetect);
|
---|
313 |
|
---|
314 | %figure out how each icecap's mesh connects to the larger earth mesh:
|
---|
315 | sl.intersections('force',1);
|
---|
316 |
|
---|
317 | %figure out connectivity:
|
---|
318 | disp('Mesh connectivity');
|
---|
319 | sl.earth.mesh.vertexconnectivity=NodeConnectivity(sl.earth.mesh.elements,sl.earth.mesh.numberofvertices);
|
---|
320 |
|
---|
321 | %areas:
|
---|
322 | disp('Mesh nodal areas');
|
---|
323 | sl.earth.mesh.area=averaging(sl.earth,GetAreas3DTria(sl.earth.mesh.elements,sl.earth.mesh.x,sl.earth.mesh.y,sl.earth.mesh.z),4);
|
---|
324 |
|
---|
325 | %transfer a list of fields from each icecap and continent back to Earth:
|
---|
326 | sl.transfer('mask.groundedice_levelset');
|
---|
327 | sl.transfer('mask.ice_levelset');
|
---|
328 | sl.transfer('mask.ocean_levelset');
|
---|
329 | sl.transfer('mask.land_levelset');
|
---|
330 | sl.transfer('mask.glacier_levelset');
|
---|
331 | sl.transfer('geometry.bed');
|
---|
332 | sl.transfer('mesh.lat');
|
---|
333 | sl.transfer('mesh.long');
|
---|
334 | sl.transfer('slr.deltathickness');
|
---|
335 | sl.transfer('slr.spcthickness');
|
---|
336 | sl.transfer('slr.Ngia');
|
---|
337 | sl.transfer('slr.Ugia');
|
---|
338 | sl.transfer('slr.hydro_rate');
|
---|
339 | sl.transfer('slr.sealevel');
|
---|
340 | sl.transfer('dsl.sea_surface_height_change_above_geoid');
|
---|
341 | sl.transfer('dsl.sea_water_pressure_change_at_sea_floor');
|
---|
342 |
|
---|
343 | %radius:
|
---|
344 | sl.earth.mesh.r=sqrt(sl.earth.mesh.x.^2+sl.earth.mesh.y.^2+sl.earth.mesh.z.^2);
|
---|
345 |
|
---|
346 | %check on the mesh transitions: {{{
|
---|
347 | plotting=1;
|
---|
348 | if plotting,
|
---|
349 | flags=ones(sl.earth.mesh.numberofelements,1);
|
---|
350 | for i=1:length(sl.eltransitions),
|
---|
351 | flags(sl.eltransitions{i})=i;
|
---|
352 | end
|
---|
353 | plotmodel(sl.earth,'data',flags,'shading','faceted','coastline','on','coast_color','g')
|
---|
354 | end
|
---|
355 | %}}}}
|
---|
356 |
|
---|
357 | % }}}
|
---|
358 |
|
---|
359 | %Solve Sea-level equation on Earth only: {{{
|
---|
360 | md=sl.earth; %we don't do computations on ice sheets or land.
|
---|
361 |
|
---|
362 | %Materials:
|
---|
363 | md.materials=materials('hydro');
|
---|
364 |
|
---|
365 | %elastic loading from love numbers:
|
---|
366 | nlov=1001;
|
---|
367 | md.slr.love_h = love_numbers('h'); md.slr.love_h(nlov+1:end)=[];
|
---|
368 | md.slr.love_k = love_numbers('k'); md.slr.love_k(nlov+1:end)=[];
|
---|
369 | md.slr.love_l = love_numbers('l'); md.slr.love_l(nlov+1:end)=[];
|
---|
370 | md.slr.ocean_area_scaling = 0;
|
---|
371 |
|
---|
372 | %Miscellaneous
|
---|
373 | md.miscellaneous.name='test2004';
|
---|
374 |
|
---|
375 | %New stuff
|
---|
376 | md.dsl.global_average_thermosteric_sea_level_change=[0;0];
|
---|
377 |
|
---|
378 | %Solution parameters
|
---|
379 | md.slr.reltol=NaN;
|
---|
380 | md.slr.abstol=1e-3;
|
---|
381 | md.slr.geodetic=1;
|
---|
382 |
|
---|
383 | % max number of iteration reverted back to 10 (i.e., the original default value)
|
---|
384 | md.slr.maxiter=10;
|
---|
385 |
|
---|
386 | %eustatic run:
|
---|
387 | md.slr.rigid=0; md.slr.elastic=0;md.slr.rotation=0;
|
---|
388 | md=solve(md,'Sealevelrise');
|
---|
389 | Seustatic=md.results.SealevelriseSolution.Sealevel;
|
---|
390 |
|
---|
391 | %eustatic + rigid run:
|
---|
392 | md.slr.rigid=1; md.slr.elastic=0;md.slr.rotation=0;
|
---|
393 | md=solve(md,'Sealevelrise');
|
---|
394 | Srigid=md.results.SealevelriseSolution.Sealevel;
|
---|
395 |
|
---|
396 | %eustatic + rigid + elastic run:
|
---|
397 | md.slr.rigid=1; md.slr.elastic=1;md.slr.rotation=0;
|
---|
398 | md=solve(md,'Sealevelrise');
|
---|
399 | Selastic=md.results.SealevelriseSolution.Sealevel;
|
---|
400 |
|
---|
401 | %eustatic + rigid + elastic + rotation run:
|
---|
402 | md.slr.rigid=1; md.slr.elastic=1; md.slr.rotation=1;
|
---|
403 | md=solve(md,'Sealevelrise');
|
---|
404 | Srotation=md.results.SealevelriseSolution.Sealevel;
|
---|
405 |
|
---|
406 | %}}}
|
---|