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 3084 for branches/2011/dev_LOCEAN_CMCC_2011 – NEMO

Ignore:
Timestamp:
2011-11-14T13:07:57+01:00 (12 years ago)
Author:
cetlod
Message:

dev_LOCEAN_CMCC_2011: add in changes CMCC devlopments into the new branch

Location:
branches/2011/dev_LOCEAN_CMCC_2011
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_LOCEAN_CMCC_2011/DOC/TexFiles/Biblio/Biblio.bib

    r2541 r3084  
    722722  year = {2000}, 
    723723  pages = {237--313} 
     724} 
     725 
     726 
     727@ARTICLE{Dobricic_al_OS07, 
     728  author = {S. Dobricic and N. Pinardi and M. Adani and M. Tonani and  
     729            C. Fratianni and A. Bonazzi and V. Fernandez}, 
     730  title = {Daily oceanographic analysis by the Mediterranean basin scale  
     731           assimilation system}, 
     732  journal = OS, 
     733  year = {2007}, 
     734  volume = {3}, 
     735  pages = {149-157} 
    724736} 
    725737 
     
    24852497  volume = {359}, 
    24862498  pages = {123--129} 
     2499} 
     2500 
     2501@ARTICLE{Talagrand_JAS72, 
     2502  author = {O. Talagrand}, 
     2503  title = {On the damping of high-frequency motions in four-dimensional  
     2504           assimilation of meteorological data}, 
     2505  journal = JAS, 
     2506  year = {1972}, 
     2507  volume = {29}, 
     2508  pages = {1571-1574} 
    24872509} 
    24882510 
  • branches/2011/dev_LOCEAN_CMCC_2011/DOC/TexFiles/Chapters/Chap_ASM.tex

    r2483 r3084  
    8686 
    8787%========================================================================== 
     88% Divergence damping description %%% 
     89\section{Divergence damping initialisation} 
     90\label{ASM_details} 
     91 
     92The velocity increments may be initialized by the iterative application of  
     93a divergence damping operator. In iteration step $n$ new estimates of  
     94velocity increments $u^{n}_I$ and $v^{n}_I$ are updated by: 
     95\begin{equation} \label{eq:asm_dmp} 
     96\left\{ \begin{aligned} 
     97 u^{n}_I = u^{n-1}_I + \frac{1}{e_{1u} } \delta _{i+1/2} \left( {A_D 
     98\;\chi^{n-1}_I } \right) \\ 
     99\\ 
     100 v^{n}_I = v^{n-1}_I + \frac{1}{e_{2v} } \delta _{j+1/2} \left( {A_D 
     101\;\chi^{n-1}_I } \right) \\ 
     102\end{aligned} \right, 
     103\end{equation} 
     104where 
     105\begin{equation} \label{eq:asm_div} 
     106\chi^{n-1}_I = \frac{1}{e_{1t}\,e_{2t}\,e_{3t} } 
     107                \left( {\delta _i \left[ {e_{2u}\,e_{3u}\,u^{n-1}_I} \right] 
     108                       +\delta _j \left[ {e_{1v}\,e_{3v}\,v^{n-1}_I} \right]} \right). 
     109\end{equation} 
     110By the application of \eqref{eq:asm_dmp} and \eqref{eq:asm_dmp} the divergence is filtered 
     111in each iteration, and the vorticity is left unchanged. In the presence of coastal boundaries 
     112with zero velocity increments perpendicular to the coast the divergence is strongly damped. 
     113This type of the initialisation reduces the vertical velocity magnitude  and alleviates the 
     114problem of the excessive unphysical vertical mixing in the first steps of the model  
     115integration \citep{Talagrand_JAS72, Dobricic_al_OS07}. Diffusion coefficients are defined as  
     116$A_D = \alpha e_{1t} e_{2t}$, where $\alpha = 0.2$. The divergence damping is activated by 
     117assigning to \textit{ndivdmp} in the \textit{nam\_asminc} namelist a value greater than zero.  
     118By choosing this value to be of the order of 100 the increments in the vertical velocity will  
     119be significantly reduced. 
     120 
     121 
     122%========================================================================== 
    88123 
    89124\section{Implementation details} 
  • branches/2011/dev_LOCEAN_CMCC_2011/DOC/TexFiles/Chapters/Chap_DYN.tex

    r2541 r3084  
    189189the relative vorticity term and horizontal kinetic energy for the planetary vorticity  
    190190term (MIX scheme) ; or conserving both the potential enstrophy of horizontally non-divergent  
    191 flow and horizontal kinetic energy (ENE scheme) (see  Appendix~\ref{Apdx_C_vor_zad}).  
     191flow and horizontal kinetic energy (EEN scheme) (see  Appendix~\ref{Apdx_C_vor_zad}). In the  
     192case of ENS, ENE or MIX schemes the land sea mask may be slightly modified to ensure the  
     193consistency of vorticity term with analytical equations (\textit{ln\_dynvor\_con}=true). 
    192194The vorticity terms are all computed in dedicated routines that can be found in  
    193195the \mdl{dynvor} module. 
  • branches/2011/dev_LOCEAN_CMCC_2011/DOC/TexFiles/Namelist/namasm

    r2540 r3084  
    1717    ln_salfix = .false.    !  Logical switch for ensuring that the sa > salfixmin 
    1818    salfixmin = -9999      !  Minimum salinity after applying the increments 
     19    ndivdmp   = 0          !  Number of iterations of divergence damping operator 
    1920/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/DOC/TexFiles/Namelist/namdyn_vor

    r2540 r3084  
    66   ln_dynvor_mix = .false. !  mixed scheme                
    77   ln_dynvor_een = .true.  !  energy & enstrophy scheme   
     8   ln_dynvor_con = .false. !  consistency of BC with analytical eqs. 
    89/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/CONFIG/GYRE/EXP00/namelist

    r2977 r3084  
    514514   ln_dynvor_mix = .false. !  mixed scheme                
    515515   ln_dynvor_een = .false. !  energy & enstrophy scheme   
     516   ln_dynvor_con = .false. !  consistency of BC with analytical eqs. 
    516517/ 
    517518!----------------------------------------------------------------------- 
     
    855856    ln_salfix = .false.    !  Logical switch for ensuring that the sa > salfixmin 
    856857    salfixmin = -9999      !  Minimum salinity after applying the increments 
    857 / 
     858    ndivdmp   = 0          !  Number of iterations of divergence damping operator 
     859/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist

    r2977 r3084  
    514514   ln_dynvor_mix = .false. !  mixed scheme                
    515515   ln_dynvor_een = .true.  !  energy & enstrophy scheme   
     516   ln_dynvor_con = .false. !  consistency of BC with analytical eqs. 
    516517/ 
    517518!----------------------------------------------------------------------- 
     
    855856    ln_salfix = .false.    !  Logical switch for ensuring that the sa > salfixmin 
    856857    salfixmin = -9999      !  Minimum salinity after applying the increments 
    857 / 
     858    ndivdmp   = 0          !  Number of iterations of divergence damping operator 
     859/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist

    r2977 r3084  
    514514   ln_dynvor_mix = .false. !  mixed scheme                
    515515   ln_dynvor_een = .true.  !  energy & enstrophy scheme   
     516   ln_dynvor_con = .false. !  consistency of BC with analytical eqs. 
    516517/ 
    517518!----------------------------------------------------------------------- 
     
    879880    ln_salfix = .false.    !  Logical switch for ensuring that the sa > salfixmin 
    880881    salfixmin = -9999      !  Minimum salinity after applying the increments 
    881 / 
     882    ndivdmp   = 0          !  Number of iterations of divergence damping operator 
     883/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/CONFIG/POMME/EXP00/namelist

    r2977 r3084  
    514514   ln_dynvor_mix = .false. !  mixed scheme                
    515515   ln_dynvor_een = .true.  !  energy & enstrophy scheme   
     516   ln_dynvor_con = .false. !  consistency of BC with analytical eqs. 
    516517/ 
    517518!----------------------------------------------------------------------- 
     
    860861    ln_salfix = .false.    !  Logical switch for ensuring that the sa > salfixmin 
    861862    salfixmin = -9999      !  Minimum salinity after applying the increments 
    862 / 
     863    ndivdmp   = 0          !  Number of iterations of divergence damping operator 
     864/ 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r2715 r3084  
    2525   USE oce              ! Dynamics and active tracers defined in memory 
    2626   USE divcur           ! Horizontal divergence and relative vorticity 
     27   USE ldfdyn_oce       ! ocean dynamics: lateral physics 
    2728   USE eosbn2           ! Equation of state - in situ and potential density 
    2829   USE zpshde           ! Partial step : Horizontal Derivative 
     
    5556   LOGICAL, PUBLIC :: ln_sshinc = .FALSE. !: No sea surface height assimilation increment 
    5657   LOGICAL, PUBLIC :: ln_salfix = .FALSE. !: Apply minimum salinity check 
     58   INTEGER, PUBLIC ::   ndivdmp = 0       !: Apply divergence damping filter ndivdmp times 
    5759 
    5860   REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE ::   t_bkg   , s_bkg      !: Background temperature and salinity 
     
    7678   REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   ssh_bkg, ssh_bkginc   ! Background sea surface height and its increment 
    7779 
     80   !! * Substitutions 
     81#  include "domzgr_substitute.h90" 
     82#  include "ldfdyn_substitute.h90" 
     83#  include "vectopt_loop_substitute.h90" 
     84 
    7885   !!---------------------------------------------------------------------- 
    7986   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     
    93100      !! ** Action  :  
    94101      !!---------------------------------------------------------------------- 
     102      !! 
     103      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_2d_1 
     104      USE wrk_nemo, ONLY: hdiv => wrk_2d_1  ! Horizontal divergence 
     105      !! 
     106      INTEGER :: ji,jj,jk 
    95107      INTEGER :: jt 
    96108      INTEGER :: imid 
     
    116128         &                 ln_asmdin, ln_asmiau,                           & 
    117129         &                 nitbkg, nitdin, nitiaustr, nitiaufin, niaufn,   & 
    118          &                 nittrjfrq, ln_salfix, salfixmin 
     130         &                 nittrjfrq, ln_salfix, salfixmin,                & 
     131         &                 ndivdmp 
    119132      !!---------------------------------------------------------------------- 
    120133 
     
    420433 
    421434      !----------------------------------------------------------------------- 
     435      ! Apply divergence damping filter 
     436      !----------------------------------------------------------------------- 
     437 
     438 
     439      IF ( ln_dyninc .AND. ndivdmp.gt.0 ) THEN 
     440 
     441       IF( wrk_in_use( 2, 1) ) THEN 
     442         CALL ctl_stop('asm_inc_init : requested workspace for divergence unavailable.') 
     443       ENDIF 
     444 
     445 
     446       DO  jt = 1, ndivdmp 
     447 
     448           DO jk = 1, jpkm1 
     449 
     450                  hdiv(:,:) = 0._wp 
     451 
     452            DO jj = 2, jpjm1 
     453               DO ji = fs_2, fs_jpim1   ! vector opt. 
     454                  hdiv(ji,jj) =   & 
     455                     (  e2u(ji  ,jj)*fse3u(ji  ,jj,jk) * u_bkginc(ji  ,jj,jk)       & 
     456                      - e2u(ji-1,jj)*fse3u(ji-1,jj,jk) * u_bkginc(ji-1,jj,jk)       & 
     457                      + e1v(ji,jj  )*fse3v(ji,jj  ,jk) * v_bkginc(ji,jj  ,jk)       & 
     458                      - e1v(ji,jj-1)*fse3v(ji,jj-1,jk) * v_bkginc(ji,jj-1,jk)  )    & 
     459                      / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     460               END DO 
     461            END DO 
     462 
     463            CALL lbc_lnk( hdiv, 'T', 1. )   ! lateral boundary cond. (no sign change) 
     464 
     465            DO jj = 2, jpjm1 
     466               DO ji = fs_2, fs_jpim1   ! vector opt. 
     467                  u_bkginc(ji,jj,jk) = u_bkginc(ji,jj,jk) + 0.2 * ( e1t(ji+1,jj)*e2t(ji+1,jj) * hdiv(ji+1,jj)   & 
     468                                                                  - e1t(ji  ,jj)*e2t(ji  ,jj) * hdiv(ji  ,jj) ) & 
     469                                                                / e1u(ji,jj) * umask(ji,jj,jk)  
     470                  v_bkginc(ji,jj,jk) = v_bkginc(ji,jj,jk) + 0.2 * ( e1t(ji,jj+1)*e2t(ji,jj+1) * hdiv(ji,jj+1)   & 
     471                                                                  - e1t(ji,jj  )*e2t(ji,jj  ) * hdiv(ji,jj  ) ) & 
     472                                                                / e2v(ji,jj) * vmask(ji,jj,jk)  
     473               END DO 
     474            END DO 
     475 
     476           END DO 
     477 
     478       END DO 
     479 
     480       IF( wrk_not_released( 2, 1) ) THEN 
     481         CALL ctl_stop('asm_inc_init : failed to release divergence') 
     482       ENDIF 
     483 
     484      ENDIF 
     485 
     486 
     487 
     488      !----------------------------------------------------------------------- 
    422489      ! Allocate and initialize the background state arrays 
    423490      !----------------------------------------------------------------------- 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r2715 r3084  
    2626   USE dom_oce         ! ocean space and time domain 
    2727   USE obc_oce         ! ocean open boundary conditions 
     28   USE dynvor          ! vorticity term 
    2829   USE in_out_manager  ! I/O manager 
    2930   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     
    390391      CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
    391392 
     393 
     394      ! If energy, enstrophy or mixed advection of momentum in vector form change the value for masks 
     395      ! at angles with three ocean points and one land point 
     396       IF( ln_dynvor_con .OR. ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix) THEN 
     397        DO jj = 2, jpjm1 
     398          DO ji = 2, jpim1 
     399          IF( tmask(ji,jj,jk)+tmask(ji+1,jj,jk)+tmask(ji,jj+1,jk)+tmask(ji+1,jj+1,jk) == 3._wp ) THEN 
     400                  fmask(ji,jj,jk) = 1._wp 
     401           ENDIF 
     402          END DO 
     403        END DO 
     404       ENDIF 
     405 
    392406             
    393407      IF( nprint == 1 .AND. lwp ) THEN      ! Control print 
  • branches/2011/dev_LOCEAN_CMCC_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r2977 r3084  
    2323   !!       vor_mix  : mixed enstrophy/energy conserving (ln_dynvor_mix=T) 
    2424   !!       vor_een  : energy and enstrophy conserving   (ln_dynvor_een=T) 
     25   !!       vor_con  : BC consistent with analytical eqs.(ln_dynvor_con=T) 
    2526   !!   dyn_vor_init : set and control of the different vorticity option 
    2627   !!---------------------------------------------------------------------- 
     
    4647   LOGICAL, PUBLIC ::   ln_dynvor_mix = .FALSE.   !: mixed scheme 
    4748   LOGICAL, PUBLIC ::   ln_dynvor_een = .FALSE.   !: energy and enstrophy conserving scheme 
     49   LOGICAL, PUBLIC ::   ln_dynvor_con = .FALSE.   !: consistency with flux form 
    4850 
    4951   INTEGER ::   nvor = 0   ! type of vorticity trend used 
     
    692694      INTEGER ::   ioptio          ! local integer 
    693695      !! 
    694       NAMELIST/namdyn_vor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix, ln_dynvor_een 
     696      NAMELIST/namdyn_vor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix, ln_dynvor_een, ln_dynvor_con 
    695697      !!---------------------------------------------------------------------- 
    696698 
     
    707709         WRITE(numout,*) '           mixed enstrophy/energy conserving scheme   ln_dynvor_mix = ', ln_dynvor_mix 
    708710         WRITE(numout,*) '           enstrophy and energy conserving scheme     ln_dynvor_een = ', ln_dynvor_een 
     711         WRITE(numout,*) '           consistency with flux form                 ln_dynvor_con = ', ln_dynvor_con 
    709712      ENDIF 
    710713 
Note: See TracChangeset for help on using the changeset viewer.