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 12031 for NEMO/branches/2019 – NEMO

Changeset 12031 for NEMO/branches/2019


Ignore:
Timestamp:
2019-12-02T18:23:11+01:00 (4 years ago)
Author:
laurent
Message:

Keep up with r12030 of trunk + latex doc for SBCBLK!

Location:
NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/cfgs/SHARED/namelist_ice_ref

    r11831 r12031  
    6060      rn_icebfr     =  15.            !        maximum bottom stress per unit volume [N/m3] 
    6161      rn_lfrelax    =   1.e-5         !        relaxation time scale to reach static friction [s-1] 
    62       rn_tensile    =   0.05          !        isotropic tensile strength [0-0.5??] 
     62      rn_tensile    =   0.2           !        isotropic tensile strength [0-0.5??] 
    6363/ 
    6464!------------------------------------------------------------------------------ 
     
    9191!------------------------------------------------------------------------------ 
    9292   ln_rhg_EVP       = .true.          !  EVP rheology 
    93       ln_aEVP       = .true.          !     adaptive rheology (Kimmritz et al. 2016 & 2017) 
     93      ln_aEVP       = .false.         !     adaptive rheology (Kimmritz et al. 2016 & 2017) 
    9494      rn_creepl     =   2.0e-9        !     creep limit [1/s] 
    9595      rn_ecc        =   2.0           !     eccentricity of the elliptical yield curve           
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/doc/latex/NEMO/subfiles/chap_SBC.tex

    r12019 r12031  
    651651\end{itemize} 
    652652 
     653 
     654\subsubsection{Appropriate use of the  NCAR algorithm} 
     655 
     656NCAR bulk parameterizations (formerly know as CORE) is meant to be used with the CORE II atmospheric forcing (XXX). Hence the following namelist parameters must be set as follow: 
     657% 
     658\begin{verbatim} 
     659  ... 
     660  ln_NCAR    = .true. 
     661  ... 
     662  rn_zqt     = 10.     ! Air temperature & humidity reference height (m) 
     663  rn_zu      = 10.     ! Wind vector reference height (m) 
     664  ... 
     665  ln_skin_cs = .false. ! use the cool-skin parameterization 
     666  ln_skin_wl = .false. ! use the warm-layer parameterization 
     667  ... 
     668  ln_humi_sph = .true. ! humidity "sn_humi" is specific humidity  [kg/kg] 
     669\end{verbatim} 
     670 
     671 
     672\subsubsection{Appropriate use of the ECMWF algorithm} 
     673 
     674With a DFS* or any ECMWF-based type of atmospheric forcing, we strongly 
     675recommand to use the ECMWF bulk parameterizations with the cool-skin and 
     676warm-layer parameterizations turned on. In ECMWF reanalyzes, since air temperature and humidity are provided at the 2\,m height, and that the humidity is provided as a dew-point temperature, the namelist must be tuned as follows: 
     677% 
     678\begin{verbatim} 
     679  ... 
     680  ln_ECMWF   = .true. 
     681  ...      
     682  rn_zqt     =  2.     ! Air temperature & humidity reference height (m) 
     683  rn_zu      = 10.     ! Wind vector reference height (m) 
     684  ... 
     685  ln_skin_cs = .true. ! use the cool-skin parameterization 
     686  ln_skin_wl = .true. ! use the warm-layer parameterization 
     687  ... 
     688  ln_humi_dpt = .true. !  humidity "sn_humi" is dew-point temperature [K] 
     689  ... 
     690\end{verbatim} 
     691 
     692Note: when \np{ln_ECMWF}{ln\_ECMWF} is selected, the selection 
     693of \np{ln_skin_cs}{ln\_skin\_cs} and \np{ln_skin_wl}{ln\_skin\_wl} implicitely 
     694triggers the use of the ECMWF cool-skin and warm-layer parameterizations, 
     695respectively (found in \textit{sbcblk\_skin\_ecmwf.F90}). 
     696 
     697 
     698\subsubsection{Appropriate use of the COARE 3.x algorithms} 
     699 
     700\begin{verbatim} 
     701  ... 
     702  ln_COARE3p6 = .true. 
     703  ...      
     704  ln_skin_cs = .true. ! use the cool-skin parameterization 
     705  ln_skin_wl = .true. ! use the warm-layer parameterization 
     706  ... 
     707\end{verbatim} 
     708 
     709Note: when \np{ln_COARE3pX}{ln\_COARE3pX} is selected, the selection 
     710of \np{ln_skin_cs}{ln\_skin\_cs} and \np{ln_skin_wl}{ln\_skin\_wl} implicitely 
     711triggers the use of the COARE cool-skin and warm-layer parameterizations, 
     712respectively (found in \textit{sbcblk\_skin\_coare.F90}). 
     713 
     714 
    653715~ 
     716 
     717 
    654718 
    655719% In a typical bulk algorithm, the BTCs under neutral stability conditions are 
     
    662726 
    663727 
    664  
    665  
    666 \subsection{Cool-skin and warm-layer parameterizations} 
     728\subsection[Cool-skin and warm-layer parameterizations (\forcode{ln_skin_cs} \& \forcode{ln_skin_wl})]{Cool-skin and warm-layer parameterizations (\protect\np{ln_skin_cs}{ln\_skin\_cs} \& \np{ln_skin_wl}{ln\_skin\_wl})} 
     729\label{subsec:SBC_skin} 
    667730 
    668731As oposed to the NCAR bulk parameterization, more advanced bulk 
     
    713776    Variable description                 & Model variable & Units              & point \\ 
    714777    \hline 
    715     i-component of the 10m air velocity  & utau           & $m.s^{-1}$         & T     \\ 
     778    i-component of the 10m air velocity  & wndi           & $m.s^{-1}$         & T     \\ 
    716779    \hline 
    717     j-component of the 10m air velocity  & vtau           & $m.s^{-1}$         & T     \\ 
     780    j-component of the 10m air velocity  & wndj           & $m.s^{-1}$         & T     \\ 
    718781    \hline 
    719782    10m air temperature                  & tair           & $K$               & T     \\ 
     
    761824 
    762825%% ================================================================================================= 
    763 \subsection[Ocean-Atmosphere Bulk formulae (\textit{sbcblk\_algo\_coare.F90, sbcblk\_algo\_coare3p6.F90, sbcblk\_algo\_ecmwf.F90, sbcblk\_algo\_ncar.F90})]{Ocean-Atmosphere Bulk formulae (\mdl{sbcblk\_algo\_coare}, \mdl{sbcblk\_algo\_coare3p6}, \mdl{sbcblk\_algo\_ecmwf}, \mdl{sbcblk\_algo\_ncar})} 
     826\subsection[Ocean-Atmosphere Bulk formulae (\textit{sbcblk\_algo\_coare3p0.F90, sbcblk\_algo\_coare3p6.F90, sbcblk\_algo\_ecmwf.F90, sbcblk\_algo\_ncar.F90})]{Ocean-Atmosphere Bulk formulae (\mdl{sbcblk\_algo\_coare3p0}, \mdl{sbcblk\_algo\_coare3p6}, \mdl{sbcblk\_algo\_ecmwf}, \mdl{sbcblk\_algo\_ncar})} 
    764827\label{subsec:SBC_blk_ocean} 
    765828 
     
    778841\item COARE 3.0 (\np[=.true.]{ln_COARE_3p0}{ln\_COARE\_3p0}): See \citet{fairall.bradley.ea_JC03} for more details 
    779842\item COARE 3.6 (\np[=.true.]{ln_COARE_3p6}{ln\_COARE\_3p6}): See \citet{edson.jampana.ea_JPO13} for more details 
    780 \item ECMWF (\np[=.true.]{ln_ECMWF}{ln\_ECMWF}): Based on \href{https://www.ecmwf.int/node/9221}{IFS (Cy31)} implementation and documentation. 
    781   Surface roughness lengths needed for the Obukhov length are computed following \citet{beljaars_QJRMS95}. 
     843\item ECMWF (\np[=.true.]{ln_ECMWF}{ln\_ECMWF}): Based on \href{https://www.ecmwf.int/node/9204}{IFS (Cy40r1)} implementation and documentation. 
     844  Surface roughness lengths needed for the Obukhov length are computed 
     845  following \citet{beljaars_QJRMS95}. 
    782846\end{itemize} 
    783847 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/BDY/bdydta.F90

    r11892 r12031  
    447447               ELSE                                                            ;   ipl = 1            ! xy or xyt 
    448448               ENDIF 
     449               bf(jp_bdya_i,jbdy)%clrootname = 'NOT USED'   ! reset to default value as this subdomain may not need to read this bdy 
    449450            ENDIF 
    450451         ENDIF 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/DYN/dynnxt.F90

    r10425 r12031  
    175175      IF( neuler == 0 .AND. kt == nit000 ) THEN        !* Euler at first time-step: only swap 
    176176         DO jk = 1, jpkm1 
     177            ub(:,:,jk) = un(:,:,jk)                         ! ub <-- un 
     178            vb(:,:,jk) = vn(:,:,jk) 
    177179            un(:,:,jk) = ua(:,:,jk)                         ! un <-- ua 
    178180            vn(:,:,jk) = va(:,:,jk) 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OFF/nemogcm.F90

    r11831 r12031  
    114114#else 
    115115                                CALL dta_dyn    ( istp )         ! Interpolation of the dynamical fields 
     116#endif 
     117                                CALL trc_stp    ( istp )         ! time-stepping 
     118#if ! defined key_sed_off 
    116119         IF( .NOT.ln_linssh )   CALL dta_dyn_swp( istp )         ! swap of sea  surface height and vertical scale factors 
    117120#endif 
    118                                 CALL trc_stp    ( istp )         ! time-stepping 
    119121                                CALL stp_ctl    ( istp, indic )  ! Time loop: control and print 
    120122         istp = istp + 1 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/TOP/TRP/trcnxt.F90

    r10425 r12031  
    139139      ENDIF 
    140140      !                                ! Leap-Frog + Asselin filter time stepping 
    141       IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN    ! Euler time-stepping (only swap) 
     141      IF( (neuler == 0 .AND. kt == nittrc000) ) THEN 
     142         ! set up for leapfrog on second timestep 
     143         DO jn = 1, jptra 
     144            DO jk = 1, jpkm1 
     145               trb(:,:,jk,jn) = trn(:,:,jk,jn)   
     146               trn(:,:,jk,jn) = tra(:,:,jk,jn) 
     147            END DO 
     148         END DO 
     149      ELSE IF( ln_top_euler ) THEN 
     150         ! always doing euler timestepping 
    142151         DO jn = 1, jptra 
    143152            DO jk = 1, jpkm1 
     
    146155            END DO 
    147156         END DO 
     157      ENDIF 
     158      IF( (neuler == 0 .AND. kt == nittrc000) .OR. ln_top_euler ) THEN    ! Euler time-stepping (only swap) 
    148159         IF (l_trdtrc .AND. .NOT. ln_linssh ) THEN   ! Zero Asselin filter contribution must be explicitly written out since for vvl 
    149160            !                                        ! Asselin filter is output by tra_nxt_vvl that is not called on this time step 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/tests/STATION_ASF/EXPREF/plot_station_asf.py

    r11996 r12031  
    2828cy1     = '2016' ; # First year 
    2929cy2     = '2018' ; # Last year 
     30 
     31jt0 = 0 
     32jt0 = 17519 
     33 
    3034 
    3135dir_figs='.' 
     
    100104# Getting time array from the first file: 
    101105id_in = Dataset(cf_in[0]) 
    102 vt = id_in.variables['time_counter'][:] 
     106vt = id_in.variables['time_counter'][jt0:] 
    103107cunit_t = id_in.variables['time_counter'].units ; print(' "time_counter" is in "'+cunit_t+'"') 
    104108id_in.close() 
     
    110114vtime = nmp.zeros(nbr) 
    111115 
    112 vt = vt + 1036800. # BUG!??? don't get why false in epoch to date conversion, and yet ncview gets it right! 
     116vt = vt + 1036800. + 30.*60. # BUG!??? don't get why false in epoch to date conversion, and yet ncview gets it right! 
    113117for jt in range(nbr): vtime[jt] = mdates.epoch2num(vt[jt]) 
    114118 
     
    134138            if ctest == 'skin':   id_in = Dataset(cf_in[ja]) 
    135139            if ctest == 'noskin': id_in = Dataset(cf_in_ns[ja]) 
    136             xF[:,ja] = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 
     140            xF[:,ja] = id_in.variables[L_VNEM[jv]][jt0:,1,1] # only the center point of the 3x3 spatial domain! 
    137141            if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 
    138142            id_in.close() 
     
    207211    for ja in range(nb_algos-1): 
    208212        id_in = Dataset(cf_in[ja]) 
    209         xF[:,ja]   = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 
     213        xF[:,ja]   = id_in.variables[L_VNEM[jv]][jt0:,1,1] # only the center point of the 3x3 spatial domain! 
    210214        if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 
    211215        id_in.close() 
    212216        # 
    213217        id_in = Dataset(cf_in_ns[ja]) 
    214         xFns[:,ja] = id_in.variables[L_VNEM[jv]][:,1,1] # only the center point of the 3x3 spatial domain! 
     218        xFns[:,ja] = id_in.variables[L_VNEM[jv]][jt0:,1,1] # only the center point of the 3x3 spatial domain! 
    215219        if ja == 0: cvar_lnm = id_in.variables[L_VNEM[jv]].long_name 
    216220        id_in.close() 
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/tests/STATION_ASF/README.md

    r12019 r12031  
    66## Objectives 
    77 
    8 ```STATION_ASF``` is a demonstration case that mimics an in-situ station (buoy, platform) dedicated to the estimation of surface air-sea fluxes by means of the more widely measured traditional meteorological surface parameters (sea and atmosphere). 
     8```STATION_ASF``` is a demonstration case that mimics an in-situ station (buoy, platform) dedicated to the estimation of surface air-sea fluxes by means of the measurement of traditional meteorological surface parameters. 
    99 
    1010```STATION_ASF``` is based on the merging of the "single column" and the "standalone surface module" configurations of NEMO. In short, it coulb defined as "SAS meets C1D". As such, the spatial domain of ```STATION_ASF``` is punctual (1D, well actually 3 x 3 as in C1D). 
Note: See TracChangeset for help on using the changeset viewer.