Ignore:
Timestamp:
10/17/19 16:23:25 (5 years ago)
Author:
jdquinn
Message:

CHG: Eased tolerances.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/test/NightlyRun/test4003.m

    r24143 r24249  
    1616presentdirectory=pwd;
    1717
    18 % {{{ Parameters: 
     18% {{{ Parameters:
    1919if perform(org,'Parameters'),
    2020        Nx=3; %number of longitude cells
     
    2828        dLat=1; %latitude grid spacing
    2929        delZ=10; %thickness of vertical levels
    30         icefront_position_ratio=.75; 
     30        icefront_position_ratio=.75;
    3131        ice_thickness=1000;
    3232        rho_ice=917;
     
    4242        mlSalt   = 33.4; % open boundary salinity (PSU)
    4343        mlTheta  = -1.9; % open boundary potential temperature (deg C)
    44         obcUvel  = -0.1; % open boundary velocity (m/s)       
     44        obcUvel  = -0.1; % open boundary velocity (m/s)
    4545
    4646        MITgcmDeltaT=600; % MITgcm time step in seconds
     
    6969end
    7070% }}}
    71 % {{{ Bathymetry: 
     71% {{{ Bathymetry:
    7272if perform(org,'Bathymetry'),
    7373
     
    9494end
    9595% }}}
    96 % {{{ IceSheetGeometry: 
     96% {{{ IceSheetGeometry:
    9797if perform(org,'IceSheetGeometry'),
    98        
     98
    9999        loaddata(org,'Parameters');
    100100        loaddata(org,'Bathymetry');
     
    102102        latmax=max(lat(:));
    103103
    104         %put ice_thickness constant layer of ice over the bathymetry, unless it floats: 
     104        %put ice_thickness constant layer of ice over the bathymetry, unless it floats:
    105105        s=size(bathymetry);
    106106        thickness=ice_thickness*ones(s);
    107107
    108         %figure out ice shelf: 
     108        %figure out ice shelf:
    109109        pos=find(-di*thickness>bathymetry);
    110110        iceshelf_mask=zeros(s);
     
    116116        iceshelf_mask(pos)=0;
    117117
    118         %compute draft of ice shelf: 
     118        %compute draft of ice shelf:
    119119        draft=bathymetry;
    120120        pos=find(iceshelf_mask);
    121121        draft(pos)=-di*thickness(pos);
    122         pos=find(~ice_mask); 
     122        pos=find(~ice_mask);
    123123        draft(pos)=0;
    124124
     
    128128
    129129%Configure MITgcm
    130 % {{{ GetMITgcm: 
     130% {{{ GetMITgcm:
    131131if perform(org,'GetMITgcm'),
    132132  system([pwd '/../MITgcm/get_mitgcm_dngoldberg.sh']);
    133133end
    134134% }}}
    135 % {{{ BuildMITgcm: 
     135% {{{ BuildMITgcm:
    136136if perform(org,'BuildMITgcm'),
    137137    system(['../MITgcm/build_4003.sh generic ' pwd '/../MITgcm']);
     
    139139% }}}
    140140addpath(recursivepath([pwd '/../MITgcm']));
    141 % {{{ RunUncoupledMITgcm: 
     141% {{{ RunUncoupledMITgcm:
    142142if perform(org,'RunUncoupledMITgcm'),
    143143    % rename previous run directory and create new one
     
    161161
    162162%Configure ISSM
    163 % {{{ CreateMesh: 
     163% {{{ CreateMesh:
    164164if perform(org,'CreateMesh'),
    165        
    166         %create model: 
     165
     166        %create model:
    167167        md=model();
    168        
    169         %Grab lat,long from MITgcm: 
     168
     169        %Grab lat,long from MITgcm:
    170170        long=readbin('run/XG.data',[3 200]);
    171171        long=[long long(:,end)]; long=[long; -105.1250*ones(1,size(long,2))];
     
    173173        lat=[lat -73.8832*ones(size(lat,1),1)]; lat=[lat; lat(end,:)];
    174174
    175         %project lat,long: 
     175        %project lat,long:
    176176        [x,y]=ll2xy(lat(:),long(:),-1);
    177177
     
    179179        index=[];
    180180        %  C  D
    181         %  A  B 
     181        %  A  B
    182182        for j=1:Ny-1,
    183                 for i=1:Nx-1, 
     183                for i=1:Nx-1,
    184184                        A=(j-1)*Nx+i;
    185185                        B=(j-1)*Nx+i+1;
     
    191191        end
    192192
    193         %fill mesh and model: 
     193        %fill mesh and model:
    194194        md=meshconvert(md,index,x,y);
    195195        md.mesh.lat=lat(:);
     
    200200end
    201201% }}}
    202 % {{{ MeshGeometry: 
     202% {{{ MeshGeometry:
    203203if perform(org,'MeshGeometry'),
    204        
     204
    205205        loaddata(org,'CreateMesh');
    206206
    207         %transfer to vertices: 
     207        %transfer to vertices:
    208208        bathymetry=readbin('run/bathy.box',[3 200],1,'real*8');
    209209        bathymetry=[bathymetry bathymetry(:,end)]; bathymetry=[bathymetry(1,:); bathymetry];
     
    214214        thickness=[thickness thickness(:,end)]; thickness=[thickness; thickness(end,:)];
    215215
    216         %start filling some of the fields 
     216        %start filling some of the fields
    217217        md.geometry.bed=bathymetry(:);
    218218        md.geometry.thickness=thickness(:);
    219         md.geometry.base=-917/1028*md.geometry.thickness; 
     219        md.geometry.base=-917/1028*md.geometry.thickness;
    220220        md.geometry.surface=md.geometry.base+md.geometry.thickness;
    221221
    222         %nothing passes icefront: 
     222        %nothing passes icefront:
    223223        pos=find((~ice_mask(:) & ice_mask(:)~=0) | thickness(:)==0);
    224224        md.geometry.thickness(pos)=1;
     
    226226        md.geometry.base(pos)=-di*md.geometry.thickness(pos);
    227227
    228         %level sets: 
     228        %level sets:
    229229        md.mask.groundedice_levelset=iceshelf_mask(:);
    230230        md.mask.ice_levelset=-ones(md.mesh.numberofvertices,1);
    231231
    232         pos=find(~ice_mask(:) & thickness(:)==0); md.mask.ice_levelset(pos)=1; 
     232        pos=find(~ice_mask(:) & thickness(:)==0); md.mask.ice_levelset(pos)=1;
    233233
    234234        savemodel(org,md);
    235235end
    236236% }}}
    237 % {{{ ParameterizeIce: 
     237% {{{ ParameterizeIce:
    238238if perform(org,'ParameterizeIce'),
    239        
     239
    240240        loaddata(org,'MeshGeometry');
    241241
     
    243243        md.miscellaneous.name='test4003';
    244244
    245         %initial velocity: 
     245        %initial velocity:
    246246        md.initialization.vx=zeros(md.mesh.numberofvertices,1);
    247247        md.initialization.vy=zeros(md.mesh.numberofvertices,1);
    248248        md.initialization.vz=zeros(md.mesh.numberofvertices,1);
    249249
    250         %friction: 
     250        %friction:
    251251        md.friction.coefficient=0*ones(md.mesh.numberofvertices,1);
    252252        pos=find(md.mask.groundedice_levelset>0);
     
    260260        md.smb.mass_balance = 0*ones(md.mesh.numberofvertices,1);
    261261
    262         %Flow law 
     262        %Flow law
    263263        md.materials.rheology_B=paterson(md.initialization.temperature);
    264264        md.materials.rheology_n=3*ones(md.mesh.numberofelements,1);
    265265        md.damage.D=zeros(md.mesh.numberofvertices,1);
    266266        md.damage.spcdamage=NaN*ones(md.mesh.numberofvertices,1);
    267        
     267
    268268        %the spcs going
    269269        md.stressbalance.spcvx=NaN*ones(md.mesh.numberofvertices,1);
     
    272272        md.stressbalance.referential=NaN*ones(md.mesh.numberofvertices,6);
    273273        md.stressbalance.loadingforce=0*ones(md.mesh.numberofvertices,3);
    274         md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1); 
    275 
    276         %get some flux at the ice divide: 
     274        md.masstransport.spcthickness=NaN*ones(md.mesh.numberofvertices,1);
     275
     276        %get some flux at the ice divide:
    277277        pos=find(md.mesh.lat==min(md.mesh.lat));
    278278        md.masstransport.spcthickness(pos)=md.geometry.thickness(pos);
     
    280280        md.stressbalance.spcvy(pos)=0;
    281281
    282         %deal with boundaries, excluding icefront: 
     282        %deal with boundaries, excluding icefront:
    283283        pos=find(md.mesh.long==min(md.mesh.long) | md.mesh.long==max(md.mesh.long));
    284284        md.stressbalance.spcvy(pos)=0;
     
    295295        md.basalforcings.geothermalflux=.064*ones(md.mesh.numberofvertices,1);
    296296
    297         %flow equations: 
     297        %flow equations:
    298298        md=setflowequation(md,'SSA','all');
    299299
     
    301301end
    302302% }}}
    303 % {{{ RunUncoupledISSM: 
     303% {{{ RunUncoupledISSM:
    304304if perform(org,'RunUncoupledISSM'),
    305        
     305
    306306        loaddata(org,'Parameters');
    307307        loaddata(org,'ParameterizeIce');
    308308
    309         %timestepping: 
     309        %timestepping:
    310310        md.timestepping.final_time=100;
    311311        md.timestepping.time_step=0.5;
     
    327327
    328328%Run MITgcm/ISSM
    329 % {{{ RunCoupledMITgcmISSM: 
     329% {{{ RunCoupledMITgcmISSM:
    330330if perform(org,'RunCoupledMITgcmISSM'),
    331        
     331
    332332        loaddata(org,'Parameters');
    333333        loaddata(org,'ParameterizeIce');
     
    352352
    353353        % }}}
    354         % {{{ prepare MITgcm 
     354        % {{{ prepare MITgcm
    355355        % rename previous run directory and create new one
    356356        if exist ('run.old')
     
    379379end
    380380% }}}
    381 % {{{ RunCoupledMITgcmISSMMatlabCoupling: 
     381% {{{ RunCoupledMITgcmISSMMatlabCoupling:
    382382if perform(org,'RunCoupledMITgcmISSMMatlabCoupling'),
    383383
    384         %load data: 
     384        %load data:
    385385        loaddata(org,'Parameters');
    386386        loaddata(org,'ParameterizeIce');
     
    390390         floor(time_step*y2s*async_step_MITgcm_multiplier/MITgcmDeltaT));
    391391
    392         % {{{ prepare MITgcm 
     392        % {{{ prepare MITgcm
    393393        % rename previous run directory and create new one
    394394        if exist ('run.old')
     
    449449            tline = fgetl(fidi);
    450450            if ~ischar(tline), break, end
    451             %do the change here: 
     451            %do the change here:
    452452            if strcmpi(tline,' OB_Iwest = 40*1,'),
    453453                fprintf(fido,'%s%i%s\n',' OB_Iwest = ',Ny,'*1,');
     
    467467        writebin('run/bathymetry.bin',bathymetry);
    468468        % }}}
    469            
     469
    470470        % {{{ ISSM settings:
    471471
    472         setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib') 
    473         %timestepping: 
     472        setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib')
     473        %timestepping:
    474474        md.timestepping.start_time=start_time;
    475475        md.timestepping.final_time=final_time;
     
    499499            writebin('run/icetopo.bin',draft);
    500500
    501             % {{{ generate MITgcm parameter file data 
     501            % {{{ generate MITgcm parameter file data
    502502            fidi=fopen('../MITgcm/input/data','r');
    503503            fido=fopen('run/data','w');
     
    507507                tline = fgetl(fidi);
    508508                if ~ischar(tline), break, end
    509                 %do the change here: 
     509                %do the change here:
    510510                if strcmpi(tline,' xgOrigin = 0.0,'),
    511511                    fprintf(fido,'%s%i%s\n',' xgOrigin = ',xgOrigin,',');
     
    578578                tmp(find(tmp<0))=0;
    579579                [im jm]=find(tmp); % horizontal indices where there is melt
    580                
     580
    581581                % Extrapolate T/S to locations where ice shelf retreated
    582582                for i=1:length(im)
     
    612612            % }}}
    613613
    614             % {{{ system call to run MITgcm 
     614            % {{{ system call to run MITgcm
    615615            cd run
    616616            eval(['!mpiexec -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
     
    638638                 md.basalforcings.floatingice_melting_rate=melting_rate;
    639639
    640             % {{{ run ISSM and recover results 
     640            % {{{ run ISSM and recover results
    641641
    642642            md.timestepping.start_time=t;
     
    655655                md.mask.groundedice_levelset=md.results.TransientSolution(end).MaskGroundediceLevelset;
    656656                md.results.TransientSolution(end).FloatingiceMeltingRate=md.basalforcings.floatingice_melting_rate;
    657                
     657
    658658                %save these results in the model, otherwise, they'll be wiped out
    659659                results(end+1)=md.results;
     
    681681        'Melting2','Vx3','Vy3','Thickness3','Base3','MaskGroundediceLevelset3','FloatingiceMeltingRate3',...
    682682        'Melting3','Vx4','Vy4','Thickness4','Base4','MaskGroundediceLevelset4','FloatingiceMeltingRate4','Melting4'};
    683 field_tolerances={2e-13,1e-13,5e-13,5e-13,1e-13,1e-13,1e-13,1e-12,...
     683field_tolerances={2e-13,1e-13,6e-13,6e-13,1e-13,1e-13,1e-13,1e-12,...
    684684        1e-13, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13, 1e-12,...
    685685        1e-13, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13, 1e-12, 1e-13 };
Note: See TracChangeset for help on using the changeset viewer.