[21337] | 1 | Index: ../trunk-jpl/test/NightlyRun/test2101.m
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/test/NightlyRun/test2101.m (revision 0)
|
---|
| 4 | +++ ../trunk-jpl/test/NightlyRun/test2101.m (revision 21264)
|
---|
| 5 | @@ -0,0 +1,65 @@
|
---|
| 6 | +%Elastostatic adjustment for an elemental ice unloading
|
---|
| 7 | +
|
---|
| 8 | +%mesh earth:
|
---|
| 9 | +md=model;
|
---|
| 10 | +md.mesh=gmshplanet('radius',6.371012*10^3,'resolution',1000);
|
---|
| 11 | +
|
---|
| 12 | +% define load
|
---|
| 13 | +md.esa.deltathickness=zeros(md.mesh.numberofelements,1);
|
---|
| 14 | +pos=450; md.esa.deltathickness(pos)=-100; % this is the only "icy" element
|
---|
| 15 | +
|
---|
| 16 | +%love numbers:
|
---|
| 17 | +nlov=101;
|
---|
| 18 | +md.esa.love_h = love_numbers('h'); md.esa.love_h(nlov+1:end)=[];
|
---|
| 19 | +md.esa.love_l = love_numbers('l'); md.esa.love_l(nlov+1:end)=[];
|
---|
| 20 | +
|
---|
| 21 | +%mask: {{{
|
---|
| 22 | + md.mask=maskpsl(); % use maskpsl class (instead of mask) to store the ocean function as a ocean_levelset
|
---|
| 23 | + md.mask.ocean_levelset=gmtmask(md.mesh.lat,md.mesh.long);
|
---|
| 24 | +
|
---|
| 25 | + %make sure wherever there is an ice load, that the mask is set to ice:
|
---|
| 26 | + md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);
|
---|
| 27 | + pos=find(md.esa.deltathickness); md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
|
---|
| 28 | +
|
---|
| 29 | + %is ice grounded?
|
---|
| 30 | + md.mask.groundedice_levelset=-ones(md.mesh.numberofvertices,1);
|
---|
| 31 | + pos=find(md.mask.ice_levelset<=0); md.mask.groundedice_levelset(pos)=1;
|
---|
| 32 | +
|
---|
| 33 | + %make sure ice domain is on the continent:
|
---|
| 34 | + %pos=find(md.mask.ice_levelset<=0); md.mask.ocean_levelset(pos)=0;
|
---|
| 35 | +
|
---|
| 36 | + %land mask
|
---|
| 37 | + md.mask.land_levelset=1-md.mask.ocean_levelset;
|
---|
| 38 | +
|
---|
| 39 | +% }}}
|
---|
| 40 | +%geometry: {{{
|
---|
| 41 | + di=md.materials.rho_ice/md.materials.rho_water;
|
---|
| 42 | + md.geometry.thickness=ones(md.mesh.numberofvertices,1);
|
---|
| 43 | + md.geometry.surface=(1-di)*zeros(md.mesh.numberofvertices,1);
|
---|
| 44 | + md.geometry.base=md.geometry.surface-md.geometry.thickness;
|
---|
| 45 | + md.geometry.bed=md.geometry.base;
|
---|
| 46 | +% }}}
|
---|
| 47 | +%materials: {{{
|
---|
| 48 | + md.initialization.temperature=273.25*ones(md.mesh.numberofvertices,1);
|
---|
| 49 | + md.materials.rheology_B=paterson(md.initialization.temperature);
|
---|
| 50 | + md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
|
---|
| 51 | +% }}}
|
---|
| 52 | +%Miscellaneous: {{{
|
---|
| 53 | + md.miscellaneous.name='test2101';
|
---|
| 54 | +% }}}
|
---|
| 55 | +
|
---|
| 56 | +% solve esa
|
---|
| 57 | +md.esa.requested_outputs = {'EsaUmotion','EsaNmotion','EsaEmotion'};
|
---|
| 58 | +md.cluster=generic('name',oshostname(),'np',4);
|
---|
| 59 | +md.verbose=verbose('111111111');
|
---|
| 60 | +md=solve(md,'Esa');
|
---|
| 61 | +
|
---|
| 62 | +%Fields and tolerances to track changes
|
---|
| 63 | +%field_names ={'EsaUmotion','EsaNmotion','EsaEmotion'};
|
---|
| 64 | +field_tolerances={1e-13,1e-13,1e-13};
|
---|
| 65 | +field_values={...
|
---|
| 66 | + (md.results.EsaSolution.EsaUmotion),...
|
---|
| 67 | + (md.results.EsaSolution.EsaNmotion),...
|
---|
| 68 | + (md.results.EsaSolution.EsaEmotion),...
|
---|
| 69 | + };
|
---|
| 70 | +
|
---|