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 4644 – NEMO

Changeset 4644


Ignore:
Timestamp:
2014-05-15T15:56:53+02:00 (10 years ago)
Author:
acc
Message:

Branch 2014/dev_r4642_WavesWG #1323. Import of surface wave components from the 2013/dev_ECMWF_waves branch + a few compatability changes and some mislaid documentation

Location:
branches/2014/dev_r4642_WavesWG
Files:
2 added
14 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Biblio/Biblio.bib

    r4560 r4644  
    514514} 
    515515 
     516@TECHREPORT{Breivik_ECMWF13, 
     517      AUTHOR = "{\O} Breivik and PAEM Janssen and JR Bidlot", 
     518      TITLE = "{Approximate Stokes Drift Profiles in Deep Water}", 
     519      YEAR = "2013", 
     520      PAGES = "18", 
     521      NUMBER = "716", 
     522      URL = "http://www.ecmwf.int/publications/library/do/references/list/14", 
     523      TYPE = "ECMWF Technical Memorandum", 
     524      INSTITUTION = "European Centre for Medium-Range Weather Forecasts"} 
     525 
    516526@ARTICLE{Brown_Campana_MWR78, 
    517527  author = {J. A. Brown and K. A. Campana}, 
     
    651661} 
    652662 
     663@article{Charnock_QJRMS55, 
     664  title="{Wind stress on a water surface}", 
     665  author="Charnock, H", 
     666  journal=QJRMS, 
     667  volume="81", 
     668  number="350", 
     669  pages={639--640}, 
     670  year=1955} 
     671 
    653672@ARTICLE{Cox1987, 
    654673  author = {M. Cox}, 
     
    742761  volume = {34}, 
    743762  pages = {8--13} 
     763} 
     764 
     765@article{Dee_QJRMS11, 
     766  title="{The ERA-Interim reanalysis: Configuration and performance of the data assimilation system}", 
     767  author="DP Dee and Uppala, SM and Simmons, AJ and Berrisford, P. and  
     768  Poli, P. and Kobayashi, S. and Andrae, U. and Balmaseda, MA and Balsamo, G. 
     769  and Bauer, P and Bechtold P and Beljaars, ACM and L van de Berg and J Bidlot 
     770  and N Bormann and others", 
     771  journal=QJRMS, 
     772  volume={137}, 
     773  number={656}, 
     774  pages={553--597, doi:10.1002/qj.828}, 
     775  year={2011}, 
     776  publisher={Wiley Online Library} 
    744777} 
    745778 
     
    895928  url = {http://dx.doi.org/10.1029/2005GL022463} 
    896929} 
     930 
     931 
     932@article{Edson_JPO13, 
     933  title="{On the Exchange of Momentum over the Open Ocean}", 
     934  author="Edson, James and Jampana, Venkata and Weller, Robert  
     935          and Bigorre, Sebastien and Plueddemann, Albert and Fairall, Christopher  
     936          and Miller, Scott and Mahrt, Larry and Vickers, Dean and  
     937          Hersbach, Hans", 
     938  journal=JPO, 
     939  volume="43", 
     940  pages = "1589--1610, doi:10.1175/JPO-D-12-0173.1", 
     941  doi = "10.1175/JPO-D-12-0173.1", 
     942  year="2013"} 
    897943 
    898944@ARTICLE{Egbert_Ray_JGR01, 
     
    12641310} 
    12651311 
     1312@article{Hasselmann_GAFD70, 
     1313  title="{Wave-driven inertial oscillations}", 
     1314  author="Hasselmann, K", 
     1315  journal="Geophysical and Astrophysical Fluid Dynamics", 
     1316  volume="1", 
     1317  number="3-4", 
     1318  pages="463--502, doi:10.1080/03091927009365783", 
     1319  year="1970"} 
     1320 
    12661321@ARTICLE{Hazeleger_Drijfhout_JPO98, 
    12671322  author = {W. Hazeleger and S. S. Drijfhout}, 
     
    13811436} 
    13821437 
     1438@book{Holthuijsen07, 
     1439  title="{Waves in Oceanic and Coastal Waters}", 
     1440  author={Holthuijsen, L.H.}, 
     1441  year={2007}, 
     1442  pages={387}, 
     1443  location="Books/holthuisjen07.pdf", 
     1444  publisher={Cambridge University Press} } 
     1445 
    13831446@ARTICLE{Hordoir_al_CD08, 
    13841447  author = {R. Hordoir and J. Polcher and J.-C. Brun-Cottan and G. Madec}, 
     
    14761539  pages = {381--389} 
    14771540} 
     1541 
     1542@article{Janssen_JPO89, 
     1543  title="{Wave-induced stress and the drag of air flow over sea waves}", 
     1544  author="Janssen, PAEM", 
     1545  year="1989", 
     1546  journal=JPO, 
     1547  volume={19}, 
     1548  number={6}, 
     1549  pages={745--754, doi:10/fsz7vd} 
     1550} 
     1551 
     1552@inproceedings{Janssen_AH04, 
     1553  title="{Impact of the sea state on the atmosphere and ocean}", 
     1554  author="Janssen, P.A.E.M. and Saetra, O. and Wettre, C. and  
     1555           Hersbach, H. and Bidlot, J.", 
     1556  booktitle="Annales hydrographiques", 
     1557  volume={3-772}, 
     1558  pages={3.1--3.23}, 
     1559  year={2004}, 
     1560  organization={Service hydrographique et oc{\'e}anographique de la marine} 
     1561} 
     1562 
     1563@article{Janssen_Rep08, 
     1564  title="{Progress in ocean wave forecasting}", 
     1565  author="Janssen, PAEM", 
     1566  journal="Journal of Computational Physics", 
     1567  volume="227", 
     1568  number="7", 
     1569  pages="3572--3594, doi:10.1016/j.jcp.2007.04.029", 
     1570  year="2008"} 
     1571 
     1572 
     1573@article{Janssen_JGR12, 
     1574  author="Janssen, PAEM", 
     1575  title="{Ocean Wave Effects on the Daily Cycle in SST}", 
     1576  year="2012", 
     1577  journal=JGR, 
     1578  volume="117", 
     1579  pages="C00J32, 24 pp, doi:10/mth"} 
     1580 
     1581@TECHREPORT{Janssen_ECMWF13, 
     1582      AUTHOR = "PAEM Janssen and {\O} Breivik and K Mogensen and F Vitart and  
     1583                M Balmaseda and JR Bidlot and S Keeley and M Leutbecher and  
     1584                L Magnusson and F Molteni", 
     1585      TITLE = "{Air-Sea Interaction and Surface Waves}", 
     1586      YEAR = "2013", 
     1587      PAGES = "36", 
     1588      NUMBER = "712", 
     1589      URL = "http://www.ecmwf.int/publications/library/do/references/list/14", 
     1590      TYPE = "ECMWF Technical Memorandum", 
     1591      INSTITUTION = "European Centre for Medium-Range Weather Forecasts"} 
    14781592 
    14791593@ARTICLE{Jayne_St_Laurent_GRL01, 
     
    26812795} 
    26822796 
     2797@ARTICLE{Stokes_TCPS47, 
     2798      AUTHOR = "G~G Stokes", 
     2799      YEAR = "1847", 
     2800      TITLE = "{On the theory of oscillatory waves}", 
     2801      JOURNAL = "Trans Cambridge Philos Soc", 
     2802      VOLUME = "8", 
     2803      PAGES = "441--455"} 
     2804 
    26832805@ARTICLE{Talagrand_JAS72, 
    26842806  author = {O. Talagrand}, 
     
    28592981} 
    28602982 
     2983@TECHREPORT{wam38r1, 
     2984      AUTHOR = "ECMWF", 
     2985      TITLE = "{IFS Documentation CY38r1, Part VII: ECMWF Wave Model}", 
     2986      YEAR = "2012", 
     2987      PAGES = "77 pp, available at http://ecmwf.int/research/ifsdocs/CY38r1/", 
     2988      TYPE = "{ECMWF Model Documentation}", 
     2989      INSTITUTION = "European Centre for Medium-Range Weather Forecasts"} 
     2990 
    28612991@ARTICLE{Warner_al_OM05, 
    28622992  author = {J. C. Warner and C. R. Sherwood and H. G. Arango and R. P. Signell}, 
     
    29563086  pages = {593--611} 
    29573087} 
     3088 
     3089@MANUAL{wmo98, 
     3090      AUTHOR = "{World Meteorological Organization}", 
     3091      TITLE = "{Guide to wave analysis and forecasting}", 
     3092      YEAR = "1998", 
     3093      ADDRESS = "Geneva, Switzerland", 
     3094      NUMBER = "702", 
     3095      EDITION = "2", 
     3096      ORGANIZATION = "World Meteorological Organization"} 
    29583097 
    29593098@ARTICLE{Zalesak_JCP79, 
  • branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Chapters/Chap_DYN.tex

    r4560 r4644  
    11% ================================================================ 
    2 % Chapter Ocean Dynamics (DYN) 
     2% Chapter Ocean Dynamics (DYN) 
    33% ================================================================ 
    44\chapter{Ocean Dynamics (DYN)} 
     
    795795%>   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   > 
    796796\begin{figure}[!t]    \begin{center} 
    797 \includegraphics[width=0.7\textwidth]{./TexFiles/Figures/Fig_time_split.pdf} 
     797\includegraphics[width=0.7\textwidth]{./TexFiles/Figures/Fig_DYN_dynspg_ts.pdf} 
    798798\caption{  \label{Fig_DYN_dynspg_ts} 
    799799Schematic of the split-explicit time stepping scheme for the external  
     
    12931293 
    12941294% ================================================================ 
     1295% Coriolis-Stokes force 
     1296% ================================================================ 
     1297\section  [Coriolis-Stokes Force (\textit{dynstcor})] 
     1298                {Coriolis-Stokes Force (\mdl{dynstcor})} 
     1299\label{DYN_stcor} 
     1300Waves set up a Lagrangian drift in the down-wave direction known 
     1301as the Stokes drift \citep{Stokes_TCPS47}. Although its drift speed 
     1302$\mathbf{v}_\mathrm{s}$ decays rapidly with depth, it can be substantial 
     1303near the surface ($v_\mathrm{s} {\sim}0.7\, \mathrm{m/s}$). In combination 
     1304with the earth's rotation it adds an additional veering to the upper-ocean 
     1305currents known as the Coriolis-Stokes force \citep{Hasselmann_GAFD70}, 
     1306\begin{equation} 
     1307   \frac{D\mathbf{u}}{Dt} = -\frac{1}{\rho} \nabla p  
     1308  + (\mathbf{u} + \mathbf{v}_\mathrm{s}) \times f\hat{\mathbf{z}} 
     1309  + \frac{1}{\rho} \frac{\partial \tau}{\partial z}. 
     1310  \label{Eq_dynstcor_stcor} 
     1311\end{equation} 
     1312It requires integration of the full two-dimensional spectrum to get the 
     1313Stokes profile \citep{Janssen_AH04,Janssen_JGR12}, 
     1314\begin{equation} 
     1315   \mathbf{v}_\mathrm{s}(z) = 4\pi \int_0^{2\pi} \int_0^{\infty}  
     1316                              f \mathbf{k} e^{2kz} F(f,\theta) \, df\, d\theta, 
     1317   \label{Eq_dynstcor_uvfth} 
     1318\end{equation} 
     1319This is computationally demanding and requires access to the full 
     1320two-dimensional wave spectra from a numerical wave model (see e.g. the 
     1321ECMWF WAM implementation, ECWAM, \citealt{wam38r1}), so 
     1322we introduce a parameterized Stokes drift velocity profile 
     1323\citep{Janssen_ECMWF13,Breivik_ECMWF13}, 
     1324\begin{equation} 
     1325   \mathbf{v}_\mathrm{e} = \mathbf{v}_0  
     1326   \frac{e^{2k_\mathrm{e}z}}{1-8k_\mathrm{e}z}. 
     1327   \label{Eq_dynstcor_uve1} 
     1328\end{equation} 
     1329The surface velocity vector $\mathbf{v}_0$ is computed by ECWAM and is 
     1330available both in ERA-Interim \citep{Dee_QJRMS11} and operationally. 
     1331 
     1332The transport under such a profile involves the exponential integral $E_1$ and  
     1333can be solved analytically \citep{Breivik_ECMWF13} to yield 
     1334\begin{equation} 
     1335   {T}_\mathrm{s} = \frac{{v}_0 e^{1/4} E_1(1/4)}{8 k_\mathrm{e}}. 
     1336   \label{Eq_dynstcor_UVe}  
     1337\end{equation} 
     1338This imposes the following constraint on the wavenumber, 
     1339\begin{equation} 
     1340   k_\mathrm{e} = \frac{{v}_0 e^{1/4} E_1(1/4)}{8 
     1341   {T}_\mathrm{s}}. 
     1342   \label{Eq_dynstcor_ke}  
     1343\end{equation} 
     1344Here $E_1(1/4) \approx 1.34$, thus 
     1345\begin{equation} 
     1346   k_\mathrm{e} \approx \frac{{v}_0}{5.97{T}_\mathrm{s}}. 
     1347   \label{Eq_dynstcor_keapprox}  
     1348\end{equation} 
     1349The $n$-th order spectral moment is defined as 
     1350\begin{equation} 
     1351   m_{n} = \int_0^{2\pi} \int_0^{\infty}  
     1352           f^{n} F(f,\theta) \, df\, d\theta. 
     1353   \label{Eq_dynstcor_moment} 
     1354\end{equation} 
     1355The mean frequency is defined as $\overline{f} = m_1/m_0$ 
     1356\citep{wmo98,Holthuijsen07} and the significant wave height $H_{m_0} = 
     13574\sqrt{m_0}$.  We can derive the first moment from the integrated parameters 
     1358of a wave model or from wave observations and find an estimate for the 
     1359Stokes transport, 
     1360\begin{equation} 
     1361  \mathbf{T}_\mathrm{s} \approx \frac{2\pi}{16} \overline{f} H_{m_0}^2 
     1362  \hat{\mathbf{k}}_\mathrm{s}. 
     1363  \label{Eq_dynstcor_UVHsf} 
     1364\end{equation} 
     1365Here $\hat{\mathbf{k}}_\mathrm{s} = (\sin \theta_\mathrm{s}, 
     1366\cos \theta_\mathrm{s})$ is the unit vector in the 
     1367direction $\theta_\mathrm{s}$ of the Stokes transport.  From 
     1368Eqs~(\ref{Eq_dynstcor_keapprox})-(\ref{Eq_dynstcor_UVHsf}) it is clear that 
     1369in order to compute the Stokes drift velocity profile at the desired vertical 
     1370levels we need $H_\mathrm{s}$, $\overline{f}$ and $\mathbf{v}_0$. 
     1371 
     1372The Coriolis-Stokes effect is enabled when \np{ln\_stcor} = true (default = 
     1373false). All wave-related switches are found in \ngn{namsbc}. 
     1374The surface Stokes drift velocity vectors (east and north components) are 
     1375archived in ERA-Interim as GRIB parameters 215 and 216 respectively (table 
     1376140). 
     1377%\smallskip 
     1378%%----------------------------------------------namsbc---------------------------------------------------- 
     1379%\namdisplay{namsbc} 
     1380%%-------------------------------------------------------------------------------------------------------- 
     1381%\smallskip 
     1382% 
     1383% ================================================================ 
  • branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Chapters/Chap_SBC.tex

    r4230 r4644  
    1515The ocean needs six fields as surface boundary condition: 
    1616\begin{itemize} 
    17    \item the two components of the surface ocean stress $\left( {\tau _u \;,\;\tau _v} \right)$ 
    18    \item the incoming solar and non solar heat fluxes $\left( {Q_{ns} \;,\;Q_{sr} } \right)$ 
    19    \item the surface freshwater budget $\left( {\textit{emp},\;\textit{emp}_S } \right)$ 
     17    \item the two components of the surface ocean stress $\left( {\tau _u \;,\;\tau _v} \right)$ 
     18    \item the incoming solar and non solar heat fluxes $\left( {Q_{ns} \;,\;Q_{sr} } \right)$ 
     19    \item the surface freshwater budget $\left( {\textit{emp},\;\textit{emp}_S } \right)$ 
    2020\end{itemize} 
    2121plus an optional field: 
    2222\begin{itemize} 
    23    \item the atmospheric pressure at the ocean surface $\left( p_a \right)$ 
     23    \item the atmospheric pressure at the ocean surface $\left( p_a \right)$ 
    2424\end{itemize} 
    2525 
     
    7575\begin{equation} \label{Eq_sbc_dynzdf} 
    7676\left.{\left( {\frac{A^{vm} }{e_3 }\ \frac{\partial \textbf{U}_h}{\partial k}} \right)} \right|_{z=1} 
    77     = \frac{1}{\rho _o} \binom{\tau _u}{\tau _v } 
     77    = \frac{1}{\rho _o} \binom{\tau _u}{\tau _v } 
    7878\end{equation} 
    7979where $(\tau _u ,\;\tau _v )=(utau,vtau)$ are the two components of the wind  
     
    348348horizontal and vertical dimensions of the associated variable and should  
    349349be equal to 1 over land and 0 elsewhere. 
    350 The procedure can be recursively applied setting nn_lsm > 1 in namsbc namelist.  
    351 Note that nn_lsm=0 forces the code to not apply the procedure even if a file for land/sea mask is supplied. 
     350The procedure can be recursively applied setting nn\_lsm > 1 in namsbc namelist.  
     351Note that nn\_lsm=0 forces the code to not apply the procedure even if a file for land/sea mask is supplied. 
    352352 
    353353\subsubsection{Bilinear Interpolation} 
     
    565565 
    566566The atmospheric fields used depend on the bulk formulae used. Three bulk formulations  
    567 are available : the CORE, the CLIO and the MFS bulk formulea. The choice is made by setting to true 
     567are available : the CORE, the CLIO and the MFS bulk formulae. The choice is made by setting to true 
    568568one of the following namelist variable : \np{ln\_core} ; \np{ln\_clio} or  \np{ln\_mfs}. 
    569569 
    570570Note : in forced mode, when a sea-ice model is used, a bulk formulation (CLIO or CORE) have to be used.  
    571 Therefore the two bulk (CLIO and CORE) formulea include the computation of the fluxes over both  
     571Therefore the two bulk (CLIO and CORE) formulae include the computation of the fluxes over both  
    572572an ocean and an ice surface.  
    573573 
    574574% ------------------------------------------------------------------------------------------------------------- 
    575 %        CORE Bulk formulea 
    576 % ------------------------------------------------------------------------------------------------------------- 
    577 \subsection    [CORE Bulk formulea (\np{ln\_core}=true)] 
    578             {CORE Bulk formulea (\np{ln\_core}=true, \mdl{sbcblk\_core})} 
     575%        CORE Bulk formulae 
     576% ------------------------------------------------------------------------------------------------------------- 
     577\subsection    [CORE Bulk formulae (\np{ln\_core}=true)] 
     578            {CORE Bulk formulae (\np{ln\_core}=true, \mdl{sbcblk\_core})} 
    579579\label{SBC_blk_core} 
    580580%------------------------------------------namsbc_core---------------------------------------------------- 
     
    591591 
    592592Note that substituting ERA40 to NCEP reanalysis fields  
    593 does not require changes in the bulk formulea themself.  
     593does not require changes in the bulk formulae themself.  
    594594This is the so-called DRAKKAR Forcing Set (DFS) \citep{Brodeau_al_OM09}.  
    595595 
     
    621621or larger than the one of the input atmospheric fields. 
    622622 
    623 % ------------------------------------------------------------------------------------------------------------- 
    624 %        CLIO Bulk formulea 
    625 % ------------------------------------------------------------------------------------------------------------- 
    626 \subsection    [CLIO Bulk formulea (\np{ln\_clio}=true)] 
    627             {CLIO Bulk formulea (\np{ln\_clio}=true, \mdl{sbcblk\_clio})} 
     623\subsubsection    [The ECMWF parametric drag law (\np{ln\_cdec}=true)] 
     624                  {The ECMWF parametric drag law (\np{ln\_cdec}=true)} 
     625As an alternative to the \citet{Large_Yeager_Rep04} drag law the 
     626parameterization used operationally by ECMWF \citep{Janssen_Rep08,Edson_JPO13} is 
     627included, 
     628\begin{equation} 
     629   C_\mathrm{D}(z=10 \, \mathrm{m}) = \left(a + bU_{10}^{p_1}\right)/U_{10}^{p_2}. 
     630   \label{Eq_blk_core_cdec} 
     631\end{equation} 
     632The coefficients are $a = 1.03 \times 10^{-3}$, $b = 0.04\times 10^{-3}$, 
     633$p_1 = 1.48$ and $p_2 = 0.21$.  
     634 
     635\subsubsection    [Wave-modified air-side stress (\np{ln\_cdgw}=true)] 
     636                  {Wave-modified air-side stress (\np{ln\_cdgw}=true)} 
     637The atmospheric momentum flux to the ocean is denoted $\tau_\mathrm{a}$. It is 
     638customary to define an air-side friction velocity as $u_*^2 =  
     639\tau_\mathrm{a}/\rho_\mathrm{a}$. 
     640\citet{Charnock_QJRMS55} was the first to relate the roughness of the sea 
     641surface to the friction velocity, 
     642\begin{equation} 
     643   z_0 = \alpha_\mathrm{CH} \frac{u_{*}^2}{g}, 
     644\end{equation} 
     645where $\alpha_\mathrm{CH}$ is known as the Charnock constant. 
     646\citet{Janssen_JPO89} showed that $\alpha$ is not constant but varies with 
     647the sea state, 
     648\begin{equation} 
     649   \alpha_\mathrm{CH} = 
     650   \frac{\hat{\alpha}_\mathrm{CH}} 
     651        {\sqrt{1-\tau_\mathrm{w}/\tau_\mathrm{a}}}, 
     652\end{equation} 
     653where $\hat{\alpha}_\mathrm{CH} = 0.01$ and the wave-induced stress, 
     654$\tau_\mathrm{in}$, is related to the wind input as 
     655\begin{equation} 
     656   \boldsymbol{\tau}_\mathrm{in} = \rho_\mathrm{w}g \int_0^{2\pi}  
     657      \int_0^{\infty} \frac{\mathbf{k}}{\omega} S_\mathrm{in} \,  
     658      d\omega \, d\theta. 
     659   \label{Eq_blk_core_tauin} 
     660\end{equation} 
     661The wave-modified drag coefficient is then 
     662\begin{equation} 
     663   C_\mathrm{D} = \frac{\kappa^2}{\log^2(10/z_0)}. 
     664\end{equation} 
     665This parameter is stored as CDWW (GRIB parameter 233, table 140) in ERA-Interim and operationally by ECMWF. 
     666Note that it is used in conjunction with the 10-m \emph{neutral} wind speed, 
     667$U_\mathrm{10N}$, also archived. The wind direction is taken from the 10-m 
     668wind vector as before, and only the wind \emph{speed} is changed.  Note also 
     669that where there is a discrepancy between the ice cover of the wave model 
     670and NEMO, a drag parametric drag law should used.  Where the wave model 
     671has ice (as $C_\mathrm{D} = 0$ under ice), a drag law such as the one put 
     672forward by \citet{Large_Yeager_Rep04} or the one used operationally by ECMWF, 
     673see Eq~(\ref{Eq_blk_core_cdec}), must be used to pad the fields. 
     674 
     675\subsubsection    [Wave-modified water-side stress (\np{ln\_tauoc}=true)] 
     676                  {Wave-modified water-side stress (\np{ln\_tauoc}=true)} 
     677As waves break they feed momentum 
     678into the currents. If wind input and dissipation in the wave field were in 
     679equilibrium, the air-side stress would be equal to the total water-side 
     680stress. However, most of the time waves are not in equilibrium 
     681\citep{Janssen_JGR12,Janssen_ECMWF13}, giving 
     682differences in air-side and water-side stress of the order of 5-10\%. 
     683The water-side stress is the total 
     684atmospheric stress minus the momentum absorbed by the wave field (positive) 
     685minus the momentum injected from breaking waves to the ocean (negative),  
     686$\boldsymbol{\tau}_\mathrm{oc} = \boldsymbol{\tau}_\mathrm{a} - 
     687\boldsymbol{\tau}_\mathrm{in} - \boldsymbol{\tau}_\mathrm{ds}$. This can be 
     688written \citep{wam38r1} 
     689\begin{equation} 
     690   \boldsymbol{\tau}_\mathrm{oc} = \boldsymbol{\tau}_\mathrm{a} - 
     691   \rho_\mathrm{w}g \int_0^{2\pi} \int_0^{\infty}  
     692   \frac{\mathbf{k}}{\omega}(S_\mathrm{in} + S_\mathrm{ds})\, d\omega d\theta. 
     693   \label{eq:tauoc} 
     694\end{equation} 
     695This parameter is known as TAUOC (GRIB parameter 214, table 140) is stored in 
     696normalized form, $\tilde{\tau} = \tau_\mathrm{oc}/\tau_\mathrm{a}$, in 
     697ERA-Interim and operationally by ECMWF.  It is controlled by the namelist 
     698parameter \np{ln\_tauoc} in namelist \ngn{namsbc}. 
     699 
     700 
     701% ------------------------------------------------------------------------------------------------------------- 
     702%        CLIO Bulk formulae 
     703% ------------------------------------------------------------------------------------------------------------- 
     704\subsection    [CLIO Bulk formulae (\np{ln\_clio}=true)] 
     705            {CLIO Bulk formulae (\np{ln\_clio}=true, \mdl{sbcblk\_clio})} 
    628706\label{SBC_blk_clio} 
    629707%------------------------------------------namsbc_clio---------------------------------------------------- 
     
    665743%        MFS Bulk formulae 
    666744% ------------------------------------------------------------------------------------------------------------- 
    667 \subsection    [MFS Bulk formulea (\np{ln\_mfs}=true)] 
    668             {MFS Bulk formulea (\np{ln\_mfs}=true, \mdl{sbcblk\_mfs})} 
     745\subsection    [MFS Bulk formulae (\np{ln\_mfs}=true)] 
     746            {MFS Bulk formulae (\np{ln\_mfs}=true, \mdl{sbcblk\_mfs})} 
    669747\label{SBC_blk_mfs} 
    670748%------------------------------------------namsbc_mfs---------------------------------------------------- 
     
    10481126of incident SWF. The \cite{Bernie_al_CD07} reconstruction algorithm is available 
    10491127in \NEMO by setting \np{ln\_dm2dc}~=~true (a \textit{\ngn{namsbc}} namelist variable) when using  
    1050 CORE bulk formulea (\np{ln\_blk\_core}~=~true) or the flux formulation (\np{ln\_flx}~=~true).  
     1128CORE bulk formulae (\np{ln\_blk\_core}~=~true) or the flux formulation (\np{ln\_flx}~=~true).  
    10511129The reconstruction is performed in the \mdl{sbcdcy} module. The detail of the algoritm used  
    10521130can be found in the appendix~A of \cite{Bernie_al_CD07}. The algorithm preserve the daily  
  • branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Chapters/Chap_ZDF.tex

    r4147 r4644  
    197197instabilities associated with too weak vertical diffusion. They must be  
    198198specified at least larger than the molecular values, and are set through  
    199 \np{rn\_avm0} and \np{rn\_avt0} (namzdf namelist, see \S\ref{ZDF_cst}). 
     199\np{rn\_avm0} and \np{rn\_avt0} (\ngn{namzdf} namelist, see \S\ref{ZDF_cst}). 
    200200 
    201201\subsubsection{Turbulent length scale} 
     
    262262\end{equation} 
    263263 
    264 At the ocean surface, a non zero length scale is set through the  \np{rn\_lmin0} namelist  
    265 parameter. Usually the surface scale is given by $l_o = \kappa \,z_o$  
    266 where $\kappa = 0.4$ is von Karman's constant and $z_o$ the roughness  
    267 parameter of the surface. Assuming $z_o=0.1$~m \citep{Craig_Banner_JPO94}  
    268 leads to a 0.04~m, the default value of \np{rn\_lsurf}. In the ocean interior  
    269 a minimum length scale is set to recover the molecular viscosity when $\bar{e}$  
    270 reach its minimum value ($1.10^{-6}= C_k\, l_{min} \,\sqrt{\bar{e}_{min}}$ ). 
     264At the ocean surface, a non zero length scale is set through the 
     265\np{rn\_lmin0} namelist parameter. Usually the surface scale is given 
     266by $l_o = \kappa \,z_o$ where $\kappa = 0.4$ is von Karman's constant 
     267and $z_o$ the roughness parameter of the surface. Assuming $z_o=0.1$~m 
     268\citep{Craig_Banner_JPO94} leads to a 0.04~m, the default value of 
     269\np{rn\_lsurf}. In the ocean interior a minimum length scale is set to 
     270recover the molecular viscosity when $\bar{e}$ reach its minimum value 
     271($1\times 10^{-6}= C_k\, l_{min} \,\sqrt{\bar{e}_{min}}$). 
    271272 
    272273 
     
    283284\bar{e}_o = \frac{1}{2}\,\left(  15.8\,\alpha_{CB} \right)^{2/3} \,\frac{|\tau|}{\rho_o} 
    284285\end{equation} 
    285 where $\alpha_{CB}$ is the \citet{Craig_Banner_JPO94} constant of proportionality  
    286 which depends on the ''wave age'', ranging from 57 for mature waves to 146 for  
    287 younger waves \citep{Mellor_Blumberg_JPO04}.  
    288 The boundary condition on the turbulent length scale follows the Charnock's relation: 
     286where $\alpha_{CB}$ is the \citet{Craig_Banner_JPO94} constant of 
     287proportionality which depends on the ''wave age'', ranging from 57 for mature 
     288waves to 146 for younger waves \citep{Mellor_Blumberg_JPO04}.  The boundary 
     289condition on the turbulent length scale follows Charnock's relation: 
    289290\begin{equation} \label{ZDF_Lsbc} 
    290291l_o = \kappa \beta \,\frac{|\tau|}{g\,\rho_o} 
    291292\end{equation} 
    292 where $\kappa=0.40$ is the von Karman constant, and $\beta$ is the Charnock's constant. 
    293 \citet{Mellor_Blumberg_JPO04} suggest $\beta = 2.10^{5}$ the value chosen by \citet{Stacey_JPO99} 
    294 citing observation evidence, and $\alpha_{CB} = 100$ the Craig and Banner's value. 
    295 As the surface boundary condition on TKE is prescribed through $\bar{e}_o = e_{bb} |\tau| / \rho_o$,  
    296 with $e_{bb}$ the \np{rn\_ebb} namelist parameter, setting \np{rn\_ebb}~=~67.83 corresponds  
    297 to $\alpha_{CB} = 100$. further setting  \np{ln\_lsurf} to true applies \eqref{ZDF_Lsbc}  
    298 as surface boundary condition on length scale, with $\beta$ hard coded to the Stacet's value. 
    299 Note that a minimal threshold of \np{rn\_emin0}$=10^{-4}~m^2.s^{-2}$ (namelist parameters)  
    300 is applied on surface $\bar{e}$ value. 
     293where $\kappa=0.40$ is the von Karman constant, and $\beta$ is Charnock's 
     294constant.  \citet{Mellor_Blumberg_JPO04} suggest $\beta = 2\times10^{5}$ the value 
     295chosen by \citet{Stacey_JPO99} citing observation evidence, and $\alpha_{CB} 
     296= 100$ the Craig and Banner's value.  As the surface boundary condition 
     297on TKE is prescribed through $\bar{e}_o = e_{bb} |\tau| / \rho_o$, with 
     298$e_{bb}$ the \np{rn\_ebb} namelist parameter, setting \np{rn\_ebb}~=~67.83 
     299corresponds to $\alpha_{CB} = 100$. further setting  \np{ln\_lsurf} to true 
     300applies \eqref{ZDF_Lsbc} as surface boundary condition on length scale, with 
     301$\beta$ hard coded to Stacey's value.  Note that a minimal threshold 
     302of \np{rn\_emin0}$=10^{-4}~m^2.s^{-2}$ (namelist parameters) is applied on 
     303surface $\bar{e}$ value. 
     304 
     305\subsubsection{Surface wave breaking flux from a wave model \np{ln\_wavetke}} 
     306%-----------------------------------------------------------------------% 
     307The constant of proportionality $\alpha_{CB}$ in Eq~\eqref{ZDF_Esbc} relates 
     308the water-side friction velocity $w_*$ to the turbulent energy flux as follows, 
     309\begin{equation} 
     310   \Phi_\mathrm{oc} = \rho_\mathrm{w} \alpha_\mathrm{CB} w_*^3. 
     311   \label{Eq_ZDF_alpha} 
     312\end{equation} 
     313The default option in NEMO \eqref{ZDF_Esbc} is to assume $\alpha_{CB} 
     314= 100$ as explained in the previous section. 
     315However, the energy flux can be computed from the dissipation source term 
     316of a wave model \citep{Janssen_AH04,Janssen_JGR12,Janssen_ECMWF13}, 
     317\begin{equation} 
     318   \Phi_\mathrm{oc} = \Phi_\mathrm{in} - \rho_\mathrm{w}g \int_0^{2\pi}  
     319                      \int_0^{\infty} (S_\mathrm{in} + S_\mathrm{ds})\,  
     320                        d\omega d\theta. 
     321   \label{Eq_ZDF_phioc} 
     322\end{equation} 
     323Assuming high-frequency equilibrium and ignoring the direct turbulent energy 
     324flux from the atmosphere to the ocean we get 
     325\begin{equation} 
     326   \Phi_\mathrm{oc} = -\rho_\mathrm{w}g \int_0^{2\pi}  
     327                      \int_0^{\omega_\mathrm{c}} S_\mathrm{ds}\,  
     328                        d\omega d\theta = -\rho_\mathrm{a} m u_*^3. 
     329   \label{Eq_ZDF_m} 
     330\end{equation} 
     331Here, $m \approx -\sqrt{\rho_\mathrm{a}/\rho_\mathrm{w}} \alpha_\mathrm{CB}$ 
     332is the energy flux \emph{from} the waves (thus always negative) normalized by 
     333the air friction velocity $u_*$. It 
     334is archived as PHIOC (GRIB parameter 212, table 140) in ERA-Interim and also 
     335operationally by ECMWF.  The namelist parameter \np{ln\_wavetke} controls 
     336the wave TKE flux.  We assume that the flux has been converted to physical 
     337units following \eqref{Eq_ZDF_m} before ingested by NEMO. 
     338 
     339NEMO computes the upper boundary condition following 
     340\citet{Mellor_Blumberg_JPO04}, see \eqref{ZDF_Esbc}.  Since $e$ varies 
     341rapidly with depth, we want to weight the surface value $\overline{e}_o$ 
     342by the thickness of the uppermost level to attain a value representative 
     343for the turbulence level of the uppermost level, 
     344\begin{equation} 
     345   \overline{e}_1 = \frac{\overline{e}_o}{L} \int_{-L}^{0} e(z) \,dz. 
     346   \label{Eq_ZDF_eavg} 
     347\end{equation} 
     348Here $L = \Delta z_1/2$ is the depth of the $T$-point of the uppermost level. 
     349This adjustment is crucial with model configurations with a thick uppermost 
     350level, e.g. ORCA1L42.  If we assume, as \citet{Mellor_Blumberg_JPO04} do, that in the 
     351wave-affected layer the roughness length can be set to a constant which we 
     352choose to be $z_\mathrm{w} = 0.5H_\mathrm{s}$ and that in this near-surface 
     353region diffusion balances dissipation, the TKE equation attains the simple 
     354exponential solution \citep{Mellor_Blumberg_JPO04} 
     355\begin{equation} 
     356  e(z) = \overline{e}_o \exp(2\lambda z/3). 
     357   \label{Eq_ZDF_phimb} 
     358\end{equation} 
     359Here, the length scale $\lambda^{-1}$ is sea-state dependent, see Eq (10) by 
     360\citet{Mellor_Blumberg_JPO04}, 
     361\begin{equation} 
     362   \lambda = [3/(S_q B_1 \kappa^2)]^{1/2}z_\mathrm{w}^{-1} \approx 
     363   \frac{2.38}{z_\mathrm{w}}. 
     364\end{equation} 
     365We have assumed $S_q=0.2$ and $B=16.6$ \citep{Mellor_Yamada_1982}, as 
     366used in NEMO.  For a wave height of 2.5 m, which is close to the global 
     367mean, $\lambda^{-1} \approx 0.5\, \mathrm{m}$.  Integrating \eqref{Eq_ZDF_phimb} 
     368is straightforward, and the average TKE in \eqref{Eq_ZDF_eavg} becomes 
     369\begin{equation} 
     370  \overline{e}_1 = \overline{e}_o \frac{3}{2\lambda L} \left[1 - 
     371  \exp(-2\lambda L/3)\right]. 
     372\end{equation} 
     373The wave model energy flux is controlled by \np{ln\_wavetke} in namelist 
     374\ngn{namsbc}. 
    301375 
    302376 
     
    318392  
    319393By making an analogy with the characteristic convective velocity scale  
    320 ($e.g.$, \citet{D'Alessio_al_JPO98}), $P_{LC}$ is assumed to be :  
     394($e.g.$, \citet{D'Alessio_al_JPO98}), $P_{LC}$ is assumed to be:  
    321395\begin{equation} 
    322396P_{LC}(z) = \frac{w_{LC}^3(z)}{H_{LC}} 
  • branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Namelist/namsbc

    r4230 r4644  
    3030                           !       is left empty in namelist)  , 
    3131                           !  =1:n number of iterations of land/sea mask application for input fields 
     32   ln_stcor    = .false.   !   Stokes drift read from wave model 
     33   ln_wavetke  = .false.   !   Wave parameters from wave model for the TKE BC 
     34   ln_tauoc    = .false.   !   Wave-modified stress from wave model 
    3235/ 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg

    r4370 r4644  
    188188!----------------------------------------------------------------------- 
    189189/ 
     190!----------------------------------------------------------------------- 
     191&namsbc_wave  ! External fields from wave model 
     192!----------------------------------------------------------------------- 
     193/ 
     194!----------------------------------------------------------------------- 
     195&namsbc_wave_ecmwf   ! ECWMF external wave model drag coefficient 
     196!----------------------------------------------------------------------- 
     197/ 
     198!----------------------------------------------------------------------- 
     199&namsbc_wavepar ! namsbc_wavepar  parameters from wave model 
     200!----------------------------------------------------------------------- 
     201/ 
     202!----------------------------------------------------------------------- 
     203&namsbc_waveparlim 
     204!----------------------------------------------------------------------- 
     205/ 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/CONFIG/SHARED/namelist_ref

    r4384 r4644  
    240240   ln_cdgw = .false.       !  Neutral drag coefficient read from wave model (T => fill namsbc_wave) 
    241241   ln_sdw  = .false.       !  Computation of 3D stokes drift                (T => fill namsbc_wave) 
     242   ln_stcor    = .false.   !   Stokes drift read from wave model 
     243   ln_wavetke  = .false.   !   Wave parameters from wave model for the TKE BC 
     244   ln_tauoc    = .false.   !   Wave-modified stress from wave model 
    242245   cn_iceflx = 'linear'    !  redistribution of solar input into ice categories during coupling ice/atm. 
    243246/ 
     
    11641167/ 
    11651168!----------------------------------------------------------------------- 
     1169&namsbc_wave_ecmwf   ! External fields from wave model 
     1170!----------------------------------------------------------------------- 
     1171!              !  file name  ! frequency (hours) ! variable     ! time interp. !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     1172!              !             !  (if <0  months)  !   name       !   (logical)  !  (T/F)  ! 'monthly' ! filename ! pairing  ! filename      ! 
     1173   sn_cdg      =  'cdww' ,        6          , 'cdww'       ,     .true.   , .false. , 'monthly'  , ''      , ''       , '' ! 
     1174   cn_dir_cdg  = './'  !  root directory for the location of drag coefficient files 
     1175/ 
     1176!----------------------------------------------------------------------- 
    11661177&namdyn_nept  !   Neptune effect (simplified: lateral and vertical diffusions removed) 
    11671178!----------------------------------------------------------------------- 
     
    11781189   rn_htrmax         =  200.0   ! max. depth of transition range 
    11791190/ 
     1191!----------------------------------------------------------------------- 
     1192&namsbc_wavepar ! namsbc_wavepar  parameters from wave model (CCC not identical to namsbc_wave) 
     1193!----------------------------------------------------------------------- 
     1194!              !  file name      ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
     1195!                                !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     1196   sn_ust      = 'ust'            ,         6         , 'ust'     ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1197   sn_vst      = 'vst'            ,         6         , 'vst'     ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1198   sn_swh      = 'swh'            ,         6         , 'swh'     ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1199   sn_mwp      = 'mwp'            ,         6         , 'mwp'     ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1200   sn_wspd     = 'wspd'           ,         6         , 'wspd'    ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1201   sn_phioc    = 'physphioc'      ,         6         , 'physphioc',  .true.    , .false. , 'monthly'  , ''       , '' 
     1202   sn_tauoc    = 'tauoc'          ,         6         , 'tauoc'   ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1203   cn_dir_wavepar  = './'      !  root directory for the location of the ECWAM files 
     1204/ 
     1205!----------------------------------------------------------------------- 
     1206&namsbc_waveparlim 
     1207!----------------------------------------------------------------------- 
     1208!              !  file name      ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! 
     1209!                                !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! 
     1210   sn_strn   = 'istr'            ,         6         , 'icestrain'     ,   .true.    , .false. , 'monthly'  , ''       , '' 
     1211   cn_dir_waveparlim  = './'      !  root directory for the location of the ECWAM files 
     1212/ 
     1213!----------------------------------------------------------------------- 
     1214&namsbc_wave   ! External fields from wave model 
     1215!----------------------------------------------------------------------- 
     1216sn_cdg     = 'cdww' ,        6          , 'cdww' , .true.   , .false. , 'monthly'  ,''         , ''  ! 
     1217   cn_dir_cdg  = './'  !  root directory for the location of drag coefficient files 
     1218/ 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r4306 r4644  
    5353   LOGICAL , PUBLIC ::   ln_sdw         !: true if 3d stokes drift from wave model 
    5454   ! 
     55   LOGICAL , PUBLIC ::   ln_wavetke  = .FALSE.   !: true if wave parameters are read 
     56   LOGICAL , PUBLIC ::   ln_stcor    = .FALSE.   !: true if Stokes-Coriolis forcing is included  
     57   LOGICAL , PUBLIC ::   ln_tauoc    = .FALSE.   !: true if wave-modified water-side stress is used 
     58 
    5559   LOGICAL , PUBLIC ::   ln_icebergs    !: Icebergs 
    5660   ! 
     
    6973   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vtau   , vtau_b   !: sea surface j-stress (ocean referential)     [N/m2] 
    7074   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   taum              !: module of sea surface stress (at T-point)    [N/m2]  
     75   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   cdn_wave          !: wave model drag coefficient [N/m2]  
     76   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wspd_wavepar      !: wave model 10-m neutral wind [m/s] CCC 
     77   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   tauoc_wavepar     !: normalized stress into the ocean from wave model  CCC 
    7178   !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 
    7279   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wndm              !: wind speed module at T-point (=|U10m-Uoce|)  [m/s] 
     
    131138      ALLOCATE( rnf  (jpi,jpj) , sbc_tsc  (jpi,jpj,jpts) , qsr_hc  (jpi,jpj,jpk) ,     & 
    132139         &      rnf_b(jpi,jpj) , sbc_tsc_b(jpi,jpj,jpts) , qsr_hc_b(jpi,jpj,jpk) , STAT=ierr(3) ) 
     140         ! Initialize these since it may not done elsewhere in the code. 
     141                rnf        (:,:) = 0.0_wp 
     142                sbc_tsc  (:,:,:) = 0.0_wp 
     143                qsr_hc   (:,:,:) = 0.0_wp 
     144                rnf_b      (:,:) = 0.0_wp 
     145                sbc_tsc_b(:,:,:) = 0.0_wp 
     146                qsr_hc_b (:,:,:) = 0.0_wp 
    133147         ! 
    134148      ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) ,     & 
     
    138152         &      ssu_m  (jpi,jpj) , sst_m(jpi,jpj) ,                       & 
    139153         &      ssv_m  (jpi,jpj) , sss_m  (jpi,jpj), ssh_m(jpi,jpj) , STAT=ierr(4) ) 
     154      ALLOCATE( cdn_wave(jpi,jpj) ) 
     155      ALLOCATE( wspd_wavepar(jpi,jpj) ) 
    140156         ! 
    141157#if defined key_vvl 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r4624 r4644  
    3838   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3939   USE prtctl          ! Print control 
    40    USE sbcwave,ONLY :  cdn_wave !wave module  
     40   !USE sbcwave,ONLY :  cdn_wave !wave module  ! moved to sbc_oce  
    4141#if defined key_lim3 || defined key_cice 
    4242   USE sbc_ice         ! Surface boundary condition: ice fields 
     
    6464    
    6565   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf   ! structure of input fields (file informations, fields read) 
     66   REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: Cd_n10 ! 10m neutral drag coefficient for output 
    6667          
    6768   !                                             !!! CORE bulk parameters 
     
    8384   REAL(wp) ::   rn_zqt      ! z(q,t) : height of humidity and temperature measurements 
    8485   REAL(wp) ::   rn_zu       ! z(u)   : height of wind measurements 
     86   LOGICAL  ::   ln_cdec   = .FALSE.   ! logical flag for using ec neutral wind drag coef  
     87   ! References : P. Janssen, 2008, ECMWF Workshop on Ocean-Atmosphere Interactions, 10-12 November p47-60 
    8588 
    8689   !! * Substitutions 
     
    137140      TYPE(FLD_N) ::   sn_tdif                                 !   "                                 " 
    138141      NAMELIST/namsbc_core/ cn_dir , ln_2m  , ln_taudif, rn_pfac, rn_efac, rn_vfac,  & 
    139          &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr ,           & 
    140          &                  sn_qlw , sn_tair, sn_prec  , sn_snow,           & 
     142         &                  sn_wndi, sn_wndj, sn_humi  , sn_qsr , ln_cdec,           & 
     143         &                  sn_qlw , sn_tair, sn_prec  , sn_snow,                    & 
    141144         &                  sn_tdif, rn_zqt , ln_bulk2z, rn_zu 
    142145      !!--------------------------------------------------------------------- 
     
    163166            sn_qsr%ln_tint = .false. 
    164167         ENDIF 
     168         IF( ln_cdec .AND. lwp ) WRITE(numout,*)'Using Hans Hersbach formula for drag.' 
    165169         !                                         ! store namelist information in an array 
    166170         slf_i(jp_wndi) = sn_wndi   ;   slf_i(jp_wndj) = sn_wndj 
     
    182186         CALL fld_fill( sf, slf_i, cn_dir, 'sbc_blk_core', 'flux formulation for ocean surface boundary condition', 'namsbc_core' ) 
    183187         ! 
     188         ! Drag coefficent so we can write to disk 
     189         ALLOCATE(Cd_n10(jpi,jpj)) 
     190 
    184191         sfx(:,:) = 0._wp                          ! salt flux; zero unless ice is present (computed in limsbc(_2).F90) 
    185192         ! 
     
    239246      INTEGER  ::   ji, jj               ! dummy loop indices 
    240247      REAL(wp) ::   zcoef_qsatw, zztmp   ! local variable 
     248      REAL(wp) ::   ztheta               ! local variable, wind direction 
    241249      REAL(wp), DIMENSION(:,:), POINTER ::   zwnd_i, zwnd_j    ! wind speed components at T-point 
    242250      REAL(wp), DIMENSION(:,:), POINTER ::   zqsatw            ! specific humidity at pst 
     
    283291!CDIR COLLAPSE 
    284292#endif 
    285       DO jj = 2, jpjm1 
    286          DO ji = fs_2, fs_jpim1   ! vect. opt. 
    287             zwnd_i(ji,jj) = (  sf(jp_wndi)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pu(ji-1,jj  ) + pu(ji,jj) )  ) 
    288             zwnd_j(ji,jj) = (  sf(jp_wndj)%fnow(ji,jj,1) - rn_vfac * 0.5 * ( pv(ji  ,jj-1) + pv(ji,jj) )  ) 
     293      ! Wind vector at T points 
     294      IF ( ln_cdgw ) THEN 
     295         ! Use neutral 10-m wind speed from wave model if available 
     296         DO jj = 2, jpjm1 
     297            DO ji = fs_2, fs_jpim1   ! vect. opt. 
     298               ! Local wind direction from non-neutral 10-m wind vector (relative to grid and no current) 
     299               ! since we do not have the directional information from the wave model 
     300               ztheta = ATAN2(sf(jp_wndi)%fnow(ji,jj,1), sf(jp_wndj)%fnow(ji,jj,1)) 
     301               ! Wind vector magnitude from 10-m neutral wind speed from wave model 
     302               zwnd_i(ji,jj) = wspd_wavepar(ji,jj) * SIN(ztheta) 
     303               zwnd_j(ji,jj) = wspd_wavepar(ji,jj) * COS(ztheta) 
     304               ! Correct for surface current, 0.0 <= rn_vfac <= 1.0 
     305               zwnd_i(ji,jj) = (zwnd_i(ji,jj) - 0.5*rn_vfac*(pu(ji-1,jj  ) + pu(ji,jj))) 
     306               zwnd_j(ji,jj) = (zwnd_j(ji,jj) - 0.5*rn_vfac*(pv(ji  ,jj-1) + pv(ji,jj))) 
     307            END DO 
    289308         END DO 
    290       END DO 
     309      ELSE 
     310         DO jj = 2, jpjm1 
     311            DO ji = fs_2, fs_jpim1   ! vect. opt. 
     312               ! Correct for surface current, 0.0 <= rn_vfac <= 1.0 
     313               zwnd_i(ji,jj) = (  sf(jp_wndi)%fnow(ji,jj,1) - 0.5*rn_vfac*( pu(ji-1,jj  ) + pu(ji,jj) )  ) 
     314               zwnd_j(ji,jj) = (  sf(jp_wndj)%fnow(ji,jj,1) - 0.5*rn_vfac*( pv(ji  ,jj-1) + pv(ji,jj) )  ) 
     315            END DO 
     316         END DO 
     317      ENDIF 
    291318      CALL lbc_lnk( zwnd_i(:,:) , 'T', -1. ) 
    292319      CALL lbc_lnk( zwnd_j(:,:) , 'T', -1. ) 
     
    353380 
    354381      ! ... tau module, i and j component 
    355       DO jj = 1, jpj 
    356          DO ji = 1, jpi 
    357             zztmp = rhoa * wndm(ji,jj) * Cd(ji,jj) 
    358             taum  (ji,jj) = zztmp * wndm  (ji,jj) 
    359             zwnd_i(ji,jj) = zztmp * zwnd_i(ji,jj) 
    360             zwnd_j(ji,jj) = zztmp * zwnd_j(ji,jj) 
    361          END DO 
    362       END DO 
     382      ! Use cdn_wave instead of Cd if we have wave parameters 
     383      IF ( ln_cdgw ) THEN 
     384         DO jj = 1, jpj 
     385            DO ji = 1, jpi 
     386               !zztmp = rhoa * wspd_wavepar(ji,jj) * Cd_n10(ji,jj) 
     387               zztmp = rhoa * wndm(ji,jj) * cdn_wave(ji,jj) 
     388               !taum(ji,jj) = tauoc_wavepar(ji,jj) 
     389               !taum(ji,jj) = zztmp * wspd_wavepar(ji,jj) 
     390               taum  (ji,jj) = zztmp * wndm  (ji,jj) 
     391               zwnd_i(ji,jj) = zztmp * zwnd_i(ji,jj) 
     392               zwnd_j(ji,jj) = zztmp * zwnd_j(ji,jj) 
     393            ENDDO 
     394         ENDDO 
     395      ELSE 
     396         DO jj = 1, jpj 
     397            DO ji = 1, jpi 
     398               zztmp = rhoa * wndm(ji,jj) * Cd(ji,jj) 
     399               taum  (ji,jj) = zztmp * wndm  (ji,jj) 
     400               zwnd_i(ji,jj) = zztmp * zwnd_i(ji,jj) 
     401               zwnd_j(ji,jj) = zztmp * zwnd_j(ji,jj) 
     402            ENDDO 
     403         ENDDO 
     404      ENDIF 
    363405 
    364406      ! ... add the HF tau contribution to the wind stress module? 
     
    379421      CALL lbc_lnk( utau(:,:), 'U', -1. ) 
    380422      CALL lbc_lnk( vtau(:,:), 'V', -1. ) 
     423 
     424      IF (ln_tauoc) THEN  
     425         utau(:,:) = utau(:,:)*tauoc_wavepar(:,:) 
     426         vtau(:,:) = vtau(:,:)*tauoc_wavepar(:,:) 
     427         taum(:,:) = taum(:,:)*tauoc_wavepar(:,:) 
     428      ENDIF 
    381429 
    382430      !  Turbulent fluxes over ocean 
     
    755803      REAL(wp), DIMENSION(:,:), POINTER  ::   dT            ! air/sea temperature differeence      [K] 
    756804      REAL(wp), DIMENSION(:,:), POINTER  ::   dq            ! air/sea humidity difference          [K] 
    757       REAL(wp), DIMENSION(:,:), POINTER  ::   Cd_n10        ! 10m neutral drag coefficient 
    758805      REAL(wp), DIMENSION(:,:), POINTER  ::   Ce_n10        ! 10m neutral latent coefficient 
    759806      REAL(wp), DIMENSION(:,:), POINTER  ::   Ch_n10        ! 10m neutral sensible coefficient 
     
    775822      ! 
    776823      CALL wrk_alloc( jpi,jpj, stab )   ! integer 
    777       CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
     824      CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
    778825      CALL wrk_alloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta, U_n10, xlogt, xct, zpsi_h, zpsi_m ) 
    779826 
    780827      !! * Start 
    781828      !! Air/sea differences 
    782       dU10 = max(0.5, dU)     ! we don't want to fall under 0.5 m/s 
     829      dU10 = MAX(0.5, dU)     ! we don't want to fall under 0.5 m/s 
    783830      dT = T_a - sst          ! assuming that T_a is allready the potential temp. at zzu 
    784831      dq = q_a - q_sat 
     
    788835      !! 
    789836      !! Neutral Drag Coefficient 
    790       stab    = 0.5 + sign(0.5,dT)    ! stable : stab = 1 ; unstable : stab = 0  
    791       IF  ( ln_cdgw ) THEN 
    792         cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 
    793         Cd_n10(:,:) =   cdn_wave 
     837      stab   = 0.5 + SIGN(0.5,dT)    ! stable : stab = 1 ; unstable : stab = 0  
     838 
     839      ! Use drag coefficient from a wave model ... 
     840      IF (ln_cdgw) THEN 
     841         cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 
     842         Cd_n10(:,:) =  cdn_wave(:,:) 
    794843      ELSE 
    795         Cd_n10  = 1.e-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 )    !   L & Y eq. (6a) 
     844      ! ... or choose a drag law 
     845         IF (ln_cdec) THEN 
     846            Cd_n10  = 1E-3 * ( 1.03 + 0.04 * dU10**1.48 ) / (dU10**0.21)    ! PJ (6) 
     847         ELSE 
     848            Cd_n10  = 1E-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 )              ! L & Y eq. (6a) 
     849         ENDIF 
    796850      ENDIF 
    797851      sqrt_Cd_n10 = sqrt(Cd_n10) 
     
    824878 
    825879           !! Updating the neutral 10m transfer coefficients : 
    826            Cd_n10  = 1.e-3 * (2.7/U_n10 + 0.142 + U_n10/13.09)              !  L & Y eq. (6a) 
     880           IF (ln_cdec) THEN 
     881             Cd_n10  = 1E-3 * ( 1.03 + 0.04 * U_n10**1.48 ) / (U_n10**0.21)    ! PJ (6) 
     882           ELSE 
     883             Cd_n10  = 1E-3 * ( 2.7/U_n10 + 0.142 + U_n10/13.09 )              ! L & Y eq. (6a) 
     884           ENDIF 
    827885           sqrt_Cd_n10 = sqrt(Cd_n10) 
    828886           Ce_n10  = 1.e-3 * (34.6 * sqrt_Cd_n10)                           !  L & Y eq. (6b) 
     
    847905      !! 
    848906      CALL wrk_dealloc( jpi,jpj, stab )   ! integer 
    849       CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
     907      CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
    850908      CALL wrk_dealloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta, U_n10, xlogt, xct, zpsi_h, zpsi_m ) 
    851909      ! 
     
    891949      REAL(wp), DIMENSION(:,:), POINTER ::   dT            ! air/sea temperature differeence   [K] 
    892950      REAL(wp), DIMENSION(:,:), POINTER ::   dq            ! air/sea humidity difference       [K] 
    893       REAL(wp), DIMENSION(:,:), POINTER ::   Cd_n10        ! 10m neutral drag coefficient 
    894951      REAL(wp), DIMENSION(:,:), POINTER ::   Ce_n10        ! 10m neutral latent coefficient 
    895952      REAL(wp), DIMENSION(:,:), POINTER ::   Ch_n10        ! 10m neutral sensible coefficient 
     
    911968      IF( nn_timing == 1 )  CALL timing_start('TURB_CORE_2Z') 
    912969      ! 
    913       CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
     970      CALL wrk_alloc( jpi,jpj, dU10, dT, dq, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
    914971      CALL wrk_alloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta_u, zeta_t, U_n10 ) 
    915972      CALL wrk_alloc( jpi,jpj, xlogt, xct, zpsi_hu, zpsi_ht, zpsi_m ) 
     
    923980      !! Neutral Drag Coefficient : 
    924981      stab = 0.5 + sign(0.5,dT)                 ! stab = 1  if dT > 0  -> STABLE 
    925       IF( ln_cdgw ) THEN 
    926         cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 
    927         Cd_n10(:,:) =   cdn_wave 
     982 
     983      ! Use drag coefficient from a wave model ... 
     984      IF (ln_cdgw) THEN 
     985         cdn_wave = cdn_wave - rsmall*(tmask(:,:,1)-1) 
     986         Cd_n10(:,:) =  cdn_wave 
    928987      ELSE 
    929         Cd_n10  = 1.e-3*( 2.7/dU10 + 0.142 + dU10/13.09 )  
     988      ! ... or choose a drag law 
     989         IF (ln_cdec) THEN 
     990            Cd_n10  = 1E-3 * ( 1.03 + 0.04 * dU10**1.48 ) / (dU10**0.21)    ! PJ (6) 
     991         ELSE 
     992            Cd_n10  = 1E-3 * ( 2.7/dU10 + 0.142 + dU10/13.09 )              ! L & Y eq. (6a) 
     993         ENDIF 
    930994      ENDIF 
    931995      sqrt_Cd_n10 = sqrt(Cd_n10) 
     
    9961060      END DO 
    9971061      !! 
    998       CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, Cd_n10, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
     1062      CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, Ce_n10, Ch_n10, sqrt_Cd_n10, sqrt_Cd, L ) 
    9991063      CALL wrk_dealloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta_u, zeta_t, U_n10 ) 
    10001064      CALL wrk_dealloc( jpi,jpj, xlogt, xct, zpsi_hu, zpsi_ht, zpsi_m ) 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r4624 r4644  
    5050   USE timing           ! Timing 
    5151   USE sbcwave          ! Wave module 
     52   USE sbcwave_ecmwf    ! ECMWF wave module 
    5253 
    5354   IMPLICIT NONE 
     
    8283      INTEGER ::   icpt   ! local integer 
    8384      !! 
    84       NAMELIST/namsbc/ nn_fsbc   , ln_ana    , ln_flx,  ln_blk_clio, ln_blk_core, ln_cpl,   & 
    85          &             ln_blk_mfs, ln_apr_dyn, nn_ice,  nn_ice_embd, ln_dm2dc   , ln_rnf,   & 
    86          &             ln_ssr    , nn_fwb    , ln_cdgw , ln_wave , ln_sdw, nn_lsm, cn_iceflx 
     85      NAMELIST/namsbc/ nn_fsbc   , ln_ana    , ln_flx ,  ln_blk_clio, ln_blk_core, ln_cpl,   & 
     86         &             ln_blk_mfs, ln_apr_dyn, nn_ice ,  nn_ice_embd, ln_dm2dc   , ln_rnf,   & 
     87         &             ln_ssr    , nn_fwb    , ln_cdgw , ln_wave    , ln_sdw     , nn_lsm,   & 
     88         &             cn_iceflx , ln_stcor  , ln_tauoc, ln_wavetke  
    8789      INTEGER  ::   ios 
    8890      !!---------------------------------------------------------------------- 
     
    135137         WRITE(numout,*) '              closed sea (=0/1) (set in namdom)          nn_closea   = ', nn_closea 
    136138         WRITE(numout,*) '              n. of iterations if land-sea-mask applied  nn_lsm      = ', nn_lsm 
     139         WRITE(numout,*) '              Drag coefficient from wave model           ln_cdgw     = ', ln_cdgw   
     140         WRITE(numout,*) '              Stokes-Coriolis forcing from wave model    ln_stcor    = ', ln_stcor   
     141         WRITE(numout,*) '              TKE wave breaking BC from wave model       ln_wavetke  = ', ln_wavetke 
     142         WRITE(numout,*) '              Wave-modified stress from wave model       ln_tauoc    = ', ln_tauoc 
    137143      ENDIF 
    138144 
     
    230236      ELSE 
    231237      IF ( ln_cdgw .OR. ln_sdw  )                                         &  
    232          &   CALL ctl_stop('Not Activated Wave Module (ln_wave=F) but     & 
     238         &   CALL ctl_warn('Not Activated Wave Module (ln_wave=F) but     & 
    233239         & asked coupling with drag coefficient (ln_cdgw =T) or Stokes drift (ln_sdw=T) ') 
    234240      ENDIF  
     
    314320      CALL sbc_ssm( kt )                                 ! ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 
    315321      !                                                  ! averaged over nf_sbc time-step 
     322 
     323      IF (ln_cdgw) CALL sbc_wave_ecmwf( kt ) 
     324      ! Read wave parameters if Stokes-Coriolis forcing OR wave parameters for TKE are needed 
     325      ! Also read it if drag coefficient to ensure that we use the neutral 10m from WAM. 
     326      IF (ln_stcor .OR. ln_wavetke .OR. ln_tauoc .OR. ln_cdgw) THEN 
     327         CALL sbc_wavepar( kt ) 
     328      ENDIF 
    316329 
    317330      IF (ln_wave) CALL sbc_wave( kt ) 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90

    r4624 r4644  
    3131   TYPE(FLD), ALLOCATABLE, DIMENSION(:)  :: sf_cd    ! structure of input fields (file informations, fields read) Drag Coefficient 
    3232   TYPE(FLD), ALLOCATABLE, DIMENSION(:)  :: sf_sd    ! structure of input fields (file informations, fields read) Stokes Drift 
    33    REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:)       :: cdn_wave  
    3433   REAL(wp),ALLOCATABLE,DIMENSION (:,:)              :: usd2d,vsd2d,uwavenum,vwavenum  
    3534   REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:,:)     :: usd3d,vsd3d,wsd3d  
     
    6160      USE divcur 
    6261      USE wrk_nemo 
     62      USE sbc_oce, ONLY : cdn_wave 
    6363#if defined key_bdy 
    6464      USE bdy_oce, ONLY : bdytmask 
     
    100100            IF( sn_cdg%ln_tint )   ALLOCATE( sf_cd(1)%fdta(jpi,jpj,1,2) ) 
    101101            CALL fld_fill( sf_cd, (/ sn_cdg /), cn_dir, 'sbc_wave', 'Wave module ', 'namsbc_wave' ) 
    102             ALLOCATE( cdn_wave(jpi,jpj) ) 
    103             cdn_wave(:,:) = 0.0 
    104102        ENDIF 
    105103         IF ( ln_sdw ) THEN 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r4624 r4644  
    2626   !!                 !                                + cleaning of the parameters + bugs correction 
    2727   !!            3.3  !  2010-10  (C. Ethe, G. Madec) reorganisation of initialisation phase 
     28   !!                 !  2012-12  (oyvind.breivik@ecwmf.int) Changed to wave breaking source term 
    2829   !!---------------------------------------------------------------------- 
    2930#if defined key_zdftke   ||   defined key_esopa 
     
    4243   USE domvvl         ! domain: variable volume layer 
    4344   USE sbc_oce        ! surface boundary condition: ocean 
     45   USE sbcwave        ! wave parameters 
     46   USE sbcwave_ecmwf  ! ECMWF wave parameters 
    4447   USE zdf_oce        ! vertical physics: ocean variables 
    4548   USE zdfmxl         ! vertical physics: mixed layer 
     
    7881   LOGICAL  ::   ln_lc     ! Langmuir cells (LC) as a source term of TKE or not 
    7982   REAL(wp) ::   rn_lc     ! coef to compute vertical velocity of Langmuir cells 
     83   REAL(wp) ::   rn_alpavg = 100.0_wp      ! Average alpha (normalized, water-side energy flux, only used in 
     84                                           ! case we use the source term formulation with no wave model information 
     85                                           ! NB! The option of running with source term and no wave model has 
     86                                           ! not been properly tested yet but is included for consistency (Oyvind Breivik, 2013-07-16) 
     87   REAL(wp) ::   rn_deptmaxtkew = 50.0_wp   ! maximum depth [m] to be affected by TKE from breaking waves  
    8088 
    8189   REAL(wp) ::   ri_cri    ! critic Richardson number (deduced from rn_ediff and rn_ediss values) 
     
    8593 
    8694   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   en             !: now turbulent kinetic energy   [m2/s2] 
     95   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   e0             !: top level turbulent kinetic energy   [m2/s2] from waves 
     96   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   dfac           !: wave depth scaling factor    
    8797   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   htau           ! depth of tke penetration (nn_htau) 
    8898   REAL(wp)        , ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   dissl          ! now mixing lenght of dissipation 
     
    109119      !!                ***  FUNCTION zdf_tke_alloc  *** 
    110120      !!---------------------------------------------------------------------- 
     121      INTEGER :: iexalloc 
    111122      ALLOCATE(                                                                    & 
    112123#if defined key_c1d 
     
    118129         &      avmu_k(jpi,jpj,jpk) , avmv_k(jpi,jpj,jpk), STAT= zdf_tke_alloc      ) 
    119130         ! 
     131      IF ( ln_wavetke ) THEN 
     132         ALLOCATE( e0(jpi,jpj) , dfac(jpi,jpj), STAT= iexalloc ) 
     133         ! Setting arrays to zero initially. 
     134         e0(:,:) = 0.0_wp 
     135         dfac(:,:) = 0.0_wp 
     136         ! 
     137         zdf_tke_alloc = zdf_tke_alloc + iexalloc 
     138      ENDIF 
    120139      IF( lk_mpp             )   CALL mpp_sum ( zdf_tke_alloc ) 
    121140      IF( zdf_tke_alloc /= 0 )   CALL ctl_warn('zdf_tke_alloc: failed to allocate arrays') 
     
    219238      REAL(wp) ::   zus   , zwlc  , zind            !    -         - 
    220239      REAL(wp) ::   zzd_up, zzd_lw                  !    -         - 
     240      REAL(wp) ::   lambda !    -         - 
     241      REAL(wp) ::   zphio_flux              !    -         - 
     242      REAL(wp) ::   sbr, z0, fb                     !    -         - 
     243 
    221244!!bfr      REAL(wp) ::   zebot                           !    -         - 
    222245      INTEGER , POINTER, DIMENSION(:,:  ) :: imlc 
     
    239262      !                     !  Surface boundary condition on tke 
    240263      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    241       DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
    242          DO ji = fs_2, fs_jpim1   ! vector opt. 
    243             en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
    244          END DO 
    245       END DO 
    246        
     264      ! Wave parameters read? 
     265      IF ( ln_wavetke ) THEN 
     266         ! Breaking-wave TKE injection as flux 
     267         DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
     268            DO ji = fs_2, fs_jpim1   ! vector opt. 
     269               ! Roughness length proportional to wave height, capped at Hs = 0.1 m 
     270               z0 = 0.5_wp*MAX(swh_wavepar(ji,jj), 0.1_wp) 
     271               lambda = 2.38_wp/z0 
     272               ! The energy flux from the wave model in physical units 
     273               zphio_flux = MAX(phioc_wavepar(ji,jj), 0.0_wp) 
     274               ! TKE at surface (Mellor and Blumberg, 2004) 
     275               e0(ji,jj) = 0.5_wp*( 15.8_wp*zphio_flux/rau0 )**0.67_wp 
     276               ! Reducing the surface TKE by scaling with T-depth of first vertical level 
     277               dfac(ji,jj) = MAX( (2.0_wp*lambda*fsdept(ji,jj,1) )/3.0_wp, 0.00001_wp ) 
     278               ! TKE surface boundary condition weighted by the thickness of the first level 
     279               en(ji,jj,1) = MAX( rn_emin0, e0(ji,jj) * ( 1.0_wp - EXP(-dfac(ji,jj)) ) / dfac(ji,jj) ) * tmask(ji,jj,1) 
     280            ENDDO 
     281         ENDDO 
     282         ! If wave parameters are not read, use rn_ebb, corresponding to alpha = 100.0 
     283      ELSE 
     284         DO jj = 2, jpjm1            ! en(1)   = rn_ebb taum / rau0  (min value rn_emin0) 
     285            DO ji = fs_2, fs_jpim1   ! vector opt. 
     286               ! Estimate average energy flux from std value found in rn_ebb (corresponds to alpha=100.0) 
     287               en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
     288            ENDDO 
     289         ENDDO 
     290      ENDIF 
     291  
    247292!!bfr   - start commented area 
    248293      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     
    443488      ENDIF 
    444489      CALL lbc_lnk( en, 'W', 1. )      ! Lateral boundary conditions (sign unchanged) 
     490      IF ( ln_wavetke ) THEN 
     491         CALL lbc_lnk( e0,     'W', 1. ) ! Lateral boundary conditions (sign unchanged) 
     492         CALL lbc_lnk( dfac,   'W', 1. ) ! Lateral boundary conditions (sign unchanged) 
     493      ENDIF 
    445494      ! 
    446495      CALL wrk_dealloc( jpi,jpj, imlc )    ! integer 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/step.F90

    r4624 r4644  
    286286                               CALL dyn_ldf( kstp )         ! lateral mixing 
    287287        IF( ln_neptsimp )      CALL dyn_nept_cor( kstp )    ! add Neptune velocities (simplified) 
     288        IF( ln_stcor )         CALL dyn_stcor   ( kstp )    ! Stokes-Coriolis forcing (ln_stcor set in SBC/sbc_oce.F90) 
    288289#if defined key_agrif 
    289290        IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn        ! momemtum sponge 
  • branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/step_oce.F90

    r4328 r4644  
    2323 
    2424   USE sbcmod           ! surface boundary condition       (sbc     routine) 
     25   USE sbc_oce , ONLY: ln_stcor      ! seems to be necessary but should be included in sbcmod???? 
    2526   USE sbcrnf           ! surface boundary condition: runoff variables 
    2627   USE sbccpl           ! surface boundary condition: coupled formulation (call send at end of step) 
     
    5152   USE dynspg           ! surface pressure gradient        (dyn_spg routine) 
    5253   USE dynnept          ! simp. form of Neptune effect(dyn_nept_cor routine) 
     54   USE dynstcor         ! Stokes-Coriolis forcing          (dyn_stcor routine) 
    5355 
    5456   USE dynnxt           ! time-stepping                    (dyn_nxt routine) 
Note: See TracChangeset for help on using the changeset viewer.