[25217] | 1 | %Test Name: EarthSlr
|
---|
| 2 |
|
---|
| 3 | %mesh earth:
|
---|
| 4 | md=model;
|
---|
| 5 | md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1000.); %500 km resolution mesh
|
---|
| 6 |
|
---|
| 7 | %parameterize slr solution:
|
---|
| 8 | %slr loading: {{{
|
---|
| 9 | md.solidearth.surfaceload.icethicknesschange=zeros(md.mesh.numberofelements,1);
|
---|
| 10 | md.solidearth.surfaceload.waterheightchange=zeros(md.mesh.numberofelements,1);
|
---|
| 11 | md.solidearth.sealevel=zeros(md.mesh.numberofvertices,1);
|
---|
| 12 | md.dsl.global_average_thermosteric_sea_level_change=[0;0];
|
---|
| 13 | md.dsl.sea_surface_height_change_above_geoid=zeros(md.mesh.numberofvertices+1,1);
|
---|
| 14 | md.dsl.sea_water_pressure_change_at_sea_floor=zeros(md.mesh.numberofvertices+1,1);
|
---|
| 15 | %US
|
---|
| 16 | late=sum(md.mesh.lat(md.mesh.elements),2)/3;
|
---|
| 17 | longe=sum(md.mesh.long(md.mesh.elements),2)/3;
|
---|
| 18 |
|
---|
| 19 | pos=find(late < (37+5) & late > (37-5) & longe>(-95-10) & longe<(-95+10));
|
---|
| 20 | md.solidearth.surfaceload.waterheightchange(pos)=-100;
|
---|
| 21 |
|
---|
| 22 | %elastic loading from love numbers:
|
---|
| 23 | md.solidearth.lovenumbers=lovenumbers('maxdeg',100);
|
---|
| 24 |
|
---|
| 25 | %}}}
|
---|
| 26 | %mask: {{{
|
---|
| 27 | mask=gmtmask(md.mesh.lat,md.mesh.long);
|
---|
| 28 | icemask=ones(md.mesh.numberofvertices,1);
|
---|
| 29 | pos=find(mask==0); icemask(pos)=-1;
|
---|
| 30 | pos=find(sum(mask(md.mesh.elements),2)<3); icemask(md.mesh.elements(pos,:))=-1;
|
---|
| 31 | md.mask.ice_levelset=icemask;
|
---|
| 32 | md.mask.ocean_levelset=-icemask;
|
---|
| 33 |
|
---|
| 34 | %make sure that the elements that have loads are fully grounded:
|
---|
| 35 | pos=find(md.solidearth.surfaceload.waterheightchange);
|
---|
| 36 | md.mask.ocean_levelset(md.mesh.elements(pos,:))=1;
|
---|
| 37 | md.mask.ice_levelset(md.mesh.elements(pos,:))=1;
|
---|
| 38 |
|
---|
| 39 | % }}}
|
---|
| 40 |
|
---|
| 41 | md.solidearth.settings.ocean_area_scaling=0;
|
---|
| 42 |
|
---|
| 43 | %Geometry for the bed, arbitrary:
|
---|
| 44 | md.geometry.bed=-ones(md.mesh.numberofvertices,1);
|
---|
| 45 |
|
---|
| 46 | %Materials:
|
---|
| 47 | md.materials=materials('hydro');
|
---|
| 48 |
|
---|
| 49 | %Hydro load:
|
---|
| 50 |
|
---|
| 51 |
|
---|
| 52 | %Miscellaneous
|
---|
| 53 | md.miscellaneous.name='test2002';
|
---|
| 54 |
|
---|
| 55 | %Solution parameters
|
---|
| 56 | md.solidearth.settings.reltol=NaN;
|
---|
| 57 | md.solidearth.settings.abstol=1e-3;
|
---|
| 58 | md.solidearth.settings.computesealevelchange=1;
|
---|
| 59 |
|
---|
| 60 | % max number of iteration reverted back to 10 (i.e., the original default value)
|
---|
| 61 | md.solidearth.settings.maxiter=10;
|
---|
| 62 |
|
---|
| 63 | %eustatic run:
|
---|
| 64 | md.solidearth.settings.rigid=0; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0;
|
---|
| 65 | md=solve(md,'Sealevelrise');
|
---|
| 66 | Seustatic=md.results.SealevelriseSolution.Sealevel;
|
---|
| 67 |
|
---|
| 68 | %eustatic + rigid run:
|
---|
| 69 | md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=0;md.solidearth.settings.rotation=0;
|
---|
| 70 | md=solve(md,'Sealevelrise');
|
---|
| 71 | Srigid=md.results.SealevelriseSolution.Sealevel;
|
---|
| 72 |
|
---|
| 73 | %eustatic + rigid + elastic run:
|
---|
| 74 | md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1;md.solidearth.settings.rotation=0;
|
---|
| 75 | md=solve(md,'Sealevelrise');
|
---|
| 76 | Selastic=md.results.SealevelriseSolution.Sealevel;
|
---|
| 77 |
|
---|
| 78 | %eustatic + rigid + elastic + rotation run:
|
---|
| 79 | md.solidearth.settings.rigid=1; md.solidearth.settings.elastic=1; md.solidearth.settings.rotation=1;
|
---|
| 80 | md=solve(md,'Sealevelrise');
|
---|
| 81 | Srotation=md.results.SealevelriseSolution.Sealevel;
|
---|
| 82 |
|
---|
| 83 | %Fields and tolerances to track changes
|
---|
| 84 | field_names ={'Eustatic','Rigid','Elastic','Rotation'};
|
---|
| 85 | field_tolerances={1e-13,1e-13,1e-13,1e-13};
|
---|
| 86 | field_values={Seustatic,Srigid,Selastic,Srotation};
|
---|