Changeset 24905


Ignore:
Timestamp:
05/27/20 09:54:32 (5 years ago)
Author:
Eric.Larour
Message:

CHG: stable, trying to commit into nightly runs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/test/SandBox/test2004.m

    r24863 r24905  
    11%Test Name: Earth_Antarctica_GIA
    22               
    3 testagainst2002=1;
     3testagainst2002=0;
    44
    55%Data paths: {{{
     
    2929        }));
    3030        %}}}
     31        %Ross: {{{
     32        sl.addbasin(basin('continent','antarctica','name','ross','proj',proj3031,'boundaries',{...
     33                boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
     34                boundary('shppath',shppath,'shpfilename','RossIceShelf','proj',proj3031),...
     35                boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
     36                boundary('shppath',shppath,'shpfilename','RossFront','proj',proj3031,'orientation','reverse')...
     37                }));
     38%}}}
    3139        %HemisphereEast: {{{
    3240        sl.addbasin(basin('continent','hemisphereeast','name','hemisphereeast','proj',laea(0,+90),'boundaries',{... %Australian projection lat,long
    3341                boundary('shppath',shppath,'shpfilename','HemisphereSplit','proj',proj4326),...
    3442                boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
     43                boundary('shppath',shppath,'shpfilename','RossFront','proj',proj3031),...
     44                boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
    3545                boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031,'orientation','reverse'),...
    3646                boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031)...
     
    4151        boundary('shppath',shppath,'shpfilename','NorthAntarctica','proj',proj3031),...
    4252        boundary('shppath',shppath,'shpfilename','EastAntarctica2','proj',proj3031),...
     53        boundary('shppath',shppath,'shpfilename','RossWestFront','proj',proj3031),...
     54        boundary('shppath',shppath,'shpfilename','RossIceShelf','proj',proj3031,'orientation','reverse'),...
    4355        boundary('shppath',shppath,'shpfilename','SouthAntarctica','proj',proj3031),...
    4456        boundary('shppath',shppath,'shpfilename','WestAntarctica2','proj',proj3031)...
     
    6173%Go through basins and mesh:  %{{{
    6274%meshing parameters:  {{{
    63 hmin=2000; hmax=10000; hmin=hmin*1000; hmax=hmax*1000;
     75hmin=500; hmax=700; hmin=hmin*1000; hmax=hmax*1000;
    6476tolerance=100; %tolerance of 100m on Earth position when mergin 3d meshes
    6577threshold=5;
    66 defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinment',1};
     78defaultoptions={'KeepVertices',0,'MaxCornerAngle',0.0000000001,'NoBoundaryRefinement',1};
    6779alreadyloaded=0;
    6880%}}}
     
    104116        md=sl.icecaps{ind}; bas=sl.basins{ind};
    105117        %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 
    113118        %ice levelset from domain outlines:
    114119        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: {{{
     120       
    124121        if bas.isnameany('antarctica-grounded'),
    125 
    126122                md.mask.ocean_levelset=ones(md.mesh.numberofvertices,1);
    127123        end
    128         if bas.isnameany('ronne'),
    129 
     124        if bas.isnameany('ronne','ross'),
    130125                md.mask.ocean_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.ocean_levelset<=0);
    134                 md.mask.ocean_levelset(pos)=1;
    135                 md.mask.land_levelset(pos)=-1;
    136126        end
    137127        %}}}
     
    153143                        late=sum(md.mesh.lat(md.mesh.elements),2)/3;
    154144                        longe=sum(md.mesh.long(md.mesh.elements),2)/3;
    155                         pos=find(late <-80);
    156                         md.slr.deltathickness(pos)=-100;
     145                        pos=find(late <-85);
     146                        ratio=0.225314032985172/0.193045366574523;
     147                        %ratio=   1.276564103522540/.869956;
     148                        md.slr.deltathickness(pos)=-100*ratio;
    157149                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 
     150                        delH=textread('../Data/AIS_delH_trend.txt');
     151                        longAIS=delH(:,1); latAIS=delH(:,2); delHAIS=delH(:,3); index=delaunay(longAIS,latAIS);
     152                        lat=md.mesh.lat; long=md.mesh.long+360; pos=find(long>360);long(pos)=long(pos)-360;
    168153                        delHAIS=InterpFromMesh2d(index,longAIS,latAIS,delHAIS,long,lat);
    169154                        northpole=find_point(md.mesh.long,md.mesh.lat,0,90); delHAIS(northpole)=0;
    170 
     155                       
    171156                        md.slr.deltathickness=delHAIS(md.mesh.elements)*[1;1;1]/3/100;
    172157                end
     
    205190
    206191        %mask:  %{{{
    207         %new type of mask:
    208         md.mask=maskpsl;
    209192        %Figure out mask from initial mesh: deal with land and ocean masks (land include grounded ice).  %{{{
    210193        %first, transform land element  mask into vertex driven one. 
     
    226209        ind2=[md.mesh.elements(landelsconocean,2); md.mesh.elements(landelsconocean,3); md.mesh.elements(landelsconocean,1)];
    227210
    228         h=waitbar(0,'Starting mask processing');
    229211
    230212        %edge ind1 and ind2:
    231213        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 
    236214                els1=md.mesh.vertexconnectivity(ind1(i),1: md.mesh.vertexconnectivity(ind1(i),end));
    237215                els2=md.mesh.vertexconnectivity(ind2(i),1: md.mesh.vertexconnectivity(ind2(i),end));
     
    244222                end
    245223        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.ocean_levelset=-ones(md.mesh.numberofvertices,1);
    258 
    259         md.mask.glacier_levelset=zeros(md.mesh.numberofvertices,1);
     224
     225        md.mask.ocean_levelset=land_mask;
     226        md.mask.ice_levelset=ones(md.mesh.numberofvertices,1);   %if there are glaciers, we'll adjust
     227
     228        if testagainst2002,
     229                % {{{
     230                %greenland
     231                pos=find(md.mesh.lat > 70 &  md.mesh.lat < 80 & md.mesh.long>-60 & md.mesh.long<-30);
     232                md.mask.ice_levelset(pos)=-1;
     233                % }}}
     234        end
    260235
    261236        % }}}
     
    263238        %slr loading/calibration:  {{{
    264239
    265         if testagainst2002,
     240        if testagainst2002,
     241                % {{{
    266242                md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
    267243                %greenland
     
    269245                longe=sum(md.mesh.long(md.mesh.elements),2)/3;
    270246                pos=find(late > 70 &  late < 80 & longe>-60 & longe<-30);
    271                 md.slr.deltathickness(pos)=-100;
     247                ratio=.3823/.262344;
     248                %md.slr.deltathickness(pos)=-100*ratio;
    272249
    273250                %correct mask:
    274                 md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
     251                md.mask.ice_levelset(md.mesh.elements(pos,:))=-1;
     252                % }}}
    275253        else
     254
    276255                md.slr.deltathickness=zeros(md.mesh.numberofelements,1);
     256
     257                delH=textread('../Data/GIS_delH_trend.txt');
     258                longGIS=delH(:,1); latGIS=delH(:,2); delHGIS=delH(:,3); index=delaunay(longGIS,latGIS);
     259                lat=md.mesh.lat; long=md.mesh.long+360; pos=find(long>360);long(pos)=long(pos)-360;
     260                delHGIS=InterpFromMeshToMesh2d(index,longGIS,latGIS,delHGIS,long,lat);
     261                delHGISe=delHGIS(md.mesh.elements)*[1;1;1]/3;
     262       
     263                delH=textread('../Data/GLA_delH_trend_15regions.txt');
     264                longGLA=delH(:,1); latGLA=delH(:,2); delHGLA=sum(delH(:,3:end),2); index=delaunay(longGLA,latGLA);
     265                lat=md.mesh.lat; long=md.mesh.long+360; pos=find(long>360);long(pos)=long(pos)-360;
     266                delHGLA=InterpFromMeshToMesh2d(index,longGLA,latGLA,delHGLA,long,lat);
     267                delHGLAe=delHGLA(md.mesh.elements)*[1;1;1]/3;
     268
     269                pos=find(delHGISe);
     270                md.slr.deltathickness(pos)=delHGISe(pos)/100;
     271                pos=find(delHGLAe);
     272                md.slr.deltathickness(pos)=delHGLAe(pos)/100;
     273
     274                %adjust mask accordingly:
     275                pos=find(md.slr.deltathickness);
     276                flags=zeros(md.mesh.numberofvertices,1);
     277                flags(md.mesh.elements(pos,:))=1;
     278                pos=find(flags);
     279                md.mask.ice_levelset(pos)=-1;
     280                md.mask.ocean_levelset(pos)=1;
    277281        end
    278282
     
    288292        md.slr.hydro_rate = zeros(md.mesh.numberofvertices,1);
    289293
    290         %love numbers:
    291         md.slr.ocean_area_scaling=1;
    292294        %}}}
    293295        %geometry:  {{{
     
    301303end
    302304% }}}
    303 
    304305%%Assemble Earth in 3D {{{
    305306
     
    326327sl.transfer('mask.ice_levelset');
    327328sl.transfer('mask.ocean_levelset');
    328 sl.transfer('mask.land_levelset');
    329 sl.transfer('mask.glacier_levelset');
    330329sl.transfer('geometry.bed');
    331330sl.transfer('mesh.lat');
     
    355354
    356355% }}}
    357 
    358356%Solve Sea-level equation on Earth only:  {{{
    359357md=sl.earth; %we don't do computations on ice sheets or land.
     
    363361
    364362%elastic loading from love numbers:
    365 nlov=1001;
    366 md.slr.love_h = love_numbers('h'); md.slr.love_h(nlov+1:end)=[];
    367 md.slr.love_k = love_numbers('k'); md.slr.love_k(nlov+1:end)=[];
    368 md.slr.love_l = love_numbers('l'); md.slr.love_l(nlov+1:end)=[];
     363nlov=101;
     364md.slr.love_h = love_numbers('h','CM'); md.slr.love_h(nlov+1:end)=[];
     365md.slr.love_k = love_numbers('k','CM'); md.slr.love_k(nlov+1:end)=[];
     366md.slr.love_l = love_numbers('l','CM'); md.slr.love_l(nlov+1:end)=[];
    369367md.slr.ocean_area_scaling = 0;
     368md.slr.loop_increment=200;
    370369
    371370%Miscellaneous
     
    373372
    374373%New stuff
    375 md.dsl.global_average_thermosteric_sea_level_change=[0;0];
     374md.dsl.global_average_thermosteric_sea_level_change=[1.1+.38;0]; %steric + water storage AR5.
    376375
    377376%Solution parameters
     
    379378md.slr.abstol=1e-3;
    380379md.slr.geodetic=1;
     380md.timestepping.time_step=1;
    381381
    382382% max number of iteration reverted back to 10 (i.e., the original default value)
     
    385385%eustatic run:
    386386md.slr.rigid=0; md.slr.elastic=0;md.slr.rotation=0;
     387md.slr.requested_outputs= {'default',...
     388            'SealevelriseDeltathickness','Sealevel','SealevelRSLRate','SealevelriseCumDeltathickness',...
     389                    'SealevelNEsaRate', 'SealevelUEsaRate', 'SealevelNGiaRate', 'SealevelUGiaRate','SealevelEustaticMask','SealevelEustaticOceanMask'};
    387390md=solve(md,'Sealevelrise');
    388391Seustatic=md.results.SealevelriseSolution.Sealevel;
Note: See TracChangeset for help on using the changeset viewer.