Changeset 4644 for branches/2014
- Timestamp:
- 2014-05-15T15:56:53+02:00 (10 years ago)
- 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 514 514 } 515 515 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 516 526 @ARTICLE{Brown_Campana_MWR78, 517 527 author = {J. A. Brown and K. A. Campana}, … … 651 661 } 652 662 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 653 672 @ARTICLE{Cox1987, 654 673 author = {M. Cox}, … … 742 761 volume = {34}, 743 762 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} 744 777 } 745 778 … … 895 928 url = {http://dx.doi.org/10.1029/2005GL022463} 896 929 } 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"} 897 943 898 944 @ARTICLE{Egbert_Ray_JGR01, … … 1264 1310 } 1265 1311 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 1266 1321 @ARTICLE{Hazeleger_Drijfhout_JPO98, 1267 1322 author = {W. Hazeleger and S. S. Drijfhout}, … … 1381 1436 } 1382 1437 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 1383 1446 @ARTICLE{Hordoir_al_CD08, 1384 1447 author = {R. Hordoir and J. Polcher and J.-C. Brun-Cottan and G. Madec}, … … 1476 1539 pages = {381--389} 1477 1540 } 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"} 1478 1592 1479 1593 @ARTICLE{Jayne_St_Laurent_GRL01, … … 2681 2795 } 2682 2796 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 2683 2805 @ARTICLE{Talagrand_JAS72, 2684 2806 author = {O. Talagrand}, … … 2859 2981 } 2860 2982 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 2861 2991 @ARTICLE{Warner_al_OM05, 2862 2992 author = {J. C. Warner and C. R. Sherwood and H. G. Arango and R. P. Signell}, … … 2956 3086 pages = {593--611} 2957 3087 } 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"} 2958 3097 2959 3098 @ARTICLE{Zalesak_JCP79, -
branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Chapters/Chap_DYN.tex
r4560 r4644 1 1 % ================================================================ 2 % Chapter �Ocean Dynamics (DYN)2 % Chapter Ocean Dynamics (DYN) 3 3 % ================================================================ 4 4 \chapter{Ocean Dynamics (DYN)} … … 795 795 %> > > > > > > > > > > > > > > > > > > > > > > > > > > > 796 796 \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} 798 798 \caption{ \label{Fig_DYN_dynspg_ts} 799 799 Schematic of the split-explicit time stepping scheme for the external … … 1293 1293 1294 1294 % ================================================================ 1295 % Coriolis-Stokes force 1296 % ================================================================ 1297 \section [Coriolis-Stokes Force (\textit{dynstcor})] 1298 {Coriolis-Stokes Force (\mdl{dynstcor})} 1299 \label{DYN_stcor} 1300 Waves set up a Lagrangian drift in the down-wave direction known 1301 as the Stokes drift \citep{Stokes_TCPS47}. Although its drift speed 1302 $\mathbf{v}_\mathrm{s}$ decays rapidly with depth, it can be substantial 1303 near the surface ($v_\mathrm{s} {\sim}0.7\, \mathrm{m/s}$). In combination 1304 with the earth's rotation it adds an additional veering to the upper-ocean 1305 currents 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} 1312 It requires integration of the full two-dimensional spectrum to get the 1313 Stokes 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} 1319 This is computationally demanding and requires access to the full 1320 two-dimensional wave spectra from a numerical wave model (see e.g. the 1321 ECMWF WAM implementation, ECWAM, \citealt{wam38r1}), so 1322 we 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} 1329 The surface velocity vector $\mathbf{v}_0$ is computed by ECWAM and is 1330 available both in ERA-Interim \citep{Dee_QJRMS11} and operationally. 1331 1332 The transport under such a profile involves the exponential integral $E_1$ and 1333 can 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} 1338 This 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} 1344 Here $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} 1349 The $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} 1355 The mean frequency is defined as $\overline{f} = m_1/m_0$ 1356 \citep{wmo98,Holthuijsen07} and the significant wave height $H_{m_0} = 1357 4\sqrt{m_0}$. We can derive the first moment from the integrated parameters 1358 of a wave model or from wave observations and find an estimate for the 1359 Stokes 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} 1365 Here $\hat{\mathbf{k}}_\mathrm{s} = (\sin \theta_\mathrm{s}, 1366 \cos \theta_\mathrm{s})$ is the unit vector in the 1367 direction $\theta_\mathrm{s}$ of the Stokes transport. From 1368 Eqs~(\ref{Eq_dynstcor_keapprox})-(\ref{Eq_dynstcor_UVHsf}) it is clear that 1369 in order to compute the Stokes drift velocity profile at the desired vertical 1370 levels we need $H_\mathrm{s}$, $\overline{f}$ and $\mathbf{v}_0$. 1371 1372 The Coriolis-Stokes effect is enabled when \np{ln\_stcor} = true (default = 1373 false). All wave-related switches are found in \ngn{namsbc}. 1374 The surface Stokes drift velocity vectors (east and north components) are 1375 archived in ERA-Interim as GRIB parameters 215 and 216 respectively (table 1376 140). 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 15 15 The ocean needs six fields as surface boundary condition: 16 16 \begin{itemize} 17 18 19 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)$ 20 20 \end{itemize} 21 21 plus an optional field: 22 22 \begin{itemize} 23 23 \item the atmospheric pressure at the ocean surface $\left( p_a \right)$ 24 24 \end{itemize} 25 25 … … 75 75 \begin{equation} \label{Eq_sbc_dynzdf} 76 76 \left.{\left( {\frac{A^{vm} }{e_3 }\ \frac{\partial \textbf{U}_h}{\partial k}} \right)} \right|_{z=1} 77 77 = \frac{1}{\rho _o} \binom{\tau _u}{\tau _v } 78 78 \end{equation} 79 79 where $(\tau _u ,\;\tau _v )=(utau,vtau)$ are the two components of the wind … … 348 348 horizontal and vertical dimensions of the associated variable and should 349 349 be 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.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. 352 352 353 353 \subsubsection{Bilinear Interpolation} … … 565 565 566 566 The atmospheric fields used depend on the bulk formulae used. Three bulk formulations 567 are available : the CORE, the CLIO and the MFS bulk formul ea. The choice is made by setting to true567 are available : the CORE, the CLIO and the MFS bulk formulae. The choice is made by setting to true 568 568 one of the following namelist variable : \np{ln\_core} ; \np{ln\_clio} or \np{ln\_mfs}. 569 569 570 570 Note : 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) formul eainclude the computation of the fluxes over both571 Therefore the two bulk (CLIO and CORE) formulae include the computation of the fluxes over both 572 572 an ocean and an ice surface. 573 573 574 574 % ------------------------------------------------------------------------------------------------------------- 575 % CORE Bulk formul ea576 % ------------------------------------------------------------------------------------------------------------- 577 \subsection [CORE Bulk formul ea(\np{ln\_core}=true)]578 {CORE Bulk formul ea(\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})} 579 579 \label{SBC_blk_core} 580 580 %------------------------------------------namsbc_core---------------------------------------------------- … … 591 591 592 592 Note that substituting ERA40 to NCEP reanalysis fields 593 does not require changes in the bulk formul eathemself.593 does not require changes in the bulk formulae themself. 594 594 This is the so-called DRAKKAR Forcing Set (DFS) \citep{Brodeau_al_OM09}. 595 595 … … 621 621 or larger than the one of the input atmospheric fields. 622 622 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)} 625 As an alternative to the \citet{Large_Yeager_Rep04} drag law the 626 parameterization used operationally by ECMWF \citep{Janssen_Rep08,Edson_JPO13} is 627 included, 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} 632 The 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)} 637 The atmospheric momentum flux to the ocean is denoted $\tau_\mathrm{a}$. It is 638 customary 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 641 surface to the friction velocity, 642 \begin{equation} 643 z_0 = \alpha_\mathrm{CH} \frac{u_{*}^2}{g}, 644 \end{equation} 645 where $\alpha_\mathrm{CH}$ is known as the Charnock constant. 646 \citet{Janssen_JPO89} showed that $\alpha$ is not constant but varies with 647 the 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} 653 where $\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} 661 The wave-modified drag coefficient is then 662 \begin{equation} 663 C_\mathrm{D} = \frac{\kappa^2}{\log^2(10/z_0)}. 664 \end{equation} 665 This parameter is stored as CDWW (GRIB parameter 233, table 140) in ERA-Interim and operationally by ECMWF. 666 Note 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 668 wind vector as before, and only the wind \emph{speed} is changed. Note also 669 that where there is a discrepancy between the ice cover of the wave model 670 and NEMO, a drag parametric drag law should used. Where the wave model 671 has ice (as $C_\mathrm{D} = 0$ under ice), a drag law such as the one put 672 forward by \citet{Large_Yeager_Rep04} or the one used operationally by ECMWF, 673 see 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)} 677 As waves break they feed momentum 678 into the currents. If wind input and dissipation in the wave field were in 679 equilibrium, the air-side stress would be equal to the total water-side 680 stress. However, most of the time waves are not in equilibrium 681 \citep{Janssen_JGR12,Janssen_ECMWF13}, giving 682 differences in air-side and water-side stress of the order of 5-10\%. 683 The water-side stress is the total 684 atmospheric stress minus the momentum absorbed by the wave field (positive) 685 minus 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 688 written \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} 695 This parameter is known as TAUOC (GRIB parameter 214, table 140) is stored in 696 normalized form, $\tilde{\tau} = \tau_\mathrm{oc}/\tau_\mathrm{a}$, in 697 ERA-Interim and operationally by ECMWF. It is controlled by the namelist 698 parameter \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})} 628 706 \label{SBC_blk_clio} 629 707 %------------------------------------------namsbc_clio---------------------------------------------------- … … 665 743 % MFS Bulk formulae 666 744 % ------------------------------------------------------------------------------------------------------------- 667 \subsection [MFS Bulk formul ea(\np{ln\_mfs}=true)]668 {MFS Bulk formul ea(\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})} 669 747 \label{SBC_blk_mfs} 670 748 %------------------------------------------namsbc_mfs---------------------------------------------------- … … 1048 1126 of incident SWF. The \cite{Bernie_al_CD07} reconstruction algorithm is available 1049 1127 in \NEMO by setting \np{ln\_dm2dc}~=~true (a \textit{\ngn{namsbc}} namelist variable) when using 1050 CORE bulk formul ea(\np{ln\_blk\_core}~=~true) or the flux formulation (\np{ln\_flx}~=~true).1128 CORE bulk formulae (\np{ln\_blk\_core}~=~true) or the flux formulation (\np{ln\_flx}~=~true). 1051 1129 The reconstruction is performed in the \mdl{sbcdcy} module. The detail of the algoritm used 1052 1130 can 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 197 197 instabilities associated with too weak vertical diffusion. They must be 198 198 specified at least larger than the molecular values, and are set through 199 \np{rn\_avm0} and \np{rn\_avt0} ( namzdfnamelist, see \S\ref{ZDF_cst}).199 \np{rn\_avm0} and \np{rn\_avt0} (\ngn{namzdf} namelist, see \S\ref{ZDF_cst}). 200 200 201 201 \subsubsection{Turbulent length scale} … … 262 262 \end{equation} 263 263 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}}$ ). 264 At the ocean surface, a non zero length scale is set through the 265 \np{rn\_lmin0} namelist parameter. Usually the surface scale is given 266 by $l_o = \kappa \,z_o$ where $\kappa = 0.4$ is von Karman's constant 267 and $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 270 recover the molecular viscosity when $\bar{e}$ reach its minimum value 271 ($1\times 10^{-6}= C_k\, l_{min} \,\sqrt{\bar{e}_{min}}$). 271 272 272 273 … … 283 284 \bar{e}_o = \frac{1}{2}\,\left( 15.8\,\alpha_{CB} \right)^{2/3} \,\frac{|\tau|}{\rho_o} 284 285 \end{equation} 285 where $\alpha_{CB}$ is the \citet{Craig_Banner_JPO94} constant of proportionality286 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 theCharnock's relation:286 where $\alpha_{CB}$ is the \citet{Craig_Banner_JPO94} constant of 287 proportionality which depends on the ''wave age'', ranging from 57 for mature 288 waves to 146 for younger waves \citep{Mellor_Blumberg_JPO04}. The boundary 289 condition on the turbulent length scale follows Charnock's relation: 289 290 \begin{equation} \label{ZDF_Lsbc} 290 291 l_o = \kappa \beta \,\frac{|\tau|}{g\,\rho_o} 291 292 \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. 293 where $\kappa=0.40$ is the von Karman constant, and $\beta$ is Charnock's 294 constant. \citet{Mellor_Blumberg_JPO04} suggest $\beta = 2\times10^{5}$ the value 295 chosen by \citet{Stacey_JPO99} citing observation evidence, and $\alpha_{CB} 296 = 100$ the Craig and Banner's value. As the surface boundary condition 297 on 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 299 corresponds to $\alpha_{CB} = 100$. further setting \np{ln\_lsurf} to true 300 applies \eqref{ZDF_Lsbc} as surface boundary condition on length scale, with 301 $\beta$ hard coded to Stacey's value. Note that a minimal threshold 302 of \np{rn\_emin0}$=10^{-4}~m^2.s^{-2}$ (namelist parameters) is applied on 303 surface $\bar{e}$ value. 304 305 \subsubsection{Surface wave breaking flux from a wave model \np{ln\_wavetke}} 306 %-----------------------------------------------------------------------% 307 The constant of proportionality $\alpha_{CB}$ in Eq~\eqref{ZDF_Esbc} relates 308 the 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} 313 The default option in NEMO \eqref{ZDF_Esbc} is to assume $\alpha_{CB} 314 = 100$ as explained in the previous section. 315 However, the energy flux can be computed from the dissipation source term 316 of 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} 323 Assuming high-frequency equilibrium and ignoring the direct turbulent energy 324 flux 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} 331 Here, $m \approx -\sqrt{\rho_\mathrm{a}/\rho_\mathrm{w}} \alpha_\mathrm{CB}$ 332 is the energy flux \emph{from} the waves (thus always negative) normalized by 333 the air friction velocity $u_*$. It 334 is archived as PHIOC (GRIB parameter 212, table 140) in ERA-Interim and also 335 operationally by ECMWF. The namelist parameter \np{ln\_wavetke} controls 336 the wave TKE flux. We assume that the flux has been converted to physical 337 units following \eqref{Eq_ZDF_m} before ingested by NEMO. 338 339 NEMO computes the upper boundary condition following 340 \citet{Mellor_Blumberg_JPO04}, see \eqref{ZDF_Esbc}. Since $e$ varies 341 rapidly with depth, we want to weight the surface value $\overline{e}_o$ 342 by the thickness of the uppermost level to attain a value representative 343 for 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} 348 Here $L = \Delta z_1/2$ is the depth of the $T$-point of the uppermost level. 349 This adjustment is crucial with model configurations with a thick uppermost 350 level, e.g. ORCA1L42. If we assume, as \citet{Mellor_Blumberg_JPO04} do, that in the 351 wave-affected layer the roughness length can be set to a constant which we 352 choose to be $z_\mathrm{w} = 0.5H_\mathrm{s}$ and that in this near-surface 353 region diffusion balances dissipation, the TKE equation attains the simple 354 exponential 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} 359 Here, 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} 365 We have assumed $S_q=0.2$ and $B=16.6$ \citep{Mellor_Yamada_1982}, as 366 used in NEMO. For a wave height of 2.5 m, which is close to the global 367 mean, $\lambda^{-1} \approx 0.5\, \mathrm{m}$. Integrating \eqref{Eq_ZDF_phimb} 368 is 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} 373 The wave model energy flux is controlled by \np{ln\_wavetke} in namelist 374 \ngn{namsbc}. 301 375 302 376 … … 318 392 319 393 By 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: 321 395 \begin{equation} 322 396 P_{LC}(z) = \frac{w_{LC}^3(z)}{H_{LC}} -
branches/2014/dev_r4642_WavesWG/DOC/TexFiles/Namelist/namsbc
r4230 r4644 30 30 ! is left empty in namelist) , 31 31 ! =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 32 35 / -
branches/2014/dev_r4642_WavesWG/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg
r4370 r4644 188 188 !----------------------------------------------------------------------- 189 189 / 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 240 240 ln_cdgw = .false. ! Neutral drag coefficient read from wave model (T => fill namsbc_wave) 241 241 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 242 245 cn_iceflx = 'linear' ! redistribution of solar input into ice categories during coupling ice/atm. 243 246 / … … 1164 1167 / 1165 1168 !----------------------------------------------------------------------- 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 !----------------------------------------------------------------------- 1166 1177 &namdyn_nept ! Neptune effect (simplified: lateral and vertical diffusions removed) 1167 1178 !----------------------------------------------------------------------- … … 1178 1189 rn_htrmax = 200.0 ! max. depth of transition range 1179 1190 / 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 !----------------------------------------------------------------------- 1216 sn_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 53 53 LOGICAL , PUBLIC :: ln_sdw !: true if 3d stokes drift from wave model 54 54 ! 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 55 59 LOGICAL , PUBLIC :: ln_icebergs !: Icebergs 56 60 ! … … 69 73 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vtau , vtau_b !: sea surface j-stress (ocean referential) [N/m2] 70 74 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 71 78 !! wndm is used onmpute surface gases exchanges in ice-free ocean or leads 72 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm !: wind speed module at T-point (=|U10m-Uoce|) [m/s] … … 131 138 ALLOCATE( rnf (jpi,jpj) , sbc_tsc (jpi,jpj,jpts) , qsr_hc (jpi,jpj,jpk) , & 132 139 & 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 133 147 ! 134 148 ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) , & … … 138 152 & ssu_m (jpi,jpj) , sst_m(jpi,jpj) , & 139 153 & 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) ) 140 156 ! 141 157 #if defined key_vvl -
branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r4624 r4644 38 38 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 39 39 USE prtctl ! Print control 40 USE sbcwave,ONLY : cdn_wave !wave module40 !USE sbcwave,ONLY : cdn_wave !wave module ! moved to sbc_oce 41 41 #if defined key_lim3 || defined key_cice 42 42 USE sbc_ice ! Surface boundary condition: ice fields … … 64 64 65 65 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 66 67 67 68 ! !!! CORE bulk parameters … … 83 84 REAL(wp) :: rn_zqt ! z(q,t) : height of humidity and temperature measurements 84 85 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 85 88 86 89 !! * Substitutions … … 137 140 TYPE(FLD_N) :: sn_tdif ! " " 138 141 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, & 141 144 & sn_tdif, rn_zqt , ln_bulk2z, rn_zu 142 145 !!--------------------------------------------------------------------- … … 163 166 sn_qsr%ln_tint = .false. 164 167 ENDIF 168 IF( ln_cdec .AND. lwp ) WRITE(numout,*)'Using Hans Hersbach formula for drag.' 165 169 ! ! store namelist information in an array 166 170 slf_i(jp_wndi) = sn_wndi ; slf_i(jp_wndj) = sn_wndj … … 182 186 CALL fld_fill( sf, slf_i, cn_dir, 'sbc_blk_core', 'flux formulation for ocean surface boundary condition', 'namsbc_core' ) 183 187 ! 188 ! Drag coefficent so we can write to disk 189 ALLOCATE(Cd_n10(jpi,jpj)) 190 184 191 sfx(:,:) = 0._wp ! salt flux; zero unless ice is present (computed in limsbc(_2).F90) 185 192 ! … … 239 246 INTEGER :: ji, jj ! dummy loop indices 240 247 REAL(wp) :: zcoef_qsatw, zztmp ! local variable 248 REAL(wp) :: ztheta ! local variable, wind direction 241 249 REAL(wp), DIMENSION(:,:), POINTER :: zwnd_i, zwnd_j ! wind speed components at T-point 242 250 REAL(wp), DIMENSION(:,:), POINTER :: zqsatw ! specific humidity at pst … … 283 291 !CDIR COLLAPSE 284 292 #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 289 308 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 291 318 CALL lbc_lnk( zwnd_i(:,:) , 'T', -1. ) 292 319 CALL lbc_lnk( zwnd_j(:,:) , 'T', -1. ) … … 353 380 354 381 ! ... 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 363 405 364 406 ! ... add the HF tau contribution to the wind stress module? … … 379 421 CALL lbc_lnk( utau(:,:), 'U', -1. ) 380 422 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 381 429 382 430 ! Turbulent fluxes over ocean … … 755 803 REAL(wp), DIMENSION(:,:), POINTER :: dT ! air/sea temperature differeence [K] 756 804 REAL(wp), DIMENSION(:,:), POINTER :: dq ! air/sea humidity difference [K] 757 REAL(wp), DIMENSION(:,:), POINTER :: Cd_n10 ! 10m neutral drag coefficient758 805 REAL(wp), DIMENSION(:,:), POINTER :: Ce_n10 ! 10m neutral latent coefficient 759 806 REAL(wp), DIMENSION(:,:), POINTER :: Ch_n10 ! 10m neutral sensible coefficient … … 775 822 ! 776 823 CALL wrk_alloc( jpi,jpj, stab ) ! integer 777 CALL wrk_alloc( jpi,jpj, dU10, dT, dq, C d_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 ) 778 825 CALL wrk_alloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta, U_n10, xlogt, xct, zpsi_h, zpsi_m ) 779 826 780 827 !! * Start 781 828 !! Air/sea differences 782 dU10 = max(0.5, dU) ! we don't want to fall under 0.5 m/s829 dU10 = MAX(0.5, dU) ! we don't want to fall under 0.5 m/s 783 830 dT = T_a - sst ! assuming that T_a is allready the potential temp. at zzu 784 831 dq = q_a - q_sat … … 788 835 !! 789 836 !! 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(:,:) 794 843 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 796 850 ENDIF 797 851 sqrt_Cd_n10 = sqrt(Cd_n10) … … 824 878 825 879 !! 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 827 885 sqrt_Cd_n10 = sqrt(Cd_n10) 828 886 Ce_n10 = 1.e-3 * (34.6 * sqrt_Cd_n10) ! L & Y eq. (6b) … … 847 905 !! 848 906 CALL wrk_dealloc( jpi,jpj, stab ) ! integer 849 CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, C d_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 ) 850 908 CALL wrk_dealloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta, U_n10, xlogt, xct, zpsi_h, zpsi_m ) 851 909 ! … … 891 949 REAL(wp), DIMENSION(:,:), POINTER :: dT ! air/sea temperature differeence [K] 892 950 REAL(wp), DIMENSION(:,:), POINTER :: dq ! air/sea humidity difference [K] 893 REAL(wp), DIMENSION(:,:), POINTER :: Cd_n10 ! 10m neutral drag coefficient894 951 REAL(wp), DIMENSION(:,:), POINTER :: Ce_n10 ! 10m neutral latent coefficient 895 952 REAL(wp), DIMENSION(:,:), POINTER :: Ch_n10 ! 10m neutral sensible coefficient … … 911 968 IF( nn_timing == 1 ) CALL timing_start('TURB_CORE_2Z') 912 969 ! 913 CALL wrk_alloc( jpi,jpj, dU10, dT, dq, C d_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 ) 914 971 CALL wrk_alloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta_u, zeta_t, U_n10 ) 915 972 CALL wrk_alloc( jpi,jpj, xlogt, xct, zpsi_hu, zpsi_ht, zpsi_m ) … … 923 980 !! Neutral Drag Coefficient : 924 981 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 928 987 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 930 994 ENDIF 931 995 sqrt_Cd_n10 = sqrt(Cd_n10) … … 996 1060 END DO 997 1061 !! 998 CALL wrk_dealloc( jpi,jpj, dU10, dT, dq, C d_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 ) 999 1063 CALL wrk_dealloc( jpi,jpj, T_vpot, T_star, q_star, U_star, zeta_u, zeta_t, U_n10 ) 1000 1064 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 50 50 USE timing ! Timing 51 51 USE sbcwave ! Wave module 52 USE sbcwave_ecmwf ! ECMWF wave module 52 53 53 54 IMPLICIT NONE … … 82 83 INTEGER :: icpt ! local integer 83 84 !! 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 87 89 INTEGER :: ios 88 90 !!---------------------------------------------------------------------- … … 135 137 WRITE(numout,*) ' closed sea (=0/1) (set in namdom) nn_closea = ', nn_closea 136 138 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 137 143 ENDIF 138 144 … … 230 236 ELSE 231 237 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 & 233 239 & asked coupling with drag coefficient (ln_cdgw =T) or Stokes drift (ln_sdw=T) ') 234 240 ENDIF … … 314 320 CALL sbc_ssm( kt ) ! ocean sea surface variables (sst_m, sss_m, ssu_m, ssv_m) 315 321 ! ! 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 316 329 317 330 IF (ln_wave) CALL sbc_wave( kt ) -
branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/SBC/sbcwave.F90
r4624 r4644 31 31 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_cd ! structure of input fields (file informations, fields read) Drag Coefficient 32 32 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_sd ! structure of input fields (file informations, fields read) Stokes Drift 33 REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:) :: cdn_wave34 33 REAL(wp),ALLOCATABLE,DIMENSION (:,:) :: usd2d,vsd2d,uwavenum,vwavenum 35 34 REAL(wp),PUBLIC,ALLOCATABLE,DIMENSION (:,:,:) :: usd3d,vsd3d,wsd3d … … 61 60 USE divcur 62 61 USE wrk_nemo 62 USE sbc_oce, ONLY : cdn_wave 63 63 #if defined key_bdy 64 64 USE bdy_oce, ONLY : bdytmask … … 100 100 IF( sn_cdg%ln_tint ) ALLOCATE( sf_cd(1)%fdta(jpi,jpj,1,2) ) 101 101 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.0104 102 ENDIF 105 103 IF ( ln_sdw ) THEN -
branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r4624 r4644 26 26 !! ! + cleaning of the parameters + bugs correction 27 27 !! 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 28 29 !!---------------------------------------------------------------------- 29 30 #if defined key_zdftke || defined key_esopa … … 42 43 USE domvvl ! domain: variable volume layer 43 44 USE sbc_oce ! surface boundary condition: ocean 45 USE sbcwave ! wave parameters 46 USE sbcwave_ecmwf ! ECMWF wave parameters 44 47 USE zdf_oce ! vertical physics: ocean variables 45 48 USE zdfmxl ! vertical physics: mixed layer … … 78 81 LOGICAL :: ln_lc ! Langmuir cells (LC) as a source term of TKE or not 79 82 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 80 88 81 89 REAL(wp) :: ri_cri ! critic Richardson number (deduced from rn_ediff and rn_ediss values) … … 85 93 86 94 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 87 97 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: htau ! depth of tke penetration (nn_htau) 88 98 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dissl ! now mixing lenght of dissipation … … 109 119 !! *** FUNCTION zdf_tke_alloc *** 110 120 !!---------------------------------------------------------------------- 121 INTEGER :: iexalloc 111 122 ALLOCATE( & 112 123 #if defined key_c1d … … 118 129 & avmu_k(jpi,jpj,jpk) , avmv_k(jpi,jpj,jpk), STAT= zdf_tke_alloc ) 119 130 ! 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 120 139 IF( lk_mpp ) CALL mpp_sum ( zdf_tke_alloc ) 121 140 IF( zdf_tke_alloc /= 0 ) CALL ctl_warn('zdf_tke_alloc: failed to allocate arrays') … … 219 238 REAL(wp) :: zus , zwlc , zind ! - - 220 239 REAL(wp) :: zzd_up, zzd_lw ! - - 240 REAL(wp) :: lambda ! - - 241 REAL(wp) :: zphio_flux ! - - 242 REAL(wp) :: sbr, z0, fb ! - - 243 221 244 !!bfr REAL(wp) :: zebot ! - - 222 245 INTEGER , POINTER, DIMENSION(:,: ) :: imlc … … 239 262 ! ! Surface boundary condition on tke 240 263 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 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 247 292 !!bfr - start commented area 248 293 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 443 488 ENDIF 444 489 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 445 494 ! 446 495 CALL wrk_dealloc( jpi,jpj, imlc ) ! integer -
branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/step.F90
r4624 r4644 286 286 CALL dyn_ldf( kstp ) ! lateral mixing 287 287 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) 288 289 #if defined key_agrif 289 290 IF(.NOT. Agrif_Root()) CALL Agrif_Sponge_dyn ! momemtum sponge -
branches/2014/dev_r4642_WavesWG/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r4328 r4644 23 23 24 24 USE sbcmod ! surface boundary condition (sbc routine) 25 USE sbc_oce , ONLY: ln_stcor ! seems to be necessary but should be included in sbcmod???? 25 26 USE sbcrnf ! surface boundary condition: runoff variables 26 27 USE sbccpl ! surface boundary condition: coupled formulation (call send at end of step) … … 51 52 USE dynspg ! surface pressure gradient (dyn_spg routine) 52 53 USE dynnept ! simp. form of Neptune effect(dyn_nept_cor routine) 54 USE dynstcor ! Stokes-Coriolis forcing (dyn_stcor routine) 53 55 54 56 USE dynnxt ! time-stepping (dyn_nxt routine)
Note: See TracChangeset
for help on using the changeset viewer.