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 14143 for NEMO/trunk/src/OCE/DYN – NEMO

Ignore:
Timestamp:
2020-12-09T22:26:04+01:00 (4 years ago)
Author:
techene
Message:

#2385 add key_linssh equivalent to ln_linssh using domzr_substitute

Location:
NEMO/trunk/src/OCE/DYN
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/DYN/dynatf.F90

    r14072 r14143  
    6060   PUBLIC    dyn_atf   ! routine called by step.F90 
    6161 
    62 #if defined key_qco 
     62#if defined key_qco   ||   defined key_linssh 
    6363   !!---------------------------------------------------------------------- 
    64    !!   'key_qco'      EMPTY ROUTINE     Quasi-Eulerian vertical coordonate 
     64   !!   'key_qco'                        Quasi-Eulerian vertical coordinate 
     65   !!       OR         EMPTY MODULE 
     66   !!   'key_linssh'                        Fix in time vertical coordinate 
    6567   !!---------------------------------------------------------------------- 
    6668CONTAINS 
    6769 
    68    SUBROUTINE dyn_atf ( kt, Kbb, Kmm, Kaa, puu, pvv, pe3t, pe3u, pe3v ) 
     70   SUBROUTINE dyn_atf( kt, Kbb, Kmm, Kaa, puu, pvv, pe3t, pe3u, pe3v ) 
    6971      INTEGER                             , INTENT(in   ) :: kt               ! ocean time-step index 
    7072      INTEGER                             , INTENT(in   ) :: Kbb, Kmm, Kaa    ! before and after time level indices 
  • NEMO/trunk/src/OCE/DYN/dynatf_qco.F90

    r14053 r14143  
    6666CONTAINS 
    6767 
    68    SUBROUTINE dyn_atf_qco ( kt, Kbb, Kmm, Kaa, puu, pvv ) 
     68   SUBROUTINE dyn_atf_qco( kt, Kbb, Kmm, Kaa, puu, pvv ) 
    6969      !!---------------------------------------------------------------------- 
    7070      !!                  ***  ROUTINE dyn_atf_qco  *** 
     
    196196      ! JC: Would be more clever to swap variables than to make a full vertical 
    197197      ! integration 
    198       ! CAUTION : calculation need to be done in the same way than see GM   
     198      ! CAUTION : calculation need to be done in the same way than see GM 
     199#if defined key_linssh 
     200      uu_b(:,:,Kaa) = e3u(:,:,1,Kaa) * puu(:,:,1,Kaa) * umask(:,:,1) 
     201      uu_b(:,:,Kmm) = e3u(:,:,1,Kmm) * puu(:,:,1,Kmm) * umask(:,:,1) 
     202      vv_b(:,:,Kaa) = e3v(:,:,1,Kaa) * pvv(:,:,1,Kaa) * vmask(:,:,1) 
     203      vv_b(:,:,Kmm) = e3v(:,:,1,Kmm) * pvv(:,:,1,Kmm) * vmask(:,:,1) 
     204      DO jk = 2, jpkm1 
     205         uu_b(:,:,Kaa) = uu_b(:,:,Kaa) + e3u(:,:,jk,Kaa) * puu(:,:,jk,Kaa) * umask(:,:,jk) 
     206         uu_b(:,:,Kmm) = uu_b(:,:,Kmm) + e3u(:,:,jk,Kmm) * puu(:,:,jk,Kmm) * umask(:,:,jk) 
     207         vv_b(:,:,Kaa) = vv_b(:,:,Kaa) + e3v(:,:,jk,Kaa) * pvv(:,:,jk,Kaa) * vmask(:,:,jk) 
     208         vv_b(:,:,Kmm) = vv_b(:,:,Kmm) + e3v(:,:,jk,Kmm) * pvv(:,:,jk,Kmm) * vmask(:,:,jk) 
     209      END DO 
     210      uu_b(:,:,Kaa) = uu_b(:,:,Kaa) * r1_hu(:,:,Kaa) 
     211      vv_b(:,:,Kaa) = vv_b(:,:,Kaa) * r1_hv(:,:,Kaa) 
     212      uu_b(:,:,Kmm) = uu_b(:,:,Kmm) * r1_hu(:,:,Kmm) 
     213      vv_b(:,:,Kmm) = vv_b(:,:,Kmm) * r1_hv(:,:,Kmm) 
     214#else 
    199215      uu_b(:,:,Kaa) = e3u(:,:,1,Kaa) * puu(:,:,1,Kaa) * umask(:,:,1) 
    200216      uu_b(:,:,Kmm) = (e3u_0(:,:,1) * ( 1._wp + r3u_f(:,:) * umask(:,:,1) )) * puu(:,:,1,Kmm) * umask(:,:,1) 
     
    211227      uu_b(:,:,Kmm) = uu_b(:,:,Kmm) * (r1_hu_0(:,:)/( 1._wp + r3u_f(:,:) )) 
    212228      vv_b(:,:,Kmm) = vv_b(:,:,Kmm) * (r1_hv_0(:,:)/( 1._wp + r3v_f(:,:) )) 
     229#endif 
    213230      ! 
    214231      IF( .NOT.ln_dynspg_ts ) THEN        ! output the barotropic currents 
  • NEMO/trunk/src/OCE/DYN/dynhpg.F90

    r14141 r14143  
    186186         &   CALL ctl_stop( 'dyn_hpg_init : non-linear free surface incompatible with hpg_zco or hpg_zps' ) 
    187187      ! 
    188       IF( .NOT. (ln_hpg_isf.AND.ln_isfcav) )                  & 
     188      IF( (.NOT.ln_hpg_isf .AND. ln_isfcav) .OR. (ln_hpg_isf .AND. .NOT.ln_isfcav) )                  & 
    189189         &   CALL ctl_stop( 'dyn_hpg_init : ln_hpg_isf=T requires ln_isfcav=T and vice versa' )   
    190190      ! 
  • NEMO/trunk/src/OCE/DYN/dynvor.F90

    r14072 r14143  
    406406         END SELECT 
    407407         ! 
    408 #if defined key_qco 
     408#if defined key_qco   ||   defined key_linssh 
    409409         DO_2D( 1, 0, 1, 0 )                 !==  potential vorticity  ==!   (key_qco) 
    410410            zwz(ji,jj) = zwz(ji,jj) / e3f_vor(ji,jj,jk) 
     
    533533         ! 
    534534         ! 
    535 #if defined key_qco 
     535#if defined key_qco   ||   defined key_linssh 
    536536         DO_2D( 1, 0, 1, 0 )                 !==  potential vorticity  ==!   (key_qco) 
    537537            zwz(ji,jj) = zwz(ji,jj) / e3f_vor(ji,jj,jk) 
     
    624624         !                                             ! =============== 
    625625         ! 
    626 #if defined key_qco 
     626#if defined key_qco   ||   defined key_linssh 
    627627         DO_2D( 1, 0, 1, 0 )                 ! == reciprocal of e3 at F-point (key_qco) 
    628628            z1_e3f(ji,jj) = 1._wp / e3f_vor(ji,jj,jk) 
     
    952952         ! 
    953953      END SELECT 
    954 #if defined key_qco 
    955       SELECT CASE( nvor_scheme )    ! qco case: pre-computed a specific e3f_0 for some vorticity schemes 
     954#if defined key_qco   ||   defined key_linssh 
     955      SELECT CASE( nvor_scheme )    ! qco or linssh cases : pre-computed a specific e3f_0 for some vorticity schemes 
    956956      CASE( np_ENS , np_ENE , np_EEN , np_MIX ) 
    957957         ! 
Note: See TracChangeset for help on using the changeset viewer.