Bernie et al.  have shown that to capture 90 of the diurnal variability of SST requires a vertical resolution in upper ocean of 1 m or better and a temporal resolution of the surface fluxes of 3 h or less. Unfortunately high frequency forcing fields are rare, not to say inexistent. Nevertheless, it is possible to obtain a reasonable diurnal cycle of the SST knowning only short wave flux (SWF) at high frequency [Bernie et al., 2007]. Furthermore, only the knowledge of daily mean value of SWF is needed, as higher frequency variations can be reconstructed from them, assuming that the diurnal cycle of SWF is a scaling of the top of the atmosphere diurnal cycle of incident SWF. The Bernie et al.  reconstruction algorithm is available in NEMO by setting ln_dm2dc = true (a namsbc namelist variable) when using CORE bulk formulea (ln_blk_core = true) or the flux formulation (ln_flx = true). The reconstruction is performed in the sbcdcy.F90 module. The detail of the algoritm used can be found in the appendix A of Bernie et al. . The algorithm preserve the daily mean incomming SWF as the reconstructed SWF at a given time step is the mean value of the analytical cycle over this time step (Fig.7.2). The use of diurnal cycle reconstruction requires the input SWF to be daily ( a frequency of 24 and a time interpolation set to true in sn_qsr namelist parameter). Furthermore, it is recommended to have a least 8 surface module time step per day, that is . An example of recontructed SWF is given in Fig.7.3 for a 12 reconstructed diurnal cycle, one every 2 hours (from 1am to 11pm).
Note also that the setting a diurnal cycle in SWF is highly recommended when the top layer thickness approach 1 m or less, otherwise large error in SST can appear due to an inconsistency between the scale of the vertical resolution and the forcing acting on that scale.
When using a flux (ln_flx=true) or bulk (ln_clio=true or ln_core=true) formulation, pairs of vector components can be rotated from east-north directions onto the local grid directions. This is particularly useful when interpolation on the fly is used since here any vectors are likely to be defined relative to a rectilinear grid. To activate this option a non-empty string is supplied in the rotation pair column of the relevant namelist. The eastward component must start with "U" and the northward component with "V". The remaining characters in the strings are used to identify which pair of components go together. So for example, strings "U1" and "V1" next to "utau" and "vtau" would pair the wind stress components together and rotate them on to the model grid directions; "U2" and "V2" could be used against a second pair of components, and so on. The extra characters used in the strings are arbitrary. The rot_rep routine from the geo2ocean.F90 module is used to perform the rotation.
!----------------------------------------------------------------------- &namsbc_ssr ! surface boundary condition : sea surface restoring !----------------------------------------------------------------------- ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! sn_sst = 'sst_data' , 24 , 'sst' , .false. , .false., 'yearly' , '' , '' , '' sn_sss = 'sss_data' , -1 , 'sss' , .true. , .true. , 'yearly' , '' , '' , '' cn_dir = './' ! root directory for the location of the runoff files nn_sstr = 0 ! add a retroaction term in the surface heat flux (=1) or not (=0) nn_sssr = 2 ! add a damping term in the surface freshwater flux (=2) ! or to SSS only (=1) or no damping term (=0) rn_dqdt = -40. ! magnitude of the retroaction on temperature [W/m2/K] rn_deds = -166.67 ! magnitude of the damping on salinity [mm/day] ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2) rn_sssr_bnd = 4.e0 ! ABS(Max/Min) value of the damping erp term [mm/day] /
IOptions are defined through the namsbc_ssr namelist variables. n forced mode using a flux formulation (ln_flx = true), a feedback term must be added to the surface heat flux :
In the fresh water budget, a feedback term can also be added. Converted into an equivalent freshwater flux, it takes the following expression :
where is a net surface fresh water flux (observed, climatological or an atmospheric model product), SSS is a sea surface salinity (usually a time interpolation of the monthly mean Polar Hydrographic Climatology [Steele et al., 2001]), is the model surface layer salinity and is a negative feedback coefficient which is provided as a namelist parameter. Unlike heat flux, there is no physical justification for the feedback term in 7.9 as the atmosphere does not care about ocean surface salinity [Madec and Delecluse, 1997]. The SSS restoring term should be viewed as a flux correction on freshwater fluxes to reduce the uncertainties we have on the observed freshwater budget.
The presence at the sea surface of an ice covered area modifies all the fluxes transmitted to the ocean. There are several way to handle sea-ice in the system depending on the value of the nn_ice namelist parameter found in namsbc namelist.
It is now possible to couple a regional or global NEMO configuration (without AGRIF) to the CICE sea-ice model by using key_ cice. The CICE code can be obtained from LANL and the additional 'hadgem3' drivers will be required, even with the latest code release. Input grid files consistent with those used in NEMO will also be needed, and CICE CPP keys ORCA_GRID, CICE_IN_NEMO and coupled should be used (seek advice from UKMO if necessary). Currently the code is only designed to work when using the CORE forcing option for NEMO (with calc_strair = true and calc_Tsfc = true in the CICE name-list), or alternatively when NEMO is coupled to the HadGAM3 atmosphere model (with calc_strair = false and calc_Tsfc = false). The code is intended to be used with nn_fsbc set to 1 (although coupling ocean and ice less frequently should work, it is possible the calculation of some of the ocean-ice fluxes needs to be modified slightly - the user should check that results are not significantly different to the standard case).
There are two options for the technical coupling between NEMO and CICE. The standard version allows complete flexibility for the domain decompositions in the individual models, but this is at the expense of global gather and scatter operations in the coupling which become very expensive on larger numbers of processors. The alternative option (using key_ nemocice_decomp for both NEMO and CICE) ensures that the domain decomposition is identical in both models (provided domain parameters are set appropriately, and processor_shape = square-ice and distribution_wght = block in the CICE name-list) and allows much more efficient direct coupling on individual processors. This solution scales much better although it is at the expense of having more idle CICE processors in areas where there is no sea ice.
For global ocean simulation it can be useful to introduce a control of the mean sea level in order to prevent unrealistic drift of the sea surface height due to inaccuracy in the freshwater fluxes. In NEMO, two way of controlling the the freshwater budget.
!----------------------------------------------------------------------- &namsbc_wave ! External fields from wave model !----------------------------------------------------------------------- ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! sn_cdg = 'cdg_wave' , 1 , 'drag_coeff' , .true. , .false. , 'daily' , '' , '' , '' sn_usd = 'sdw_wave' , 1 , 'u_sd2d' , .true. , .false. , 'daily' , '' , '' , '' sn_vsd = 'sdw_wave' , 1 , 'v_sd2d' , .true. , .false. , 'daily' , '' , '' , '' sn_wn = 'sdw_wave' , 1 , 'wave_num' , .true. , .false. , 'daily' , '' , '' , '' ! cn_dir_cdg = './' ! root directory for the location of drag coefficient files /
In order to read a neutral drag coeff, from an external data source ( a wave model), the logical variable ln_cdgw in namsbc namelist must be set to true. The sbcwave.F90 module containing the routine sbc_wave reads the namelist namsbc_wave (for external data names, locations, frequency, interpolation and all the miscellanous options allowed by Input Data generic Interface see §7.2) and a 2D field of neutral drag coefficient. Then using the routine TURB_CORE_1Z or TURB_CORE_2Z, and starting from the neutral drag coefficent provided, the drag coefficient is computed according to stable/unstable conditions of the air-sea interface following Large and Yeager .
Gurvan Madec and the NEMO Team
NEMO European Consortium2017-02-17