- Timestamp:
- 2021-05-07T13:44:43+02:00 (4 years ago)
- Location:
- NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling
- Files:
-
- 2 deleted
- 47 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_top_cfg
r14032 r14806 110 110 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 111 111 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 112 sn_trcsbc(5) = 'dust.orca.new' , -1 , 'dustpo4' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''113 sn_trcsbc(7) = 'dust.orca.new' , -1 , 'dustsi' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''114 sn_trcsbc(14) = 'dust.orca.new' , -1 , 'dustfer' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''115 sn_trcsbc(23) = 'ndeposition.orca', -12 , 'ndep 2' , .false. , .true. , 'yearly' , 'weights_2D_r360x180_bilin.nc' , '' , ''112 sn_trcsbc(5) = 'dust.orca.new' , -1 , 'dustpo4' , .true. , .true. , 'yearly' , '' , '' , '' 113 sn_trcsbc(7) = 'dust.orca.new' , -1 , 'dustsi' , .true. , .true. , 'yearly' , '' , '' , '' 114 sn_trcsbc(14) = 'dust.orca.new' , -1 , 'dustfer' , .true. , .true. , 'yearly' , '' , '' , '' 115 sn_trcsbc(23) = 'ndeposition.orca', -12 , 'ndep' , .false. , .true. , 'yearly' , '' , '' , '' 116 116 rn_trsfac(5) = 8.264e-02 ! ( 0.021 / 31. * 122 ) 117 117 rn_trsfac(7) = 3.313e-01 ! ( 8.8 / 28.1 ) -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/ORCA2_OFF_PISCES/EXPREF/namelist_top_cfg
r14032 r14806 110 110 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 111 111 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 112 sn_trcsbc(5) = 'dust.orca.new' , -1 , 'dustpo4' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''113 sn_trcsbc(7) = 'dust.orca.new' , -1 , 'dustsi' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''114 sn_trcsbc(14) = 'dust.orca.new' , -1 , 'dustfer' , .true. , .true. , 'yearly' , ' weights_2D_r360x180_bilin.nc' , '' , ''115 sn_trcsbc(23) = 'ndeposition.orca', -12 , 'ndep 2' , .false. , .true. , 'yearly' , 'weights_2D_r360x180_bilin.nc' , '' , ''112 sn_trcsbc(5) = 'dust.orca.new' , -1 , 'dustpo4' , .true. , .true. , 'yearly' , '' , '' , '' 113 sn_trcsbc(7) = 'dust.orca.new' , -1 , 'dustsi' , .true. , .true. , 'yearly' , '' , '' , '' 114 sn_trcsbc(14) = 'dust.orca.new' , -1 , 'dustfer' , .true. , .true. , 'yearly' , '' , '' , '' 115 sn_trcsbc(23) = 'ndeposition.orca', -12 , 'ndep' , .false. , .true. , 'yearly' , '' , '' , '' 116 116 rn_trsfac(5) = 8.264e-02 ! ( 0.021 / 31. * 122 ) 117 117 rn_trsfac(7) = 3.313e-01 ! ( 8.8 / 28.1 ) -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/SHARED/field_def_nemo-ice.xml
r14072 r14806 178 178 <field id="hfxcndtop" long_name="Net conductive heat flux at the ice surface (neg = ice cooling)" standard_name="conductive_heat_flux_at_sea_ice_surface" unit="W/m2" /> 179 179 <field id="hfxcndbot" long_name="Net conductive heat flux at the ice bottom (neg = ice cooling)" standard_name="conductive_heat_flux_at_sea_ice_bottom" unit="W/m2" /> 180 <field id="hfxmelt" long_name="Melt heat flux at the ice surface" unit="W/m2" /> 181 <field id="hfxldmelt" long_name="Heat flux in the lead for ice melting" unit="W/m2" /> 182 <field id="hfxldgrow" long_name="Heat flux in the lead for ice growth" unit="W/m2" /> 180 183 181 184 <!-- diags --> … … 345 348 <field id="SH_icearea" long_name="Sea ice area South" standard_name="sea_ice_area_s" unit="1e6_km2" /> 346 349 347 <!-- available with ln_icediaout --> 350 <!-- available with ln_icediahsb --> 351 <!-- global forcings --> 348 352 <field id="ibgfrcvoltop" long_name="global mean ice/snow forcing at interface ice/snow-atm (volume equivalent ocean volume)" unit="km3" /> 349 353 <field id="ibgfrcvolbot" long_name="global mean ice/snow forcing at interface ice/snow-ocean (volume equivalent ocean volume)" unit="km3" /> … … 354 358 <field id="ibgfrchfxbot" long_name="global mean heat flux below ice (on top of ocean) " unit="W/m2" /> 355 359 360 <!-- global drifts (conservation checks) --> 356 361 <field id="ibgvolume" long_name="drift in ice/snow volume (equivalent ocean volume)" unit="km3" /> 357 362 <field id="ibgsaltco" long_name="drift in ice salt content (equivalent ocean volume)" unit="pss*km3" /> … … 359 364 <field id="ibgheatfx" long_name="drift in ice/snow heat flux" unit="W/m2" /> 360 365 366 <!-- global contents --> 361 367 <field id="ibgvol_tot" long_name="global mean ice volume" unit="km3" /> 362 368 <field id="sbgvol_tot" long_name="global mean snow volume" unit="km3" /> 363 369 <field id="ibgarea_tot" long_name="global mean ice area" unit="km2" /> 364 <field id="ibgsalt_tot" long_name="global mean ice salt content" unit=" 1e-3*km3"/>370 <field id="ibgsalt_tot" long_name="global mean ice salt content" unit="pss*km3" /> 365 371 <field id="ibgheat_tot" long_name="global mean ice heat content" unit="1e20J" /> 366 372 <field id="sbgheat_tot" long_name="global mean snow heat content" unit="1e20J" /> 373 <field id="ipbgvol_tot" long_name="global mean ice pond volume" unit="km3" /> 374 <field id="ilbgvol_tot" long_name="global mean ice pond lid volume" unit="km3" /> 367 375 368 376 </field_group> … … 496 504 </field_group> 497 505 506 <!--============================--> 507 <!-- CONSERVATION diagnostics --> 508 <!--============================--> 509 498 510 <field_group id="ICE_globalbudget" grid_ref="grid_scalar" > 499 <!-- global contents -->500 511 <field field_ref="ibgvol_tot" name="ibgvol_tot" /> 501 512 <field field_ref="sbgvol_tot" name="sbgvol_tot" /> … … 504 515 <field field_ref="ibgheat_tot" name="ibgheat_tot" /> 505 516 <field field_ref="sbgheat_tot" name="sbgheat_tot" /> 506 507 <!-- global drifts (conservation checks) --> 508 <field field_ref="ibgvolume" name="ibgvolume" /> 509 <field field_ref="ibgsaltco" name="ibgsaltco" /> 510 <field field_ref="ibgheatco" name="ibgheatco" /> 511 <field field_ref="ibgheatfx" name="ibgheatfx" /> 512 513 <!-- global forcings --> 514 <field field_ref="ibgfrcvoltop" name="ibgfrcvoltop" /> 515 <field field_ref="ibgfrcvolbot" name="ibgfrcvolbot" /> 516 <field field_ref="ibgfrctemtop" name="ibgfrctemtop" /> 517 <field field_ref="ibgfrctembot" name="ibgfrctembot" /> 518 <field field_ref="ibgfrcsal" name="ibgfrcsal" /> 519 <field field_ref="ibgfrchfxtop" name="ibgfrchfxtop" /> 520 <field field_ref="ibgfrchfxbot" name="ibgfrchfxbot" /> 521 </field_group> 522 523 517 <field field_ref="ipbgvol_tot" name="ipbgvol_tot" /> 518 <field field_ref="ilbgvol_tot" name="ilbgvol_tot" /> 519 </field_group> 520 521 <field_group id="ICE_budget" grid_ref="grid_T_2D" > 522 <!-- general --> 523 <field field_ref="icemask" name="simsk" /> 524 <field field_ref="iceconc" name="siconc" /> 525 <field field_ref="icetemp" name="sitemp" /> 526 <field field_ref="snwtemp" name="sntemp" /> 527 <field field_ref="icettop" name="sittop" /> 528 <field field_ref="icetbot" name="sitbot" /> 529 <!-- heat fluxes --> 530 <field field_ref="qt_oce_ai" name="qt_oce_ai" /> 531 <field field_ref="qt_atm_oi" name="qt_atm_oi" /> 532 <field field_ref="qtr_ice_top" name="qtr_ice_top"/> 533 <field field_ref="qtr_ice_bot" name="qtr_ice_bot"/> 534 <field field_ref="qt_ice" name="qt_ice" /> 535 <field field_ref="qsr_ice" name="qsr_ice" /> 536 <field field_ref="qns_ice" name="qns_ice" /> 537 <field field_ref="qemp_ice" name="qemp_ice" /> 538 <field field_ref="hfxsub" name="hfxsub" /> 539 <field field_ref="hfxspr" name="hfxspr" /> 540 <field field_ref="hfxcndtop" name="hfxcndtop" /> 541 <field field_ref="hfxcndbot" name="hfxcndbot" /> 542 <field field_ref="hfxsensib" name="hfxsensib" /> 543 <field field_ref="hfxmelt" name="hfxmelt" /> 544 <field field_ref="hfxldmelt" name="hfxldmelt" /> 545 <field field_ref="hfxldgrow" name="hfxldgrow" /> 546 <!-- salt fluxes --> 547 <field field_ref="sfxice" name="sfxice" /> 548 <!-- mass fluxes --> 549 <field field_ref="vfxice" name="vfxice" /> 550 <field field_ref="vfxsnw" name="vfxsnw" /> 551 <field field_ref="vfxpnd" name="vfxpnd" /> 552 <field field_ref="vfxsub" name="vfxsub" /> 553 <field field_ref="vfxsub_err" name="vfxsub_err" /> 554 <field field_ref="vfxsnw_sub" name="vfxsnw_sub" /> 555 <field field_ref="vfxsnw_pre" name="vfxsnw_pre" /> 556 </field_group> 557 558 524 559 <!--============================--> 525 560 <!-- SIMIP sea ice field groups --> -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/SHARED/field_def_nemo-innerttrc.xml
r14072 r14806 43 43 <field id="C14Age" long_name="Radiocarbon age" unit="yr" grid_ref="grid_T_3D" /> 44 44 <field id="RAge" long_name="Reservoir Age" unit="yr" /> 45 <field id="qtr_ C14" long_name="Air-sea flux of C14" unit="1/m2/s" />46 <field id="qint_ C14" long_name="Cumulative air-sea flux of C14" unit="1/m2" />45 <field id="qtr_c14" long_name="Air-sea flux of C14" unit="1/m2/s" /> 46 <field id="qint_c14" long_name="Cumulative air-sea flux of C14" unit="1/m2" /> 47 47 <field id="AtmCO2" long_name="Global atmospheric CO2" unit="ppm" /> 48 48 <field id="AtmC14" long_name="Global atmospheric DeltaC14" unit="permil" /> -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/SHARED/field_def_nemo-oce.xml
r14224 r14806 241 241 <field id="mf_mf" long_name="mass flux" standard_name="mf_mass_flux" unit="m" grid_ref="grid_T_3D" /> 242 242 243 <!-- fluxes from damping --> 244 <field id="sflx_dmp_cea" long_name="salt flux due to damping" standard_name="salt_flux_due_to_damping" unit="g/m2/s" /> 245 <field id="hflx_dmp_cea" long_name="heat flux due to damping" standard_name="heat_flux_due_to_damping" unit="W/m2" /> 246 243 247 </field_group> <!-- grid_T --> 244 248 … … 375 379 <field id="emp_oce" long_name="Evap minus Precip over ocean" standard_name="evap_minus_precip_over_sea_water" unit="kg/m2/s" /> 376 380 <field id="emp_ice" long_name="Evap minus Precip over ice" standard_name="evap_minus_precip_over_sea_ice" unit="kg/m2/s" /> 377 <field id="saltflx" long_name="Downward salt flux" unit=" 1e-3/m2/s"/>381 <field id="saltflx" long_name="Downward salt flux" unit="g/m2/s" /> 378 382 <field id="fmmflx" long_name="Water flux due to freezing/melting" unit="kg/m2/s" /> 379 383 <field id="snowpre" long_name="Snow precipitation" standard_name="snowfall_flux" unit="kg/m2/s" /> … … 475 479 <field id="hflx_rain_cea" long_name="heat flux due to rainfall" standard_name="temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water" unit="W/m2" /> 476 480 <field id="hflx_evap_cea" long_name="heat flux due to evaporation" standard_name="temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water" unit="W/m2" /> 481 <field id="hflx_subl_cea" long_name="heat flux due to sublimation (from atm. forcings)" standard_name="temperature_flux_due_to_sublimation_expressed_as_heat_flux_out_of_sea_ice" unit="W/m2" /> 477 482 <field id="hflx_prec_cea" long_name="heat flux due to all precip" standard_name="temperature_flux_due_to_all_precip_expressed_as_heat_flux_into_sea_water" unit="W/m2" /> 478 483 <field id="hflx_snow_cea" long_name="heat flux due to snow falling" standard_name="heat_flux_onto_ocean_and_ice_due_to_snow_thermodynamics" unit="W/m2" /> … … 481 486 <field id="hflx_ice_cea" long_name="heat flux due to ice thermodynamics" standard_name="heat_flux_into_sea_water_due_to_sea_ice_thermodynamics" unit="W/m2" /> 482 487 <field id="hflx_rnf_cea" long_name="heat flux due to runoffs" standard_name="temperature_flux_due_to_runoff_expressed_as_heat_flux_into_sea_water" unit="W/m2" /> 488 <field id="sflx_rnf_cea" long_name="salt flux due to runoffs" standard_name="salt_flux_due_to_runoffs" unit="g/m2/s" /> 483 489 <field id="hflx_cal_cea" long_name="heat flux due to calving" standard_name="heat_flux_into_sea_water_due_to_calving" unit="W/m2" /> 484 490 <field id="hflx_icb_cea" long_name="heat flux due to iceberg" standard_name="heat_flux_into_sea_water_due_to_icebergs" unit="W/m2" /> … … 490 496 <field id="ticemel_cea" long_name="Rate of Melt at Upper Surface of Sea Ice (cell average)" standard_name="tendency_of_sea_ice_amount_due_to_surface_melting" unit="kg/m2/s" /> 491 497 498 <!-- fluxes from relaxation and freshwater budget --> 499 <field id="sflx_ssr_cea" long_name="salt flux due to restoring" standard_name="salt_flux_due_to_restoring" unit="g/m2/s" /> 500 <field id="hflx_ssr_cea" long_name="heat flux due to restoring" standard_name="heat_flux_due_to_restoring" unit="W/m2" /> 501 <field id="vflx_ssr_cea" long_name="volume flux due to restoring" standard_name="volume_flux_due_to_restoring" unit="kg/m2/s" /> 502 <field id="hflx_fwb_cea" long_name="heat flux due to fwb" standard_name="heat_flux_due_to_fwb" unit="W/m2" /> 503 <field id="vflx_fwb_cea" long_name="volume flux due to fwb" standard_name="volume_flux_due_to_fwb" unit="kg/m2/s" /> 504 492 505 <!-- ice field (nn_ice=1) --> 493 506 <field id="ice_cover" long_name="Ice fraction" standard_name="sea_ice_area_fraction" unit="1" /> … … 1253 1266 </field_group> 1254 1267 1268 <!--============================--> 1269 <!-- CONSERVATION diagnostics --> 1270 <!--============================--> 1271 <!-- BE CAREFUL: this group (OCE_budget) cannot be called in file_def.xml as such (unless nn_fsbc=1) 1272 If doing so, the last output (in time) of the netcdf file 1273 would be corrupted (NaN values). However calling each of these 1274 variables directly in the file_def.xml works. It is probably 1275 because there is a mix up of sbc variables with other variables 1276 --> 1277 <field_group id="OCE_budget" grid_ref="grid_T_2D" > 1278 <field field_ref="sst" name="tos" /> 1279 <field field_ref="sss" name="sos" /> 1280 <field field_ref="ssh" name="zos" /> 1281 <!-- mass flux --> 1282 <field field_ref="empmr" name="empmr" /> 1283 <field field_ref="runoffs" name="runoffs" /> 1284 <field field_ref="emp_ice" name="emp_ice" /> 1285 <field field_ref="emp_oce" name="emp_oce" /> 1286 <field field_ref="iceshelf_cea" name="iceshelf" /> 1287 <field field_ref="iceberg_cea" name="iceberg" /> 1288 <field field_ref="calving_cea" name="calving" /> 1289 <!-- <field field_ref="berg_floating_melt" name="calving" /> --> 1290 <field field_ref="precip" name="precip" /> 1291 <field field_ref="snowpre" name="snowpre" /> 1292 <field field_ref="rain" name="rain" /> 1293 <field field_ref="evap_ao_cea" name="evap_ao" /> 1294 <field field_ref="subl_ai_cea" name="subl_ai" /> 1295 <field field_ref="snow_ai_cea" name="snow_ai" /> 1296 <field field_ref="snow_ao_cea" name="snow_ao" /> 1297 <!-- heat flux --> 1298 <field field_ref="qsr" name="qsr" /> 1299 <field field_ref="qns" name="qns" /> 1300 <field field_ref="qt_oce" name="qt_oce" /> 1301 <field field_ref="qemp_oce" name="qemp_oce" /> 1302 <field field_ref="hflx_rain_cea" name="hflx_rain" /> 1303 <field field_ref="hflx_evap_cea" name="hflx_evap" /> 1304 <field field_ref="hflx_snow_cea" name="hflx_snow" /> 1305 <field field_ref="hflx_snow_ao_cea" name="hflx_snow_ao" /> 1306 <field field_ref="hflx_snow_ai_cea" name="hflx_snow_ai" /> 1307 <field field_ref="hflx_rnf_cea" name="hflx_rnf" /> 1308 <field field_ref="hflx_icb_cea" name="hflx_icb" /> 1309 <field field_ref="hflx_isf_cea" name="hflx_isf" /> 1310 <!-- salt flux (includes ssr) --> 1311 <field field_ref="saltflx" name="saltflx" /> 1312 <field field_ref="sflx_rnf_cea" name="sflx_rnf" /> 1313 <!-- relaxation and damping --> 1314 <field field_ref="hflx_ssr_cea" name="hflx_ssr" /> 1315 <field field_ref="vflx_ssr_cea" name="vflx_ssr" /> 1316 <field field_ref="sflx_ssr_cea" name="sflx_ssr" /> 1317 <field field_ref="hflx_dmp_cea" name="hflx_dmp" /> 1318 <field field_ref="sflx_dmp_cea" name="sflx_dmp" /> 1319 <field field_ref="hflx_fwb_cea" name="hflx_fwb" /> 1320 <field field_ref="vflx_fwb_cea" name="vflx_fwb" /> 1321 </field_group> 1322 1323 <field_group id="OCE_globalbudget" grid_ref="grid_scalar" > 1324 <field field_ref="voltot" name="scvoltot" /> 1325 <field field_ref="saltot" name="scsaltot" /> 1326 <field field_ref="temptot" name="sctemtot" /> 1327 </field_group> 1328 1329 1255 1330 </field_definition> -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/apdx_DOMAINcfg.tex
r14574 r14806 42 42 43 43 \begin{listing} 44 % \nlst{namdom_domcfg}45 44 \begin{forlines} 46 45 !----------------------------------------------------------------------- … … 409 408 410 409 \begin{listing} 411 % \nlst{namzgr_sco_domcfg}412 410 \caption{\forcode{&namzgr_sco_domcfg}} 413 411 \label{lst:namzgr_sco_domcfg} -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/apdx_triads.tex
r14257 r14806 2 2 3 3 \begin{document} 4 5 %% Local cmds6 \newcommand{\rML}[1][i]{\ensuremath{_{\mathrm{ML}\,#1}}}7 \newcommand{\rMLt}[1][i]{\tilde{r}_{\mathrm{ML}\,#1}}8 %% Move to ../../global/new_cmds.tex to avoid error with \listoffigures9 %\newcommand{\triad}[6][]{\ensuremath{{}_{#2}^{#3}{\mathbb{#4}_{#1}}_{#5}^{\,#6}}10 \newcommand{\triadd}[5]{\ensuremath{{}_{#1}^{#2}{\mathbb{#3}}_{#4}^{\,#5}}}11 \newcommand{\triadt}[5]{\ensuremath{{}_{#1}^{#2}{\tilde{\mathbb{#3}}}_{#4}^{\,#5}}}12 \newcommand{\rtriad}[2][]{\ensuremath{\triad[#1]{i}{k}{#2}{i_p}{k_p}}}13 \newcommand{\rtriadt}[1]{\ensuremath{\triadt{i}{k}{#1}{i_p}{k_p}}}14 4 15 5 \chapter{Iso-Neutral Diffusion and Eddy Advection using Triads} … … 34 24 35 25 %% ================================================================================================= 36 \section[Choice of \forcode{namtra \_ldf} namelist parameters]{Choice of \protect\nam{tra_ldf}{tra\_ldf} namelist parameters}26 \section[Choice of \forcode{namtra_ldf} namelist parameters]{Choice of \protect\nam{tra_ldf}{tra\_ldf} namelist parameters} 37 27 38 28 Two scheme are available to perform the iso-neutral diffusion. -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_DIU.tex
r14257 r14806 50 50 51 51 This namelist contains only two variables: 52 52 53 \begin{description} 53 54 \item [{\np{ln_diurnal}{ln\_diurnal}}] A logical switch for turning on/off both the cool skin and warm layer. -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_LBC.tex
r14574 r14806 168 168 169 169 %% ================================================================================================= 170 \subsection{Closed, cyclic (\forcode{l \_Iperio,l\_jperio})}170 \subsection{Closed, cyclic (\forcode{l_Iperio,l_jperio})} 171 171 \label{subsec:LBC_jperio012} 172 172 173 173 The choice of closed or cyclic model domain boundary condition is made by 174 setting \forcode{l \_Iperio,l\_jperio} to true or false in namelist \nam{cfg}{cfg}.174 setting \forcode{l_Iperio,l_jperio} to true or false in namelist \nam{cfg}{cfg}. 175 175 Each time such a boundary condition is needed, it is set by a call to routine \mdl{lbclnk}. 176 176 The computation of momentum and tracer trends proceeds from $i=2$ to $i=jpi-1$ and from $j=2$ to $j=jpj-1$, … … 181 181 \begin{description} 182 182 183 \item [For closed boundary (\forcode{l \_Iperio = .false.,l\_jperio = .false.})], solid walls are imposed at all model boundaries:183 \item [For closed boundary (\forcode{l_Iperio = .false.,l_jperio = .false.})], solid walls are imposed at all model boundaries: 184 184 first and last rows and columns are set to zero. 185 185 186 \item [For cyclic east-west boundary (\forcode{l \_Iperio = .true.,l\_jperio = .false.})], first and last rows are set to zero (closed) whilst the first column is set to186 \item [For cyclic east-west boundary (\forcode{l_Iperio = .true.,l_jperio = .false.})], first and last rows are set to zero (closed) whilst the first column is set to 187 187 the value of the last-but-one column and the last column to the value of the second one 188 188 (\autoref{fig:LBC_jperio}-a). 189 189 Whatever flows out of the eastern (western) end of the basin enters the western (eastern) end. 190 190 191 \item [For cyclic north-south boundary (\forcode{l \_Iperio = .false.,l\_jperio = .true.})], first and last columns are set to zero (closed) whilst the first row is set to191 \item [For cyclic north-south boundary (\forcode{l_Iperio = .false.,l_jperio = .true.})], first and last columns are set to zero (closed) whilst the first row is set to 192 192 the value of the last-but-one row and the last row to the value of the second one 193 193 (\autoref{fig:LBC_jperio}-a). 194 194 Whatever flows out of the northern (southern) end of the basin enters the southern (northern) end. 195 195 196 \item [Bi-cyclic east-west and north-south boundary (\forcode{l \_Iperio = .true.,l\_jperio = .true.})] combines cases 1 and 2.196 \item [Bi-cyclic east-west and north-south boundary (\forcode{l_Iperio = .true.,l_jperio = .true.})] combines cases 1 and 2. 197 197 198 198 \end{description} … … 207 207 208 208 %% ================================================================================================= 209 \subsection{North-fold (\forcode{l \_NFold = .true.})}209 \subsection{North-fold (\forcode{l_NFold = .true.})} 210 210 \label{subsec:LBC_north_fold} 211 211 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_OBS.tex
r14257 r14806 913 913 914 914 \begin{listing} 915 % \nlst{namsao}916 915 \begin{forlines} 917 916 !---------------------------------------------------------------------- -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_SBC.tex
r14574 r14806 975 975 M2, S2, N2, K2, nu2, mu2, 2N2, L2, T2, eps2, lam2, R2, M3, MKS2, MN4, MS4, M4, 976 976 N4, S4, M6, and M8; see file \textit{tide.h90} and \mdl{tide\_mod} for further 977 information and references\footnote{As a legacy option \np{ln_tide_var} can be977 information and references\footnote{As a legacy option \np{ln_tide_var}{ln\_tide\_var} can be 978 978 set to \forcode{0}, in which case the 19 tidal constituents (M2, N2, 2N2, S2, 979 979 K2, K1, O1, Q1, P1, M4, Mf, Mm, Msqm, Mtm, S1, MU2, NU2, L2, and T2; see file … … 1197 1197 1198 1198 \np{ln_isfcav_mlt}{ln\_isfcav\_mlt}\forcode{ = .true.} activates the ocean/ice shelf thermodynamics interactions at the ice shelf/ocean interface. 1199 If \np{ln_isfcav_mlt} \forcode{ = .false.}, thermodynamics interactions are desctivated but the ocean dynamics inside the cavity is still active.1199 If \np{ln_isfcav_mlt}{ln\_isfcav\_mlt}\forcode{ = .false.}, thermodynamics interactions are desctivated but the ocean dynamics inside the cavity is still active. 1200 1200 The logical flag \np{ln_isfcav}{ln\_isfcav} control whether or not the ice shelf cavities are closed. \np{ln_isfcav}{ln\_isfcav} is not defined in the namelist but in the domcfg.nc input file.\\ 1201 1201 1202 1202 3 options are available to represent to ice-shelf/ocean fluxes at the interface: 1203 1203 \begin{description} 1204 \item[\np{cn_isfcav_mlt} \forcode{ = 'spe'}]:1204 \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = 'spe'}]: 1205 1205 The fresh water flux is specified by a forcing fields \np{sn_isfcav_fwf}{sn\_isfcav\_fwf}. Convention of the input file is: positive toward the ocean (i.e. positive for melting and negative for freezing). 1206 1206 The latent heat fluxes is derived from the fresh water flux. 1207 1207 The heat content flux is derived from the fwf flux assuming a temperature set to the freezing point in the top boundary layer (\np{rn_htbl}{rn\_htbl}) 1208 1208 1209 \item[\np{cn_isfcav_mlt} \forcode{ = 'oasis'}]:1209 \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = 'oasis'}]: 1210 1210 The \forcode{'oasis'} is a prototype of what could be a method to spread precipitation on Antarctic ice sheet as ice shelf melt inside the cavity when a coupled model Atmosphere/Ocean is used. 1211 1211 It has not been tested and therefore the model will stop if you try to use it. 1212 1212 Actions will be undertake in 2020 to build a comprehensive interface to do so for Greenland, Antarctic and ice shelf (cav), ice shelf (par), icebergs, subglacial runoff and runoff. 1213 1213 1214 \item[\np{cn_isfcav_mlt} \forcode{ = '2eq'}]:1214 \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '2eq'}]: 1215 1215 The heat flux and the fresh water flux (negative for melting) resulting from ice shelf melting/freezing are parameterized following \citet{Grosfeld1997}. 1216 1216 This formulation is based on a balance between the vertical diffusive heat flux across the ocean top boundary layer (\autoref{eq:ISOMIP1}) … … 1231 1231 and $\gamma$ the thermal exchange coefficient. 1232 1232 1233 \item[\np{cn_isfcav_mlt} \forcode{ = '3eq'}]:1233 \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '3eq'}]: 1234 1234 For realistic studies, the heat and freshwater fluxes are parameterized following \citep{Jenkins2001}. This formulation is based on three equations: 1235 1235 a balance between the vertical diffusive heat flux across the boundary layer … … 1287 1287 If \np{rn_htbl}{rn\_htbl} smaller than top $e_{3}t$, the top boundary layer thickness is set to the top cell thickness.\\ 1288 1288 1289 Each melt formula (\np{cn_isfcav_mlt} \forcode{ = '3eq'} or \np{cn_isfcav_mlt}\forcode{ = '2eq'}) depends on an exchange coeficient ($\Gamma^{T,S}$) between the ocean and the ice.1289 Each melt formula (\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '3eq'} or \np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '2eq'}) depends on an exchange coeficient ($\Gamma^{T,S}$) between the ocean and the ice. 1290 1290 Below, the exchange coeficient $\Gamma^{T}$ and $\Gamma^{S}$ are respectively defined by \np{rn_gammat0}{rn\_gammat0} and \np{rn_gammas0}{rn\_gammas0}. 1291 1291 There are 3 different ways to compute the exchange velocity: 1292 1292 1293 1293 \begin{description} 1294 \item[\np{cn_gammablk} \forcode{='spe'}]:1294 \item[\np{cn_gammablk}{cn\_gammablk}\forcode{='spe'}]: 1295 1295 The salt and heat exchange coefficients are constant and defined by: 1296 1296 \[ … … 1302 1302 This is the recommended formulation for ISOMIP. 1303 1303 1304 \item[\np{cn_gammablk} \forcode{='vel'}]:1304 \item[\np{cn_gammablk}{cn\_gammablk}\forcode{='vel'}]: 1305 1305 The salt and heat exchange coefficients are velocity dependent and defined as 1306 1306 \[ … … 1313 1313 See \citet{jenkins.nicholls.ea_JPO10} for all the details on this formulation. It is the recommended formulation for realistic application and ISOMIP+/MISOMIP configuration. 1314 1314 1315 \item[\np{cn_gammablk} \forcode{'vel\_stab'}]:1315 \item[\np{cn_gammablk}{cn\_gammablk}\forcode{'vel\_stab'}]: 1316 1316 The salt and heat exchange coefficients are velocity and stability dependent and defined as: 1317 1317 \[ … … 1329 1329 \begin{description} 1330 1330 1331 \item[\np{cn_isfpar_mlt} \forcode{ = 'bg03'}]:1331 \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'bg03'}]: 1332 1332 The ice shelf cavities are not represented. 1333 1333 The fwf and heat flux are computed using the \citet{beckmann.goosse_OM03} parameterisation of isf melting. 1334 1334 The fluxes are distributed along the ice shelf edge between the depth of the average grounding line (GL) 1335 1335 (\np{sn_isfpar_zmax}{sn\_isfpar\_zmax}) and the base of the ice shelf along the calving front 1336 (\np{sn_isfpar_zmin}{sn\_isfpar\_zmin}) as in (\np{cn_isfpar_mlt} \forcode{ = 'spe'}).1336 (\np{sn_isfpar_zmin}{sn\_isfpar\_zmin}) as in (\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'spe'}). 1337 1337 The effective melting length (\np{sn_isfpar_Leff}{sn\_isfpar\_Leff}) is read from a file. 1338 1338 This parametrisation has not been tested since a while and based on \citet{Favier2019}, 1339 1339 this parametrisation should probably not be used. 1340 1340 1341 \item[\np{cn_isfpar_mlt} \forcode{ = 'spe'}]:1341 \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'spe'}]: 1342 1342 The ice shelf cavity is not represented. 1343 1343 The fwf (\np{sn_isfpar_fwf}{sn\_isfpar\_fwf}) is prescribed and distributed along the ice shelf edge between … … 1346 1346 The heat flux ($Q_h$) is computed as $Q_h = fwf \times L_f$. 1347 1347 1348 \item[\np{cn_isfpar_mlt} \forcode{ = 'oasis'}]:1348 \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'oasis'}]: 1349 1349 The \forcode{'oasis'} is a prototype of what could be a method to spread precipitation on Antarctic ice sheet as ice shelf melt inside the cavity when a coupled model Atmosphere/Ocean is used. 1350 1350 It has not been tested and therefore the model will stop if you try to use it. … … 1353 1353 \end{description} 1354 1354 1355 \np{cn_isfcav_mlt} \forcode{ = '2eq'}, \np{cn_isfcav_mlt}\forcode{ = '3eq'} and \np{cn_isfpar_mlt}\forcode{ = 'bg03'} compute a melt rate based on1355 \np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '2eq'}, \np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '3eq'} and \np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'bg03'} compute a melt rate based on 1356 1356 the water mass properties, ocean velocities and depth. 1357 1357 The resulting fluxes are thus highly dependent of the model resolution (horizontal and vertical) and 1358 1358 realism of the water masses onto the shelf.\\ 1359 1359 1360 \np{cn_isfcav_mlt} \forcode{ = 'spe'} and \np{cn_isfpar_mlt}\forcode{ = 'spe'} read the melt rate from a file.1360 \np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = 'spe'} and \np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'spe'} read the melt rate from a file. 1361 1361 You have total control of the fwf forcing. 1362 1362 This can be useful if the water masses on the shelf are not realistic or … … 1437 1437 \end{description} 1438 1438 1439 If \np{ln_iscpl} \forcode{ = .true.}, the isf draft is assume to be different at each restart step with1439 If \np{ln_iscpl}{ln\_iscpl}\forcode{ = .true.}, the isf draft is assume to be different at each restart step with 1440 1440 potentially some new wet/dry cells due to the ice sheet dynamics/thermodynamics. 1441 1441 The wetting and drying scheme, applied on the restart, is very simple. The 6 different possible cases for the tracer and ssh are: … … 1482 1482 1483 1483 In order to remove the trend and keep the conservation level as close to 0 as possible, 1484 a simple conservation scheme is available with \np{ln_isfcpl_cons} \forcode{ = .true.}.1484 a simple conservation scheme is available with \np{ln_isfcpl_cons}{ln\_isfcpl\_cons}\forcode{ = .true.}. 1485 1485 The heat/salt/vol. gain/loss are diagnosed, as well as the location. 1486 1486 A correction increment is computed and applied each time step during the model run. -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_ZDF.tex
r14257 r14806 2 2 3 3 \begin{document} 4 5 %% Custom aliases6 \newcommand{\cf}{\ensuremath{C\kern-0.14em f}}7 4 8 5 \chapter{Vertical Ocean Physics (ZDF)} … … 1083 1080 \label{lst:namdrg} 1084 1081 \end{listing} 1082 1085 1083 \begin{listing} 1086 1084 \nlst{namdrg_top} … … 1088 1086 \label{lst:namdrg_top} 1089 1087 \end{listing} 1088 1090 1089 \begin{listing} 1091 1090 \nlst{namdrg_bot} … … 1562 1561 by only a few extra physics choices namely: 1563 1562 1564 \begin{ verbatim}1563 \begin{forlines} 1565 1564 ln_dynldf_OFF = .false. 1566 1565 ln_dynldf_lap = .true. … … 1570 1569 nn_fct_h = 2 1571 1570 nn_fct_v = 2 1572 \end{ verbatim}1571 \end{forlines} 1573 1572 1574 1573 \noindent which were chosen to provide a slightly more stable and less noisy solution. The -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_model_basics_zstar.tex
r14257 r14806 83 83 84 84 %\nlst{nam_dynspg} 85 85 86 Options are defined through the \nam{_dynspg}{\_dynspg} namelist variables. 86 87 The surface pressure gradient term is related to the representation of the free surface (\autoref{sec:MB_hor_pg}). -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_time_domain.tex
r14257 r14806 12 12 {\footnotesize 13 13 \begin{tabularx}{0.5\textwidth}{l||X|X} 14 Release & Author(s) & 14 Release & Author(s) & 15 15 Modifications \\ 16 16 \hline 17 {\em 4.0} & {\em J\'{e}r\^{o}me Chanut \newline Tim Graham} & 17 {\em 4.0} & {\em J\'{e}r\^{o}me Chanut \newline Tim Graham} & 18 18 {\em Review \newline Update } \\ 19 {\em 3.6} & {\em Christian \'{E}th\'{e} } & 19 {\em 3.6} & {\em Christian \'{E}th\'{e} } & 20 20 {\em Update } \\ 21 {\em $\leq$ 3.4} & {\em Gurvan Madec } & 21 {\em $\leq$ 3.4} & {\em Gurvan Madec } & 22 22 {\em First version } \\ 23 23 \end{tabularx} … … 44 44 45 45 The time stepping used in \NEMO\ is a three level scheme that can be represented as follows: 46 46 47 \begin{equation} 47 48 \label{eq:TD} 48 49 x^{t + \rdt} = x^{t - \rdt} + 2 \, \rdt \ \text{RHS}_x^{t - \rdt, \, t, \, t + \rdt} 49 50 \end{equation} 51 50 52 where $x$ stands for $u$, $v$, $T$ or $S$; 51 53 RHS is the \textbf{R}ight-\textbf{H}and-\textbf{S}ide of the corresponding time evolution equation; … … 97 99 first designed by \citet{robert_JMSJ66} and more comprehensively studied by \citet{asselin_MWR72}, 98 100 is a kind of laplacian diffusion in time that mixes odd and even time steps: 101 99 102 \begin{equation} 100 103 \label{eq:TD_asselin} 101 104 x_F^t = x^t + \gamma \, \lt[ x_F^{t - \rdt} - 2 x^t + x^{t + \rdt} \rt] 102 105 \end{equation} 106 103 107 where the subscript $F$ denotes filtered values and $\gamma$ is the Asselin coefficient. 104 108 $\gamma$ is initialized as \np{rn_atfp}{rn\_atfp} (namelist parameter). … … 132 136 The conditions for stability of second and fourth order horizontal diffusion schemes are 133 137 \citep{griffies_bk04}: 138 134 139 \begin{equation} 135 140 \label{eq:TD_euler_stability} … … 140 145 \end{cases} 141 146 \end{equation} 147 142 148 where $e$ is the smallest grid size in the two horizontal directions and 143 149 $A^h$ is the mixing coefficient. … … 151 157 To overcome the stability constraint, a backward (or implicit) time differencing scheme is used. 152 158 This scheme is unconditionally stable but diffusive and can be written as follows: 159 153 160 \begin{equation} 154 161 \label{eq:TD_imp} … … 168 175 where RHS is the right hand side of the equation except for the vertical diffusion term. 169 176 We rewrite \autoref{eq:TD_imp} as: 177 170 178 \begin{equation} 171 179 \label{eq:TD_imp_mat} 172 180 -c(k + 1) \; T^{t + 1}(k + 1) + d(k) \; T^{t + 1}(k) - \; c(k) \; T^{t + 1}(k - 1) \equiv b(k) 173 181 \end{equation} 182 174 183 where 184 175 185 \[ 176 186 c(k) = A_w^{vT} (k) \, / \, e_{3w} (k) \text{,} \quad … … 239 249 $Q$ is redistributed over several time step. 240 250 In the modified LF-RA environment, these two formulations have been replaced by: 251 241 252 \begin{gather} 242 253 \label{eq:TD_forcing} … … 246 257 - \gamma \, \rdt \, \lt( Q^{t + \rdt / 2} - Q^{t - \rdt / 2} \rt) 247 258 \end{gather} 259 248 260 The change in the forcing formulation given by \autoref{eq:TD_forcing} 249 261 (see \autoref{fig:TD_MLF_forcing}) has a significant effect: … … 375 387 % 376 388 \end{flalign*} 389 377 390 \begin{flalign*} 378 391 \allowdisplaybreaks … … 387 400 % 388 401 \end{flalign*} 402 389 403 \begin{flalign*} 390 404 \allowdisplaybreaks -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/document.tex
r14257 r14806 7 7 8 8 %% Layout 9 %\documentclass[fontsize=10pt,twoside,abstract,draft]{scrreprt}10 \documentclass[fontsize=10pt,twoside,abstract ]{scrreprt}9 \documentclass[fontsize=10pt,twoside,abstract,draft]{scrreprt} 10 %\documentclass[fontsize=10pt,twoside,abstract ]{scrreprt} 11 11 12 12 %% Overall configuration -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/highlighting.tex
r14257 r14806 30 30 %% Namelists inclusion 31 31 \newcommand{\nlst}[1]{\forfile{../../../namelists/#1}} 32 %\newcommand{\nlst}[1]{ 33 % \begin{listing} 34 % \newmintedfile{fortran}{../../../namelists/#1} 35 % \caption{\forcode{}} 36 % \label{lst:#1} 37 % \end{listing} 38 %} 32 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/latexmk.pl
r14574 r14806 9 9 10 10 ## Custom cmds 11 set_tex_cmds('-shell-escape -file-line-error -interaction= batchmode');11 set_tex_cmds('-shell-escape -file-line-error -interaction=nonstopmode'); 12 12 #set_tex_cmds('-shell-escape -file-line-error'); 13 13 $makeindex = 'makeindex %O -s %R.ist -o %D %S'; -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/new_cmds.tex
r14257 r14806 57 57 } 58 58 59 %% Workaround for \listoffigures issue 60 \DeclareRobustCommand{\triad}[6]{ 61 \ensuremath{{}_{#2}^{#3}{\mathbb{#4}_{#1}}_{#5}^{\,#6}} 62 } 59 %% Custom aliases 60 \newcommand{\cf}{\ensuremath{C\kern-0.14em f}} 61 \newcommand{\rML}[1][i]{\ensuremath{_{\mathrm{ML}\,#1}}} 62 \newcommand{\rMLt}[1][i]{\tilde{r}_{\mathrm{ML}\,#1}} 63 \newcommand{\triad}[6][]{\ensuremath{{}_{#2}^{#3}{\mathbb{#4}_{#1}}_{#5}^{\,#6}}} 64 \newcommand{\triadd}[5]{\ensuremath{{}_{#1}^{#2}{\mathbb{#3}}_{#4}^{\,#5}}} 65 \newcommand{\triadt}[5]{\ensuremath{{}_{#1}^{#2}{\tilde{\mathbb{#3}}}_{#4}^{\,#5}}} 66 \newcommand{\rtriad}[2][]{\ensuremath{\triad[#1]{i}{k}{#2}{i_p}{k_p}}} 67 \newcommand{\rtriadt}[1]{\ensuremath{\triadt{i}{k}{#1}{i_p}{k_p}}} 63 68 64 69 %% New command for ToC (?) -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/styles.tex
r14257 r14806 10 10 %% Cover page 11 11 \backgroundsetup{ 12 firstpage=true,scale =1, 13 angle =0 ,opacity=1, 12 firstpage=true,scale=1,angle=0,opacity=1, 14 13 contents ={ 15 14 \begin{tikzpicture}[remember picture,overlay] … … 22 21 %\pagestyle{scrheadings} 23 22 %\renewcommand{\chapterpagestyle}{empty} 24 \renewcommand{\chaptermark}[1]{ \markboth{#1}{}} %% Convert mark to lowercase23 \renewcommand{\chaptermark}[1]{\markboth{ #1}{}} %% Convert mark to lowercase 25 24 \renewcommand{\sectionmark}[1]{\markright{#1}{}} %% " "" "" " 26 25 \ohead{} %% Clear default headings … … 37 36 %% Cross-referencing 38 37 \hypersetup{ 39 pdftitle=\hdg , 40 pdfauthor=Gurvan Madec and NEMO System Team , 41 pdfsubject=Reference manual of NEMO modelling framework, 42 pdfkeywords=ocean circulation modelling , 43 colorlinks , 44 allcolors=manclr 38 pdftitle=\hdg,pdfauthor=Gurvan Madec and NEMO System Team, 39 pdfsubject=Reference manual of NEMO modelling framework,pdfkeywords=ocean circulation modelling, 40 colorlinks,allcolors=manclr 45 41 } 46 42 \renewcommand{\appendixautorefname}{appendix} %% `\autoref` uncapitalization … … 63 59 %% Catcodes (between `\makeatletter` and `\makeatother`) 64 60 \makeatletter 65 66 %\global\let\tikz@ensure@dollar@catcode=\relax %% Prevent error with tikz and namelist inclusion67 61 68 62 %% Apply manual color for chap. headings (original snippets from fncychap.sty) … … 93 87 } 94 88 95 %% Temporary fix?96 %\def\set@curr@file#1{97 % \begingroup98 % \escapechar\m@ne99 % \xdef\@curr@file{\expandafter\string\csname #1\endcsname}100 % \endgroup101 %}102 %\def\quote@name#1{"\quote@@name#1\@gobble""}103 %\def\quote@@name#1"{#1\quote@@name}104 %\def\unquote@name#1{\quote@@name#1\@gobble"}105 106 89 \makeatother -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ABL/ablrst.F90
r13286 r14806 45 45 CHARACTER(len=50) :: clname ! abl output restart file name 46 46 CHARACTER(len=256) :: clpath ! full path to abl output restart file 47 CHARACTER(LEN=52) :: clpname ! abl output restart file name including prefix for AGRIF 47 48 !!---------------------------------------------------------------------- 48 49 ! … … 74 75 ENDIF 75 76 ! 76 CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka, cdcomp = 'ABL' ) 77 IF(.NOT.lwxios) THEN 78 CALL iom_open( TRIM(clpath)//TRIM(clname), numraw, ldwrt = .TRUE., kdlev = jpka, cdcomp = 'ABL' ) 79 ELSE 80 #if defined key_xios 81 cw_ablrst_cxt = "rstwa_"//TRIM(ADJUSTL(clkt)) 82 IF( TRIM(Agrif_CFixed()) == '0' ) THEN 83 clpname = clname 84 ELSE 85 clpname = TRIM(Agrif_CFixed())//"_"//clname 86 ENDIF 87 numraw = iom_xios_setid(TRIM(clpath)//TRIM(clpname)) 88 CALL iom_init( cw_ablrst_cxt, kdid = numraw, ld_closedef = .FALSE. ) 89 CALL iom_swap( cxios_context ) 90 #else 91 CALL ctl_stop( 'Can not use XIOS in rst_opn' ) 92 #endif 93 ENDIF 77 94 lrst_abl = .TRUE. 78 95 ENDIF … … 103 120 104 121 ! Write in numraw (if iter == nitrst) 105 ! ------------------ 122 ! ------------------ 106 123 ! ! calendar control 107 124 CALL iom_rstput( iter, nitrst, numraw, 'nn_fsbc', REAL( nn_fsbc, wp ) ) ! time-step 108 125 CALL iom_rstput( iter, nitrst, numraw, 'kt_abl' , REAL( iter , wp ) ) ! date 109 CALL iom_delay_rst( 'WRITE', 'ABL', numraw ) ! save only abl delayed global communication variables 126 127 IF(.NOT.lwxios) CALL iom_delay_rst( 'WRITE', 'ABL', numraw ) ! save only abl delayed global communication variables 110 128 111 129 ! Prognostic (after timestep + swap time indices = now timestep) variables … … 124 142 ! ------------------ 125 143 IF( iter == nitrst ) THEN 126 CALL iom_close( numraw ) 144 IF(.NOT.lwxios) THEN 145 CALL iom_close( numraw ) 146 ELSE 147 CALL iom_context_finalize( cw_ablrst_cxt ) 148 iom_file(numraw)%nfid = 0 149 numraw = 0 150 ENDIF 127 151 lrst_abl = .FALSE. 128 152 ENDIF … … 146 170 ENDIF 147 171 172 lxios_sini = .FALSE. 148 173 CALL iom_open ( TRIM(cn_ablrst_indir)//'/'//cn_ablrst_in, numrar ) 174 175 IF( lrxios) THEN 176 cr_ablrst_cxt = 'abl_rst' 177 IF(lwp) WRITE(numout,*) 'Enable restart reading by XIOS for ABL' 178 ! IF( TRIM(Agrif_CFixed()) == '0' ) THEN 179 ! clpname = cn_ablrst_in 180 ! ELSE 181 ! clpname = TRIM(Agrif_CFixed())//"_"//cn_ablrst_in 182 ! ENDIF 183 CALL iom_init( cr_ablrst_cxt, kdid = numrar, ld_closedef = .TRUE. ) 184 ENDIF 149 185 150 186 ! Time info … … 174 210 CALL iom_get( numrar, jpdom_auto,'mxld_abl',mxld_abl(:,:,: ) ) 175 211 CALL iom_get( numrar, jpdom_auto, 'pblh', pblh(:,: ) ) 176 CALL iom_delay_rst( 'READ', 'ABL', numrar ) ! read only abl delayed global communication variables 212 213 IF(.NOT.lrxios) CALL iom_delay_rst( 'READ', 'ABL', numrar ) ! read only abl delayed global communication variables 177 214 178 215 END SUBROUTINE abl_rst_read -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icectl.F90
r14072 r14806 776 776 IF( iom_use('icedrift_mass') .OR. iom_use('icedrift_salt') .OR. iom_use('icedrift_heat') ) THEN 777 777 DO_2D( 1, 1, 1, 1 ) 778 zdiag_mass2D(ji,jj) = wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_spr(ji,jj) + wfx_sub(ji,jj) &779 & + diag_vice(ji,jj) + diag_vsnw(ji,jj) - diag_adv_mass(ji,jj)778 zdiag_mass2D(ji,jj) = wfx_ice(ji,jj) + wfx_snw(ji,jj) + wfx_spr(ji,jj) + wfx_sub(ji,jj) + wfx_pnd(ji,jj) & 779 & + diag_vice(ji,jj) + diag_vsnw(ji,jj) + diag_vpnd(ji,jj) - diag_adv_mass(ji,jj) 780 780 zdiag_salt2D(ji,jj) = sfx(ji,jj) + diag_sice(ji,jj) - diag_adv_salt(ji,jj) 781 781 zdiag_heat2D(ji,jj) = qt_oce_ai(ji,jj) - qt_atm_oi(ji,jj) + diag_heat(ji,jj) - diag_adv_heat(ji,jj) … … 789 789 790 790 ! -- mass diag -- ! 791 zdiag_mass = glob_sum( 'icectl', ( wfx_ice + wfx_snw + wfx_spr + wfx_sub&792 & + diag_vice + diag_vsnw - diag_adv_mass ) * e1e2t ) * rDt_ice791 zdiag_mass = glob_sum( 'icectl', ( wfx_ice + wfx_snw + wfx_spr + wfx_sub + wfx_pnd & 792 & + diag_vice + diag_vsnw + diag_vpnd - diag_adv_mass ) * e1e2t ) * rDt_ice 793 793 zdiag_adv_mass = glob_sum( 'icectl', diag_adv_mass * e1e2t ) * rDt_ice 794 794 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icedia.F90
r14072 r14806 67 67 REAL(wp) :: zbg_ivol, zbg_item, zbg_area, zbg_isal 68 68 REAL(wp) :: zbg_svol, zbg_stem 69 REAL(wp) :: zbg_ipvol, zbg_ilvol 69 70 REAL(wp) :: z_frc_voltop, z_frc_temtop, z_frc_sal 70 71 REAL(wp) :: z_frc_volbot, z_frc_tembot … … 87 88 ! ----------------------- ! 88 89 IF( iom_use('ibgvol_tot' ) .OR. iom_use('sbgvol_tot' ) .OR. iom_use('ibgarea_tot') .OR. & 89 & iom_use('ibgsalt_tot') .OR. iom_use('ibgheat_tot') .OR. iom_use('sbgheat_tot') ) THEN 90 & iom_use('ibgsalt_tot') .OR. iom_use('ibgheat_tot') .OR. iom_use('sbgheat_tot') .OR. & 91 & iom_use('ipbgvol_tot' ) .OR. iom_use('ilbgvol_tot' ) ) THEN 90 92 91 93 zbg_ivol = glob_sum( 'icedia', vt_i(:,:) * e1e2t(:,:) ) * 1.e-9 ! ice volume (km3) … … 95 97 zbg_item = glob_sum( 'icedia', et_i(:,:) * e1e2t(:,:) ) * 1.e-20 ! heat content (1.e20 J) 96 98 zbg_stem = glob_sum( 'icedia', et_s(:,:) * e1e2t(:,:) ) * 1.e-20 ! heat content (1.e20 J) 99 ! ponds 100 zbg_ipvol = glob_sum( 'icedia', vt_ip(:,:) * e1e2t(:,:) ) * 1.e-9 ! ice pond volume (km3) 101 zbg_ilvol = glob_sum( 'icedia', vt_il(:,:) * e1e2t(:,:) ) * 1.e-9 ! ice pond lid volume (km3) 97 102 98 103 CALL iom_put( 'ibgvol_tot' , zbg_ivol ) … … 102 107 CALL iom_put( 'ibgheat_tot' , zbg_item ) 103 108 CALL iom_put( 'sbgheat_tot' , zbg_stem ) 109 ! ponds 110 CALL iom_put( 'ipbgvol_tot' , zbg_ipvol ) 111 CALL iom_put( 'ilbgvol_tot' , zbg_ilvol ) 104 112 105 113 ENDIF -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icesbc.F90
r14574 r14806 147 147 & sf(jp_slp)%fnow(:,:,1), sf(jp_qlw)%fnow(:,:,1), & 148 148 & sf(jp_prec)%fnow(:,:,1), sf(jp_snow)%fnow(:,:,1) ) 149 IF( ln_mixcpl ) CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i )149 IF( ln_mixcpl ) CALL sbc_cpl_ice_flx( kt, picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i ) 150 150 IF( nn_flxdist /= -1 ) CALL ice_flx_dist ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) 151 151 ! ! compute conduction flux and surface temperature (as in Jules surface module) … … 153 153 & CALL blk_ice_qcn ( ln_virtual_itd, t_su, t_bo, h_s, h_i ) 154 154 CASE ( jp_purecpl ) !--- coupled formulation 155 CALL sbc_cpl_ice_flx( picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i )155 CALL sbc_cpl_ice_flx( kt, picefr=at_i_b, palbi=alb_ice, psst=sst_m, pist=t_su, phs=h_s, phi=h_i ) 156 156 IF( nn_flxdist /= -1 ) CALL ice_flx_dist ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) 157 157 END SELECT -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icethd_dh.F90
r14072 r14806 224 224 zevap_rema(1:npti) = 0._wp 225 225 DO ji = 1, npti 226 IF( evap_ice_1d(ji) > 0._wp ) THEN 227 zdeltah (ji) = MAX( - evap_ice_1d(ji) * r1_rhos * rDt_ice, - h_s_1d(ji) ) ! amount of snw that sublimates, < 0 228 zevap_rema(ji) = MAX( 0._wp, evap_ice_1d(ji) * rDt_ice + zdeltah(ji) * rhos ) ! remaining evap in kg.m-2 (used for ice sublimation later on) 229 ENDIF 226 zdeltah (ji) = MAX( - evap_ice_1d(ji) * r1_rhos * rDt_ice, - h_s_1d(ji) ) ! amount of snw that sublimates, < 0 227 zevap_rema(ji) = evap_ice_1d(ji) * rDt_ice + zdeltah(ji) * rhos ! remaining evap in kg.m-2 (used for ice sublimation later on) 230 228 END DO 231 229 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icethd_ent.F90
r13547 r14806 121 121 DO ji = 1, npti 122 122 rswitch = MAX( 0._wp , SIGN( 1._wp , zhnew(ji) - epsi20 ) ) 123 qnew(ji,jk1) = rswitch * ( zeh_cum1(ji,jk1) - zeh_cum1(ji,jk1-1) ) / MAX( zhnew(ji), epsi20 )123 qnew(ji,jk1) = rswitch * MAX( 0._wp, zeh_cum1(ji,jk1) - zeh_cum1(ji,jk1-1) ) / MAX( zhnew(ji), epsi20 ) ! max for roundoff error 124 124 END DO 125 125 END DO -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/iceupdate.F90
r14574 r14806 104 104 ! Net heat flux on top of the ice-ocean (W.m-2) 105 105 !---------------------------------------------- 106 qt_atm_oi(:,:) = qns_tot(:,:) + qsr_tot(:,:) 106 IF( ln_cndflx ) THEN ! ice-atm interface = conduction (and melting) fluxes 107 qt_atm_oi(:,:) = ( 1._wp - at_i_b(:,:) ) * ( qns_oce(:,:) + qsr_oce(:,:) ) + qemp_oce(:,:) + & 108 & SUM( a_i_b * ( qcn_ice + qml_ice + qtr_ice_top ), dim=3 ) + qemp_ice(:,:) 109 ELSE ! ice-atm interface = solar and non-solar fluxes 110 qt_atm_oi(:,:) = qns_tot(:,:) + qsr_tot(:,:) 111 ENDIF 107 112 108 113 ! --- case we bypass ice thermodynamics --- ! … … 119 124 ! Solar heat flux reaching the ocean (max) = zqsr (W.m-2) 120 125 !--------------------------------------------------- 121 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 126 IF( ln_cndflx ) THEN ! ice-atm interface = conduction (and melting) fluxes 127 zqsr = ( 1._wp - at_i_b(ji,jj) ) * qsr_oce(ji,jj) + SUM( a_i_b (ji,jj,:) * qtr_ice_bot(ji,jj,:) ) 128 ELSE ! ice-atm interface = solar and non-solar fluxes 129 zqsr = qsr_tot(ji,jj) - SUM( a_i_b(ji,jj,:) * ( qsr_ice(ji,jj,:) - qtr_ice_bot(ji,jj,:) ) ) 130 ENDIF 122 131 123 132 ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 124 133 !--------------------------------------------------- 125 qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 126 & - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 127 & + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 128 & + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj) 129 134 IF( ln_icethd ) THEN 135 qt_oce_ai(ji,jj) = qt_atm_oi(ji,jj) - hfx_sum(ji,jj) - hfx_bom(ji,jj) - hfx_bog(ji,jj) & 136 & - hfx_dif(ji,jj) - hfx_opw(ji,jj) - hfx_snw(ji,jj) & 137 & + hfx_thd(ji,jj) + hfx_dyn(ji,jj) + hfx_res(ji,jj) & 138 & + hfx_sub(ji,jj) - SUM( qevap_ice(ji,jj,:) * a_i_b(ji,jj,:) ) + hfx_spr(ji,jj) 139 ENDIF 140 130 141 ! New qsr and qns used to compute the oceanic heat flux at the next time step 131 142 !---------------------------------------------------------------------------- … … 275 286 276 287 ! other heat fluxes 277 IF( iom_use('hfxsensib' ) ) CALL iom_put( 'hfxsensib' , -qsb_ice_bot * at_i_b ) ! Sensible oceanic heat flux288 IF( iom_use('hfxsensib' ) ) CALL iom_put( 'hfxsensib' , qsb_ice_bot * at_i_b ) ! Sensible oceanic heat flux 278 289 IF( iom_use('hfxcndbot' ) ) CALL iom_put( 'hfxcndbot' , SUM( qcn_ice_bot * a_i_b, dim=3 ) ) ! Bottom conduction flux 279 290 IF( iom_use('hfxcndtop' ) ) CALL iom_put( 'hfxcndtop' , SUM( qcn_ice_top * a_i_b, dim=3 ) ) ! Surface conduction flux 291 IF( iom_use('hfxmelt' ) ) CALL iom_put( 'hfxmelt' , SUM( qml_ice * a_i_b, dim=3 ) ) ! Surface melt flux 292 IF( iom_use('hfxldmelt' ) ) CALL iom_put( 'hfxldmelt' , fhld * at_i_b ) ! Heat in lead for ice melting 293 IF( iom_use('hfxldgrow' ) ) CALL iom_put( 'hfxldgrow' , qlead * r1_Dt_ice ) ! Heat in lead for ice growth 280 294 281 295 ! controls -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdyice.F90
r14574 r14806 153 153 h_i (ji,jj, jl) = ( h_i (ji,jj, jl) * zwgt1 + dta%h_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1) ! Ice depth 154 154 h_s (ji,jj, jl) = ( h_s (ji,jj, jl) * zwgt1 + dta%h_s(i_bdy,jl) * zwgt ) * tmask(ji,jj,1) ! Snow depth 155 t_i (ji,jj,:,jl) = ( t_i (ji,jj,:,jl) * zwgt1 + dta%t_i(i_bdy,jl) * zwgt )* tmask(ji,jj,1) ! Ice temperature156 t_s (ji,jj,:,jl) = ( t_s (ji,jj,:,jl) * zwgt1 + dta%t_s(i_bdy,jl) * zwgt )* tmask(ji,jj,1) ! Snow temperature157 t_su(ji,jj, jl) = ( t_su(ji,jj, jl) * zwgt1 + dta%tsu(i_bdy,jl) * zwgt )* tmask(ji,jj,1) ! Surf temperature158 s_i (ji,jj, jl) = ( s_i (ji,jj, jl) * zwgt1 + dta%s_i(i_bdy,jl) * zwgt )* tmask(ji,jj,1) ! Ice salinity155 t_i (ji,jj,:,jl) = dta%t_i(i_bdy,jl) * tmask(ji,jj,1) ! Ice temperature 156 t_s (ji,jj,:,jl) = dta%t_s(i_bdy,jl) * tmask(ji,jj,1) ! Snow temperature 157 t_su(ji,jj, jl) = dta%tsu(i_bdy,jl) * tmask(ji,jj,1) ! Surf temperature 158 s_i (ji,jj, jl) = dta%s_i(i_bdy,jl) * tmask(ji,jj,1) ! Ice salinity 159 159 a_ip(ji,jj, jl) = ( a_ip(ji,jj, jl) * zwgt1 + dta%aip(i_bdy,jl) * zwgt ) * tmask(ji,jj,1) ! Ice pond concentration 160 160 h_ip(ji,jj, jl) = ( h_ip(ji,jj, jl) * zwgt1 + dta%hip(i_bdy,jl) * zwgt ) * tmask(ji,jj,1) ! Ice pond depth … … 254 254 sv_i(ji,jj,jl) = MIN( s_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) ! salt content 255 255 DO jk = 1, nlay_s 256 t_s(ji,jj,jk,jl) = MIN( t_s(ji,jj,jk,jl), -0.15_wp + rt0 ) ! Force t_s to be lower than -0.15deg (arbitrary) => likely conservation issue 257 ! ! otherwise instant melting can occur 256 258 e_s(ji,jj,jk,jl) = rhos * ( rcpi * ( rt0 - t_s(ji,jj,jk,jl) ) + rLfus ) ! enthalpy in J/m3 257 259 e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * v_s(ji,jj,jl) * r1_nlay_s ! enthalpy in J/m2 258 260 END DO 261 t_su(ji,jj,jl) = MIN( t_su(ji,jj,jl), -0.15_wp + rt0 ) ! Force t_su to be lower than -0.15deg (arbitrary) 259 262 DO jk = 1, nlay_i 260 263 ztmelts = - rTmlt * sz_i(ji,jj,jk,jl) ! Melting temperature in C 261 t_i(ji,jj,jk,jl) = MIN( t_i(ji,jj,jk,jl), ztmelts + rt0 ) ! Force t_i to be lower than melting point=> likely conservation issue264 t_i(ji,jj,jk,jl) = MIN( t_i(ji,jj,jk,jl), (ztmelts-0.15_wp) + rt0 ) ! Force t_i to be lower than melting point (-0.15) => likely conservation issue 262 265 ! 263 266 e_i(ji,jj,jk,jl) = rhoi * ( rcpi * ( ztmelts - ( t_i(ji,jj,jk,jl) - rt0 ) ) & ! enthalpy in J/m3 … … 363 366 IF( zflag == -1. .AND. ji > 1 .AND. ji < jpi ) THEN 364 367 IF ( vt_i(ji ,jj) > 0. ) THEN ; u_ice(ji,jj) = u_ice(ji-1,jj) 365 ELSEIF( vt_i(ji+1,jj) > 0. ) THEN ; u_ice(ji,jj) = 0._wp368 ELSEIF( vt_i(ji+1,jj) > 0. ) THEN ; u_ice(ji,jj) = u_oce(ji,jj) 366 369 END IF 367 370 END IF … … 371 374 IF( zflag == 1. .AND. ji+1 < jpi+1 ) THEN 372 375 IF ( vt_i(ji+1,jj) > 0. ) THEN ; u_ice(ji,jj) = u_ice(ji+1,jj) 373 ELSEIF( vt_i(ji ,jj) > 0. ) THEN ; u_ice(ji,jj) = 0._wp376 ELSEIF( vt_i(ji ,jj) > 0. ) THEN ; u_ice(ji,jj) = u_oce(ji,jj) 374 377 END IF 375 378 END IF … … 395 398 IF( zflag == -1. .AND. jj > 1 .AND. jj < jpj ) THEN 396 399 IF ( vt_i(ji,jj ) > 0. ) THEN ; v_ice(ji,jj) = v_ice(ji,jj-1) 397 ELSEIF( vt_i(ji,jj+1) > 0. ) THEN ; v_ice(ji,jj) = 0._wp400 ELSEIF( vt_i(ji,jj+1) > 0. ) THEN ; v_ice(ji,jj) = v_oce(ji,jj) 398 401 END IF 399 402 END IF … … 405 408 IF( zflag == 1. .AND. jj < jpj ) THEN 406 409 IF ( vt_i(ji,jj+1) > 0. ) THEN ; v_ice(ji,jj) = v_ice(ji,jj+1) 407 ELSEIF( vt_i(ji,jj ) > 0. ) THEN ; v_ice(ji,jj) = 0._wp410 ELSEIF( vt_i(ji,jj ) > 0. ) THEN ; v_ice(ji,jj) = v_oce(ji,jj) 408 411 END IF 409 412 END IF -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ICB/icbdia.F90
r14574 r14806 491 491 SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat_hcflux, pheat_latent, pmass_scale, & 492 492 & pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, & 493 & pdMv, pz1_dt_e1e2 )493 & pdMv, pz1_dt_e1e2, pz1_e1e2 ) 494 494 !!---------------------------------------------------------------------- 495 495 !!---------------------------------------------------------------------- 496 496 INTEGER , INTENT(in) :: ki, kj 497 497 REAL(wp), INTENT(in) :: pmnew, pheat_hcflux, pheat_latent, pmass_scale 498 REAL(wp), INTENT(in) :: pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, pdMv, pz1_dt_e1e2 498 REAL(wp), INTENT(in) :: pdM, pdMbitsE, pdMbitsM, pdMb, pdMe, pdMv, pz1_dt_e1e2, pz1_e1e2 499 499 !!---------------------------------------------------------------------- 500 500 ! … … 502 502 ! 503 503 berg_melt (ki,kj) = berg_melt (ki,kj) + pdM * pz1_dt_e1e2 ! kg/m2/s 504 berg_melt_hcflx (ki,kj) = berg_melt_hcflx (ki,kj) + pheat_hcflux * pz1_ dt_e1e2 ! J/m2/s505 berg_melt_qlat (ki,kj) = berg_melt_qlat (ki,kj) + pheat_latent * pz1_ dt_e1e2 ! J/m2/s504 berg_melt_hcflx (ki,kj) = berg_melt_hcflx (ki,kj) + pheat_hcflux * pz1_e1e2 ! W/m2 505 berg_melt_qlat (ki,kj) = berg_melt_qlat (ki,kj) + pheat_latent * pz1_e1e2 ! W/m2 506 506 bits_src (ki,kj) = bits_src (ki,kj) + pdMbitsE * pz1_dt_e1e2 ! mass flux into bergy bitskg/m2/s 507 507 bits_melt (ki,kj) = bits_melt (ki,kj) + pdMbitsM * pz1_dt_e1e2 ! melt rate of bergy bits kg/m2/s -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ICB/icbthm.F90
r14030 r14806 241 241 CALL icb_dia_melt( ii, ij, zMnew, zheat_hcflux, zheat_latent, this%mass_scaling, & 242 242 & zdM, zdMbitsE, zdMbitsM, zdMb, zdMe, & 243 & zdMv, z1_dt_e1e2 )243 & zdMv, z1_dt_e1e2, z1_e1e2 ) 244 244 ELSE 245 245 WRITE(numout,*) 'icb_thm: berg ',this%number(:),' appears to have grounded at ',narea,ii,ij -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/IOM/in_out_manager.F90
r14072 r14806 175 175 CHARACTER(LEN=lc) :: cr_icerst_cxt !: context name used in xios to read SI3 restart 176 176 CHARACTER(LEN=lc) :: cw_icerst_cxt !: context name used in xios to write SI3 restart file 177 CHARACTER(LEN=lc) :: cr_ablrst_cxt !: context name used in xios to read ABL restart 178 CHARACTER(LEN=lc) :: cw_ablrst_cxt !: context name used in xios to write ABL restart file 177 179 CHARACTER(LEN=lc) :: cr_toprst_cxt !: context name used in xios to read TOP restart 178 180 CHARACTER(LEN=lc) :: cw_toprst_cxt !: context name used in xios to write TOP restart file -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/IOM/iom.F90
r14607 r14806 143 143 144 144 llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 145 llrstr = llrstr .OR. (cdname == cr_ablrst_cxt) 145 146 llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 146 147 llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 147 148 148 149 llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 150 llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 149 151 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 150 152 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) … … 315 317 llrstw = (cdname == cw_ocerst_cxt) 316 318 llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 319 llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 317 320 llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 318 321 llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) … … 357 360 LOGICAL :: lmeta 358 361 !metadata in restart file for restart read with XIOS 359 INTEGER, PARAMETER :: NMETA = 1 0362 INTEGER, PARAMETER :: NMETA = 11 360 363 CHARACTER(LEN=lc) :: meta(NMETA) 361 364 … … 371 374 meta(9) = "y" 372 375 meta(10) = "numcat" 376 meta(11) = "nav_hgt" 373 377 374 378 clinfo = ' iom_set_vars_active, file: '//TRIM(iom_file(idnum)%name) … … 548 552 IF(idlev == jpk) THEN 549 553 axis_ref="nav_lev" 554 ELSEIF(idlev == jpka) THEN 555 axis_ref="nav_hgt" 550 556 #if defined key_si3 551 557 ELSEIF(idlev == jpl) THEN … … 615 621 CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 616 622 #endif 623 CALL xios_add_child(axisgroup_hdl, axis_hdl, "nav_hgt") 624 CALL iom_set_axis_attr( "nav_hgt", (/ (REAL(ji,wp), ji=1,jpka) /) ) 617 625 CALL xios_get_handle("scalar_definition", scalargroup_hdl) 618 626 CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") … … 638 646 ELSEIF(kdid == numrir) THEN 639 647 cdcont = cr_icerst_cxt 648 ELSEIF(kdid == numrar) THEN 649 cdcont = cr_ablrst_cxt 640 650 ELSEIF(kdid == numrtr) THEN 641 651 cdcont = cr_toprst_cxt … … 650 660 ELSEIF(kdid == numriw) THEN 651 661 cdcont = cw_icerst_cxt 662 ELSEIF(kdid == numraw) THEN 663 cdcont = cw_ablrst_cxt 652 664 ELSEIF(kdid == numrtw) THEN 653 665 cdcont = cw_toprst_cxt -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcblk.F90
r14574 r14806 892 892 REAL(wp) :: zztmp,zz1,zz2,zz3 ! local variable 893 893 REAL(wp), DIMENSION(jpi,jpj) :: zqlw ! net long wave radiative heat flux 894 !!--------------------------------------------------------------------- 895 ! 896 ! local scalars ( place there for vector optimisation purposes) 897 894 REAL(wp), DIMENSION(jpi,jpj) :: zcptrain, zcptsnw, zcptn ! Heat content per unit mass (J/kg) 895 !!--------------------------------------------------------------------- 896 ! 897 ! Heat content per unit mass (J/kg) 898 zcptrain(:,:) = ( ptair - rt0 ) * rcp * tmask(:,:,1) 899 zcptsnw (:,:) = ( MIN( ptair, rt0 ) - rt0 ) * rcpi * tmask(:,:,1) 900 zcptn (:,:) = ptsk * rcp * tmask(:,:,1) 901 ! 898 902 ! ----------------------------------------------------------------------------- ! 899 903 ! III Net longwave radiative FLUX ! … … 907 911 ! ----------------------------------------------------------------------------- ! 908 912 ! 909 emp (:,:) = ( pevp(:,:) & ! mass flux (evap. - precip.) 910 & - pprec(:,:) * rn_pfac ) * tmask(:,:,1) 911 ! 912 qns(:,:) = zqlw(:,:) + psen(:,:) + plat(:,:) & ! Downward Non Solar 913 & - psnow(:,:) * rn_pfac * rLfus & ! remove latent melting heat for solid precip 914 & - pevp(:,:) * ptsk(:,:) * rcp & ! remove evap heat content at SST 915 & + ( pprec(:,:) - psnow(:,:) ) * rn_pfac & ! add liquid precip heat content at Tair 916 & * ( ptair(:,:) - rt0 ) * rcp & 917 & + psnow(:,:) * rn_pfac & ! add solid precip heat content at min(Tair,Tsnow) 918 & * ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi 913 emp (:,:) = ( pevp(:,:) - pprec(:,:) * rn_pfac ) * tmask(:,:,1) ! mass flux (evap. - precip.) 914 ! 915 qns(:,:) = zqlw(:,:) + psen(:,:) + plat(:,:) & ! Downward Non Solar 916 & - psnow(:,:) * rn_pfac * rLfus & ! remove latent melting heat for solid precip 917 & - pevp(:,:) * zcptn(:,:) & ! remove evap heat content at SST 918 & + ( pprec(:,:) - psnow(:,:) ) * rn_pfac * zcptrain(:,:) & ! add liquid precip heat content at Tair 919 & + psnow(:,:) * rn_pfac * zcptsnw(:,:) ! add solid precip heat content at min(Tair,Tsnow) 919 920 qns(:,:) = qns(:,:) * tmask(:,:,1) 920 921 ! … … 1000 1001 ! C-grid ice dynamics : U & V-points (same as ocean) 1001 1002 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 1002 wndm_ice(ji,jj) = SQRT( pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj) )1003 wndm_ice(ji,jj) = SQRT( pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj) ) 1003 1004 END_2D 1004 1005 ! … … 1120 1121 REAL(wp), DIMENSION(jpi,jpj,jpl) :: z_dqsb ! sensible heat sensitivity over ice 1121 1122 REAL(wp), DIMENSION(jpi,jpj) :: zevap, zsnw ! evaporation and snw distribution after wind blowing (SI3) 1122 REAL(wp), DIMENSION(jpi,jpj) :: ztmp, ztmp21123 1123 REAL(wp), DIMENSION(jpi,jpj) :: ztri 1124 REAL(wp), DIMENSION(jpi,jpj) :: zcptrain, zcptsnw, zcptn ! Heat content per unit mass (J/kg) 1124 1125 !!--------------------------------------------------------------------- 1125 1126 ! … … 1130 1131 dqla_ice(:,:,:) = 0._wp 1131 1132 1133 ! Heat content per unit mass (J/kg) 1134 zcptrain(:,:) = ( ptair - rt0 ) * rcp * tmask(:,:,1) 1135 zcptsnw (:,:) = ( MIN( ptair, rt0 ) - rt0 ) * rcpi * tmask(:,:,1) 1136 zcptn (:,:) = sst_m * rcp * tmask(:,:,1) 1137 ! 1132 1138 ! ! ========================== ! 1133 1139 DO jl = 1, jpl ! Loop over ice categories ! … … 1205 1211 1206 1212 ! --- heat flux associated with emp --- ! 1207 qemp_oce(:,:) = - ( 1._wp - at_i_b(:,:) ) * zevap(:,:) * sst_m(:,:) * rcp & ! evap at sst 1208 & + ( tprecip(:,:) - sprecip(:,:) ) * ( ptair(:,:) - rt0 ) * rcp & ! liquid precip at Tair 1209 & + sprecip(:,:) * ( 1._wp - zsnw ) * & ! solid precip at min(Tair,Tsnow) 1210 & ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus ) 1211 qemp_ice(:,:) = sprecip(:,:) * zsnw * & ! solid precip (only) 1212 & ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus ) 1213 qemp_oce(:,:) = - ( 1._wp - at_i_b(:,:) ) * zevap(:,:) * zcptn(:,:) & ! evap at sst 1214 & + ( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:) & ! liquid precip at Tair 1215 & + sprecip(:,:) * ( 1._wp - zsnw ) * ( zcptsnw (:,:) - rLfus ) ! solid precip at min(Tair,Tsnow) 1216 qemp_ice(:,:) = sprecip(:,:) * zsnw * ( zcptsnw (:,:) - rLfus ) ! solid precip (only) 1213 1217 1214 1218 ! --- total solar and non solar fluxes --- ! … … 1218 1222 1219 1223 ! --- heat content of precip over ice in J/m3 (to be used in 1D-thermo) --- ! 1220 qprec_ice(:,:) = rhos * ( ( MIN( ptair(:,:), rt0 ) - rt0 ) * rcpi * tmask(:,:,1) - rLfus )1224 qprec_ice(:,:) = rhos * ( zcptsnw(:,:) - rLfus ) 1221 1225 1222 1226 ! --- heat content of evap over ice in W/m2 (to be used in 1D-thermo) --- … … 1250 1254 ! 1251 1255 IF( iom_use('evap_ao_cea') .OR. iom_use('hflx_evap_cea') ) THEN 1252 ztmp(:,:) = zevap(:,:) * ( 1._wp - at_i_b(:,:) ) 1253 IF( iom_use('evap_ao_cea' ) ) CALL iom_put( 'evap_ao_cea' , ztmp(:,:) * tmask(:,:,1) ) ! ice-free oce evap (cell average) 1254 IF( iom_use('hflx_evap_cea') ) CALL iom_put( 'hflx_evap_cea', ztmp(:,:) * sst_m(:,:) * rcp * tmask(:,:,1) ) ! heat flux from evap (cell average) 1255 ENDIF 1256 IF( iom_use('hflx_rain_cea') ) THEN 1257 ztmp(:,:) = rcp * ( SUM( (ptsu-rt0) * a_i_b, dim=3 ) + sst_m(:,:) * ( 1._wp - at_i_b(:,:) ) ) 1258 IF( iom_use('hflx_rain_cea') ) CALL iom_put( 'hflx_rain_cea', ( tprecip(:,:) - sprecip(:,:) ) * ztmp(:,:) ) ! heat flux from rain (cell average) 1259 ENDIF 1260 IF( iom_use('hflx_snow_cea') .OR. iom_use('hflx_snow_ao_cea') .OR. iom_use('hflx_snow_ai_cea') ) THEN 1261 WHERE( SUM( a_i_b, dim=3 ) > 1.e-10 ) 1262 ztmp(:,:) = rcpi * SUM( (ptsu-rt0) * a_i_b, dim=3 ) / SUM( a_i_b, dim=3 ) 1263 ELSEWHERE 1264 ztmp(:,:) = rcp * sst_m(:,:) 1265 ENDWHERE 1266 ztmp2(:,:) = sprecip(:,:) * ( ztmp(:,:) - rLfus ) 1267 IF( iom_use('hflx_snow_cea') ) CALL iom_put('hflx_snow_cea' , ztmp2(:,:) ) ! heat flux from snow (cell average) 1268 IF( iom_use('hflx_snow_ao_cea') ) CALL iom_put('hflx_snow_ao_cea', ztmp2(:,:) * ( 1._wp - zsnw(:,:) ) ) ! heat flux from snow (over ocean) 1269 IF( iom_use('hflx_snow_ai_cea') ) CALL iom_put('hflx_snow_ai_cea', ztmp2(:,:) * zsnw(:,:) ) ! heat flux from snow (over ice) 1256 CALL iom_put( 'evap_ao_cea' , zevap(:,:) * ( 1._wp - at_i_b(:,:) ) * tmask(:,:,1) ) ! ice-free oce evap (cell average) 1257 CALL iom_put( 'hflx_evap_cea', zevap(:,:) * ( 1._wp - at_i_b(:,:) ) * tmask(:,:,1) * zcptn(:,:) ) ! heat flux from evap (cell average) 1258 ENDIF 1259 IF( iom_use('rain') .OR. iom_use('rain_ao_cea') .OR. iom_use('hflx_rain_cea') ) THEN 1260 CALL iom_put( 'rain' , tprecip(:,:) - sprecip(:,:) ) ! liquid precipitation 1261 CALL iom_put( 'rain_ao_cea' , ( tprecip(:,:) - sprecip(:,:) ) * ( 1._wp - at_i_b(:,:) ) ) ! liquid precipitation over ocean (cell average) 1262 CALL iom_put( 'hflx_rain_cea', ( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:) ) ! heat flux from rain (cell average) 1263 ENDIF 1264 IF( iom_use('snow_ao_cea') .OR. iom_use('snow_ai_cea') .OR. & 1265 & iom_use('hflx_snow_cea') .OR. iom_use('hflx_snow_ao_cea') .OR. iom_use('hflx_snow_ai_cea') ) THEN 1266 CALL iom_put( 'snow_ao_cea' , sprecip(:,:) * ( 1._wp - zsnw(:,:) ) ) ! Snow over ice-free ocean (cell average) 1267 CALL iom_put( 'snow_ai_cea' , sprecip(:,:) * zsnw(:,:) ) ! Snow over sea-ice (cell average) 1268 CALL iom_put( 'hflx_snow_cea' , sprecip(:,:) * ( zcptsnw(:,:) - rLfus ) ) ! heat flux from snow (cell average) 1269 CALL iom_put( 'hflx_snow_ao_cea', sprecip(:,:) * ( zcptsnw(:,:) - rLfus ) * ( 1._wp - zsnw(:,:) ) ) ! heat flux from snow (over ocean) 1270 CALL iom_put( 'hflx_snow_ai_cea', sprecip(:,:) * ( zcptsnw(:,:) - rLfus ) * zsnw(:,:) ) ! heat flux from snow (over ice) 1271 ENDIF 1272 IF( iom_use('hflx_prec_cea') ) THEN ! heat flux from precip (cell average) 1273 CALL iom_put('hflx_prec_cea' , sprecip(:,:) * ( zcptsnw (:,:) - rLfus ) & 1274 & + ( tprecip(:,:) - sprecip(:,:) ) * zcptrain(:,:) ) 1275 ENDIF 1276 IF( iom_use('subl_ai_cea') .OR. iom_use('hflx_subl_cea') ) THEN 1277 CALL iom_put( 'subl_ai_cea' , SUM( a_i_b(:,:,:) * evap_ice(:,:,:), dim=3 ) * tmask(:,:,1) ) ! Sublimation over sea-ice (cell average) 1278 CALL iom_put( 'hflx_subl_cea', SUM( a_i_b(:,:,:) * qevap_ice(:,:,:), dim=3 ) * tmask(:,:,1) ) ! Heat flux from sublimation (cell average) 1270 1279 ENDIF 1271 1280 ! -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbccpl.F90
r14765 r14806 129 129 INTEGER, PARAMETER :: jpr_icb = 61 130 130 INTEGER, PARAMETER :: jpr_ts_ice = 62 ! Sea ice surface temp 131 !!INTEGER, PARAMETER :: jpr_qtrice = 63 ! Transmitted solar thru sea-ice 131 132 132 133 INTEGER, PARAMETER :: jprcv = 62 ! total number of fields received … … 202 203 & sn_rcv_wstrf, sn_rcv_wdrag, sn_rcv_charn, sn_rcv_taw, sn_rcv_bhd, sn_rcv_tusd, sn_rcv_tvsd 203 204 ! ! Other namelist parameters 205 !! TYPE(FLD_C) :: sn_rcv_qtrice 204 206 INTEGER :: nn_cplmodel ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 205 207 LOGICAL :: ln_usecplmask ! use a coupling mask file to merge data received from several models … … 237 239 !! *** FUNCTION sbc_cpl_alloc *** 238 240 !!---------------------------------------------------------------------- 239 INTEGER :: ierr( 5)241 INTEGER :: ierr(4) 240 242 !!---------------------------------------------------------------------- 241 243 ierr(:) = 0 … … 247 249 #endif 248 250 ALLOCATE( xcplmask(jpi,jpj,0:nn_cplmodel) , STAT=ierr(3) ) 249 #if defined key_si3 || defined key_cice 250 ALLOCATE( a_i_last_couple(jpi,jpj,jpl) , STAT=ierr(4) ) 251 #endif 252 ! 253 IF( .NOT. ln_apr_dyn ) ALLOCATE( ssh_ib(jpi,jpj), ssh_ibb(jpi,jpj), apr(jpi, jpj), STAT=ierr(5) ) 251 ! 252 IF( .NOT. ln_apr_dyn ) ALLOCATE( ssh_ib(jpi,jpj), ssh_ibb(jpi,jpj), apr(jpi, jpj), STAT=ierr(4) ) 254 253 255 254 sbc_cpl_alloc = MAXVAL( ierr ) … … 286 285 & sn_rcv_charn , sn_rcv_taw , sn_rcv_bhd , sn_rcv_tusd , sn_rcv_tvsd, & 287 286 & sn_rcv_wdrag , sn_rcv_qns , sn_rcv_emp , sn_rcv_rnf , sn_rcv_cal , & 288 & sn_rcv_iceflx, sn_rcv_co2 , sn_rcv_icb , sn_rcv_isf , sn_rcv_ts_ice 287 & sn_rcv_iceflx, sn_rcv_co2 , sn_rcv_icb , sn_rcv_isf , sn_rcv_ts_ice !!, sn_rcv_qtrice 289 288 290 289 !!--------------------------------------------------------------------- … … 327 326 WRITE(numout,*)' ice shelf = ', TRIM(sn_rcv_isf%cldes ), ' (', TRIM(sn_rcv_isf%clcat ), ')' 328 327 WRITE(numout,*)' sea ice heat fluxes = ', TRIM(sn_rcv_iceflx%cldes), ' (', TRIM(sn_rcv_iceflx%clcat), ')' 328 !! WRITE(numout,*)' transmitted solar thru sea-ice = ', TRIM(sn_rcv_qtrice%cldes), ' (', TRIM(sn_rcv_qtrice%clcat), ')' 329 329 WRITE(numout,*)' atm co2 = ', TRIM(sn_rcv_co2%cldes ), ' (', TRIM(sn_rcv_co2%clcat ), ')' 330 330 WRITE(numout,*)' Sea ice surface skin temperature= ', TRIM(sn_rcv_ts_ice%cldes), ' (', TRIM(sn_rcv_ts_ice%clcat), ')' … … 602 602 srcv(jpr_mslp)%clname = 'O_MSLP' ; IF( TRIM(sn_rcv_mslp%cldes ) == 'coupled' ) srcv(jpr_mslp)%laction = .TRUE. 603 603 ! 604 ! ! ------------------------- !605 ! ! ice topmelt and botmelt !606 ! ! ------------------------- !604 ! ! --------------------------------- ! 605 ! ! ice topmelt and conduction flux ! 606 ! ! --------------------------------- ! 607 607 srcv(jpr_topm )%clname = 'OTopMlt' 608 608 srcv(jpr_botm )%clname = 'OBotMlt' … … 615 615 srcv(jpr_topm:jpr_botm)%laction = .TRUE. 616 616 ENDIF 617 !! ! ! --------------------------- ! 618 !! ! ! transmitted solar thru ice ! 619 !! ! ! --------------------------- ! 620 !! srcv(jpr_qtrice)%clname = 'OQtr' 621 !! IF( TRIM(sn_rcv_qtrice%cldes) == 'coupled' ) THEN 622 !! IF ( TRIM( sn_rcv_qtrice%clcat ) == 'yes' ) THEN 623 !! srcv(jpr_qtrice)%nct = nn_cats_cpl 624 !! ELSE 625 !! CALL ctl_stop( 'sbc_cpl_init: sn_rcv_qtrice%clcat should always be set to yes currently' ) 626 !! ENDIF 627 !! srcv(jpr_qtrice)%laction = .TRUE. 628 !! ENDIF 617 629 ! ! ------------------------- ! 618 630 ! ! ice skin temperature ! … … 888 900 END SELECT 889 901 890 ! Initialise ice fractions from last coupling time to zero (needed by Met-Office)891 #if defined key_si3 || defined key_cice892 a_i_last_couple(:,:,:) = 0._wp893 #endif894 902 ! ! ------------------------- ! 895 903 ! ! Ice Meltponds ! … … 1589 1597 !! ** Action : return ptau_i, ptau_j, the stress over the ice 1590 1598 !!---------------------------------------------------------------------- 1591 REAL(wp), INTENT( out), DIMENSION(:,:) :: p_taui ! i- & j-components of atmos-ice stress [N/m2]1592 REAL(wp), INTENT( out), DIMENSION(:,:) :: p_tauj ! at I-point (B-grid) or U & V-point (C-grid)1599 REAL(wp), INTENT(inout), DIMENSION(:,:) :: p_taui ! i- & j-components of atmos-ice stress [N/m2] 1600 REAL(wp), INTENT(inout), DIMENSION(:,:) :: p_tauj ! at I-point (B-grid) or U & V-point (C-grid) 1593 1601 !! 1594 1602 INTEGER :: ji, jj ! dummy loop indices … … 1597 1605 REAL(wp), DIMENSION(jpi,jpj) :: ztx, zty 1598 1606 !!---------------------------------------------------------------------- 1607 ! 1608 #if defined key_si3 || defined key_cice 1599 1609 ! 1600 1610 IF( srcv(jpr_itx1)%laction ) THEN ; itx = jpr_itx1 … … 1671 1681 ENDIF 1672 1682 ! 1683 #endif 1684 ! 1673 1685 END SUBROUTINE sbc_cpl_ice_tau 1674 1686 1675 1687 1676 SUBROUTINE sbc_cpl_ice_flx( picefr, palbi, psst, pist, phs, phi )1688 SUBROUTINE sbc_cpl_ice_flx( kt, picefr, palbi, psst, pist, phs, phi ) 1677 1689 !!---------------------------------------------------------------------- 1678 1690 !! *** ROUTINE sbc_cpl_ice_flx *** … … 1716 1728 !! are provided but not included in emp here. Only runoff will 1717 1729 !! be included in emp in other parts of NEMO code 1730 !! 1731 !! ** Note : In case of the ice-atm coupling with conduction fluxes (such as Jules interface for the Met-Office), 1732 !! qsr_ice and qns_ice are not provided and they are not supposed to be used in the ice code. 1733 !! However, by precaution we also "fake" qns_ice and qsr_ice this way: 1734 !! qns_ice = qml_ice + qcn_ice ?? 1735 !! qsr_ice = qtr_ice_top ?? 1736 !! 1718 1737 !! ** Action : update at each nf_ice time step: 1719 1738 !! qns_tot, qsr_tot non-solar and solar total heat fluxes … … 1724 1743 !! sprecip solid precipitation over the ocean 1725 1744 !!---------------------------------------------------------------------- 1745 INTEGER, INTENT(in) :: kt ! ocean model time step index (only for a_i_last_couple) 1726 1746 REAL(wp), INTENT(in) , DIMENSION(:,:) :: picefr ! ice fraction [0 to 1] 1727 1747 ! !! ! optional arguments, used only in 'mixed oce-ice' case or for Met-Office coupling … … 1740 1760 REAL(wp), DIMENSION(jpi,jpj) :: ztri 1741 1761 !!---------------------------------------------------------------------- 1762 ! 1763 #if defined key_si3 || defined key_cice 1764 ! 1765 IF( kt == nit000 ) THEN 1766 ! allocate ice fractions from last coupling time here and not in sbc_cpl_init because of jpl 1767 IF( .NOT.ALLOCATED(a_i_last_couple) ) ALLOCATE( a_i_last_couple(jpi,jpj,jpl) ) 1768 ! initialize to a_i for the 1st time step 1769 a_i_last_couple(:,:,:) = a_i(:,:,:) 1770 ENDIF 1742 1771 ! 1743 1772 IF( ln_mixcpl ) zmsk(:,:) = 1. - xcplmask(:,:,0) … … 1767 1796 CALL ctl_stop('STOP', 'sbccpl/sbc_cpl_ice_flx: some fields are not defined. Change sn_rcv_emp value in namelist namsbc_cpl') 1768 1797 END SELECT 1769 1770 #if defined key_si31771 1798 1772 1799 ! --- evaporation over ice (kg/m2/s) --- ! … … 1860 1887 ENDIF 1861 1888 1862 #else 1863 zsnw(:,:) = picefr(:,:) 1864 ! --- Continental fluxes --- ! 1865 IF( srcv(jpr_rnf)%laction ) THEN ! runoffs (included in emp later on) 1866 rnf(:,:) = frcv(jpr_rnf)%z3(:,:,1) 1867 ENDIF 1868 IF( srcv(jpr_cal)%laction ) THEN ! calving (put in emp_tot) 1869 zemp_tot(:,:) = zemp_tot(:,:) - frcv(jpr_cal)%z3(:,:,1) 1870 ENDIF 1871 IF( srcv(jpr_icb)%laction ) THEN ! iceberg added to runoffs 1872 fwficb(:,:) = frcv(jpr_icb)%z3(:,:,1) 1873 rnf(:,:) = rnf(:,:) + fwficb(:,:) 1874 ENDIF 1875 IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1876 fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1877 ENDIF 1878 ! 1879 IF( ln_mixcpl ) THEN 1880 emp_tot(:,:) = emp_tot(:,:) * xcplmask(:,:,0) + zemp_tot(:,:) * zmsk(:,:) 1881 emp_ice(:,:) = emp_ice(:,:) * xcplmask(:,:,0) + zemp_ice(:,:) * zmsk(:,:) 1882 sprecip(:,:) = sprecip(:,:) * xcplmask(:,:,0) + zsprecip(:,:) * zmsk(:,:) 1883 tprecip(:,:) = tprecip(:,:) * xcplmask(:,:,0) + ztprecip(:,:) * zmsk(:,:) 1884 ELSE 1885 emp_tot(:,:) = zemp_tot(:,:) 1886 emp_ice(:,:) = zemp_ice(:,:) 1887 sprecip(:,:) = zsprecip(:,:) 1888 tprecip(:,:) = ztprecip(:,:) 1889 ENDIF 1890 ! 1891 #endif 1892 1889 !! for CICE ?? 1890 !!$ zsnw(:,:) = picefr(:,:) 1891 !!$ ! --- Continental fluxes --- ! 1892 !!$ IF( srcv(jpr_rnf)%laction ) THEN ! runoffs (included in emp later on) 1893 !!$ rnf(:,:) = frcv(jpr_rnf)%z3(:,:,1) 1894 !!$ ENDIF 1895 !!$ IF( srcv(jpr_cal)%laction ) THEN ! calving (put in emp_tot) 1896 !!$ zemp_tot(:,:) = zemp_tot(:,:) - frcv(jpr_cal)%z3(:,:,1) 1897 !!$ ENDIF 1898 !!$ IF( srcv(jpr_icb)%laction ) THEN ! iceberg added to runoffs 1899 !!$ fwficb(:,:) = frcv(jpr_icb)%z3(:,:,1) 1900 !!$ rnf(:,:) = rnf(:,:) + fwficb(:,:) 1901 !!$ ENDIF 1902 !!$ IF( srcv(jpr_isf)%laction ) THEN ! iceshelf (fwfisf <0 mean melting) 1903 !!$ fwfisf_oasis(:,:) = - frcv(jpr_isf)%z3(:,:,1) 1904 !!$ ENDIF 1905 !!$ ! 1906 !!$ IF( ln_mixcpl ) THEN 1907 !!$ emp_tot(:,:) = emp_tot(:,:) * xcplmask(:,:,0) + zemp_tot(:,:) * zmsk(:,:) 1908 !!$ emp_ice(:,:) = emp_ice(:,:) * xcplmask(:,:,0) + zemp_ice(:,:) * zmsk(:,:) 1909 !!$ sprecip(:,:) = sprecip(:,:) * xcplmask(:,:,0) + zsprecip(:,:) * zmsk(:,:) 1910 !!$ tprecip(:,:) = tprecip(:,:) * xcplmask(:,:,0) + ztprecip(:,:) * zmsk(:,:) 1911 !!$ ELSE 1912 !!$ emp_tot(:,:) = zemp_tot(:,:) 1913 !!$ emp_ice(:,:) = zemp_ice(:,:) 1914 !!$ sprecip(:,:) = zsprecip(:,:) 1915 !!$ tprecip(:,:) = ztprecip(:,:) 1916 !!$ ENDIF 1917 ! 1893 1918 ! outputs 1894 !! IF( srcv(jpr_rnf)%laction ) CALL iom_put( 'runoffs' , rnf(:,:) * tmask(:,:,1) ) ! runoff1895 !! IF( srcv(jpr_isf)%laction ) CALL iom_put( 'iceshelf_cea', -fwfisf(:,:) * tmask(:,:,1) ) ! iceshelf1896 1919 IF( srcv(jpr_cal)%laction ) CALL iom_put( 'calving_cea' , frcv(jpr_cal)%z3(:,:,1) * tmask(:,:,1) ) ! calving 1897 1920 IF( srcv(jpr_icb)%laction ) CALL iom_put( 'iceberg_cea' , frcv(jpr_icb)%z3(:,:,1) * tmask(:,:,1) ) ! icebergs … … 1901 1924 IF( iom_use('snow_ao_cea') ) CALL iom_put( 'snow_ao_cea' , sprecip(:,:) * ( 1._wp - zsnw(:,:) ) ) ! Snow over ice-free ocean (cell average) 1902 1925 IF( iom_use('snow_ai_cea') ) CALL iom_put( 'snow_ai_cea' , sprecip(:,:) * zsnw(:,:) ) ! Snow over sea-ice (cell average) 1903 IF( iom_use('rain_ao_cea') ) CALL iom_put( 'rain_ao_cea' , ( tprecip(:,:) - sprecip(:,:) ) * picefr(:,:) ) ! liquid precipitation over ocean (cell average)1904 IF( iom_use('subl_ai_cea') ) CALL iom_put( 'subl_ai_cea' , frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) * tmask(:,:,1) )! Sublimation over sea-ice (cell average)1926 IF( iom_use('rain_ao_cea') ) CALL iom_put( 'rain_ao_cea' , ( tprecip(:,:) - sprecip(:,:) ) * ziceld(:,:) ) ! liquid precipitation over ocean (cell average) 1927 IF( iom_use('subl_ai_cea') ) CALL iom_put( 'subl_ai_cea' , zevap_ice_total(:,:) * picefr(:,:) * tmask(:,:,1) ) ! Sublimation over sea-ice (cell average) 1905 1928 IF( iom_use('evap_ao_cea') ) CALL iom_put( 'evap_ao_cea' , ( frcv(jpr_tevp)%z3(:,:,1) & 1906 & - frcv(jpr_ievp)%z3(:,:,1) * picefr(:,:) ) * tmask(:,:,1) )! ice-free oce evap (cell average)1929 & - zevap_ice_total(:,:) * picefr(:,:) ) * tmask(:,:,1) ) ! ice-free oce evap (cell average) 1907 1930 ! note: runoff output is done in sbcrnf (which includes icebergs too) and iceshelf output is done in sbcisf 1931 !! IF( srcv(jpr_rnf)%laction ) CALL iom_put( 'runoffs' , rnf(:,:) * tmask(:,:,1) ) ! runoff 1932 !! IF( srcv(jpr_isf)%laction ) CALL iom_put( 'iceshelf_cea', -fwfisf(:,:) * tmask(:,:,1) ) ! iceshelf 1933 ! 1934 ! ! ========================= ! 1935 SELECT CASE( TRIM( sn_rcv_iceflx%cldes ) ) ! ice topmelt and botmelt ! 1936 ! ! ========================= ! 1937 CASE ('coupled') 1938 IF (ln_scale_ice_flux) THEN 1939 WHERE( a_i(:,:,:) > 1.e-10_wp ) 1940 qml_ice(:,:,:) = frcv(jpr_topm)%z3(:,:,:) * a_i_last_couple(:,:,:) / a_i(:,:,:) 1941 qcn_ice(:,:,:) = frcv(jpr_botm)%z3(:,:,:) * a_i_last_couple(:,:,:) / a_i(:,:,:) 1942 ELSEWHERE 1943 qml_ice(:,:,:) = 0.0_wp 1944 qcn_ice(:,:,:) = 0.0_wp 1945 END WHERE 1946 ELSE 1947 qml_ice(:,:,:) = frcv(jpr_topm)%z3(:,:,:) 1948 qcn_ice(:,:,:) = frcv(jpr_botm)%z3(:,:,:) 1949 ENDIF 1950 END SELECT 1908 1951 ! 1909 1952 ! ! ========================= ! … … 1911 1954 ! ! ========================= ! 1912 1955 CASE( 'oce only' ) ! the required field is directly provided 1913 zqns_tot(:,:) = frcv(jpr_qnsoce)%z3(:,:,1) 1914 ! For Met Office sea ice non-solar fluxes are already delt with by JULES so setting to zero 1915 ! here so the only flux is the ocean only one. 1916 zqns_ice(:,:,:) = 0._wp 1956 ! Get the sea ice non solar heat flux from conductive, melting and sublimation fluxes 1957 IF( TRIM(sn_rcv_iceflx%cldes) == 'coupled' ) THEN 1958 zqns_ice(:,:,:) = qml_ice(:,:,:) + qcn_ice(:,:,:) 1959 ELSE 1960 zqns_ice(:,:,:) = 0._wp 1961 ENDIF 1962 ! Calculate the total non solar heat flux. The ocean only non solar heat flux (zqns_oce) will be recalculated after this CASE 1963 ! statement to be consistent with other coupling methods even though .zqns_oce = frcv(jpr_qnsoce)%z3(:,:,1) 1964 zqns_tot(:,:) = frcv(jpr_qnsoce)%z3(:,:,1) + SUM( zqns_ice(:,:,:) * a_i(:,:,:), dim=3 ) 1917 1965 CASE( 'conservative' ) ! the required fields are directly provided 1918 1966 zqns_tot(:,:) = frcv(jpr_qnsmix)%z3(:,:,1) … … 1961 2009 IF( srcv(jpr_icb)%laction ) zqns_tot(:,:) = zqns_tot(:,:) - frcv(jpr_icb)%z3(:,:,1) * rLfus ! remove latent heat of iceberg melting 1962 2010 1963 #if defined key_si31964 2011 ! --- non solar flux over ocean --- ! 1965 2012 ! note: ziceld cannot be = 0 since we limit the ice concentration to amax … … 2014 2061 ENDIF 2015 2062 2016 #else 2017 zcptsnw (:,:) = zcptn(:,:) 2018 zcptrain(:,:) = zcptn(:,:)2019 2020 ! clem: this formulation is certainly wrong... but better than it was... 2021 zqns_tot(:,:) = zqns_tot(:,:) & ! zqns_tot update over free ocean with: 2022 & - ( ziceld(:,:) * zsprecip(:,:) * rLfus ) & ! remove the latent heat flux of solid precip. melting 2023 & - ( zemp_tot(:,:) & ! remove the heat content of mass flux (assumed to be at SST) 2024 & - zemp_ice(:,:) ) * zcptn(:,:)2025 2026 IF( ln_mixcpl ) THEN 2027 qns_tot(:,:) = qns(:,:) * ziceld(:,:) + SUM( qns_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk 2028 qns_tot(:,:) = qns_tot(:,:) * xcplmask(:,:,0) + zqns_tot(:,:)* zmsk(:,:) 2029 DO jl=1,jpl 2030 qns_ice(:,:,jl) = qns_ice(:,:,jl) * xcplmask(:,:,0) + zqns_ice(:,:,jl)* zmsk(:,:) 2031 ENDDO 2032 ELSE 2033 qns_tot(:,: ) = zqns_tot(:,: ) 2034 qns_ice(:,:,:) = zqns_ice(:,:,:)2035 ENDIF 2036 2037 #endif 2063 !! for CICE ?? 2064 !!$ ! --- non solar flux over ocean --- ! 2065 !!$ zcptsnw (:,:) = zcptn(:,:) 2066 !!$ zcptrain(:,:) = zcptn(:,:) 2067 !!$ 2068 !!$ ! clem: this formulation is certainly wrong... but better than it was... 2069 !!$ zqns_tot(:,:) = zqns_tot(:,:) & ! zqns_tot update over free ocean with: 2070 !!$ & - ( ziceld(:,:) * zsprecip(:,:) * rLfus ) & ! remove the latent heat flux of solid precip. melting 2071 !!$ & - ( zemp_tot(:,:) & ! remove the heat content of mass flux (assumed to be at SST) 2072 !!$ & - zemp_ice(:,:) ) * zcptn(:,:) 2073 !!$ 2074 !!$ IF( ln_mixcpl ) THEN 2075 !!$ qns_tot(:,:) = qns(:,:) * ziceld(:,:) + SUM( qns_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk 2076 !!$ qns_tot(:,:) = qns_tot(:,:) * xcplmask(:,:,0) + zqns_tot(:,:)* zmsk(:,:) 2077 !!$ DO jl=1,jpl 2078 !!$ qns_ice(:,:,jl) = qns_ice(:,:,jl) * xcplmask(:,:,0) + zqns_ice(:,:,jl)* zmsk(:,:) 2079 !!$ ENDDO 2080 !!$ ELSE 2081 !!$ qns_tot(:,: ) = zqns_tot(:,: ) 2082 !!$ qns_ice(:,:,:) = zqns_ice(:,:,:) 2083 !!$ ENDIF 2084 2038 2085 ! outputs 2039 2086 IF ( srcv(jpr_cal)%laction ) CALL iom_put('hflx_cal_cea' , - frcv(jpr_cal)%z3(:,:,1) * rLfus ) ! latent heat from calving … … 2053 2100 IF ( iom_use('hflx_snow_ai_cea') ) & ! heat flux from snow (over ice) 2054 2101 & CALL iom_put('hflx_snow_ai_cea', sprecip(:,:) * ( zcptsnw(:,:) - rLfus ) * zsnw(:,:) ) 2102 IF( iom_use('hflx_subl_cea') ) & ! heat flux from sublimation 2103 & CALL iom_put('hflx_subl_cea' , SUM( qevap_ice(:,:,:) * a_i(:,:,:), dim=3 ) * tmask(:,:,1) ) 2055 2104 ! note: hflx for runoff and iceshelf are done in sbcrnf and sbcisf resp. 2056 2105 ! 2106 ! ! ========================= ! 2107 SELECT CASE( TRIM( sn_rcv_dqnsdt%cldes ) ) ! d(qns)/dt ! 2108 ! ! ========================= ! 2109 CASE ('coupled') 2110 IF( TRIM(sn_rcv_dqnsdt%clcat) == 'yes' ) THEN 2111 zdqns_ice(:,:,1:jpl) = frcv(jpr_dqnsdt)%z3(:,:,1:jpl) 2112 ELSE 2113 ! Set all category values equal for the moment 2114 DO jl=1,jpl 2115 zdqns_ice(:,:,jl) = frcv(jpr_dqnsdt)%z3(:,:,1) 2116 ENDDO 2117 ENDIF 2118 CASE( 'none' ) 2119 zdqns_ice(:,:,:) = 0._wp 2120 END SELECT 2121 2122 IF( ln_mixcpl ) THEN 2123 DO jl=1,jpl 2124 dqns_ice(:,:,jl) = dqns_ice(:,:,jl) * xcplmask(:,:,0) + zdqns_ice(:,:,jl) * zmsk(:,:) 2125 ENDDO 2126 ELSE 2127 dqns_ice(:,:,:) = zdqns_ice(:,:,:) 2128 ENDIF 2057 2129 ! ! ========================= ! 2058 2130 SELECT CASE( TRIM( sn_rcv_qsr%cldes ) ) ! solar heat fluxes ! (qsr) … … 2060 2132 CASE( 'oce only' ) 2061 2133 zqsr_tot(:,: ) = MAX( 0._wp , frcv(jpr_qsroce)%z3(:,:,1) ) 2062 ! For Met Office sea ice solar fluxes are already delt with by JULES so setting to zero2063 ! here so the only flux is the ocean only one.2134 ! For the Met Office the only sea ice solar flux is the transmitted qsr which is added onto zqsr_ice 2135 ! further down. Therefore start zqsr_ice off at zero. 2064 2136 zqsr_ice(:,:,:) = 0._wp 2065 2137 CASE( 'conservative' ) … … 2114 2186 END DO 2115 2187 ENDIF 2116 2117 #if defined key_si32118 ! --- solar flux over ocean --- !2119 ! note: ziceld cannot be = 0 since we limit the ice concentration to amax2120 zqsr_oce = 0._wp2121 WHERE( ziceld /= 0._wp ) zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / ziceld(:,:)2122 2123 IF( ln_mixcpl ) THEN ; qsr_oce(:,:) = qsr_oce(:,:) * xcplmask(:,:,0) + zqsr_oce(:,:)* zmsk(:,:)2124 ELSE ; qsr_oce(:,:) = zqsr_oce(:,:) ; ENDIF2125 #endif2126 2127 IF( ln_mixcpl ) THEN2128 qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk2129 qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) + zqsr_tot(:,:)* zmsk(:,:)2130 DO jl = 1, jpl2131 qsr_ice(:,:,jl) = qsr_ice(:,:,jl) * xcplmask(:,:,0) + zqsr_ice(:,:,jl)* zmsk(:,:)2132 END DO2133 ELSE2134 qsr_tot(:,: ) = zqsr_tot(:,: )2135 qsr_ice(:,:,:) = zqsr_ice(:,:,:)2136 ENDIF2137 2138 ! ! ========================= !2139 SELECT CASE( TRIM( sn_rcv_dqnsdt%cldes ) ) ! d(qns)/dt !2140 ! ! ========================= !2141 CASE ('coupled')2142 IF( TRIM(sn_rcv_dqnsdt%clcat) == 'yes' ) THEN2143 zdqns_ice(:,:,1:jpl) = frcv(jpr_dqnsdt)%z3(:,:,1:jpl)2144 ELSE2145 ! Set all category values equal for the moment2146 DO jl=1,jpl2147 zdqns_ice(:,:,jl) = frcv(jpr_dqnsdt)%z3(:,:,1)2148 ENDDO2149 ENDIF2150 CASE( 'none' )2151 zdqns_ice(:,:,:) = 0._wp2152 END SELECT2153 2154 IF( ln_mixcpl ) THEN2155 DO jl=1,jpl2156 dqns_ice(:,:,jl) = dqns_ice(:,:,jl) * xcplmask(:,:,0) + zdqns_ice(:,:,jl) * zmsk(:,:)2157 ENDDO2158 ELSE2159 dqns_ice(:,:,:) = zdqns_ice(:,:,:)2160 ENDIF2161 2162 #if defined key_si32163 ! ! ========================= !2164 SELECT CASE( TRIM( sn_rcv_iceflx%cldes ) ) ! ice topmelt and botmelt !2165 ! ! ========================= !2166 CASE ('coupled')2167 IF (ln_scale_ice_flux) THEN2168 WHERE( a_i(:,:,:) > 1.e-10_wp )2169 qml_ice(:,:,:) = frcv(jpr_topm)%z3(:,:,:) * a_i_last_couple(:,:,:) / a_i(:,:,:)2170 qcn_ice(:,:,:) = frcv(jpr_botm)%z3(:,:,:) * a_i_last_couple(:,:,:) / a_i(:,:,:)2171 ELSEWHERE2172 qml_ice(:,:,:) = 0.0_wp2173 qcn_ice(:,:,:) = 0.0_wp2174 END WHERE2175 ELSE2176 qml_ice(:,:,:) = frcv(jpr_topm)%z3(:,:,:)2177 qcn_ice(:,:,:) = frcv(jpr_botm)%z3(:,:,:)2178 ENDIF2179 END SELECT2180 2188 ! ! ========================= ! 2181 2189 ! ! Transmitted Qsr ! [W/m2] … … 2209 2217 ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN !== conduction flux as surface forcing ==! 2210 2218 ! 2211 ! ! ===> here we must receive the qtr_ice_top array from the coupler 2212 ! for now just assume zero (fully opaque ice) 2219 !! SELECT CASE( TRIM( sn_rcv_qtrice%cldes ) ) 2220 !! ! 2221 !! ! ! ===> here we receive the qtr_ice_top array from the coupler 2222 !! CASE ('coupled') 2223 !! IF (ln_scale_ice_flux) THEN 2224 !! WHERE( a_i(:,:,:) > 1.e-10_wp ) 2225 !! zqtr_ice_top(:,:,:) = frcv(jpr_qtrice)%z3(:,:,:) * a_i_last_couple(:,:,:) / a_i(:,:,:) 2226 !! ELSEWHERE 2227 !! zqtr_ice_top(:,:,:) = 0.0_wp 2228 !! ENDWHERE 2229 !! ELSE 2230 !! zqtr_ice_top(:,:,:) = frcv(jpr_qtrice)%z3(:,:,:) 2231 !! ENDIF 2232 !! 2233 !! ! Add retrieved transmitted solar radiation onto the ice and total solar radiation 2234 !! zqsr_ice(:,:,:) = zqsr_ice(:,:,:) + zqtr_ice_top(:,:,:) 2235 !! zqsr_tot(:,:) = zqsr_tot(:,:) + SUM( zqtr_ice_top(:,:,:) * a_i(:,:,:), dim=3 ) 2236 !! 2237 !! ! if we are not getting this data from the coupler then assume zero (fully opaque ice) 2238 !! CASE ('none') 2213 2239 zqtr_ice_top(:,:,:) = 0._wp 2214 ! 2215 ENDIF 2216 ! 2240 !! END SELECT 2241 ! 2242 ENDIF 2243 2217 2244 IF( ln_mixcpl ) THEN 2218 DO jl=1,jpl 2245 qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 ) ! total flux from blk 2246 qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) + zqsr_tot(:,:) * zmsk(:,:) 2247 DO jl = 1, jpl 2248 qsr_ice (:,:,jl) = qsr_ice (:,:,jl) * xcplmask(:,:,0) + zqsr_ice (:,:,jl) * zmsk(:,:) 2219 2249 qtr_ice_top(:,:,jl) = qtr_ice_top(:,:,jl) * xcplmask(:,:,0) + zqtr_ice_top(:,:,jl) * zmsk(:,:) 2220 END DO2250 END DO 2221 2251 ELSE 2252 qsr_tot (:,: ) = zqsr_tot (:,: ) 2253 qsr_ice (:,:,:) = zqsr_ice (:,:,:) 2222 2254 qtr_ice_top(:,:,:) = zqtr_ice_top(:,:,:) 2223 2255 ENDIF 2256 2257 ! --- solar flux over ocean --- ! 2258 ! note: ziceld cannot be = 0 since we limit the ice concentration to amax 2259 zqsr_oce = 0._wp 2260 WHERE( ziceld /= 0._wp ) zqsr_oce(:,:) = ( zqsr_tot(:,:) - SUM( a_i * zqsr_ice, dim=3 ) ) / ziceld(:,:) 2261 2262 IF( ln_mixcpl ) THEN ; qsr_oce(:,:) = qsr_oce(:,:) * xcplmask(:,:,0) + zqsr_oce(:,:)* zmsk(:,:) 2263 ELSE ; qsr_oce(:,:) = zqsr_oce(:,:) ; ENDIF 2264 2224 2265 ! ! ================== ! 2225 2266 ! ! ice skin temp. ! -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcfwb.F90
r14130 r14806 123 123 emp(:,:) = emp(:,:) - z_fwfprv(1) * tmask(:,:,1) 124 124 qns(:,:) = qns(:,:) + zcoef * sst_m(:,:) * tmask(:,:,1) ! account for change to the heat budget due to fw correction 125 ! outputs 126 IF( iom_use('hflx_fwb_cea') ) CALL iom_put( 'hflx_fwb_cea', zcoef * sst_m(:,:) * tmask(:,:,1) ) 127 IF( iom_use('vflx_fwb_cea') ) CALL iom_put( 'vflx_fwb_cea', z_fwfprv(1) * tmask(:,:,1) ) 125 128 ENDIF 126 129 ! … … 154 157 emp(:,:) = emp(:,:) + a_fwb * tmask(:,:,1) 155 158 qns(:,:) = qns(:,:) - zcoef * sst_m(:,:) * tmask(:,:,1) ! account for change to the heat budget due to fw correction 159 ! outputs 160 IF( iom_use('hflx_fwb_cea') ) CALL iom_put( 'hflx_fwb_cea', -zcoef * sst_m(:,:) * tmask(:,:,1) ) 161 IF( iom_use('vflx_fwb_cea') ) CALL iom_put( 'vflx_fwb_cea', -a_fwb * tmask(:,:,1) ) 156 162 ENDIF 157 163 ! Output restart information … … 201 207 qns(:,:) = qns(:,:) - zerp_cor(:,:) * rcp * sst_m(:,:) ! account for change to the heat budget due to fw correction 202 208 erp(:,:) = erp(:,:) + zerp_cor(:,:) 209 ! outputs 210 IF( iom_use('hflx_fwb_cea') ) CALL iom_put( 'hflx_fwb_cea', -zerp_cor(:,:) * rcp * sst_m(:,:) ) 211 IF( iom_use('vflx_fwb_cea') ) CALL iom_put( 'vflx_fwb_cea', -zerp_cor(:,:) ) 203 212 ! 204 213 IF( lwp ) THEN ! control print -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcice_cice.F90
r14574 r14806 139 139 CALL cice_sbc_force(kt) 140 140 ELSE IF( ksbc == jp_purecpl ) THEN 141 CALL sbc_cpl_ice_flx( fr_i )141 CALL sbc_cpl_ice_flx( kt, fr_i ) 142 142 ENDIF 143 143 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcrnf.F90
r14787 r14806 131 131 IF( ln_rnf_icb ) THEN 132 132 fwficb(:,:) = rn_rfact * ( sf_i_rnf(1)%fnow(:,:,1) ) * tmask(:,:,1) ! updated runoff value at time step kt 133 CALL iom_put( 'iceberg_cea' , fwficb(:,:) ) ! output iceberg flux 134 CALL iom_put( 'hflx_icb_cea' , fwficb(:,:) * rLfus ) ! output Heat Flux into Sea Water due to Iceberg Thermodynamics --> 133 rnf(:,:) = rnf(:,:) + fwficb(:,:) 134 qns(:,:) = qns(:,:) - fwficb(:,:) * rLfus 135 !!qns_tot(:,:) = qns_tot(:,:) - fwficb(:,:) * rLfus 136 !!qns_oce(:,:) = qns_oce(:,:) - fwficb(:,:) * rLfus 137 CALL iom_put( 'iceberg_cea' , fwficb(:,:) ) ! output iceberg flux 138 CALL iom_put( 'hflx_icb_cea' , -fwficb(:,:) * rLfus ) ! output Heat Flux into Sea Water due to Iceberg Thermodynamics --> 135 139 ENDIF 136 140 ENDIF … … 152 156 CALL iom_put( 'runoffs' , rnf(:,:) ) ! output runoff mass flux 153 157 IF( iom_use('hflx_rnf_cea') ) CALL iom_put( 'hflx_rnf_cea', rnf_tsc(:,:,jp_tem) * rho0 * rcp ) ! output runoff sensible heat (W/m2) 158 IF( iom_use('sflx_rnf_cea') ) CALL iom_put( 'sflx_rnf_cea', rnf_tsc(:,:,jp_sal) * rho0 ) ! output runoff salt flux (g/m2/s) 154 159 ENDIF 155 160 ! -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcssr.F90
r14780 r14806 94 94 ! ! ========================= ! 95 95 ! 96 qrp(:,:) = 0._wp ! necessary init 97 erp(:,:) = 0._wp 98 ! 96 99 IF( nn_sstr == 1 ) THEN !* Temperature restoring term 97 100 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) … … 135 138 qns(ji,jj) = qns(ji,jj) - zerp * rcp * sst_m(ji,jj) 136 139 erp(ji,jj) = zerp 140 qrp(ji,jj) = qrp(ji,jj) - zerp * rcp * sst_m(ji,jj) 137 141 END_2D 138 142 ENDIF 143 ! outputs 144 CALL iom_put( 'hflx_ssr_cea', qrp(:,:) ) 145 IF( nn_sssr == 1 ) CALL iom_put( 'sflx_ssr_cea', erp(:,:) * sss_m(:,:) ) 146 IF( nn_sssr == 2 ) CALL iom_put( 'vflx_ssr_cea', -erp(:,:) ) 139 147 ! 140 148 ENDIF -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/tradmp.F90
r14787 r14806 101 101 IF( ln_timing ) CALL timing_start('tra_dmp') 102 102 ! 103 IF( l_trdtra ) THEN!* Save ta and sa trends103 IF( l_trdtra .OR. iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN !* Save ta and sa trends 104 104 ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) ) 105 105 ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) … … 139 139 ! 140 140 END SELECT 141 ! 142 ! outputs (clem trunk) 143 IF( iom_use('hflx_dmp_cea') ) & 144 & CALL iom_put('hflx_dmp_cea', & 145 & SUM( ( pts(:,:,:,jp_tem,Krhs) - ztrdts(:,:,:,jp_tem) ) * e3t(:,:,:,Kmm), dim=3 ) * rcp * rho0 ) ! W/m2 146 IF( iom_use('sflx_dmp_cea') ) & 147 & CALL iom_put('sflx_dmp_cea', & 148 & SUM( ( pts(:,:,:,jp_sal,Krhs) - ztrdts(:,:,:,jp_sal) ) * e3t(:,:,:,Kmm), dim=3 ) * rho0 ) ! g/m2/s 141 149 ! 142 150 IF( l_trdtra ) THEN ! trend diagnostic -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/step.F90
r14787 r14806 133 133 #endif 134 134 ENDIF 135 IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 135 136 #if defined key_si3 136 IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN137 137 CALL iom_swap( cw_icerst_cxt ) 138 138 CALL iom_init_closedef( cw_icerst_cxt ) 139 139 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 140 ENDIF 141 #endif 140 #endif 141 IF( ln_abl ) THEN 142 CALL iom_swap( cw_ablrst_cxt ) 143 CALL iom_init_closedef( cw_ablrst_cxt ) 144 CALL iom_setkt( kstp - nit000 + 1, cw_ablrst_cxt ) 145 ENDIF 146 ENDIF 142 147 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 143 148 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell IOM we are at time step kstp -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/stpmlf.F90
r14787 r14806 140 140 #endif 141 141 ENDIF 142 IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 142 143 #if defined key_si3 143 IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN144 144 CALL iom_swap( cw_icerst_cxt ) 145 145 CALL iom_init_closedef( cw_icerst_cxt ) 146 146 CALL iom_setkt( kstp - nit000 + 1, cw_icerst_cxt ) 147 ENDIF 148 #endif 147 #endif 148 IF( ln_abl ) THEN 149 CALL iom_swap( cw_ablrst_cxt ) 150 CALL iom_init_closedef( cw_ablrst_cxt ) 151 CALL iom_setkt( kstp - nit000 + 1, cw_ablrst_cxt ) 152 ENDIF 153 ENDIF 149 154 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 150 155 CALL iom_setkt( kstp - nit000 + 1, cxios_context ) ! tell IOM we are at time step kstp -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/SAS/sbcssm.F90
r14072 r14806 102 102 e3t_m(:,:) = e3t_0(:,:,1) ! vertical scale factor 103 103 ENDIF 104 IF( TRIM(sf_ssm_2d(jf_usp)%clrootname) == 'NOT USED' ) & 105 & sf_ssm_2d(jf_usp)%fnow(:,:,1) = 0._wp 106 IF( TRIM(sf_ssm_2d(jf_vsp)%clrootname) == 'NOT USED' ) & 107 & sf_ssm_2d(jf_vsp)%fnow(:,:,1) = 0._wp 104 108 ssu_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1) ! u-velocity 105 109 ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1) ! v-velocity 106 110 ENDIF 107 111 ! 112 IF( TRIM(sf_ssm_2d(jf_sal)%clrootname) == 'NOT USED' ) & 113 & sf_ssm_2d(jf_sal)%fnow(:,:,1) = 35._wp 114 IF( TRIM(sf_ssm_2d(jf_tem)%clrootname) == 'NOT USED' ) & 115 & CALL eos_fzp( sf_ssm_2d(jf_sal)%fnow(:,:,1), sf_ssm_2d(jf_tem)%fnow(:,:,1) ) 116 IF( TRIM(sf_ssm_2d(jf_ssh)%clrootname) == 'NOT USED' ) & 117 & sf_ssm_2d(jf_ssh)%fnow(:,:,1) = 0._wp 108 118 sst_m(:,:) = sf_ssm_2d(jf_tem)%fnow(:,:,1) * tmask(:,:,1) ! temperature 109 119 sss_m(:,:) = sf_ssm_2d(jf_sal)%fnow(:,:,1) * tmask(:,:,1) ! salinity -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/TOP/PISCES/sms_pisces.F90
r12377 r14806 70 70 71 71 !!* Biological fluxes for light : variables shared by pisces & lobster 72 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth74 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot !: par (photosynthetic available radiation)75 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy !: PAR over 24h in case of diurnal cycle76 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat !: PAR for phyto, nano and diat 77 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enanom, ediatm !: PAR for phyto, nano and diat … … 79 75 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: epicom !: PAR for pico 80 76 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy !: averaged PAR in the mixed layer 81 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup_01 !: Absolute euphotic layer depth82 77 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: xksi !: LOBSTER : zooplakton closure 83 78 … … 139 134 ierr(:) = 0 140 135 !* Biological fluxes for light : shared variables for pisces & lobster 141 ALLOCATE( etot(jpi,jpj,jpk), neln(jpi,jpj), heup(jpi,jpj), & 142 & heup_01(jpi,jpj) , xksi(jpi,jpj) , STAT=ierr(1) ) 136 ALLOCATE( xksi(jpi,jpj) , STAT=ierr(1) ) 143 137 ! 144 138 … … 147 141 ALLOCATE( enano(jpi,jpj,jpk) , ediat(jpi,jpj,jpk) , & 148 142 & enanom(jpi,jpj,jpk) , ediatm(jpi,jpj,jpk), & 149 & e tot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk), STAT=ierr(2) )143 & emoy(jpi,jpj,jpk) , STAT=ierr(2) ) 150 144 151 145 !* Biological fluxes for primary production -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/TOP/TRP/trcadv.F90
r14805 r14806 129 129 CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 130 130 CASE ( np_MUS ) ! MUSCL 131 CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups ) 131 CALL tra_adv_mus( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, ln_mus_ups ) 132 132 CASE ( np_UBS ) ! UBS 133 133 CALL tra_adv_ubs( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_ubs_v ) -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/TOP/trc.F90
r14032 r14806 82 82 CHARACTER(len=2), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) :: cn_trc_o !: choice of ocean tracer cc 83 83 84 !! Information for the optics module 85 !! --------------------------------- 86 INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:) :: neln !: number of T-levels + 1 in the euphotic layer 87 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup !: euphotic layer depth 88 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: heup_01 !: Absolute euphotic layer depth 89 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot !: par (photosynthetic available radiation) 90 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy !: PAR over 24h in case of diurnal cycle 91 84 92 85 93 !! information for outputs … … 156 164 & gtrui(jpi,jpj,jptra) , gtrvi(jpi,jpj,jptra) , & 157 165 & trc_ice_ratio(jptra) , trc_ice_prescr(jptra) , cn_trc_o(jptra) , & 166 & neln(jpi,jpj) , heup(jpi,jpj) , heup_01(jpi,jpj) , & 167 & etot(jpi,jpj,jpk) , etot_ndcy(jpi,jpj,jpk) , & 158 168 & sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra) , & 159 169 & cvol(jpi,jpj,jpk) , trai(jptra) , qsr_mean(jpi,jpj) , & -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/tests/OVERFLOW/EXPREF/AGRIF/1_namelist_cfg
r14229 r14806 11 11 ln_sco = .false. ! s-coordinate 12 12 rn_dx = 1000. ! horizontal resolution [meters] 13 rn_dz = 20. ! vertical resolution [meters]13 rn_dz = 50. ! vertical resolution [meters] 14 14 / 15 15 ! … … 26 26 cn_exp = "OVF" ! experience name 27 27 nn_it000 = 1 ! first time step 28 nn_itend = 2040 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions28 nn_itend = 1530 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 29 29 nn_istate = 0 ! output the initial state (1) or not (0) 30 30 nn_stock = 9999 ! frequency of creation of a restart file (modulo referenced to 1) … … 42 42 &namdom ! space and time domain (bathymetry, mesh, timestep) 43 43 !----------------------------------------------------------------------- 44 rn_Dt = 10. ! time step for the dynamics (and tracer if nn_acc=0)44 rn_Dt = 40. ! time step for the dynamics (and tracer if nn_acc=0) 45 45 rn_atfp = 0.1 ! asselin time filter parameter 46 46 ln_meshmask = .false. ! =T create a mesh file … … 150 150 ln_dynvor_mix = .false. ! mixed scheme 151 151 ln_dynvor_een = .false. ! energy & enstrophy scheme 152 nn_een_e3f = 0 ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1)153 152 / 154 153 !----------------------------------------------------------------------- -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/tests/OVERFLOW/EXPREF/AGRIF/AGRIF_FixedGrids.in
r13936 r14806 1 1 1 2 10 41 1 4 4 1 42 10 41 1 4 1 1 1 3 3 0 -
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/tests/OVERFLOW/EXPREF/AGRIF/namelist_cfg
r14229 r14806 11 11 ln_sco = .false. ! s-coordinate 12 12 rn_dx = 1000. ! horizontal resolution [meters] 13 rn_dz = 20. ! vertical resolution [meters]13 rn_dz = 50. ! vertical resolution [meters] 14 14 / 15 15 ! … … 20 20 cn_exp = "OVF" ! experience name 21 21 nn_it000 = 1 ! first time step 22 nn_itend = 2040 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions22 nn_itend = 1530 ! here 16h of simulation (=5760 time-step) abort after 5802 for zps: pb of physics conditions 23 23 nn_istate = 0 ! output the initial state (1) or not (0) 24 24 nn_stock = 9999 ! frequency of creation of a restart file (modulo referenced to 1) … … 144 144 ln_dynvor_mix = .false. ! mixed scheme 145 145 ln_dynvor_een = .false. ! energy & enstrophy scheme 146 nn_een_e3f = 0 ! e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1)147 146 / 148 147 !-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.