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/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2011-11-14T13:07:57+01:00 (13 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/NEMOGCM/NEMO/OPA_SRC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • 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.