New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 14806 – NEMO

Changeset 14806


Ignore:
Timestamp:
2021-05-07T13:44:43+02:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in trunk changes to r14778

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  
    110110!                !  file name        ! frequency (hours) ! variable      ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    111111!                !                   !  (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          , 'ndep2'       ,  .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'  , ''       , ''    , '' 
    116116   rn_trsfac(5)  = 8.264e-02   !  (  0.021 / 31. * 122 ) 
    117117   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  
    110110!                !  file name        ! frequency (hours) ! variable      ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    111111!                !                   !  (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          , 'ndep2'       ,  .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'  , ''       , ''    , '' 
    116116   rn_trsfac(5)  = 8.264e-02   !  (  0.021 / 31. * 122 ) 
    117117   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  
    178178      <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" /> 
    179179      <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" /> 
    180183 
    181184      <!-- diags --> 
     
    345348      <field id="SH_icearea"      long_name="Sea ice area South"                     standard_name="sea_ice_area_s"                     unit="1e6_km2"  /> 
    346349 
    347       <!-- available with ln_icediaout --> 
     350      <!-- available with ln_icediahsb --> 
     351      <!-- global forcings  --> 
    348352      <field id="ibgfrcvoltop"    long_name="global mean ice/snow forcing at interface ice/snow-atm (volume equivalent ocean volume)"   unit="km3"      /> 
    349353      <field id="ibgfrcvolbot"    long_name="global mean ice/snow forcing at interface ice/snow-ocean (volume equivalent ocean volume)" unit="km3"      /> 
     
    354358      <field id="ibgfrchfxbot"    long_name="global mean heat flux below ice (on top of ocean) "                                        unit="W/m2"     /> 
    355359 
     360      <!-- global drifts (conservation checks) --> 
    356361      <field id="ibgvolume"       long_name="drift in ice/snow volume (equivalent ocean volume)"                                        unit="km3"      /> 
    357362      <field id="ibgsaltco"       long_name="drift in ice salt content (equivalent ocean volume)"                                       unit="pss*km3"  /> 
     
    359364      <field id="ibgheatfx"       long_name="drift in ice/snow heat flux"                                                               unit="W/m2"     /> 
    360365 
     366      <!-- global contents --> 
    361367      <field id="ibgvol_tot"      long_name="global mean ice volume"                                                                    unit="km3"      /> 
    362368      <field id="sbgvol_tot"      long_name="global mean snow volume"                                                                   unit="km3"      /> 
    363369      <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" /> 
    365371      <field id="ibgheat_tot"     long_name="global mean ice heat content"                                                              unit="1e20J"    /> 
    366372      <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"      /> 
    367375 
    368376    </field_group> 
     
    496504    </field_group> 
    497505 
     506    <!--============================--> 
     507    <!--  CONSERVATION diagnostics  --> 
     508    <!--============================--> 
     509 
    498510    <field_group id="ICE_globalbudget"  grid_ref="grid_scalar" > 
    499       <!-- global contents --> 
    500511      <field field_ref="ibgvol_tot"       name="ibgvol_tot"   /> 
    501512      <field field_ref="sbgvol_tot"       name="sbgvol_tot"   /> 
     
    504515      <field field_ref="ibgheat_tot"      name="ibgheat_tot"  /> 
    505516      <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     
    524559    <!--============================--> 
    525560    <!-- SIMIP sea ice field groups --> 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/cfgs/SHARED/field_def_nemo-innerttrc.xml

    r14072 r14806  
    4343    <field id="C14Age"       long_name="Radiocarbon age"                          unit="yr"        grid_ref="grid_T_3D"  /> 
    4444    <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"     /> 
    4747    <field id="AtmCO2"       long_name="Global atmospheric CO2"                   unit="ppm"      /> 
    4848    <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  
    241241    <field id="mf_mf"       long_name="mass flux"              standard_name="mf_mass_flux"          unit="m"      grid_ref="grid_T_3D" /> 
    242242 
     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 
    243247  </field_group> <!-- grid_T --> 
    244248 
     
    375379      <field id="emp_oce"      long_name="Evap minus Precip over ocean"         standard_name="evap_minus_precip_over_sea_water"                                     unit="kg/m2/s"   /> 
    376380      <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"    /> 
    378382      <field id="fmmflx"       long_name="Water flux due to freezing/melting"                                                                                        unit="kg/m2/s"   /> 
    379383      <field id="snowpre"      long_name="Snow precipitation"                   standard_name="snowfall_flux"                                                        unit="kg/m2/s"   /> 
     
    475479      <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"     /> 
    476480      <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"     /> 
    477482      <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"     /> 
    478483      <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"     /> 
     
    481486      <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"     /> 
    482487      <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"   /> 
    483489      <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"     /> 
    484490      <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"     /> 
     
    490496      <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"  /> 
    491497 
     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       
    492505      <!-- ice field (nn_ice=1)  --> 
    493506      <field id="ice_cover"    long_name="Ice fraction"                                                 standard_name="sea_ice_area_fraction"                              unit="1"            /> 
     
    12531266  </field_group> 
    12541267 
     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   
    12551330</field_definition> 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/apdx_DOMAINcfg.tex

    r14574 r14806  
    4242 
    4343\begin{listing} 
    44 %  \nlst{namdom_domcfg} 
    4544  \begin{forlines} 
    4645!----------------------------------------------------------------------- 
     
    409408 
    410409\begin{listing} 
    411 %  \nlst{namzgr_sco_domcfg} 
    412410  \caption{\forcode{&namzgr_sco_domcfg}} 
    413411  \label{lst:namzgr_sco_domcfg} 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/apdx_triads.tex

    r14257 r14806  
    22 
    33\begin{document} 
    4  
    5 %% Local cmds 
    6 \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 \listoffigures 
    9 %\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}}} 
    144 
    155\chapter{Iso-Neutral Diffusion and Eddy Advection using Triads} 
     
    3424 
    3525%% ================================================================================================= 
    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} 
    3727 
    3828Two 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  
    5050 
    5151This namelist contains only two variables: 
     52 
    5253\begin{description} 
    5354\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  
    168168 
    169169%% ================================================================================================= 
    170 \subsection{Closed, cyclic (\forcode{l\_Iperio,l\_jperio})} 
     170\subsection{Closed, cyclic (\forcode{l_Iperio,l_jperio})} 
    171171\label{subsec:LBC_jperio012} 
    172172 
    173173The 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}. 
     174setting \forcode{l_Iperio,l_jperio} to true or false in namelist \nam{cfg}{cfg}. 
    175175Each time such a boundary condition is needed, it is set by a call to routine \mdl{lbclnk}. 
    176176The computation of momentum and tracer trends proceeds from $i=2$ to $i=jpi-1$ and from $j=2$ to $j=jpj-1$, 
     
    181181\begin{description} 
    182182 
    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: 
    184184  first and last rows and columns are set to zero. 
    185185 
    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 to 
     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 to 
    187187  the value of the last-but-one column and the last column to the value of the second one 
    188188  (\autoref{fig:LBC_jperio}-a). 
    189189  Whatever flows out of the eastern (western) end of the basin enters the western (eastern) end. 
    190190 
    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 to 
     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 to 
    192192  the value of the last-but-one row and the last row to the value of the second one 
    193193  (\autoref{fig:LBC_jperio}-a). 
    194194  Whatever flows out of the northern (southern) end of the basin enters the southern (northern) end. 
    195195 
    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. 
    197197 
    198198\end{description} 
     
    207207 
    208208%% ================================================================================================= 
    209 \subsection{North-fold (\forcode{l\_NFold = .true.})} 
     209\subsection{North-fold (\forcode{l_NFold = .true.})} 
    210210\label{subsec:LBC_north_fold} 
    211211 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_OBS.tex

    r14257 r14806  
    913913 
    914914\begin{listing} 
    915 %  \nlst{namsao} 
    916915  \begin{forlines} 
    917916!---------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/NEMO/subfiles/chap_SBC.tex

    r14574 r14806  
    975975M2, S2, N2, K2, nu2, mu2, 2N2, L2, T2, eps2, lam2, R2, M3, MKS2, MN4, MS4, M4, 
    976976N4, 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 be 
     977information and references\footnote{As a legacy option \np{ln_tide_var}{ln\_tide\_var} can be 
    978978  set to \forcode{0}, in which case the 19 tidal constituents (M2, N2, 2N2, S2, 
    979979  K2, K1, O1, Q1, P1, M4, Mf, Mm, Msqm, Mtm, S1, MU2, NU2, L2, and T2; see file 
     
    11971197 
    11981198     \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. 
    12001200     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.\\ 
    12011201 
    12021202     3 options are available to represent to ice-shelf/ocean fluxes at the interface: 
    12031203     \begin{description} 
    1204         \item[\np{cn_isfcav_mlt}\forcode{ = 'spe'}]: 
     1204        \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = 'spe'}]: 
    12051205        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). 
    12061206        The latent heat fluxes is derived from the fresh water flux.  
    12071207        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}) 
    12081208 
    1209         \item[\np{cn_isfcav_mlt}\forcode{ = 'oasis'}]: 
     1209        \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = 'oasis'}]: 
    12101210        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.  
    12111211        It has not been tested and therefore the model will stop if you try to use it.  
    12121212        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. 
    12131213 
    1214         \item[\np{cn_isfcav_mlt}\forcode{ = '2eq'}]: 
     1214        \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '2eq'}]: 
    12151215        The heat flux and the fresh water flux (negative for melting) resulting from ice shelf melting/freezing are parameterized following \citet{Grosfeld1997}.  
    12161216        This formulation is based on a balance between the vertical diffusive heat flux across the ocean top boundary layer (\autoref{eq:ISOMIP1})  
     
    12311231        and $\gamma$ the thermal exchange coefficient. 
    12321232 
    1233         \item[\np{cn_isfcav_mlt}\forcode{ = '3eq'}]: 
     1233        \item[\np{cn_isfcav_mlt}{cn\_isfcav\_mlt}\forcode{ = '3eq'}]: 
    12341234        For realistic studies, the heat and freshwater fluxes are parameterized following \citep{Jenkins2001}. This formulation is based on three equations:  
    12351235        a balance between the vertical diffusive heat flux across the boundary layer  
     
    12871287     If \np{rn_htbl}{rn\_htbl} smaller than top $e_{3}t$, the top boundary layer thickness is set to the top cell thickness.\\ 
    12881288 
    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. 
    12901290     Below, the exchange coeficient $\Gamma^{T}$ and $\Gamma^{S}$ are respectively defined by \np{rn_gammat0}{rn\_gammat0} and \np{rn_gammas0}{rn\_gammas0}.  
    12911291     There are 3 different ways to compute the exchange velocity: 
    12921292 
    12931293     \begin{description} 
    1294         \item[\np{cn_gammablk}\forcode{='spe'}]: 
     1294        \item[\np{cn_gammablk}{cn\_gammablk}\forcode{='spe'}]: 
    12951295        The salt and heat exchange coefficients are constant and defined by: 
    12961296\[ 
     
    13021302        This is the recommended formulation for ISOMIP. 
    13031303 
    1304    \item[\np{cn_gammablk}\forcode{='vel'}]: 
     1304   \item[\np{cn_gammablk}{cn\_gammablk}\forcode{='vel'}]: 
    13051305        The salt and heat exchange coefficients are velocity dependent and defined as 
    13061306\[ 
     
    13131313        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. 
    13141314 
    1315    \item[\np{cn_gammablk}\forcode{'vel\_stab'}]: 
     1315   \item[\np{cn_gammablk}{cn\_gammablk}\forcode{'vel\_stab'}]: 
    13161316        The salt and heat exchange coefficients are velocity and stability dependent and defined as: 
    13171317\[ 
     
    13291329  \begin{description} 
    13301330 
    1331      \item[\np{cn_isfpar_mlt}\forcode{ = 'bg03'}]: 
     1331     \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'bg03'}]: 
    13321332     The ice shelf cavities are not represented. 
    13331333     The fwf and heat flux are computed using the \citet{beckmann.goosse_OM03} parameterisation of isf melting. 
    13341334     The fluxes are distributed along the ice shelf edge between the depth of the average grounding line (GL) 
    13351335     (\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'}). 
    13371337     The effective melting length (\np{sn_isfpar_Leff}{sn\_isfpar\_Leff}) is read from a file. 
    13381338     This parametrisation has not been tested since a while and based on \citet{Favier2019},  
    13391339     this parametrisation should probably not be used. 
    13401340 
    1341      \item[\np{cn_isfpar_mlt}\forcode{ = 'spe'}]: 
     1341     \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'spe'}]: 
    13421342     The ice shelf cavity is not represented. 
    13431343     The fwf (\np{sn_isfpar_fwf}{sn\_isfpar\_fwf}) is prescribed and distributed along the ice shelf edge between 
     
    13461346     The heat flux ($Q_h$) is computed as $Q_h = fwf \times L_f$. 
    13471347 
    1348      \item[\np{cn_isfpar_mlt}\forcode{ = 'oasis'}]: 
     1348     \item[\np{cn_isfpar_mlt}{cn\_isfpar\_mlt}\forcode{ = 'oasis'}]: 
    13491349     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.  
    13501350     It has not been tested and therefore the model will stop if you try to use it.  
     
    13531353  \end{description} 
    13541354 
    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 on 
     1355\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 
    13561356the water mass properties, ocean velocities and depth. 
    13571357The resulting fluxes are thus highly dependent of the model resolution (horizontal and vertical) and  
    13581358realism of the water masses onto the shelf.\\ 
    13591359 
    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. 
    13611361You have total control of the fwf forcing. 
    13621362This can be useful if the water masses on the shelf are not realistic or 
     
    14371437\end{description} 
    14381438 
    1439 If \np{ln_iscpl}\forcode{ = .true.}, the isf draft is assume to be different at each restart step with 
     1439If \np{ln_iscpl}{ln\_iscpl}\forcode{ = .true.}, the isf draft is assume to be different at each restart step with 
    14401440potentially some new wet/dry cells due to the ice sheet dynamics/thermodynamics. 
    14411441The wetting and drying scheme, applied on the restart, is very simple. The 6 different possible cases for the tracer and ssh are: 
     
    14821482 
    14831483In 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.}. 
     1484a simple conservation scheme is available with \np{ln_isfcpl_cons}{ln\_isfcpl\_cons}\forcode{ = .true.}. 
    14851485The heat/salt/vol. gain/loss are diagnosed, as well as the location. 
    14861486A 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  
    22 
    33\begin{document} 
    4  
    5 %% Custom aliases 
    6 \newcommand{\cf}{\ensuremath{C\kern-0.14em f}} 
    74 
    85\chapter{Vertical Ocean Physics (ZDF)} 
     
    10831080  \label{lst:namdrg} 
    10841081\end{listing} 
     1082 
    10851083\begin{listing} 
    10861084  \nlst{namdrg_top} 
     
    10881086  \label{lst:namdrg_top} 
    10891087\end{listing} 
     1088 
    10901089\begin{listing} 
    10911090  \nlst{namdrg_bot} 
     
    15621561by only a few extra physics choices namely: 
    15631562 
    1564 \begin{verbatim} 
     1563\begin{forlines} 
    15651564     ln_dynldf_OFF = .false. 
    15661565     ln_dynldf_lap = .true. 
     
    15701569        nn_fct_h   =  2 
    15711570        nn_fct_v   =  2 
    1572 \end{verbatim} 
     1571\end{forlines} 
    15731572 
    15741573\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  
    8383 
    8484%\nlst{nam_dynspg} 
     85 
    8586Options are defined through the \nam{_dynspg}{\_dynspg} namelist variables. 
    8687The 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  
    1212{\footnotesize 
    1313  \begin{tabularx}{0.5\textwidth}{l||X|X} 
    14     Release          & Author(s)                                       & 
     14    Release          & Author(s)                                       &  
    1515    Modifications                                                      \\ 
    1616    \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} &  
    1818    {\em Review \newline Update                                      } \\ 
    19     {\em        3.6} & {\em Christian \'{E}th\'{e}                   } & 
     19    {\em        3.6} & {\em Christian \'{E}th\'{e}                   } &  
    2020    {\em Update                                                      } \\ 
    21     {\em $\leq$ 3.4} & {\em Gurvan Madec                             } & 
     21    {\em $\leq$ 3.4} & {\em Gurvan Madec                             } &  
    2222    {\em First version                                               } \\ 
    2323  \end{tabularx} 
     
    4444 
    4545The time stepping used in \NEMO\ is a three level scheme that can be represented as follows: 
     46 
    4647\begin{equation} 
    4748  \label{eq:TD} 
    4849  x^{t + \rdt} = x^{t - \rdt} + 2 \, \rdt \ \text{RHS}_x^{t - \rdt, \, t, \, t + \rdt} 
    4950\end{equation} 
     51 
    5052where $x$ stands for $u$, $v$, $T$ or $S$; 
    5153RHS is the \textbf{R}ight-\textbf{H}and-\textbf{S}ide of the corresponding time evolution equation; 
     
    9799first designed by \citet{robert_JMSJ66} and more comprehensively studied by \citet{asselin_MWR72}, 
    98100is a kind of laplacian diffusion in time that mixes odd and even time steps: 
     101 
    99102\begin{equation} 
    100103  \label{eq:TD_asselin} 
    101104  x_F^t = x^t + \gamma \, \lt[ x_F^{t - \rdt} - 2 x^t + x^{t + \rdt} \rt] 
    102105\end{equation} 
     106 
    103107where the subscript $F$ denotes filtered values and $\gamma$ is the Asselin coefficient. 
    104108$\gamma$ is initialized as \np{rn_atfp}{rn\_atfp} (namelist parameter). 
     
    132136The conditions for stability of second and fourth order horizontal diffusion schemes are 
    133137\citep{griffies_bk04}: 
     138 
    134139\begin{equation} 
    135140  \label{eq:TD_euler_stability} 
     
    140145  \end{cases} 
    141146\end{equation} 
     147 
    142148where $e$ is the smallest grid size in the two horizontal directions and 
    143149$A^h$ is the mixing coefficient. 
     
    151157To overcome the stability constraint, a backward (or implicit) time differencing scheme is used. 
    152158This scheme is unconditionally stable but diffusive and can be written as follows: 
     159 
    153160\begin{equation} 
    154161  \label{eq:TD_imp} 
     
    168175where RHS is the right hand side of the equation except for the vertical diffusion term. 
    169176We rewrite \autoref{eq:TD_imp} as: 
     177 
    170178\begin{equation} 
    171179  \label{eq:TD_imp_mat} 
    172180  -c(k + 1) \; T^{t + 1}(k + 1) + d(k) \; T^{t + 1}(k) - \; c(k) \; T^{t + 1}(k - 1) \equiv b(k) 
    173181\end{equation} 
     182 
    174183where 
     184 
    175185\[ 
    176186  c(k) = A_w^{vT} (k) \, / \, e_{3w} (k) \text{,} \quad 
     
    239249$Q$ is redistributed over several time step. 
    240250In the modified LF-RA environment, these two formulations have been replaced by: 
     251 
    241252\begin{gather} 
    242253  \label{eq:TD_forcing} 
     
    246257                    - \gamma \, \rdt \, \lt( Q^{t + \rdt / 2} - Q^{t - \rdt / 2} \rt) 
    247258\end{gather} 
     259 
    248260The change in the forcing formulation given by \autoref{eq:TD_forcing} 
    249261(see \autoref{fig:TD_MLF_forcing}) has a significant effect: 
     
    375387  % 
    376388\end{flalign*} 
     389 
    377390\begin{flalign*} 
    378391  \allowdisplaybreaks 
     
    387400  % 
    388401\end{flalign*} 
     402 
    389403\begin{flalign*} 
    390404  \allowdisplaybreaks 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/document.tex

    r14257 r14806  
    77 
    88%% 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} 
    1111 
    1212%% Overall configuration  
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/highlighting.tex

    r14257 r14806  
    3030%% Namelists inclusion 
    3131\newcommand{\nlst}[1]{\forfile{../../../namelists/#1}} 
    32 %\newcommand{\nlst}[1]{ 
    33 %   \begin{listing} 
    34 %      \newmintedfile{fortran}{../../../namelists/#1} 
    35 %      \caption{\forcode{&#1}} 
    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  
    99 
    1010## Custom cmds 
    11 set_tex_cmds('-shell-escape -file-line-error -interaction=batchmode'); 
     11set_tex_cmds('-shell-escape -file-line-error -interaction=nonstopmode'); 
    1212#set_tex_cmds('-shell-escape -file-line-error'); 
    1313$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  
    5757} 
    5858 
    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}}} 
    6368 
    6469%% New command for ToC (?) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/doc/latex/global/styles.tex

    r14257 r14806  
    1010%% Cover page 
    1111\backgroundsetup{ 
    12    firstpage=true,scale  =1, 
    13    angle    =0   ,opacity=1, 
     12   firstpage=true,scale=1,angle=0,opacity=1, 
    1413   contents ={ 
    1514      \begin{tikzpicture}[remember picture,overlay] 
     
    2221%\pagestyle{scrheadings} 
    2322%\renewcommand{\chapterpagestyle}{empty} 
    24 \renewcommand{\chaptermark}[1]{ \markboth{#1}{}} %% Convert mark to lowercase 
     23\renewcommand{\chaptermark}[1]{\markboth{ #1}{}} %% Convert mark to lowercase 
    2524\renewcommand{\sectionmark}[1]{\markright{#1}{}} %%    "     ""  ""     "   
    2625\ohead{} %% Clear default headings 
     
    3736%% Cross-referencing 
    3837\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 
    4541} 
    4642\renewcommand{\appendixautorefname}{appendix}          %% `\autoref` uncapitalization 
     
    6359%% Catcodes (between `\makeatletter` and `\makeatother`) 
    6460\makeatletter 
    65  
    66 %\global\let\tikz@ensure@dollar@catcode=\relax %% Prevent error with tikz and namelist inclusion 
    6761 
    6862%% Apply manual color for chap. headings (original snippets from fncychap.sty) 
     
    9387} 
    9488 
    95 %% Temporary fix? 
    96 %\def\set@curr@file#1{ 
    97 %  \begingroup 
    98 %    \escapechar\m@ne 
    99 %    \xdef\@curr@file{\expandafter\string\csname #1\endcsname} 
    100 %  \endgroup 
    101 %} 
    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  
    10689\makeatother 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ABL/ablrst.F90

    r13286 r14806  
    4545      CHARACTER(len=50)   ::   clname   ! abl output restart file name 
    4646      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 
    4748      !!---------------------------------------------------------------------- 
    4849      ! 
     
    7475            ENDIF 
    7576            ! 
    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 
    7794            lrst_abl = .TRUE. 
    7895         ENDIF 
     
    103120 
    104121      ! Write in numraw (if iter == nitrst) 
    105       ! ------------------  
     122      ! ------------------ 
    106123      !                                                                        ! calendar control 
    107124      CALL iom_rstput( iter, nitrst, numraw, 'nn_fsbc', REAL( nn_fsbc, wp ) )      ! time-step  
    108125      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 
    110128 
    111129      ! Prognostic (after timestep + swap time indices = now timestep) variables 
     
    124142      ! ------------------ 
    125143      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 
    127151         lrst_abl = .FALSE. 
    128152      ENDIF 
     
    146170      ENDIF 
    147171 
     172      lxios_sini = .FALSE. 
    148173      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 
    149185 
    150186      ! Time info 
     
    174210      CALL iom_get( numrar, jpdom_auto,'mxld_abl',mxld_abl(:,:,:           ) ) 
    175211      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 
    177214 
    178215   END SUBROUTINE abl_rst_read 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icectl.F90

    r14072 r14806  
    776776      IF( iom_use('icedrift_mass') .OR. iom_use('icedrift_salt') .OR. iom_use('icedrift_heat') ) THEN 
    777777         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) 
    780780            zdiag_salt2D(ji,jj) = sfx(ji,jj) + diag_sice(ji,jj) - diag_adv_salt(ji,jj) 
    781781            zdiag_heat2D(ji,jj) = qt_oce_ai(ji,jj) - qt_atm_oi(ji,jj) + diag_heat(ji,jj) - diag_adv_heat(ji,jj) 
     
    789789 
    790790      ! -- 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_ice 
     791      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 
    793793      zdiag_adv_mass = glob_sum( 'icectl', diag_adv_mass * e1e2t ) * rDt_ice 
    794794 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icedia.F90

    r14072 r14806  
    6767      REAL(wp)   ::   zbg_ivol, zbg_item, zbg_area, zbg_isal 
    6868      REAL(wp)   ::   zbg_svol, zbg_stem 
     69      REAL(wp)   ::   zbg_ipvol, zbg_ilvol 
    6970      REAL(wp)   ::   z_frc_voltop, z_frc_temtop, z_frc_sal 
    7071      REAL(wp)   ::   z_frc_volbot, z_frc_tembot 
     
    8788      ! ----------------------- ! 
    8889      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 
    9092 
    9193         zbg_ivol = glob_sum( 'icedia', vt_i(:,:) * e1e2t(:,:) ) * 1.e-9  ! ice volume (km3) 
     
    9597         zbg_item = glob_sum( 'icedia', et_i(:,:) * e1e2t(:,:) ) * 1.e-20 ! heat content (1.e20 J) 
    9698         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) 
    97102 
    98103         CALL iom_put( 'ibgvol_tot'  , zbg_ivol ) 
     
    102107         CALL iom_put( 'ibgheat_tot' , zbg_item ) 
    103108         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 ) 
    104112 
    105113      ENDIF 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icesbc.F90

    r14574 r14806  
    147147            &                                         sf(jp_slp)%fnow(:,:,1), sf(jp_qlw)%fnow(:,:,1), & 
    148148            &                                         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 ) 
    150150         IF( nn_flxdist /= -1 )   CALL ice_flx_dist   ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) 
    151151         !                        !    compute conduction flux and surface temperature (as in Jules surface module) 
     
    153153            &                     CALL blk_ice_qcn    ( ln_virtual_itd, t_su, t_bo, h_s, h_i ) 
    154154      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 ) 
    156156         IF( nn_flxdist /= -1 )   CALL ice_flx_dist   ( t_su, alb_ice, qns_ice, qsr_ice, dqns_ice, evap_ice, devap_ice, nn_flxdist ) 
    157157      END SELECT 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icethd_dh.F90

    r14072 r14806  
    224224      zevap_rema(1:npti) = 0._wp 
    225225      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) 
    230228      END DO 
    231229 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/icethd_ent.F90

    r13547 r14806  
    121121         DO ji = 1, npti 
    122122            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 
    124124         END DO 
    125125      END DO 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/ICE/iceupdate.F90

    r14574 r14806  
    104104      ! Net heat flux on top of the ice-ocean (W.m-2) 
    105105      !---------------------------------------------- 
    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 
    107112 
    108113      ! --- case we bypass ice thermodynamics --- ! 
     
    119124         ! Solar heat flux reaching the ocean (max) = zqsr (W.m-2) 
    120125         !--------------------------------------------------- 
    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 
    122131 
    123132         ! Total heat flux reaching the ocean = qt_oce_ai (W.m-2) 
    124133         !--------------------------------------------------- 
    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          
    130141         ! New qsr and qns used to compute the oceanic heat flux at the next time step 
    131142         !---------------------------------------------------------------------------- 
     
    275286 
    276287      ! other heat fluxes 
    277       IF( iom_use('hfxsensib'  ) )   CALL iom_put( 'hfxsensib'  ,     -qsb_ice_bot * at_i_b         )   ! Sensible oceanic heat flux 
     288      IF( iom_use('hfxsensib'  ) )   CALL iom_put( 'hfxsensib'  ,      qsb_ice_bot * at_i_b         )   ! Sensible oceanic heat flux 
    278289      IF( iom_use('hfxcndbot'  ) )   CALL iom_put( 'hfxcndbot'  , SUM( qcn_ice_bot * a_i_b, dim=3 ) )   ! Bottom conduction flux 
    279290      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 
    280294 
    281295      ! controls 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/BDY/bdyice.F90

    r14574 r14806  
    153153            h_i (ji,jj,  jl) = ( h_i (ji,jj,  jl) * zwgt1 + dta%h_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  depth  
    154154            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  temperature 
    156             t_s (ji,jj,:,jl) = ( t_s (ji,jj,:,jl) * zwgt1 + dta%t_s(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Snow temperature 
    157             t_su(ji,jj,  jl) = ( t_su(ji,jj,  jl) * zwgt1 + dta%tsu(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Surf temperature 
    158             s_i (ji,jj,  jl) = ( s_i (ji,jj,  jl) * zwgt1 + dta%s_i(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  salinity 
     155            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 
    159159            a_ip(ji,jj,  jl) = ( a_ip(ji,jj,  jl) * zwgt1 + dta%aip(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  pond concentration 
    160160            h_ip(ji,jj,  jl) = ( h_ip(ji,jj,  jl) * zwgt1 + dta%hip(i_bdy,jl) * zwgt ) * tmask(ji,jj,1)  ! Ice  pond depth 
     
    254254               sv_i(ji,jj,jl) = MIN( s_i(ji,jj,jl) , sss_m(ji,jj) ) * v_i(ji,jj,jl) ! salt content 
    255255               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 
    256258                  e_s(ji,jj,jk,jl) = rhos * ( rcpi * ( rt0 - t_s(ji,jj,jk,jl) ) + rLfus )   ! enthalpy in J/m3 
    257259                  e_s(ji,jj,jk,jl) = e_s(ji,jj,jk,jl) * v_s(ji,jj,jl) * r1_nlay_s           ! enthalpy in J/m2 
    258260               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) 
    259262               DO jk = 1, nlay_i 
    260263                  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 issue 
     264                  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 
    262265                  ! 
    263266                  e_i(ji,jj,jk,jl) = rhoi * ( rcpi  * ( ztmelts - ( t_i(ji,jj,jk,jl) - rt0 ) )           &   ! enthalpy in J/m3 
     
    363366                     IF( zflag == -1. .AND. ji > 1 .AND. ji < jpi )   THEN   
    364367                        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._wp 
     368                        ELSEIF( vt_i(ji+1,jj) > 0. )   THEN   ;   u_ice(ji,jj) = u_oce(ji,jj) 
    366369                        END IF 
    367370                     END IF 
     
    371374                     IF( zflag ==  1. .AND. ji+1 < jpi+1 )   THEN 
    372375                        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._wp 
     376                        ELSEIF( vt_i(ji  ,jj) > 0. )   THEN   ;   u_ice(ji,jj) = u_oce(ji,jj) 
    374377                        END IF 
    375378                     END IF 
     
    395398                     IF( zflag == -1. .AND. jj > 1 .AND. jj < jpj )   THEN                  
    396399                        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._wp 
     400                        ELSEIF( vt_i(ji,jj+1) > 0. )   THEN   ;   v_ice(ji,jj) = v_oce(ji,jj) 
    398401                        END IF 
    399402                     END IF 
     
    405408                     IF( zflag ==  1. .AND. jj < jpj )   THEN               
    406409                        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._wp 
     410                        ELSEIF( vt_i(ji,jj  ) > 0. )   THEN   ;   v_ice(ji,jj) = v_oce(ji,jj) 
    408411                        END IF 
    409412                     END IF 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ICB/icbdia.F90

    r14574 r14806  
    491491   SUBROUTINE icb_dia_melt(ki, kj, pmnew, pheat_hcflux, pheat_latent, pmass_scale,     & 
    492492      &                    pdM, pdMbitsE, pdMbitsM, pdMb, pdMe,   & 
    493       &                    pdMv, pz1_dt_e1e2 ) 
     493      &                    pdMv, pz1_dt_e1e2, pz1_e1e2 ) 
    494494      !!---------------------------------------------------------------------- 
    495495      !!---------------------------------------------------------------------- 
    496496      INTEGER , INTENT(in) ::   ki, kj 
    497497      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 
    499499      !!---------------------------------------------------------------------- 
    500500      ! 
     
    502502      ! 
    503503      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/s 
    505       berg_melt_qlat (ki,kj) = berg_melt_qlat (ki,kj) + pheat_latent * pz1_dt_e1e2   ! J/m2/s 
     504      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 
    506506      bits_src  (ki,kj) = bits_src  (ki,kj) + pdMbitsE * pz1_dt_e1e2   ! mass flux into bergy bitskg/m2/s 
    507507      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  
    241241            CALL icb_dia_melt( ii, ij, zMnew, zheat_hcflux, zheat_latent, this%mass_scaling,       & 
    242242               &                       zdM, zdMbitsE, zdMbitsM, zdMb, zdMe,   & 
    243                &                       zdMv, z1_dt_e1e2 ) 
     243               &                       zdMv, z1_dt_e1e2, z1_e1e2 ) 
    244244         ELSE 
    245245            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  
    175175   CHARACTER(LEN=lc) ::   cr_icerst_cxt     !: context name used in xios to read SI3 restart 
    176176   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 
    177179   CHARACTER(LEN=lc) ::   cr_toprst_cxt     !: context name used in xios to read TOP restart 
    178180   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  
    143143 
    144144      llrstr = (cdname == cr_ocerst_cxt) .OR. (cdname == cr_icerst_cxt) 
     145      llrstr = llrstr .OR. (cdname == cr_ablrst_cxt) 
    145146      llrstr = llrstr .OR. (cdname == cr_toprst_cxt) 
    146147      llrstr = llrstr .OR. (cdname == cr_sedrst_cxt) 
    147148 
    148149      llrstw = (cdname == cw_ocerst_cxt) .OR. (cdname == cw_icerst_cxt) 
     150      llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 
    149151      llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
    150152      llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
     
    315317         llrstw = (cdname == cw_ocerst_cxt) 
    316318         llrstw = llrstw .OR. (cdname == cw_icerst_cxt) 
     319         llrstw = llrstw .OR. (cdname == cw_ablrst_cxt) 
    317320         llrstw = llrstw .OR. (cdname == cw_toprst_cxt) 
    318321         llrstw = llrstw .OR. (cdname == cw_sedrst_cxt) 
     
    357360      LOGICAL                                    :: lmeta 
    358361!metadata in restart file for restart read with XIOS 
    359       INTEGER, PARAMETER                         :: NMETA = 10 
     362      INTEGER, PARAMETER                         :: NMETA = 11 
    360363      CHARACTER(LEN=lc)                          :: meta(NMETA) 
    361364 
     
    371374      meta(9) = "y" 
    372375      meta(10) = "numcat" 
     376      meta(11) = "nav_hgt" 
    373377 
    374378      clinfo = '          iom_set_vars_active, file: '//TRIM(iom_file(idnum)%name) 
     
    548552      IF(idlev == jpk) THEN 
    549553         axis_ref="nav_lev" 
     554      ELSEIF(idlev == jpka) THEN 
     555         axis_ref="nav_hgt" 
    550556#if defined key_si3 
    551557      ELSEIF(idlev == jpl) THEN 
     
    615621      CALL iom_set_axis_attr( "numcat", (/ (REAL(ji,wp), ji=1,jpl) /) ) 
    616622#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) /) ) 
    617625      CALL xios_get_handle("scalar_definition", scalargroup_hdl) 
    618626      CALL xios_add_child(scalargroup_hdl, scalar_hdl, "grid_scalar") 
     
    638646         ELSEIF(kdid == numrir) THEN 
    639647            cdcont = cr_icerst_cxt 
     648         ELSEIF(kdid == numrar) THEN 
     649            cdcont = cr_ablrst_cxt 
    640650         ELSEIF(kdid == numrtr) THEN 
    641651            cdcont = cr_toprst_cxt 
     
    650660         ELSEIF(kdid == numriw) THEN 
    651661            cdcont = cw_icerst_cxt 
     662         ELSEIF(kdid == numraw) THEN 
     663            cdcont = cw_ablrst_cxt 
    652664         ELSEIF(kdid == numrtw) THEN 
    653665            cdcont = cw_toprst_cxt 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcblk.F90

    r14574 r14806  
    892892      REAL(wp) ::   zztmp,zz1,zz2,zz3    ! local variable 
    893893      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      ! 
    898902      ! ----------------------------------------------------------------------------- ! 
    899903      !     III    Net longwave radiative FLUX                                        ! 
     
    907911      ! ----------------------------------------------------------------------------- ! 
    908912      ! 
    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) 
    919920      qns(:,:) = qns(:,:) * tmask(:,:,1) 
    920921      ! 
     
    10001001      ! C-grid ice dynamics :   U & V-points (same as ocean) 
    10011002      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) ) 
    10031004      END_2D 
    10041005      ! 
     
    11201121      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_dqsb        ! sensible  heat sensitivity over ice 
    11211122      REAL(wp), DIMENSION(jpi,jpj)     ::   zevap, zsnw   ! evaporation and snw distribution after wind blowing (SI3) 
    1122       REAL(wp), DIMENSION(jpi,jpj)     ::   ztmp, ztmp2 
    11231123      REAL(wp), DIMENSION(jpi,jpj)     ::   ztri 
     1124      REAL(wp), DIMENSION(jpi,jpj)     ::   zcptrain, zcptsnw, zcptn ! Heat content per unit mass (J/kg) 
    11241125      !!--------------------------------------------------------------------- 
    11251126      ! 
     
    11301131      dqla_ice(:,:,:) = 0._wp 
    11311132 
     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      ! 
    11321138      !                                     ! ========================== ! 
    11331139      DO jl = 1, jpl                        !  Loop over ice categories  ! 
     
    12051211 
    12061212      ! --- 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) 
    12131217 
    12141218      ! --- total solar and non solar fluxes --- ! 
     
    12181222 
    12191223      ! --- 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 ) 
    12211225 
    12221226      ! --- heat content of evap over ice in W/m2 (to be used in 1D-thermo) --- 
     
    12501254      ! 
    12511255      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) 
    12701279      ENDIF 
    12711280      ! 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbccpl.F90

    r14765 r14806  
    129129   INTEGER, PARAMETER ::   jpr_icb    = 61 
    130130   INTEGER, PARAMETER ::   jpr_ts_ice = 62   ! Sea ice surface temp 
     131   !!INTEGER, PARAMETER ::   jpr_qtrice = 63   ! Transmitted solar thru sea-ice 
    131132 
    132133   INTEGER, PARAMETER ::   jprcv      = 62   ! total number of fields received 
     
    202203      &             sn_rcv_wstrf, sn_rcv_wdrag, sn_rcv_charn, sn_rcv_taw, sn_rcv_bhd, sn_rcv_tusd, sn_rcv_tvsd 
    203204   !                                   ! Other namelist parameters 
     205!!   TYPE(FLD_C) ::   sn_rcv_qtrice 
    204206   INTEGER     ::   nn_cplmodel           ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
    205207   LOGICAL     ::   ln_usecplmask         !  use a coupling mask file to merge data received from several models 
     
    237239      !!             ***  FUNCTION sbc_cpl_alloc  *** 
    238240      !!---------------------------------------------------------------------- 
    239       INTEGER :: ierr(5) 
     241      INTEGER :: ierr(4) 
    240242      !!---------------------------------------------------------------------- 
    241243      ierr(:) = 0 
     
    247249#endif 
    248250      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) ) 
    254253 
    255254      sbc_cpl_alloc = MAXVAL( ierr ) 
     
    286285         &                  sn_rcv_charn , sn_rcv_taw   , sn_rcv_bhd  , sn_rcv_tusd  , sn_rcv_tvsd,    & 
    287286         &                  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 
    289288 
    290289      !!--------------------------------------------------------------------- 
     
    327326         WRITE(numout,*)'      ice shelf                       = ', TRIM(sn_rcv_isf%cldes   ), ' (', TRIM(sn_rcv_isf%clcat   ), ')' 
    328327         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), ')' 
    329329         WRITE(numout,*)'      atm co2                         = ', TRIM(sn_rcv_co2%cldes   ), ' (', TRIM(sn_rcv_co2%clcat   ), ')' 
    330330         WRITE(numout,*)'      Sea ice surface skin temperature= ', TRIM(sn_rcv_ts_ice%cldes), ' (', TRIM(sn_rcv_ts_ice%clcat), ')' 
     
    602602      srcv(jpr_mslp)%clname = 'O_MSLP'     ;   IF( TRIM(sn_rcv_mslp%cldes  ) == 'coupled' )    srcv(jpr_mslp)%laction = .TRUE. 
    603603      ! 
    604       !                                                      ! ------------------------- ! 
    605       !                                                      !  ice topmelt and botmelt  ! 
    606       !                                                      ! ------------------------- ! 
     604      !                                                      ! --------------------------------- ! 
     605      !                                                      !  ice topmelt and conduction flux  !    
     606      !                                                      ! --------------------------------- ! 
    607607      srcv(jpr_topm )%clname = 'OTopMlt' 
    608608      srcv(jpr_botm )%clname = 'OBotMlt' 
     
    615615         srcv(jpr_topm:jpr_botm)%laction = .TRUE. 
    616616      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 
    617629      !                                                      ! ------------------------- ! 
    618630      !                                                      !    ice skin temperature   ! 
     
    888900      END SELECT 
    889901 
    890       ! Initialise ice fractions from last coupling time to zero (needed by Met-Office) 
    891 #if defined key_si3 || defined key_cice 
    892        a_i_last_couple(:,:,:) = 0._wp 
    893 #endif 
    894902      !                                                      ! ------------------------- ! 
    895903      !                                                      !      Ice Meltponds        ! 
     
    15891597      !! ** Action  :   return ptau_i, ptau_j, the stress over the ice 
    15901598      !!---------------------------------------------------------------------- 
    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) 
    15931601      !! 
    15941602      INTEGER ::   ji, jj   ! dummy loop indices 
     
    15971605      REAL(wp), DIMENSION(jpi,jpj) ::   ztx, zty 
    15981606      !!---------------------------------------------------------------------- 
     1607      ! 
     1608#if defined key_si3 || defined key_cice 
    15991609      ! 
    16001610      IF( srcv(jpr_itx1)%laction ) THEN   ;   itx =  jpr_itx1 
     
    16711681      ENDIF 
    16721682      ! 
     1683#endif 
     1684      ! 
    16731685   END SUBROUTINE sbc_cpl_ice_tau 
    16741686 
    16751687 
    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 ) 
    16771689      !!---------------------------------------------------------------------- 
    16781690      !!             ***  ROUTINE sbc_cpl_ice_flx  *** 
     
    17161728      !!                                                                      are provided but not included in emp here. Only runoff will 
    17171729      !!                                                                      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      !! 
    17181737      !! ** Action  :   update at each nf_ice time step: 
    17191738      !!                   qns_tot, qsr_tot  non-solar and solar total heat fluxes 
     
    17241743      !!                   sprecip           solid precipitation over the ocean 
    17251744      !!---------------------------------------------------------------------- 
     1745      INTEGER,  INTENT(in)                                ::   kt         ! ocean model time step index (only for a_i_last_couple) 
    17261746      REAL(wp), INTENT(in)   , DIMENSION(:,:)             ::   picefr     ! ice fraction                [0 to 1] 
    17271747      !                                                   !!           ! optional arguments, used only in 'mixed oce-ice' case or for Met-Office coupling 
     
    17401760      REAL(wp), DIMENSION(jpi,jpj)     ::   ztri 
    17411761      !!---------------------------------------------------------------------- 
     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 
    17421771      ! 
    17431772      IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0) 
     
    17671796         CALL ctl_stop('STOP', 'sbccpl/sbc_cpl_ice_flx: some fields are not defined. Change sn_rcv_emp value in namelist namsbc_cpl') 
    17681797      END SELECT 
    1769  
    1770 #if defined key_si3 
    17711798 
    17721799      ! --- evaporation over ice (kg/m2/s) --- ! 
     
    18601887      ENDIF 
    18611888 
    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      ! 
    18931918      ! outputs 
    1894 !!      IF( srcv(jpr_rnf)%laction )   CALL iom_put( 'runoffs' , rnf(:,:) * tmask(:,:,1)                                 )  ! runoff 
    1895 !!      IF( srcv(jpr_isf)%laction )   CALL iom_put( 'iceshelf_cea', -fwfisf(:,:) * tmask(:,:,1)                         )  ! iceshelf 
    18961919      IF( srcv(jpr_cal)%laction )    CALL iom_put( 'calving_cea' , frcv(jpr_cal)%z3(:,:,1) * tmask(:,:,1)                )  ! calving 
    18971920      IF( srcv(jpr_icb)%laction )    CALL iom_put( 'iceberg_cea' , frcv(jpr_icb)%z3(:,:,1) * tmask(:,:,1)                )  ! icebergs 
     
    19011924      IF( iom_use('snow_ao_cea') )   CALL iom_put( 'snow_ao_cea' , sprecip(:,:) * ( 1._wp - zsnw(:,:) )                  )  ! Snow over ice-free ocean  (cell average) 
    19021925      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) 
    19051928      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) 
    19071930      ! 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 
    19081951      ! 
    19091952      !                                                      ! ========================= ! 
     
    19111954      !                                                      ! ========================= ! 
    19121955      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 ) 
    19171965      CASE( 'conservative' )     ! the required fields are directly provided 
    19181966         zqns_tot(:,:) = frcv(jpr_qnsmix)%z3(:,:,1) 
     
    19612009      IF( srcv(jpr_icb)%laction )   zqns_tot(:,:) = zqns_tot(:,:) - frcv(jpr_icb)%z3(:,:,1) * rLfus  ! remove latent heat of iceberg melting 
    19622010 
    1963 #if defined key_si3 
    19642011      ! --- non solar flux over ocean --- ! 
    19652012      !         note: ziceld cannot be = 0 since we limit the ice concentration to amax 
     
    20142061      ENDIF 
    20152062 
    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 
    20382085      ! outputs 
    20392086      IF ( srcv(jpr_cal)%laction ) CALL iom_put('hflx_cal_cea' , - frcv(jpr_cal)%z3(:,:,1) * rLfus ) ! latent heat from calving 
     
    20532100      IF (        iom_use('hflx_snow_ai_cea') ) &                                                    ! heat flux from snow (over ice) 
    20542101         &   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) ) 
    20552104      ! note: hflx for runoff and iceshelf are done in sbcrnf and sbcisf resp. 
    20562105      ! 
     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 
    20572129      !                                                      ! ========================= ! 
    20582130      SELECT CASE( TRIM( sn_rcv_qsr%cldes ) )                !      solar heat fluxes    !   (qsr) 
     
    20602132      CASE( 'oce only' ) 
    20612133         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 zero 
    2063          ! 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. 
    20642136         zqsr_ice(:,:,:) = 0._wp 
    20652137      CASE( 'conservative' ) 
     
    21142186         END DO 
    21152187      ENDIF 
    2116  
    2117 #if defined key_si3 
    2118       ! --- solar flux over ocean --- ! 
    2119       !         note: ziceld cannot be = 0 since we limit the ice concentration to amax 
    2120       zqsr_oce = 0._wp 
    2121       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(:,:)   ;   ENDIF 
    2125 #endif 
    2126  
    2127       IF( ln_mixcpl ) THEN 
    2128          qsr_tot(:,:) = qsr(:,:) * ziceld(:,:) + SUM( qsr_ice(:,:,:) * a_i(:,:,:), dim=3 )   ! total flux from blk 
    2129          qsr_tot(:,:) = qsr_tot(:,:) * xcplmask(:,:,0) +  zqsr_tot(:,:)* zmsk(:,:) 
    2130          DO jl = 1, jpl 
    2131             qsr_ice(:,:,jl) = qsr_ice(:,:,jl) * xcplmask(:,:,0) +  zqsr_ice(:,:,jl)* zmsk(:,:) 
    2132          END DO 
    2133       ELSE 
    2134          qsr_tot(:,:  ) = zqsr_tot(:,:  ) 
    2135          qsr_ice(:,:,:) = zqsr_ice(:,:,:) 
    2136       ENDIF 
    2137  
    2138       !                                                      ! ========================= ! 
    2139       SELECT CASE( TRIM( sn_rcv_dqnsdt%cldes ) )             !          d(qns)/dt        ! 
    2140       !                                                      ! ========================= ! 
    2141       CASE ('coupled') 
    2142          IF( TRIM(sn_rcv_dqnsdt%clcat) == 'yes' ) THEN 
    2143             zdqns_ice(:,:,1:jpl) = frcv(jpr_dqnsdt)%z3(:,:,1:jpl) 
    2144          ELSE 
    2145             ! Set all category values equal for the moment 
    2146             DO jl=1,jpl 
    2147                zdqns_ice(:,:,jl) = frcv(jpr_dqnsdt)%z3(:,:,1) 
    2148             ENDDO 
    2149          ENDIF 
    2150       CASE( 'none' ) 
    2151          zdqns_ice(:,:,:) = 0._wp 
    2152       END SELECT 
    2153  
    2154       IF( ln_mixcpl ) THEN 
    2155          DO jl=1,jpl 
    2156             dqns_ice(:,:,jl) = dqns_ice(:,:,jl) * xcplmask(:,:,0) + zdqns_ice(:,:,jl) * zmsk(:,:) 
    2157          ENDDO 
    2158       ELSE 
    2159          dqns_ice(:,:,:) = zdqns_ice(:,:,:) 
    2160       ENDIF 
    2161  
    2162 #if defined key_si3 
    2163       !                                                      ! ========================= ! 
    2164       SELECT CASE( TRIM( sn_rcv_iceflx%cldes ) )             !  ice topmelt and botmelt  ! 
    2165       !                                                      ! ========================= ! 
    2166       CASE ('coupled') 
    2167          IF (ln_scale_ice_flux) THEN 
    2168             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             ELSEWHERE 
    2172                qml_ice(:,:,:) = 0.0_wp 
    2173                qcn_ice(:,:,:) = 0.0_wp 
    2174             END WHERE 
    2175          ELSE 
    2176             qml_ice(:,:,:) = frcv(jpr_topm)%z3(:,:,:) 
    2177             qcn_ice(:,:,:) = frcv(jpr_botm)%z3(:,:,:) 
    2178          ENDIF 
    2179       END SELECT 
    21802188      !                                                      ! ========================= ! 
    21812189      !                                                      !      Transmitted Qsr      !   [W/m2] 
     
    22092217      ELSEIF( ln_cndflx .AND. .NOT.ln_cndemulate ) THEN      !==  conduction flux as surface forcing  ==! 
    22102218         ! 
    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') 
    22132239         zqtr_ice_top(:,:,:) = 0._wp 
    2214          ! 
    2215       ENDIF 
    2216       ! 
     2240!!         END SELECT 
     2241            ! 
     2242      ENDIF 
     2243 
    22172244      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(:,:) 
    22192249            qtr_ice_top(:,:,jl) = qtr_ice_top(:,:,jl) * xcplmask(:,:,0) + zqtr_ice_top(:,:,jl) * zmsk(:,:) 
    2220          ENDDO 
     2250         END DO 
    22212251      ELSE 
     2252         qsr_tot    (:,:  ) = zqsr_tot    (:,:  ) 
     2253         qsr_ice    (:,:,:) = zqsr_ice    (:,:,:) 
    22222254         qtr_ice_top(:,:,:) = zqtr_ice_top(:,:,:) 
    22232255      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 
    22242265      !                                                      ! ================== ! 
    22252266      !                                                      !   ice skin temp.   ! 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcfwb.F90

    r14130 r14806  
    123123            emp(:,:) = emp(:,:) - z_fwfprv(1)        * tmask(:,:,1) 
    124124            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) ) 
    125128         ENDIF 
    126129         ! 
     
    154157            emp(:,:) = emp(:,:) + a_fwb              * tmask(:,:,1) 
    155158            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) ) 
    156162         ENDIF 
    157163         ! Output restart information 
     
    201207            qns(:,:) = qns(:,:) - zerp_cor(:,:) * rcp * sst_m(:,:)  ! account for change to the heat budget due to fw correction 
    202208            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(:,:) ) 
    203212            ! 
    204213            IF( lwp ) THEN                   ! control print 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcice_cice.F90

    r14574 r14806  
    139139            CALL cice_sbc_force(kt) 
    140140         ELSE IF( ksbc == jp_purecpl ) THEN 
    141             CALL sbc_cpl_ice_flx( fr_i ) 
     141            CALL sbc_cpl_ice_flx( kt, fr_i ) 
    142142         ENDIF 
    143143 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcrnf.F90

    r14787 r14806  
    131131             IF( ln_rnf_icb ) THEN 
    132132                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 --> 
    135139             ENDIF 
    136140         ENDIF 
     
    152156                                         CALL iom_put( 'runoffs'     , rnf(:,:)                         )   ! output runoff mass flux 
    153157         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) 
    154159      ENDIF 
    155160      ! 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/SBC/sbcssr.F90

    r14780 r14806  
    9494            !                                      ! ========================= ! 
    9595            ! 
     96            qrp(:,:) = 0._wp ! necessary init 
     97            erp(:,:) = 0._wp 
     98            ! 
    9699            IF( nn_sstr == 1 ) THEN                                   !* Temperature restoring term 
    97100               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     
    135138                  qns(ji,jj) = qns(ji,jj) - zerp * rcp * sst_m(ji,jj) 
    136139                  erp(ji,jj) = zerp 
     140                  qrp(ji,jj) = qrp(ji,jj) - zerp * rcp * sst_m(ji,jj) 
    137141               END_2D 
    138142            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(:,:) ) 
    139147            ! 
    140148         ENDIF 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/tradmp.F90

    r14787 r14806  
    101101      IF( ln_timing )   CALL timing_start('tra_dmp') 
    102102      ! 
    103       IF( l_trdtra )   THEN                    !* Save ta and sa trends 
     103      IF( l_trdtra .OR. iom_use('hflx_dmp_cea') .OR. iom_use('sflx_dmp_cea') ) THEN   !* Save ta and sa trends 
    104104         ALLOCATE( ztrdts(jpi,jpj,jpk,jpts) ) 
    105105         ztrdts(:,:,:,:) = pts(:,:,:,:,Krhs) 
     
    139139         ! 
    140140      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 
    141149      ! 
    142150      IF( l_trdtra )   THEN       ! trend diagnostic 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/step.F90

    r14787 r14806  
    133133#endif 
    134134      ENDIF 
     135      IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 
    135136#if defined key_si3 
    136       IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 
    137137                             CALL iom_swap(                     cw_icerst_cxt ) 
    138138                             CALL iom_init_closedef(            cw_icerst_cxt ) 
    139139                             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 
    142147      IF( kstp /= nit000 )   CALL day( kstp )         ! Calendar (day was already called at nit000 in day_init) 
    143148                             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  
    140140#endif 
    141141      ENDIF 
     142      IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 
    142143#if defined key_si3 
    143       IF( kstp + nn_fsbc - 1 == nitrst .AND. lwxios ) THEN 
    144144                             CALL iom_swap(                     cw_icerst_cxt ) 
    145145                             CALL iom_init_closedef(            cw_icerst_cxt ) 
    146146                             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 
    149154      IF( kstp /= nit000 )   CALL day( kstp )         ! Calendar (day was already called at nit000 in day_init) 
    150155                             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  
    102102               e3t_m(:,:) = e3t_0(:,:,1)                                 ! vertical scale factor 
    103103            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 
    104108            ssu_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1)    ! u-velocity 
    105109            ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1)    ! v-velocity 
    106110         ENDIF 
    107111         ! 
     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 
    108118         sst_m(:,:) = sf_ssm_2d(jf_tem)%fnow(:,:,1) * tmask(:,:,1)    ! temperature 
    109119         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  
    7070 
    7171   !!*  Biological fluxes for light : variables shared by pisces & lobster 
    72    INTEGER , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  neln  !: number of T-levels + 1 in the euphotic layer 
    73    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup  !: euphotic layer depth 
    74    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 cycle 
    7672   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enano, ediat   !: PAR for phyto, nano and diat  
    7773   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  enanom, ediatm !: PAR for phyto, nano and diat  
     
    7975   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  epicom         !: PAR for pico 
    8076   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  emoy           !: averaged PAR in the mixed layer 
    81    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  heup_01 !: Absolute euphotic layer depth 
    8277   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  xksi  !:  LOBSTER : zooplakton closure 
    8378 
     
    139134      ierr(:) = 0 
    140135      !*  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) ) 
    143137      ! 
    144138   
     
    147141         ALLOCATE(  enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk) ,   & 
    148142           &        enanom(jpi,jpj,jpk)   , ediatm(jpi,jpj,jpk),   & 
    149            &        etot_ndcy(jpi,jpj,jpk), emoy(jpi,jpj,jpk)  ,  STAT=ierr(2) )  
     143           &        emoy(jpi,jpj,jpk)                          ,  STAT=ierr(2) )  
    150144 
    151145         !*  Biological fluxes for primary production 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/TOP/TRP/trcadv.F90

    r14805 r14806  
    129129            CALL tra_adv_fct( kt, nittrc000,'TRC', rDt_trc, zuu, zvv, zww, Kbb, Kmm, ptr, jptra, Krhs, nn_fct_h, nn_fct_v ) 
    130130      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 ) 
    132132      CASE ( np_UBS )                                 ! UBS 
    133133         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  
    8282   CHARACTER(len=2), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   cn_trc_o         !: choice of ocean tracer cc 
    8383 
     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 
    8492 
    8593   !! information for outputs 
     
    156164         &      gtrui(jpi,jpj,jptra)  , gtrvi(jpi,jpj,jptra)                          ,       & 
    157165         &      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)                        ,       & 
    158168         &      sbc_trc_b(jpi,jpj,jptra), sbc_trc(jpi,jpj,jptra)                      ,       &   
    159169         &      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  
    1111   ln_sco      = .false.      ! s-coordinate    
    1212   rn_dx       =   1000.   !  horizontal resolution   [meters] 
    13    rn_dz       =     20.   !  vertical   resolution   [meters] 
     13   rn_dz       =     50.   !  vertical   resolution   [meters] 
    1414/ 
    1515! 
     
    2626   cn_exp      =    "OVF"  !  experience name 
    2727   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 conditions 
     28   nn_itend    =    1530   ! here 16h of simulation  (=5760 time-step) abort after 5802 for zps: pb of physics conditions 
    2929   nn_istate   =       0   !  output the initial state (1) or not (0) 
    3030   nn_stock    =    9999   !  frequency of creation of a restart file (modulo referenced to 1) 
     
    4242&namdom        !   space and time domain (bathymetry, mesh, timestep) 
    4343!----------------------------------------------------------------------- 
    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) 
    4545   rn_atfp    =    0.1    !  asselin time filter parameter 
    4646   ln_meshmask = .false.  !  =T create a mesh file 
     
    150150   ln_dynvor_mix = .false. !  mixed scheme 
    151151   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) 
    153152/ 
    154153!----------------------------------------------------------------------- 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/tests/OVERFLOW/EXPREF/AGRIF/AGRIF_FixedGrids.in

    r13936 r14806  
    111 
    2 10 41 1 4 4 1 4  
     210 41 1 4 1 1 1  
    330 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/tests/OVERFLOW/EXPREF/AGRIF/namelist_cfg

    r14229 r14806  
    1111   ln_sco      = .false.      ! s-coordinate    
    1212   rn_dx       =   1000.   !  horizontal resolution   [meters] 
    13    rn_dz       =     20.   !  vertical   resolution   [meters] 
     13   rn_dz       =     50.   !  vertical   resolution   [meters] 
    1414/ 
    1515! 
     
    2020   cn_exp      =    "OVF"  !  experience name 
    2121   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 conditions 
     22   nn_itend    =    1530   ! here 16h of simulation  (=5760 time-step) abort after 5802 for zps: pb of physics conditions 
    2323   nn_istate   =       0   !  output the initial state (1) or not (0) 
    2424   nn_stock    =    9999   !  frequency of creation of a restart file (modulo referenced to 1) 
     
    144144   ln_dynvor_mix = .false. !  mixed scheme 
    145145   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) 
    147146/ 
    148147!----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.