[26740] | 1 | Index: ../trunk-jpl/test/MITgcm/code_4003/CPP_OPTIONS.h
|
---|
| 2 | ===================================================================
|
---|
| 3 | --- ../trunk-jpl/test/MITgcm/code_4003/CPP_OPTIONS.h (revision 26663)
|
---|
| 4 | +++ ../trunk-jpl/test/MITgcm/code_4003/CPP_OPTIONS.h (revision 26664)
|
---|
| 5 | @@ -53,10 +53,6 @@
|
---|
| 6 | C o Include/exclude phi_hyd calculation code
|
---|
| 7 | #define INCLUDE_PHIHYD_CALCULATION_CODE
|
---|
| 8 |
|
---|
| 9 | -C o Include/exclude sound speed calculation code
|
---|
| 10 | -C o (Note that this is a diagnostic from Del Grasso algorithm, not derived from EOS)
|
---|
| 11 | -#undef INCLUDE_SOUNDSPEED_CALC_CODE
|
---|
| 12 | -
|
---|
| 13 | C-- Vertical mixing code options:
|
---|
| 14 |
|
---|
| 15 | C o Include/exclude call to S/R CONVECT
|
---|
| 16 | @@ -77,10 +73,6 @@
|
---|
| 17 | C near surface & bottom for too thin grid-cell
|
---|
| 18 | #undef EXCLUDE_PCELL_MIX_CODE
|
---|
| 19 |
|
---|
| 20 | -C o Exclude/allow to use isotropic 3-D Smagorinsky viscosity as diffusivity
|
---|
| 21 | -C for tracers (after scaling by constant Prandtl number)
|
---|
| 22 | -#undef ALLOW_SMAG_3D_DIFFUSIVITY
|
---|
| 23 | -
|
---|
| 24 | C-- Time-stepping code options:
|
---|
| 25 |
|
---|
| 26 | C o Include/exclude combined Surf.Pressure and Drag Implicit solver code
|
---|
| 27 | @@ -92,9 +84,6 @@
|
---|
| 28 | C o Include/exclude AdamsBashforth-3rd-Order code
|
---|
| 29 | #undef ALLOW_ADAMSBASHFORTH_3
|
---|
| 30 |
|
---|
| 31 | -C o Include/exclude Quasi-Hydrostatic Stagger Time-step AdamsBashforth code
|
---|
| 32 | -#undef ALLOW_QHYD_STAGGER_TS
|
---|
| 33 | -
|
---|
| 34 | C-- Model formulation options:
|
---|
| 35 |
|
---|
| 36 | C o Allow/exclude "Exact Convervation" of fluid in Free-Surface formulation
|
---|
| 37 | @@ -104,9 +93,6 @@
|
---|
| 38 | C o Allow the use of Non-Linear Free-Surface formulation
|
---|
| 39 | C this implies that grid-cell thickness (hFactors) varies with time
|
---|
| 40 | #define NONLIN_FRSURF
|
---|
| 41 | -C o Disable code for rStar coordinate and/or code for Sigma coordinate
|
---|
| 42 | -c#define DISABLE_RSTAR_CODE
|
---|
| 43 | -c#define DISABLE_SIGMA_CODE
|
---|
| 44 |
|
---|
| 45 | C o Include/exclude nonHydrostatic code
|
---|
| 46 | #undef ALLOW_NONHYDROSTATIC
|
---|
| 47 | @@ -116,7 +102,7 @@
|
---|
| 48 |
|
---|
| 49 | C-- Algorithm options:
|
---|
| 50 |
|
---|
| 51 | -C o Include/exclude code for Non Self-Adjoint (NSA) conjugate-gradient solver
|
---|
| 52 | +C o Use Non Self-Adjoint (NSA) conjugate-gradient solver
|
---|
| 53 | #undef ALLOW_CG2D_NSA
|
---|
| 54 |
|
---|
| 55 | C o Include/exclude code for single reduction Conjugate-Gradient solver
|
---|
| 56 | @@ -130,42 +116,11 @@
|
---|
| 57 |
|
---|
| 58 | C-- Retired code options:
|
---|
| 59 |
|
---|
| 60 | -C o ALLOW isotropic scaling of harmonic and bi-harmonic terms when
|
---|
| 61 | -C using an locally isotropic spherical grid with (dlambda) x (dphi*cos(phi))
|
---|
| 62 | -C *only for use on a lat-lon grid*
|
---|
| 63 | -C Setting this flag here affects both momentum and tracer equation unless
|
---|
| 64 | -C it is set/unset again in other header fields (e.g., GAD_OPTIONS.h).
|
---|
| 65 | -C The definition of the flag is commented to avoid interference with
|
---|
| 66 | -C such other header files.
|
---|
| 67 | -C The preferred method is specifying a value for viscAhGrid or viscA4Grid
|
---|
| 68 | -C in data which is then automatically scaled by the grid size;
|
---|
| 69 | -C the old method of specifying viscAh/viscA4 and this flag is provided
|
---|
| 70 | -C for completeness only (and for use with the adjoint).
|
---|
| 71 | -c#define ISOTROPIC_COS_SCALING
|
---|
| 72 | -
|
---|
| 73 | -C o This flag selects the form of COSINE(lat) scaling of bi-harmonic term.
|
---|
| 74 | -C *only for use on a lat-lon grid*
|
---|
| 75 | -C Has no effect if ISOTROPIC_COS_SCALING is undefined.
|
---|
| 76 | -C Has no effect on vector invariant momentum equations.
|
---|
| 77 | -C Setting this flag here affects both momentum and tracer equation unless
|
---|
| 78 | -C it is set/unset again in other header fields (e.g., GAD_OPTIONS.h).
|
---|
| 79 | -C The definition of the flag is commented to avoid interference with
|
---|
| 80 | -C such other header files.
|
---|
| 81 | -c#define COSINEMETH_III
|
---|
| 82 | -
|
---|
| 83 | -C o Use "OLD" UV discretisation near boundaries (*not* recommended)
|
---|
| 84 | -C Note - only works with pkg/mom_fluxform and "no_slip_sides=.FALSE."
|
---|
| 85 | -C because the old code did not have no-slip BCs
|
---|
| 86 | -#undef OLD_ADV_BCS
|
---|
| 87 | -
|
---|
| 88 | C o Use LONG.bin, LATG.bin, etc., initialization for ini_curviliear_grid.F
|
---|
| 89 | C Default is to use "new" grid files (OLD_GRID_IO undef) but OLD_GRID_IO
|
---|
| 90 | C is still useful with, e.g., single-domain curvilinear configurations.
|
---|
| 91 | #undef OLD_GRID_IO
|
---|
| 92 |
|
---|
| 93 | -C o Use old EXTERNAL_FORCING_U,V,T,S subroutines (for backward compatibility)
|
---|
| 94 | -#undef USE_OLD_EXTERNAL_FORCING
|
---|
| 95 | -
|
---|
| 96 | C-- Other option files:
|
---|
| 97 |
|
---|
| 98 | C o Execution environment support options
|
---|
| 99 | Index: ../trunk-jpl/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h
|
---|
| 100 | ===================================================================
|
---|
| 101 | --- ../trunk-jpl/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h (revision 26663)
|
---|
| 102 | +++ ../trunk-jpl/test/MITgcm/code_4003/DIAGNOSTICS_SIZE.h (revision 26664)
|
---|
| 103 | @@ -22,7 +22,6 @@
|
---|
| 104 | PARAMETER( nRegions = 2 , sizRegMsk = 1 , nStats = 4 )
|
---|
| 105 | PARAMETER( diagSt_size = 10*Nr )
|
---|
| 106 |
|
---|
| 107 | -
|
---|
| 108 | CEH3 ;;; Local Variables: ***
|
---|
| 109 | CEH3 ;;; mode:fortran ***
|
---|
| 110 | CEH3 ;;; End: ***
|
---|
| 111 | Index: ../trunk-jpl/test/MITgcm/code_4003/SIZE.h
|
---|
| 112 | ===================================================================
|
---|
| 113 | --- ../trunk-jpl/test/MITgcm/code_4003/SIZE.h (revision 26663)
|
---|
| 114 | +++ ../trunk-jpl/test/MITgcm/code_4003/SIZE.h (revision 26664)
|
---|
| 115 | @@ -42,14 +42,14 @@
|
---|
| 116 | INTEGER Ny
|
---|
| 117 | INTEGER Nr
|
---|
| 118 | PARAMETER (
|
---|
| 119 | - & sNx = 1,
|
---|
| 120 | - & sNy = 50,
|
---|
| 121 | + & sNx = 3,
|
---|
| 122 | + & sNy = 25,
|
---|
| 123 | & OLx = 3,
|
---|
| 124 | & OLy = 3,
|
---|
| 125 | & nSx = 1,
|
---|
| 126 | & nSy = 1,
|
---|
| 127 | & nPx = 1,
|
---|
| 128 | - & nPy = 4,
|
---|
| 129 | + & nPy = 8,
|
---|
| 130 | & Nx = sNx*nSx*nPx,
|
---|
| 131 | & Ny = sNy*nSy*nPy,
|
---|
| 132 | & Nr = 90)
|
---|
| 133 | Index: ../trunk-jpl/test/MITgcm/input_4003/data
|
---|
| 134 | ===================================================================
|
---|
| 135 | --- ../trunk-jpl/test/MITgcm/input_4003/data (revision 26663)
|
---|
| 136 | +++ ../trunk-jpl/test/MITgcm/input_4003/data (revision 26664)
|
---|
| 137 | @@ -61,24 +61,15 @@
|
---|
| 138 |
|
---|
| 139 | #Time stepping parameters
|
---|
| 140 | &PARM03
|
---|
| 141 | -#nIter0=2880,
|
---|
| 142 | -#nTimeSteps=288,
|
---|
| 143 | -#startTime=0.,
|
---|
| 144 | + startTime=0.,
|
---|
| 145 | + nTimeSteps=192,
|
---|
| 146 | #endTime=2592000.,
|
---|
| 147 | - deltaT=300.0,
|
---|
| 148 | + deltaT=450.0,
|
---|
| 149 | forcing_In_AB = .FALSE.,
|
---|
| 150 | abEps=0.1,
|
---|
| 151 | pChkptFreq= 2592000.,
|
---|
| 152 | chkptFreq = 2592000.,
|
---|
| 153 | dumpFreq = 86400.,
|
---|
| 154 | - monitorFreq= 7200.,
|
---|
| 155 | - monitorSelect=1,
|
---|
| 156 | - monitorFreq=1800.,
|
---|
| 157 | - dumpFreq = 10800.,
|
---|
| 158 | -#- for testing purpose:
|
---|
| 159 | - nIter0=2898,
|
---|
| 160 | - nTimeSteps=20,
|
---|
| 161 | -#dumpFreq = 1200.,
|
---|
| 162 | monitorFreq=1.,
|
---|
| 163 | &
|
---|
| 164 |
|
---|
| 165 | @@ -87,7 +78,7 @@
|
---|
| 166 | usingCartesianGrid=.FALSE.,
|
---|
| 167 | usingSphericalPolarGrid=.TRUE.,
|
---|
| 168 | delR=90*10.,
|
---|
| 169 | - delX=1*.125,
|
---|
| 170 | + delX=3*.125,
|
---|
| 171 | delY=200*.0078125,
|
---|
| 172 | xgOrigin = 0.,
|
---|
| 173 | ygOrigin = -75.5,
|
---|
| 174 | Index: ../trunk-jpl/test/MITgcm/input_4003/data.diagnostics
|
---|
| 175 | ===================================================================
|
---|
| 176 | --- ../trunk-jpl/test/MITgcm/input_4003/data.diagnostics (nonexistent)
|
---|
| 177 | +++ ../trunk-jpl/test/MITgcm/input_4003/data.diagnostics (revision 26664)
|
---|
| 178 | @@ -0,0 +1,69 @@
|
---|
| 179 | +# Diagnostic Package Choices
|
---|
| 180 | +#-----------------
|
---|
| 181 | +# for each output-stream:
|
---|
| 182 | +# filename(n) : prefix of the output file name (only 8.c long) for outp.stream n
|
---|
| 183 | +# frequency(n):< 0 : write snap-shot output every |frequency| seconds
|
---|
| 184 | +# > 0 : write time-average output every frequency seconds
|
---|
| 185 | +# timePhase(n) : write at time = timePhase + multiple of |frequency|
|
---|
| 186 | +# averagingFreq(n) : frequency (in s) for periodic averaging interval
|
---|
| 187 | +# averagingPhase(n): phase (in s) for periodic averaging interval
|
---|
| 188 | +# repeatCycle(n) : number of averaging intervals in 1 cycle
|
---|
| 189 | +# levels(:,n) : list of levels to write to file (Notes: declared as REAL)
|
---|
| 190 | +# when this entry is missing, select all common levels of this list
|
---|
| 191 | +# fields(:,n) : list of diagnostics fields (8.c) (see "available_diagnostics.log"
|
---|
| 192 | +# file for the list of all available diag. in this particular config)
|
---|
| 193 | +#-----------------
|
---|
| 194 | + &DIAGNOSTICS_LIST
|
---|
| 195 | +# diag_mnc = .FALSE.,
|
---|
| 196 | + dumpAtLast = .TRUE.,
|
---|
| 197 | + fields(1:13,1) = 'ETAN ','RSURF ','oceTAUX ','oceTAUY ',
|
---|
| 198 | + 'oceQnet ','oceFWflx','MXLDEPTH',
|
---|
| 199 | + 'SHIfwFlx','SHIhtFlx','SHIgammT','SHIgammS',
|
---|
| 200 | + 'SHI_mass','SHIuStar',
|
---|
| 201 | +# 'surForcT','surForcS','TFLUX ','SFLUX ','oceFreez',
|
---|
| 202 | +# 'TRELAX ','SRELAX ',
|
---|
| 203 | +# fields(1,1)='ETAN'
|
---|
| 204 | + filename(1) = 'surfDiag',
|
---|
| 205 | + frequency(1) = 86400.,
|
---|
| 206 | +#-
|
---|
| 207 | + fields(1:10,2) = 'UVEL ','VVEL ','WVEL ',
|
---|
| 208 | + 'THETA ','SALT ','RHOAnoma', 'CONVADJ'
|
---|
| 209 | + 'hFactorC','hFactorW','hFactorS',
|
---|
| 210 | + filename(2) = 'dynDiag',
|
---|
| 211 | + fileFlags(2) = ' h ',
|
---|
| 212 | + frequency(2) = 86400.,
|
---|
| 213 | +#-
|
---|
| 214 | + fields(1:7,3) = 'ETAN ','RSURF ',
|
---|
| 215 | + 'oceQnet ','oceFWflx',
|
---|
| 216 | + 'SHIfwFlx','SHIhtFlx','SHIuStar',
|
---|
| 217 | +# filename(3) = 'surfInst',
|
---|
| 218 | + frequency(3) = -86400.,
|
---|
| 219 | + timePhase(3) = 0.,
|
---|
| 220 | +#-
|
---|
| 221 | + fields(1:8,4) = 'UVEL ','VVEL ','WVEL ',
|
---|
| 222 | + 'THETA ','SALT ',
|
---|
| 223 | + 'hFactorC','hFactorW','hFactorS',
|
---|
| 224 | +# filename(4) = 'dynInst',
|
---|
| 225 | + frequency(4) = -86400.,
|
---|
| 226 | + timePhase(4) = 0.,
|
---|
| 227 | + &
|
---|
| 228 | +
|
---|
| 229 | +#--------------------
|
---|
| 230 | +# Parameter for Diagnostics of per level statistics:
|
---|
| 231 | +#--------------------
|
---|
| 232 | +# diagSt_mnc (logical): write stat-diags to NetCDF files (default=diag_mnc)
|
---|
| 233 | +# diagSt_regMaskFile : file containing the region-mask to read-in
|
---|
| 234 | +# nSetRegMskFile : number of region-mask sets within the region-mask file
|
---|
| 235 | +# set_regMask(i) : region-mask set-index that identifies the region "i"
|
---|
| 236 | +# val_regMask(i) : region "i" identifier value in the region mask
|
---|
| 237 | +#--for each output-stream:
|
---|
| 238 | +# stat_fName(n) : prefix of the output file name (max 80c long) for outp.stream n
|
---|
| 239 | +# stat_freq(n):< 0 : write snap-shot output every |stat_freq| seconds
|
---|
| 240 | +# > 0 : write time-average output every stat_freq seconds
|
---|
| 241 | +# stat_phase(n) : write at time = stat_phase + multiple of |stat_freq|
|
---|
| 242 | +# stat_region(:,n) : list of "regions" (default: 1 region only=global)
|
---|
| 243 | +# stat_fields(:,n) : list of selected diagnostics fields (8.c) in outp.stream n
|
---|
| 244 | +# (see "available_diagnostics.log" file for the full list of diags)
|
---|
| 245 | +#--------------------
|
---|
| 246 | + &DIAG_STATIS_PARMS
|
---|
| 247 | + &
|
---|
| 248 | Index: ../trunk-jpl/test/MITgcm/input_4003/data.obcs
|
---|
| 249 | ===================================================================
|
---|
| 250 | --- ../trunk-jpl/test/MITgcm/input_4003/data.obcs (nonexistent)
|
---|
| 251 | +++ ../trunk-jpl/test/MITgcm/input_4003/data.obcs (revision 26664)
|
---|
| 252 | @@ -0,0 +1,32 @@
|
---|
| 253 | +# Open-boundaries
|
---|
| 254 | + &OBCS_PARM01
|
---|
| 255 | + OB_Jnorth=3*200,
|
---|
| 256 | + useOBCSprescribe=.TRUE.,
|
---|
| 257 | +#OBWuFile='uVel_obc.bin',
|
---|
| 258 | + OBNvFile='vVel_obc.bin',
|
---|
| 259 | + OBNtFile='temp_obc.bin',
|
---|
| 260 | + OBNsFile='salt_obc.bin',
|
---|
| 261 | + OBCS_u1_adv_T=1,
|
---|
| 262 | + OBCS_u1_adv_S=1,
|
---|
| 263 | +#--
|
---|
| 264 | + useOBCSsponge=.TRUE.,
|
---|
| 265 | + useLinearSponge = .TRUE.,
|
---|
| 266 | +#- default is =T for these specific switches:
|
---|
| 267 | +#OBCSsponge_VatNS=.TRUE.,
|
---|
| 268 | + OBCSsponge_UatNS=.FALSE.,
|
---|
| 269 | +#--
|
---|
| 270 | + OBCSprintDiags = .FALSE.,
|
---|
| 271 | + &
|
---|
| 272 | +
|
---|
| 273 | +# Orlanski parameters (skipped with #undef ALLOW_ORLANSKI)
|
---|
| 274 | +#&OBCS_PARM02
|
---|
| 275 | +#Cmax=0.45,
|
---|
| 276 | +#cVelTimeScale=1000.,
|
---|
| 277 | +#&
|
---|
| 278 | +
|
---|
| 279 | +# Sponge layer parameters
|
---|
| 280 | + &OBCS_PARM03
|
---|
| 281 | + spongeThickness = 10,
|
---|
| 282 | + Vrelaxobcsbound = 864000.,
|
---|
| 283 | + Urelaxobcsbound = 864000.,
|
---|
| 284 | + &
|
---|
| 285 | Index: ../trunk-jpl/test/MITgcm/input_4003/data.pkg
|
---|
| 286 | ===================================================================
|
---|
| 287 | --- ../trunk-jpl/test/MITgcm/input_4003/data.pkg (nonexistent)
|
---|
| 288 | +++ ../trunk-jpl/test/MITgcm/input_4003/data.pkg (revision 26664)
|
---|
| 289 | @@ -0,0 +1,6 @@
|
---|
| 290 | +# Packages (lines beginning "#" are comments)
|
---|
| 291 | + &PACKAGES
|
---|
| 292 | + useOBCS=.TRUE.,
|
---|
| 293 | + useShelfIce=.TRUE.,
|
---|
| 294 | + useDiagnostics = .TRUE.,
|
---|
| 295 | + &
|
---|
| 296 | Index: ../trunk-jpl/test/NightlyRun/test4003.m
|
---|
| 297 | ===================================================================
|
---|
| 298 | --- ../trunk-jpl/test/NightlyRun/test4003.m (revision 26663)
|
---|
| 299 | +++ ../trunk-jpl/test/NightlyRun/test4003.m (revision 26664)
|
---|
| 300 | @@ -4,13 +4,12 @@
|
---|
| 301 | %Script control parameters
|
---|
| 302 | steps=1:12;
|
---|
| 303 | steps=1:6;
|
---|
| 304 | -steps=7;
|
---|
| 305 | final_time=1/365;
|
---|
| 306 |
|
---|
| 307 | %To download and recompile MITgcm from scratch:
|
---|
| 308 | -%!rm -rf ${ISSM_DIR}/test/MITgcm/install
|
---|
| 309 | -%!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
|
---|
| 310 | -%!rm -rf Models
|
---|
| 311 | +!rm -rf ${ISSM_DIR}/test/MITgcm/install
|
---|
| 312 | +!rm -rf ${ISSM_DIR}/test/MITgcm/build/*
|
---|
| 313 | +!rm -rf Models
|
---|
| 314 |
|
---|
| 315 | %Organizer
|
---|
| 316 | !mkdir Models
|
---|
| 317 | @@ -20,15 +19,15 @@
|
---|
| 318 |
|
---|
| 319 | % {{{ Parameters:
|
---|
| 320 | if perform(org,'Parameters'),
|
---|
| 321 | - Nx=1; %number of longitude cells
|
---|
| 322 | + Nx=3; %number of longitude cells
|
---|
| 323 | Ny=200; %number of latitude cells
|
---|
| 324 | Nz=90; %number of MITgcm vertical cells
|
---|
| 325 | nPx=1; %number of MITgcm processes to use in x direction
|
---|
| 326 | - nPy=4; %number of MITgcm processes to use in y direction
|
---|
| 327 | - xgOrigin=1; %origin of longitude
|
---|
| 328 | - ygOrigin=1; %origin of latitude
|
---|
| 329 | - dLong=1; %longitude grid spacing
|
---|
| 330 | - dLat=1; %latitude grid spacing
|
---|
| 331 | + nPy=8; %number of MITgcm processes to use in y direction
|
---|
| 332 | + xgOrigin=0; %origin of longitude
|
---|
| 333 | + ygOrigin=-75.5; %origin of latitude
|
---|
| 334 | + dLong=.125; %longitude grid spacing
|
---|
| 335 | + dLat=dLong/16; %latitude grid spacing
|
---|
| 336 | delZ=10; %thickness of vertical levels
|
---|
| 337 | icefront_position_ratio=.75;
|
---|
| 338 | ice_thickness=1000;
|
---|
| 339 | @@ -46,7 +45,7 @@
|
---|
| 340 | mlTheta = -1.9; % open boundary potential temperature (deg C)
|
---|
| 341 | obcUvel = -0.1; % open boundary velocity (m/s)
|
---|
| 342 |
|
---|
| 343 | - MITgcmDeltaT=600; % MITgcm time step in seconds
|
---|
| 344 | + MITgcmDeltaT=450; % MITgcm time step in seconds
|
---|
| 345 | y2s=31536000; % year to seconds conversion, i.e., seconds per year
|
---|
| 346 |
|
---|
| 347 | % start_time and time_step
|
---|
| 348 | @@ -54,7 +53,7 @@
|
---|
| 349 | time_step=1/(365*24); % coupling interval in decimal years
|
---|
| 350 | async_step_MITgcm_multiplier=1; % used to reduce run time for MItgcm
|
---|
| 351 |
|
---|
| 352 | - % bedrock/bathymetry
|
---|
| 353 | + % bathymetry
|
---|
| 354 | hmax=1000;
|
---|
| 355 | trough_depth=200;
|
---|
| 356 | deltah=300;
|
---|
| 357 | @@ -75,26 +74,118 @@
|
---|
| 358 | if perform(org,'Bathymetry'),
|
---|
| 359 |
|
---|
| 360 | loaddata(org,'Parameters');
|
---|
| 361 | - %create lat,long
|
---|
| 362 | +
|
---|
| 363 | + v0 = 2e3;
|
---|
| 364 | + h0 = 800;
|
---|
| 365 | +
|
---|
| 366 | + hfacMin = 0.2;
|
---|
| 367 | +
|
---|
| 368 | + eos = 'jmd95z';
|
---|
| 369 | + prec = 'real*8';
|
---|
| 370 | +
|
---|
| 371 | + %create lat,lon
|
---|
| 372 | + latg = ygOrigin+[0:Ny-1]*dLat;
|
---|
| 373 | + latc = latg+dLat/2;
|
---|
| 374 | + long = xgOrigin+[0:Nx-1]*dLong;
|
---|
| 375 | + lonc = long+dLong/2;
|
---|
| 376 | + zC=-delZ*([1:Nz]-0.5);
|
---|
| 377 | + zF=-delZ*[0:Nz];
|
---|
| 378 | +
|
---|
| 379 | lat=(ygOrigin+dLat/2):dLat:(ygOrigin+Ny*dLat);
|
---|
| 380 | - long=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
|
---|
| 381 | - [lat long]=meshgrid(lat,long);
|
---|
| 382 | + lon=(xgOrigin+dLong/2):dLong:(xgOrigin+Nx*dLong);
|
---|
| 383 | + [lat lon]=meshgrid(lat,lon);
|
---|
| 384 |
|
---|
| 385 | - longmin=min(long(:));
|
---|
| 386 | - longmax=max(long(:));
|
---|
| 387 | + longmin=min(lon(:));
|
---|
| 388 | + longmax=max(lon(:));
|
---|
| 389 | latmin=min(lat(:));
|
---|
| 390 | latmax=max(lat(:));
|
---|
| 391 |
|
---|
| 392 | - %create bedrock/bathymetry:
|
---|
| 393 | - bedrock=zeros(Nx,Ny);
|
---|
| 394 | - bedrock=hmax-deltah*tanh(pi*(2*(lat-latmin)./(latmax-latmin)-1))+ ...
|
---|
| 395 | - trough_depth*cos(2*pi*long./(longmax-longmin));
|
---|
| 396 | +% Gravity
|
---|
| 397 | +gravity= 9.81;
|
---|
| 398 | +rhoConst= 1030;
|
---|
| 399 |
|
---|
| 400 | +% Nominal depth of model (meters)
|
---|
| 401 | +H = -900; %water depth in the ice shelf cavity
|
---|
| 402 | +Hmin = -600; % deepest point of cavern
|
---|
| 403 | +Hmax = -300; % shallowest point of cavern
|
---|
| 404 | +jEnd = Ny*3/4; % where ice-shelf ends
|
---|
| 405 | +dHdy = (Hmax-Hmin)/dLat/(jEnd-2); %Slope of ice shelf
|
---|
| 406 | +
|
---|
| 407 | + %create bathymetry:
|
---|
| 408 | + bathymetry = ones(Nx,Ny)*H;
|
---|
| 409 | + bathymetry(:,1) = 0;
|
---|
| 410 | +
|
---|
| 411 | %save bathymetry file for MITgcm
|
---|
| 412 | - bathymetry=bedrock-sea_level;
|
---|
| 413 | - savedata(org,lat,long,bathymetry);
|
---|
| 414 | + savedata(org,lat,lon,bathymetry);
|
---|
| 415 |
|
---|
| 416 | +j2=jEnd+1;
|
---|
| 417 | +hIce=bathymetry;
|
---|
| 418 | +for i=1:Nx
|
---|
| 419 | + hIce(i,:)=Hmin+dHdy*[-1:Ny-2]*dLat;
|
---|
| 420 | + hIce(i,1)=0; hIce(i,j2:Ny)=0;
|
---|
| 421 | end
|
---|
| 422 | +
|
---|
| 423 | +var=([1:Ny]-2)/(jEnd-2);
|
---|
| 424 | +dMdt_fy=bathymetry;
|
---|
| 425 | +for i=1:Nx
|
---|
| 426 | + dMdt_fy(i,:)=-cos(pi*var);
|
---|
| 427 | + dMdt_fy(i,1)=0; dMdt_fy(i,j2:Ny)=0;
|
---|
| 428 | +end
|
---|
| 429 | +
|
---|
| 430 | +regMsk=ones(Nx,Ny);
|
---|
| 431 | +regMsk(:,1)=0; regMsk(:,j2:Ny)=2;
|
---|
| 432 | +
|
---|
| 433 | +%- rate of change due to ice-stream dynamics
|
---|
| 434 | +rateDyn=rhoConst*0.1/3600; sfx='r02';
|
---|
| 435 | +
|
---|
| 436 | +dMdt=rateDyn*dMdt_fy;
|
---|
| 437 | +
|
---|
| 438 | +dz = delZ*ones(1,Nz);
|
---|
| 439 | +zgp1 = [0,cumsum(dz)];
|
---|
| 440 | +zc = .5*(zgp1(1:end-1)+zgp1(2:end));
|
---|
| 441 | +zg = zgp1(1:end-1);
|
---|
| 442 | +dz = diff(zgp1);
|
---|
| 443 | +
|
---|
| 444 | +T_sfc = -1.9;
|
---|
| 445 | +T_bot = 2;
|
---|
| 446 | +del_T = (T_bot - T_sfc)/(59*delZ);
|
---|
| 447 | +tref=0*dz;
|
---|
| 448 | +for k = 1:Nz;
|
---|
| 449 | + tref(k) = T_sfc + del_T*((k-20)*delZ);
|
---|
| 450 | + tref(k)= max(T_sfc,min(tref(k),T_bot));
|
---|
| 451 | +end
|
---|
| 452 | +
|
---|
| 453 | +S_sfc = 34.2;
|
---|
| 454 | +S_bot = 34.7;
|
---|
| 455 | +del_S = (S_bot - S_sfc)/(59*delZ);
|
---|
| 456 | +sref=0*dz;
|
---|
| 457 | +for k = 1:Nz;
|
---|
| 458 | + sref(k) = S_sfc + del_S*((k-20)*delZ);
|
---|
| 459 | + sref(k)= max(S_sfc,min(sref(k),S_bot));
|
---|
| 460 | +end
|
---|
| 461 | +pEOS=-rhoConst*gravity*zC; % in Pa
|
---|
| 462 | +pEOS=pEOS*1.e-4; % in dBar
|
---|
| 463 | +rhoAn=densjmd95(sref,tref,pEOS);
|
---|
| 464 | +rhoAn=rhoAn-rhoConst;
|
---|
| 465 | +
|
---|
| 466 | +pF=-rhoConst*gravity*zF*1.e-4; % in dBar
|
---|
| 467 | +rhoUp=densjmd95(sref,tref,pF(2:end));
|
---|
| 468 | +rhoDw=densjmd95(sref,tref,pF(1:Nz));
|
---|
| 469 | +dRho=rhoUp(1:Nz-1)-rhoDw(2:Nz);
|
---|
| 470 | +NSq=-gravity*dRho/delZ/rhoConst;
|
---|
| 471 | +
|
---|
| 472 | +mnV=min(NSq); MxV=max(NSq); Avr=mean(NSq);
|
---|
| 473 | +
|
---|
| 474 | +zax=[1:Nz];
|
---|
| 475 | +
|
---|
| 476 | +v1=2.5e-2;
|
---|
| 477 | +var=1+Nz-2*zax; var=var/(Nz-1);
|
---|
| 478 | +vobc=v1*var;
|
---|
| 479 | +
|
---|
| 480 | +rhoAvr=rhoConst-1.345;
|
---|
| 481 | +mIce=-rhoAvr*hIce;
|
---|
| 482 | +
|
---|
| 483 | +end
|
---|
| 484 | % }}}
|
---|
| 485 | % {{{ IceSheetGeometry:
|
---|
| 486 | if perform(org,'IceSheetGeometry'),
|
---|
| 487 | @@ -152,13 +243,52 @@
|
---|
| 488 | end
|
---|
| 489 | !\mkdir run
|
---|
| 490 | !\cp ../MITgcm/build/mitgcmuv run
|
---|
| 491 | - !\cp ../MITgcm/install/verification/shelfice_2d_remesh/input/* run
|
---|
| 492 | !\cp ../MITgcm/input_4003/* run
|
---|
| 493 | - !\cp ../MITgcm/input_4003/data_uncoupled run/data
|
---|
| 494 | !\cp ../MITgcm/input_4003/eedata_uncoupled run/eedata
|
---|
| 495 | cd run
|
---|
| 496 | +
|
---|
| 497 | + namF='bathy_flat.bin';
|
---|
| 498 | + fid=fopen(namF,'w','b'); fwrite(fid,bathymetry,prec);fclose(fid);
|
---|
| 499 | +
|
---|
| 500 | + namF='shelficeTopo.Lin.bin';
|
---|
| 501 | + fid=fopen(namF,'w','b'); fwrite(fid,hIce,prec);fclose(fid);
|
---|
| 502 | +
|
---|
| 503 | + namF='under_Ice_mask.bin';
|
---|
| 504 | + fid=fopen(namF,'w','b'); fwrite(fid,regMsk,prec);fclose(fid);
|
---|
| 505 | +
|
---|
| 506 | + namF=sprintf('%s.%s.%s','shelfice_dMdt',sfx,'bin');
|
---|
| 507 | + fid=fopen(namF,'w','b'); fwrite(fid,dMdt,prec);fclose(fid);
|
---|
| 508 | +
|
---|
| 509 | + namF='temp_obc.bin';
|
---|
| 510 | + tref=[tref; tref; tref];
|
---|
| 511 | + fid=fopen(namF,'w','b'); fwrite(fid,tref,prec);fclose(fid);
|
---|
| 512 | +
|
---|
| 513 | + namF='salt_obc.bin';
|
---|
| 514 | + sref=[sref; sref; sref];
|
---|
| 515 | + fid=fopen(namF,'w','b'); fwrite(fid,sref,prec);fclose(fid);
|
---|
| 516 | +
|
---|
| 517 | + namF='vVel_obc.bin';
|
---|
| 518 | + vobc=[vobc; vobc; vobc];
|
---|
| 519 | + fid=fopen(namF,'w','b'); fwrite(fid,vobc,prec);fclose(fid);
|
---|
| 520 | +
|
---|
| 521 | + var=zeros(Nx,Ny,Nz);
|
---|
| 522 | + for i=1:Nx, for j=1:Ny
|
---|
| 523 | + var(i,j,:)=tref(1,:);
|
---|
| 524 | + end, end
|
---|
| 525 | + namF='temp_ini.bin';
|
---|
| 526 | + fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
|
---|
| 527 | +
|
---|
| 528 | + for i=1:Nx, for j=1:Ny
|
---|
| 529 | + var(i,j,:)=sref(1,:);
|
---|
| 530 | + end, end
|
---|
| 531 | + namF='salt_ini.bin';
|
---|
| 532 | + fid=fopen(namF,'w','b'); fwrite(fid,var,prec);fclose(fid);
|
---|
| 533 | +
|
---|
| 534 | + namF='shelficeMass.Lin.bin';
|
---|
| 535 | + fid=fopen(namF,'w','b'); fwrite(fid,mIce,prec);fclose(fid);
|
---|
| 536 | +
|
---|
| 537 | eval(['!mpirun -np ' int2str(nPx*nPy) ' ./mitgcmuv']);
|
---|
| 538 | - cd ..
|
---|
| 539 | + cd ..
|
---|
| 540 | end
|
---|
| 541 | % }}}
|
---|
| 542 |
|
---|
| 543 | @@ -670,44 +800,3 @@
|
---|
| 544 | savemodel(org,md);
|
---|
| 545 | end
|
---|
| 546 | % }}}
|
---|
| 547 | -
|
---|
| 548 | -%Fields and tolerances to track changes
|
---|
| 549 | -%fnm=['run/SHICE_fwFlux.0000011400.data'];
|
---|
| 550 | -%melting_rate_1=readbin(fnm,[Nx Ny]);
|
---|
| 551 | -%fnm=['run/SHICE_fwFlux.0000011450.data'];
|
---|
| 552 | -%melting_rate_2=readbin(fnm,[Nx Ny]);
|
---|
| 553 | -%fnm=['run/SHICE_fwFlux.0000011500.data'];
|
---|
| 554 | -%melting_rate_3=readbin(fnm,[Nx Ny]);
|
---|
| 555 | -%fnm=['run/SHICE_fwFlux.0000011550.data'];
|
---|
| 556 | -%melting_rate_4=readbin(fnm,[Nx Ny]);
|
---|
| 557 | -%field_names ={'Base1','Melting1','Vx2','Vy2','Thickness2','Base2','MaskOceanLevelset2','FloatingiceMeltingRate2',...
|
---|
| 558 | -% 'Melting2','Vx3','Vy3','Thickness3','Base3','MaskOceanLevelset3','FloatingiceMeltingRate3',...
|
---|
| 559 | -% 'Melting3','Vx4','Vy4','Thickness4','Base4','MaskOceanLevelset4','FloatingiceMeltingRate4','Melting4'};
|
---|
| 560 | -%field_tolerances={2e-13,1e-13,7e-13,7e-13,1e-13,1e-13,1e-13,1e-12,...
|
---|
| 561 | -% 1e-13, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13, 1e-12,...
|
---|
| 562 | -% 1e-13, 1e-12, 1e-12, 1e-13, 1e-13, 1e-13, 1e-12, 1e-13 };
|
---|
| 563 | -%field_values={...
|
---|
| 564 | -% (md.results.TransientSolution(1).Base),...
|
---|
| 565 | -% (melting_rate_1(:)),...
|
---|
| 566 | -% (md.results.TransientSolution(2).Vx),...
|
---|
| 567 | -% (md.results.TransientSolution(2).Vy),...
|
---|
| 568 | -% (md.results.TransientSolution(2).Thickness),...
|
---|
| 569 | -% (md.results.TransientSolution(2).Base),...
|
---|
| 570 | -% (md.results.TransientSolution(2).MaskOceanLevelset),...
|
---|
| 571 | -% (md.results.TransientSolution(2).BasalforcingsFloatingiceMeltingRate),...
|
---|
| 572 | -% (melting_rate_2(:)),...
|
---|
| 573 | -% (md.results.TransientSolution(3).Vx),...
|
---|
| 574 | -% (md.results.TransientSolution(3).Vy),...
|
---|
| 575 | -% (md.results.TransientSolution(3).Thickness),...
|
---|
| 576 | -% (md.results.TransientSolution(3).Base),...
|
---|
| 577 | -% (md.results.TransientSolution(3).MaskOceanLevelset),...
|
---|
| 578 | -% (md.results.TransientSolution(3).BasalforcingsFloatingiceMeltingRate),...
|
---|
| 579 | -% (melting_rate_3(:)),...
|
---|
| 580 | -% (md.results.TransientSolution(4).Vx),...
|
---|
| 581 | -% (md.results.TransientSolution(4).Vy),...
|
---|
| 582 | -% (md.results.TransientSolution(4).Thickness),...
|
---|
| 583 | -% (md.results.TransientSolution(4).Base),...
|
---|
| 584 | -% (md.results.TransientSolution(4).MaskOceanLevelset),...
|
---|
| 585 | -% (md.results.TransientSolution(4).BasalforcingsFloatingiceMeltingRate),...
|
---|
| 586 | -% (melting_rate_4(:)),...
|
---|
| 587 | -% };
|
---|