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 5866 – NEMO

Changeset 5866


Ignore:
Timestamp:
2015-11-06T11:42:35+01:00 (8 years ago)
Author:
gm
Message:

#1613: vvl by default: add ln_linssh and remove key_vvl

Location:
branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM
Files:
77 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r5836 r5866  
    3434&namzgr        !   vertical coordinate 
    3535!----------------------------------------------------------------------- 
    36    ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
    37    ln_sco      = .true.    !  s- or hybrid z-s-coordinate    (T/F) 
     36   ln_sco      = .true.    !  s- or hybrid z-s-coordinate 
    3837/ 
    3938!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/AMM12/cpp_AMM12.fcm

    r5836 r5866  
    1  bld::tool::fppkeys  key_bdy key_tide key_dynspg_ts  key_zdfgls  key_vvl key_diainstant key_mpp_mpi key_iomput 
     1 bld::tool::fppkeys  key_bdy key_tide key_dynspg_ts  key_zdfgls key_diainstant key_mpp_mpi key_iomput 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg

    r5836 r5866  
    3030&namzgr        !   vertical coordinate 
    3131!----------------------------------------------------------------------- 
     32   ln_zps      = .true.    !  z-coordinate - partial steps 
    3233/ 
    3334!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg

    r5836 r5866  
    3232&namzgr        !   vertical coordinate 
    3333!----------------------------------------------------------------------- 
    34    ln_zco      = .true.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    35    ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
     34   ln_zco      = .true.    !  z-coordinate - full    steps 
     35   ln_linssh   = .true.    !  linear free surface 
    3636/ 
    3737!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg

    r5836 r5866  
    3535&namzgr        !   vertical coordinate 
    3636!----------------------------------------------------------------------- 
    37    ln_zco      = .true.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    38    ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
     37   ln_zco      = .true.    !  z-coordinate - full    steps 
     38   ln_linssh   = .true.   !  linear free surface 
    3939/ 
    4040!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg

    r5836 r5866  
    2929&namzgr        !   vertical coordinate 
    3030!----------------------------------------------------------------------- 
    31    ln_zco      = .true.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    32    ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
     31   ln_zco      = .true.    !  z-coordinate - full    steps 
     32   ln_linssh   = .true.    !  linear free surface 
    3333/ 
    3434!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg

    r5836 r5866  
    2929&namzgr        !   vertical coordinate 
    3030!----------------------------------------------------------------------- 
    31    ln_zco      = .true.    !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    32    ln_zps      = .false.   !  z-coordinate - partial steps   (T/F) 
     31   ln_zco      = .true.    !  z-coordinate - full    steps 
     32   ln_linssh   = .true.    !  linear free surface 
    3333/ 
    3434!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg

    r5836 r5866  
    2929&namzgr        !   vertical coordinate 
    3030!----------------------------------------------------------------------- 
     31   ln_zps      = .true.    !  z-coordinate - partial steps 
     32   ln_linssh   = .true.    !  linear free surface 
    3133/ 
    3234!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg

    r5836 r5866  
    66&namrun        !   parameters of the run 
    77!----------------------------------------------------------------------- 
     8   nn_no       =       0   !  job number (no more used...) 
     9   cn_exp      =  "ORCA2"  !  experience name 
     10   nn_it000    =       1   !  first time step 
     11   nn_itend    =     300   !  last  time step (std 5475) 
    812/ 
    913!----------------------------------------------------------------------- 
     
    2428&namzgr        !   vertical coordinate 
    2529!----------------------------------------------------------------------- 
     30   ln_zps      = .true.    !  z-coordinate - partial steps 
     31   ln_linssh   = .true.    !  linear free surface 
    2632/ 
    2733!----------------------------------------------------------------------- 
     
    181187   ln_dynvor_mix = .false. !  mixed scheme 
    182188   ln_dynvor_een = .true.  !  energy & enstrophy scheme 
    183       nn_een_e3f = 1             !  e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 
     189      nn_een_e3f = 0             !  e3f = masked averaging of e3t divided by 4 (=0) or by the sum of mask (=1) 
    184190/ 
    185191!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm

    r5836 r5866  
    1 bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_iomput 
     1bld::tool::fppkeys key_trabbl key_lim2 key_dynspg_flt key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_iomput key_nosignedzero 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/1_namelist_cfg

    r5836 r5866  
    2828&namzgr        !   vertical coordinate 
    2929!----------------------------------------------------------------------- 
     30   ln_zps      = .true.    !  z-coordinate - partial steps 
    3031/ 
    3132!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg

    r5836 r5866  
    66&namrun        !   parameters of the run 
    77!----------------------------------------------------------------------- 
     8   nn_no       =       0   !  job number (no more used...) 
     9   cn_exp      =  "ORCA2"  !  experience name 
     10   nn_it000    =       1   !  first time step 
     11   nn_itend    =     300   !  last  time step (std 5475) 
    812/ 
    913!----------------------------------------------------------------------- 
     
    2428&namzgr        !   vertical coordinate 
    2529!----------------------------------------------------------------------- 
     30   ln_zps      = .true.    !  z-coordinate - partial steps 
    2631/ 
    2732!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM3/cpp_ORCA2_LIM3.fcm

    r5836 r5866  
    1  bld::tool::fppkeys key_trabbl key_lim3 key_vvl key_dynspg_ts key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_diaobs key_asminc key_iomput key_nosignedzero 
     1 bld::tool::fppkeys key_trabbl key_lim3 key_dynspg_ts key_zdftke key_zdfddm key_zdftmx  key_mpp_mpi key_diaobs key_asminc key_iomput key_nosignedzero 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/1_namelist_cfg

    r5836 r5866  
    5959&namzgr        !   vertical coordinate 
    6060!----------------------------------------------------------------------- 
    61    ln_zco      = .false.   !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    6261   ln_zps      = .true.    !  z-coordinate - partial steps   (T/F) 
    63    ln_sco      = .false.   !  s- or hybrid z-s-coordinate    (T/F) 
     62   ln_linssh   = .true.    !  linear free surface 
    6463/ 
    6564!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg

    r5836 r5866  
    3131&namzgr        !   vertical coordinate 
    3232!----------------------------------------------------------------------- 
     33   ln_zps      = .true.    !  z-coordinate - partial steps 
     34   ln_linssh   = .true.    !  linear free surface 
    3335/ 
    3436!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg

    r5836 r5866  
    2424&namzgr        !   vertical coordinate 
    2525!----------------------------------------------------------------------- 
     26   ln_zps      = .true.    !  z-coordinate - partial steps 
     27   ln_linssh   = .true.    !  linear free surface 
    2628/ 
    2729!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg

    r5836 r5866  
    2727&namzgr        !   vertical coordinate 
    2828!----------------------------------------------------------------------- 
     29   ln_zps      = .true.    !  z-coordinate - partial steps 
     30   ln_linssh   = .true.    !  linear free surface 
    2931/ 
    3032!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist_cfg

    r5836 r5866  
    2626&namzgr        !   vertical coordinate 
    2727!----------------------------------------------------------------------- 
     28   ln_zco      = .true.    !  z-coordinate - full    steps 
     29   ln_linssh   = .true.    !  linear free surface 
    2830/ 
    2931!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5845 r5866  
    8989&namzgr        !   vertical coordinate 
    9090!----------------------------------------------------------------------- 
    91    ln_zco      = .false.   !  z-coordinate - full    steps   (T/F)      ("key_zco" may also be defined) 
    92    ln_zps      = .true.    !  z-coordinate - partial steps   (T/F) 
    93    ln_sco      = .false.   !  s- or hybrid z-s-coordinate    (T/F) 
    94    ln_isfcav   = .false.   !  ice shelf cavity               (T/F) 
     91   ln_zco      = .false.   !  z-coordinate - full    steps 
     92   ln_zps      = .false.   !  z-coordinate - partial steps 
     93   ln_sco      = .false.   !  s- or hybrid z-s-coordinate 
     94   ln_isfcav   = .false.   !  ice shelf cavity 
     95   ln_linssh   = .false.   !  linear free surface 
    9596/ 
    9697!----------------------------------------------------------------------- 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r5862 r5866  
    469469         sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
    470470         sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
    471 !!gm  like for lim3 : 
    472 #if defined key_vvl             
     471!!gm I really don't like this staff here...  Find a way to put that elsewhere or differently 
    473472!!gm 
    474          do jk = 1,jpkm1                     ! adjust initial vertical scale factors 
    475           e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    476           e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    477          end do 
    478          e3t_a(:,:,:) = e3t_b(:,:,:) 
    479          ! Reconstruction of all vertical scale factors at now and before time steps 
    480          ! ============================================================================= 
    481          ! Horizontal scale factor interpolations 
    482          ! -------------------------------------- 
    483          CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
    484          CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
    485          CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
    486          CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
    487          CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
    488          ! Vertical scale factor interpolations 
    489          ! ------------------------------------ 
    490          CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
    491          CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    492          CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    493          CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
    494          CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
    495          ! t- and w- points depth 
    496          ! ---------------------- 
    497          gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    498          gdepw_n(:,:,1) = 0.0_wp 
    499          gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
    500          DO jk = 2, jpk 
    501             gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
    502             gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
    503             gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
    504          END DO 
    505 !!gm 
    506 #endif 
    507 !!gm 
     473         IF( .NOT. ln_linssh ) THEN 
     474 
     475            do jk = 1,jpkm1                     ! adjust initial vertical scale factors 
     476               e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     477               e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     478            end do 
     479            e3t_a(:,:,:) = e3t_b(:,:,:) 
     480            ! Reconstruction of all vertical scale factors at now and before time steps 
     481            !        ! Horizontal scale factor interpolations 
     482            CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
     483            CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
     484            CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
     485            CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
     486            CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
     487            !        ! Vertical scale factor interpolations 
     488            CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
     489            CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
     490            CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
     491            CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
     492            CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
     493            !        ! t- and w- points depth 
     494            gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
     495            gdepw_n(:,:,1) = 0.0_wp 
     496            gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
     497            DO jk = 2, jpk 
     498               gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
     499               gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
     500               gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
     501            END DO 
     502         ENDIF 
     503!!gm end 
    508504      ENDIF 
    509505      ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r5845 r5866  
    335335            sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
    336336 
    337 #if defined key_vvl             
    338 !!gm key_vvl necessary? clem: yes for compilation purpose 
    339337!!gm I really don't like this staff here...  Find a way to put that elsewhere or differently 
    340             DO jk = 1,jpkm1                     ! adjust initial vertical scale factors 
    341                e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    342                e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    343             END DO 
    344             e3t_a(:,:,:) = e3t_b(:,:,:) 
    345             ! Reconstruction of all vertical scale factors at now and before time 
    346             ! steps 
    347             ! ============================================================================= 
    348             ! Horizontal scale factor interpolations 
    349             ! -------------------------------------- 
    350             CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
    351             CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
    352             CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
    353             CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
    354             CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
    355             ! Vertical scale factor interpolations 
    356             ! ------------------------------------ 
    357             CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
    358             CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    359             CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    360             CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
    361             CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
    362             ! t- and w- points depth 
    363             ! ---------------------- 
     338!!gm 
     339            IF( .NOT.ln_linssh ) THEN 
     340               DO jk = 1,jpkm1                     ! adjust initial vertical scale factors 
     341                  e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     342                  e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     343               END DO 
     344               e3t_a(:,:,:) = e3t_b(:,:,:) 
     345               ! Reconstruction of all vertical scale factors at now and before time-steps 
     346               ! ========================================================================= 
     347               ! Horizontal scale factor interpolations 
     348               ! -------------------------------------- 
     349               CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
     350               CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
     351               CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
     352               CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
     353               CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
     354               ! Vertical scale factor interpolations 
     355                 ! ------------------------------------ 
     356               CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
     357               CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
     358               CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
     359               CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
     360               CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
     361               ! t- and w- points depth 
     362               ! ---------------------- 
    364363!!gm not sure of that.... 
    365             gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    366             gdepw_n(:,:,1) = 0.0_wp 
    367             gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
    368             DO jk = 2, jpk 
    369                gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
    370                gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
    371                gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
    372             END DO 
    373 #endif 
     364               gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
     365               gdepw_n(:,:,1) = 0.0_wp 
     366               gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
     367               DO jk = 2, jpk 
     368                  gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
     369                  gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
     370                  gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
     371               END DO 
     372            ENDIF 
    374373         ENDIF 
    375374      ENDIF ! .NOT. ln_rstart 
    376375      ! 
    377  
    378376   END SUBROUTINE lim_sbc_init 
    379377 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r5845 r5866  
    870870            sshb(:,:) = sshn(:,:)                        ! Update before fields 
    871871            ! 
    872             IF( lk_vvl ) THEN 
     872            IF( .NOT.ln_linssh ) THEN 
    873873               DO jk = 1, jpk 
    874874                  e3t_b(:,:,jk) = e3t_n(:,:,jk) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r5845 r5866  
    13101310      ! Compute total lateral surface for volume correction: 
    13111311      ! ---------------------------------------------------- 
    1312       ! JC: this must be done at each time step with key_vvl 
    1313       bdysurftot = 0.e0  
     1312      ! JC: this must be done at each time step with non-linear free surface 
     1313      bdysurftot = 0._wp  
    13141314      IF( ln_vol ) THEN   
    13151315         igrd = 2      ! Lateral surface at U-points 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90

    r5845 r5866  
    1212   USE par_kind, ONLY: wp 
    1313   USE par_oce                  ! For parameter jpi,jpj,jphgr_msh 
    14    USE dom_oce                  ! For parameters in par_oce (jperio, lk_vvl) 
     14   USE dom_oce                  ! For parameters in par_oce 
    1515   USE crs                      ! Coarse grid domain 
    1616   USE phycst, ONLY: omega, rad ! physical constants 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DIA/diaar5.F90

    r5845 r5866  
    103103         zbotpres(:,:) = zbotpres(:,:) + e3t_n(:,:,jk) * zrhd(:,:,jk) 
    104104      END DO 
    105       IF( .NOT.lk_vvl ) THEN 
     105      IF( ln_linssh ) THEN 
    106106         IF ( ln_isfcav ) THEN 
    107107            DO ji=1,jpi 
     
    129129         zbotpres(:,:) = zbotpres(:,:) + e3t_n(:,:,jk) * zrhd(:,:,jk) 
    130130      END DO 
    131       IF( .NOT.lk_vvl ) THEN 
     131      IF( ln_linssh ) THEN 
    132132         IF ( ln_isfcav ) THEN 
    133133            DO ji=1,jpi 
     
    163163         END DO 
    164164      END DO 
    165       IF( .NOT.lk_vvl ) THEN 
     165      IF( ln_linssh ) THEN 
    166166         IF ( ln_isfcav ) THEN 
    167167            DO ji=1,jpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90

    r5845 r5866  
    11MODULE diadct 
    2   !!===================================================================== 
    3   !!                       ***  MODULE  diadct  *** 
    4   !! Ocean diagnostics: Compute the transport trough a sec. 
    5   !!=============================================================== 
    6   !! History :  
    7   !! 
    8   !!         original  : 02/99 (Y Drillet) 
    9   !!         addition  : 10/01 (Y Drillet, R Bourdalle Badie) 
    10   !!                   : 10/05 (M Laborie) F90 
    11   !!         addition  : 04/07 (G Garric) Ice sections 
    12   !!         bugfix    : 04/07 (C Bricaud) test on sec%nb_point 
    13   !!                                      initialisation of ztransp1,ztransp2,... 
    14   !!         nemo_v_3_4: 09/2011 (C Bricaud) 
    15   !! 
    16   !! 
    17   !!---------------------------------------------------------------------- 
     2   !!====================================================================== 
     3   !!                       ***  MODULE  diadct  *** 
     4   !! Ocean diagnostics: Compute the transport trough a sec. 
     5   !!====================================================================== 
     6   !! History :  OPA  ! 02/1999 (Y Drillet)  original code 
     7   !!                 ! 10/2001 (Y Drillet, R Bourdalle Badie) 
     8   !!   NEMO     1.0  ! 10/2005 (M Laborie) F90 
     9   !!            3.0  ! 04/2007 (G Garric) Ice sections 
     10   !!             -   ! 04/2007 (C Bricaud) test on sec%nb_point, initialisation of ztransp1,ztransp2,... 
     11   !!            3.4  ! 09/2011 (C Bricaud) 
     12   !!---------------------------------------------------------------------- 
    1813#if defined key_diadct 
    19   !!---------------------------------------------------------------------- 
    20   !!   'key_diadct' : 
    21   !!---------------------------------------------------------------------- 
    22   !!---------------------------------------------------------------------- 
    23   !!   dia_dct      :  Compute the transport through a sec. 
    24   !!   dia_dct_init :  Read namelist. 
    25   !!   readsec      :  Read sections description and pathway 
    26   !!   removepoints :  Remove points which are common to 2 procs 
    27   !!   transport    :  Compute transport for each sections 
    28   !!   dia_dct_wri  :  Write tranports results in ascii files 
    29   !!   interp       :  Compute temperature/salinity/density at U-point or V-point 
    30   !!    
    31   !!---------------------------------------------------------------------- 
    32   USE oce             ! ocean dynamics and tracers 
    33   USE dom_oce         ! ocean space and time domain 
    34   USE phycst          ! physical constants 
    35   USE in_out_manager  ! I/O manager 
    36   USE daymod          ! calendar 
    37   USE dianam          ! build name of file 
    38   USE lib_mpp         ! distributed memory computing library 
     14   !!---------------------------------------------------------------------- 
     15   !!   'key_diadct' : 
     16   !!---------------------------------------------------------------------- 
     17   !!---------------------------------------------------------------------- 
     18   !!   dia_dct      :  Compute the transport through a sec. 
     19   !!   dia_dct_init :  Read namelist. 
     20   !!   readsec      :  Read sections description and pathway 
     21   !!   removepoints :  Remove points which are common to 2 procs 
     22   !!   transport    :  Compute transport for each sections 
     23   !!   dia_dct_wri  :  Write tranports results in ascii files 
     24   !!   interp       :  Compute temperature/salinity/density at U-point or V-point 
     25   !!    
     26   !!---------------------------------------------------------------------- 
     27   USE oce             ! ocean dynamics and tracers 
     28   USE dom_oce         ! ocean space and time domain 
     29   USE phycst          ! physical constants 
     30   USE in_out_manager  ! I/O manager 
     31   USE daymod          ! calendar 
     32   USE dianam          ! build name of file 
     33   USE lib_mpp         ! distributed memory computing library 
    3934#if defined key_lim2 
    40   USE ice_2 
     35   USE ice_2 
    4136#endif 
    4237#if defined key_lim3 
    43   USE ice 
     38   USE ice 
    4439#endif 
    45   USE domvvl 
    46   USE timing          ! preformance summary 
    47   USE wrk_nemo        ! working arrays 
    48  
    49   IMPLICIT NONE 
    50   PRIVATE 
    51  
    52   PUBLIC   dia_dct      ! routine called by step.F90 
    53   PUBLIC   dia_dct_init ! routine called by opa.F90 
    54   PUBLIC   diadct_alloc ! routine called by nemo_init in nemogcm.F90  
    55   PRIVATE  readsec 
    56   PRIVATE  removepoints 
    57   PRIVATE  transport 
    58   PRIVATE  dia_dct_wri 
    59  
    60   LOGICAL, PUBLIC, PARAMETER ::   lk_diadct = .TRUE.   !: model-data diagnostics flag 
    61  
    62   INTEGER :: nn_dct        ! Frequency of computation 
    63   INTEGER :: nn_dctwri     ! Frequency of output 
    64   INTEGER :: nn_secdebug   ! Number of the section to debug 
     40   USE domvvl 
     41   USE timing          ! preformance summary 
     42   USE wrk_nemo        ! working arrays 
     43 
     44   IMPLICIT NONE 
     45   PRIVATE 
     46 
     47   PUBLIC   dia_dct      ! routine called by step.F90 
     48   PUBLIC   dia_dct_init ! routine called by opa.F90 
     49   PUBLIC   diadct_alloc ! routine called by nemo_init in nemogcm.F90  
     50   PRIVATE  readsec 
     51   PRIVATE  removepoints 
     52   PRIVATE  transport 
     53   PRIVATE  dia_dct_wri 
     54 
     55   LOGICAL, PUBLIC, PARAMETER ::   lk_diadct = .TRUE.   !: model-data diagnostics flag 
     56 
     57   INTEGER :: nn_dct        ! Frequency of computation 
     58   INTEGER :: nn_dctwri     ! Frequency of output 
     59   INTEGER :: nn_secdebug   ! Number of the section to debug 
    6560    
    66   INTEGER, PARAMETER :: nb_class_max  = 10 
    67   INTEGER, PARAMETER :: nb_sec_max    = 150 
    68   INTEGER, PARAMETER :: nb_point_max  = 2000 
    69   INTEGER, PARAMETER :: nb_type_class = 10 
    70   INTEGER, PARAMETER :: nb_3d_vars    = 3  
    71   INTEGER, PARAMETER :: nb_2d_vars    = 2  
    72   INTEGER            :: nb_sec  
    73  
    74   TYPE POINT_SECTION 
    75      INTEGER :: I,J 
    76   END TYPE POINT_SECTION 
    77  
    78   TYPE COORD_SECTION 
    79      REAL(wp) :: lon,lat 
    80   END TYPE COORD_SECTION 
    81  
    82   TYPE SECTION 
    83      CHARACTER(len=60)                            :: name              ! name of the sec 
    84      LOGICAL                                      :: llstrpond         ! true if you want the computation of salt and 
     61   INTEGER, PARAMETER :: nb_class_max  = 10 
     62   INTEGER, PARAMETER :: nb_sec_max    = 150 
     63   INTEGER, PARAMETER :: nb_point_max  = 2000 
     64   INTEGER, PARAMETER :: nb_type_class = 10 
     65   INTEGER, PARAMETER :: nb_3d_vars    = 3  
     66   INTEGER, PARAMETER :: nb_2d_vars    = 2  
     67   INTEGER            :: nb_sec  
     68 
     69   TYPE POINT_SECTION 
     70      INTEGER :: I,J 
     71   END TYPE POINT_SECTION 
     72 
     73   TYPE COORD_SECTION 
     74      REAL(wp) :: lon,lat 
     75   END TYPE COORD_SECTION 
     76 
     77   TYPE SECTION 
     78      CHARACTER(len=60)                            :: name              ! name of the sec 
     79      LOGICAL                                      :: llstrpond         ! true if you want the computation of salt and 
    8580                                                                       ! heat transports 
    86      LOGICAL                                      :: ll_ice_section    ! ice surface and ice volume computation 
    87      LOGICAL                                      :: ll_date_line      ! = T if the section crosses the date-line 
    88      TYPE(COORD_SECTION), DIMENSION(2)            :: coordSec          ! longitude and latitude of the extremities of the sec 
    89      INTEGER                                      :: nb_class          ! number of boundaries for density classes 
    90      INTEGER, DIMENSION(nb_point_max)             :: direction         ! vector direction of the point in the section 
    91      CHARACTER(len=40),DIMENSION(nb_class_max)    :: classname         ! characteristics of the class 
    92      REAL(wp), DIMENSION(nb_class_max)            :: zsigi           ,&! in-situ   density classes    (99 if you don't want) 
    93                                                      zsigp           ,&! potential density classes    (99 if you don't want) 
    94                                                      zsal            ,&! salinity classes   (99 if you don't want) 
    95                                                      ztem            ,&! temperature classes(99 if you don't want) 
    96                                                      zlay              ! level classes      (99 if you don't want) 
    97      REAL(wp), DIMENSION(nb_type_class,nb_class_max)  :: transport     ! transport output 
    98      REAL(wp)                                         :: slopeSection  ! slope of the section 
    99      INTEGER                                          :: nb_point      ! number of points in the section 
    100      TYPE(POINT_SECTION),DIMENSION(nb_point_max)      :: listPoint     ! list of points in the sections 
    101   END TYPE SECTION 
    102  
    103   TYPE(SECTION),DIMENSION(nb_sec_max) :: secs ! Array of sections 
    104   
    105   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::  transports_3d  
    106   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::  transports_2d   
     81      LOGICAL                                      :: ll_ice_section    ! ice surface and ice volume computation 
     82      LOGICAL                                      :: ll_date_line      ! = T if the section crosses the date-line 
     83      TYPE(COORD_SECTION), DIMENSION(2)            :: coordSec          ! longitude and latitude of the extremities of the sec 
     84      INTEGER                                      :: nb_class          ! number of boundaries for density classes 
     85      INTEGER, DIMENSION(nb_point_max)             :: direction         ! vector direction of the point in the section 
     86      CHARACTER(len=40),DIMENSION(nb_class_max)    :: classname         ! characteristics of the class 
     87      REAL(wp), DIMENSION(nb_class_max)            :: zsigi           ,&! in-situ   density classes    (99 if you don't want) 
     88                                                      zsigp           ,&! potential density classes    (99 if you don't want) 
     89                                                      zsal            ,&! salinity classes   (99 if you don't want) 
     90                                                      ztem            ,&! temperature classes(99 if you don't want) 
     91                                                      zlay              ! level classes      (99 if you don't want) 
     92      REAL(wp), DIMENSION(nb_type_class,nb_class_max)  :: transport     ! transport output 
     93      REAL(wp)                                         :: slopeSection  ! slope of the section 
     94      INTEGER                                          :: nb_point      ! number of points in the section 
     95      TYPE(POINT_SECTION),DIMENSION(nb_point_max)      :: listPoint     ! list of points in the sections 
     96   END TYPE SECTION 
     97 
     98   TYPE(SECTION),DIMENSION(nb_sec_max) :: secs ! Array of sections 
     99  
     100   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::  transports_3d  
     101   REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::  transports_2d   
    107102 
    108103   !!---------------------------------------------------------------------- 
     
    618613 
    619614     TYPE(POINT_SECTION) :: k 
    620      !!-------------------------------------------------------- 
    621  
    622      IF( ld_debug )WRITE(numout,*)'      Compute transport' 
    623  
    624      !---------------------------! 
    625      !  COMPUTE TRANSPORT        ! 
    626      !---------------------------! 
    627      IF(sec%nb_point .NE. 0)THEN    
    628  
    629         !---------------------------------------------------------------------------------------------------- 
    630         !Compute sign for velocities: 
    631         ! 
    632         !convention: 
    633         !   non horizontal section: direction + is toward left hand of section 
    634         !       horizontal section: direction + is toward north of section 
    635         ! 
    636         ! 
    637         !       slopeSection < 0     slopeSection > 0       slopeSection=inf            slopeSection=0 
    638         !       ----------------      -----------------     ---------------             -------------- 
    639         ! 
    640         !   isgnv=1         direction +       
    641         !  ______         _____             ______                                                    
    642         !        |           //|            |                  |                         direction +    
    643         !        | isgnu=1  // |            |isgnu=1           |isgnu=1                     /|\ 
    644         !        |_______  //         ______|    \\            | ---\                        | 
    645         !               |             | isgnv=-1  \\ |         | ---/ direction +       ____________ 
    646         !               |             |          __\\|         |                     
    647         !               |             |     direction +        |                      isgnv=1                                  
    648         !                                                       
    649         !---------------------------------------------------------------------------------------------------- 
    650         isgnu = 1 
    651         IF( sec%slopeSection .GT. 0 ) THEN  ; isgnv = -1  
    652         ELSE                                ; isgnv =  1 
    653         ENDIF 
    654         IF( sec%slopeSection .GE. 9999. )     isgnv =  1 
    655  
    656         IF( ld_debug )write(numout,*)"sec%slopeSection isgnu isgnv ",sec%slopeSection,isgnu,isgnv 
    657  
    658         !--------------------------------------! 
    659         ! LOOP ON THE SEGMENT BETWEEN 2 NODES  ! 
    660         !--------------------------------------! 
    661         DO jseg=1,MAX(sec%nb_point-1,0) 
     615      !!-------------------------------------------------------- 
     616      ! 
     617      IF( ld_debug )WRITE(numout,*)'      Compute transport' 
     618 
     619      !---------------------------! 
     620      !  COMPUTE TRANSPORT        ! 
     621      !---------------------------! 
     622      IF(sec%nb_point .NE. 0)THEN    
     623 
     624         !---------------------------------------------------------------------------------------------------- 
     625         !Compute sign for velocities: 
     626         ! 
     627         !convention: 
     628         !   non horizontal section: direction + is toward left hand of section 
     629         !       horizontal section: direction + is toward north of section 
     630         ! 
     631         ! 
     632         !       slopeSection < 0     slopeSection > 0       slopeSection=inf            slopeSection=0 
     633         !       ----------------      -----------------     ---------------             -------------- 
     634         ! 
     635         !   isgnv=1         direction +       
     636         !  ______         _____             ______                                                    
     637         !        |           //|            |                  |                         direction +    
     638         !        | isgnu=1  // |            |isgnu=1           |isgnu=1                     /|\ 
     639         !        |_______  //         ______|    \\            | ---\                        | 
     640         !               |             | isgnv=-1  \\ |         | ---/ direction +       ____________ 
     641         !               |             |          __\\|         |                     
     642         !               |             |     direction +        |                      isgnv=1                                  
     643         !                                                       
     644         !---------------------------------------------------------------------------------------------------- 
     645         isgnu = 1 
     646         IF( sec%slopeSection .GT. 0 ) THEN  ; isgnv = -1  
     647         ELSE                                ; isgnv =  1 
     648         ENDIF 
     649         IF( sec%slopeSection .GE. 9999. )     isgnv =  1 
     650 
     651         IF( ld_debug )write(numout,*)"sec%slopeSection isgnu isgnv ",sec%slopeSection,isgnu,isgnv 
     652 
     653         !--------------------------------------! 
     654         ! LOOP ON THE SEGMENT BETWEEN 2 NODES  ! 
     655         !--------------------------------------! 
     656         DO jseg=1,MAX(sec%nb_point-1,0) 
    662657               
    663            !------------------------------------------------------------------------------------------- 
    664            ! Select the appropriate coordinate for computing the velocity of the segment 
    665            ! 
    666            !                      CASE(0)                                    Case (2) 
    667            !                      -------                                    -------- 
    668            !  listPoint(jseg)                 listPoint(jseg+1)       listPoint(jseg)  F(i,j)       
    669            !      F(i,j)----------V(i+1,j)-------F(i+1,j)                               | 
    670            !                                                                            | 
    671            !                                                                            | 
    672            !                                                                            | 
    673            !                      Case (3)                                            U(i,j) 
    674            !                      --------                                              | 
    675            !                                                                            | 
    676            !  listPoint(jseg+1) F(i,j+1)                                                | 
    677            !                        |                                                   | 
    678            !                        |                                                   | 
    679            !                        |                                 listPoint(jseg+1) F(i,j-1) 
    680            !                        |                                             
    681            !                        |                                             
    682            !                     U(i,j+1)                                             
    683            !                        |                                       Case(1)      
    684            !                        |                                       ------       
    685            !                        |                                             
    686            !                        |                 listPoint(jseg+1)             listPoint(jseg)                            
    687            !                        |                 F(i-1,j)-----------V(i,j) -------f(jseg)                            
    688            ! listPoint(jseg)     F(i,j) 
    689            !  
    690            !------------------------------------------------------------------------------------------- 
    691  
    692            SELECT CASE( sec%direction(jseg) ) 
    693            CASE(0)  ;   k = sec%listPoint(jseg) 
    694            CASE(1)  ;   k = POINT_SECTION(sec%listPoint(jseg)%I+1,sec%listPoint(jseg)%J) 
    695            CASE(2)  ;   k = sec%listPoint(jseg) 
    696            CASE(3)  ;   k = POINT_SECTION(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J+1) 
    697            END SELECT 
    698  
    699            !---------------------------|  
    700            !     LOOP ON THE LEVEL     |  
    701            !---------------------------|  
    702            !Sum of the transport on the vertical   
    703            DO jk=1,mbathy(k%I,k%J)  
    704   
    705               ! compute temperature, salinity, insitu & potential density, ssh and depth at U/V point  
    706               SELECT CASE( sec%direction(jseg) )  
    707               CASE(0,1)  
    708                  ztn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )  
    709                  zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
    710                  zrhop = interp(k%I,k%J,jk,'V',rhop)  
    711                  zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
    712                  zsshn =  0.5*( sshn(k%I,k%J)    + sshn(k%I,k%J+1)    ) * vmask(k%I,k%J,1)  
    713               CASE(2,3)  
    714                  ztn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )  
    715                  zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
    716                  zrhop = interp(k%I,k%J,jk,'U',rhop)  
    717                  zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
    718                  zsshn =  0.5*( sshn(k%I,k%J)    + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
    719               END SELECT  
    720   
    721               zdep= gdept_n(k%I,k%J,jk)  
     658            !------------------------------------------------------------------------------------------- 
     659            ! Select the appropriate coordinate for computing the velocity of the segment 
     660            ! 
     661            !                      CASE(0)                                    Case (2) 
     662            !                      -------                                    -------- 
     663            !  listPoint(jseg)                 listPoint(jseg+1)       listPoint(jseg)  F(i,j)       
     664            !      F(i,j)----------V(i+1,j)-------F(i+1,j)                               | 
     665            !                                                                            | 
     666            !                                                                            | 
     667            !                                                                            | 
     668            !                      Case (3)                                            U(i,j) 
     669            !                      --------                                              | 
     670            !                                                                            | 
     671            !  listPoint(jseg+1) F(i,j+1)                                                | 
     672            !                        |                                                   | 
     673            !                        |                                                   | 
     674            !                        |                                 listPoint(jseg+1) F(i,j-1) 
     675            !                        |                                             
     676            !                        |                                             
     677            !                     U(i,j+1)                                             
     678            !                        |                                       Case(1)      
     679            !                        |                                       ------       
     680            !                        |                                             
     681            !                        |                 listPoint(jseg+1)             listPoint(jseg)                            
     682            !                        |                 F(i-1,j)-----------V(i,j) -------f(jseg)                            
     683            ! listPoint(jseg)     F(i,j) 
     684            !  
     685            !------------------------------------------------------------------------------------------- 
     686 
     687            SELECT CASE( sec%direction(jseg) ) 
     688            CASE(0)   ;    k = sec%listPoint(jseg) 
     689            CASE(1)   ;    k = POINT_SECTION(sec%listPoint(jseg)%I+1,sec%listPoint(jseg)%J) 
     690            CASE(2)   ;    k = sec%listPoint(jseg) 
     691            CASE(3)   ;    k = POINT_SECTION(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J+1) 
     692            END SELECT 
     693 
     694            !---------------------------|  
     695            !     LOOP ON THE LEVEL     |  
     696            !---------------------------|  
     697            DO jk = 1, mbathy(k%I,k%J)            !Sum of the transport on the vertical 
     698            !           ! compute temperature, salinity, insitu & potential density, ssh and depth at U/V point  
     699            SELECT CASE( sec%direction(jseg) ) 
     700               CASE(0,1)  
     701                  ztn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_tem) )  
     702                  zsn   = interp(k%I,k%J,jk,'V',tsn(:,:,:,jp_sal) )  
     703                  zrhop = interp(k%I,k%J,jk,'V',rhop)  
     704                  zrhoi = interp(k%I,k%J,jk,'V',rhd*rau0+rau0)  
     705                  zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I,k%J+1)    ) * vmask(k%I,k%J,1)  
     706               CASE(2,3)  
     707                  ztn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_tem) )  
     708                  zsn   = interp(k%I,k%J,jk,'U',tsn(:,:,:,jp_sal) )  
     709                  zrhop = interp(k%I,k%J,jk,'U',rhop)  
     710                  zrhoi = interp(k%I,k%J,jk,'U',rhd*rau0+rau0)  
     711                  zsshn =  0.5*( sshn(k%I,k%J) + sshn(k%I+1,k%J)    ) * umask(k%I,k%J,1)   
     712               END SELECT  
     713               ! 
     714               zdep= gdept_n(k%I,k%J,jk)  
    722715   
    723               !compute velocity with the correct direction  
    724               SELECT CASE( sec%direction(jseg) )  
    725               CASE(0,1)    
    726                  zumid=0.  
    727                  zvmid=isgnv*vn(k%I,k%J,jk)*vmask(k%I,k%J,jk)  
    728               CASE(2,3)  
    729                  zumid=isgnu*un(k%I,k%J,jk)*umask(k%I,k%J,jk)  
    730                  zvmid=0.  
    731               END SELECT  
    732   
    733               !zTnorm=transport through one cell;  
    734               !velocity* cell's length * cell's thickness  
    735               zTnorm=zumid*e2u(k%I,k%J)*  e3u_n(k%I,k%J,jk)+     &  
    736                      zvmid*e1v(k%I,k%J)*  e3v_n(k%I,k%J,jk)  
    737  
    738 #if ! defined key_vvl 
    739               !add transport due to free surface  
    740               IF( jk==1 )THEN  
    741                  zTnorm = zTnorm + zumid* e2u(k%I,k%J) * zsshn * umask(k%I,k%J,jk) + &  
    742                                    zvmid* e1v(k%I,k%J) * zsshn * vmask(k%I,k%J,jk)  
    743               ENDIF  
    744 #endif 
     716               SELECT CASE( sec%direction(jseg) )                !compute velocity with the correct direction  
     717               CASE(0,1)   
     718                  zumid=0._wp 
     719                  zvmid=isgnv*vn(k%I,k%J,jk)*vmask(k%I,k%J,jk)  
     720               CASE(2,3)  
     721                  zumid=isgnu*un(k%I,k%J,jk)*umask(k%I,k%J,jk)  
     722                  zvmid=0._wp 
     723               END SELECT  
     724  
     725               !zTnorm=transport through one cell;  
     726               !velocity* cell's length * cell's thickness  
     727               zTnorm = zumid*e2u(k%I,k%J) * e3u_n(k%I,k%J,jk)     &  
     728                  &   + zvmid*e1v(k%I,k%J) * e3v_n(k%I,k%J,jk)  
     729 
     730!!gm  THIS is WRONG  no transport due to ssh in linear free surface case !!!!! 
     731               IF( ln_linssh ) THEN              !add transport due to free surface  
     732                  IF( jk==1 ) THEN  
     733                     zTnorm = zTnorm + zumid* e2u(k%I,k%J) * zsshn * umask(k%I,k%J,jk)   &  
     734                        &            + zvmid* e1v(k%I,k%J) * zsshn * vmask(k%I,k%J,jk)  
     735                  ENDIF  
     736               ENDIF 
     737!!gm end 
    745738              !COMPUTE TRANSPORT   
    746739  
    747740              transports_3d(1,jsec,jseg,jk) = transports_3d(1,jsec,jseg,jk) + zTnorm  
    748741   
    749               IF ( sec%llstrpond ) THEN  
     742              IF( sec%llstrpond ) THEN  
    750743                 transports_3d(2,jsec,jseg,jk) = transports_3d(2,jsec,jseg,jk)  + zTnorm * ztn * zrhop * rcp 
    751744                 transports_3d(3,jsec,jseg,jk) = transports_3d(3,jsec,jseg,jk)  + zTnorm * zsn * zrhop * 0.001 
    752745              ENDIF 
    753746    
    754            ENDDO !end of loop on the level 
     747           END DO !end of loop on the level 
    755748 
    756749#if defined key_lim2 || defined key_lim3 
     
    793786                 transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)*   & 
    794787                                   a_i(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J,jl) 
    795               ENDDO 
     788              END DO 
    796789#endif 
    797790    
     
    799792#endif 
    800793  
    801         ENDDO !end of loop on the segment 
     794        END DO !end of loop on the segment 
    802795 
    803796     ENDIF !end of sec%nb_point =0 case 
    804797     ! 
    805798  END SUBROUTINE transport 
    806    
     799 
     800 
    807801  SUBROUTINE dia_dct_sum(sec,jsec)  
    808802     !!-------------------------------------------------------------  
     
    986980#endif  
    987981   
    988         ENDDO !end of loop on the segment  
     982        END DO !end of loop on the segment  
    989983  
    990984     ELSE  !if sec%nb_point =0  
     
    995989  
    996990  END SUBROUTINE dia_dct_sum  
    997    
     991 
     992 
    998993  SUBROUTINE dia_dct_wri(kt,ksec,sec) 
    999994     !!------------------------------------------------------------- 
     
    11331128                              sec%transport(9,1),sec%transport(10,1), & 
    11341129                              sec%transport(9,1)+sec%transport(10,1)  
    1135      ENDIF 
     1130      ENDIF 
    11361131                                               
    1137 118 FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3F12.4) 
    1138 119 FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3E15.6) 
    1139  
    1140      CALL wrk_dealloc(nb_type_class , zsumclasses )   
    1141      ! 
    1142   END SUBROUTINE dia_dct_wri 
    1143  
    1144  
    1145   FUNCTION interp(ki, kj, kk, cd_point, ptab) 
     1132118   FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3F12.4) 
     1133119   FORMAT(I8,1X,I8,1X,I4,1X,A30,1X,f9.2,1X,I4,3X,A8,1X,2F12.4,5X,3E15.6) 
     1134 
     1135      CALL wrk_dealloc(nb_type_class , zsumclasses )   
     1136      ! 
     1137   END SUBROUTINE dia_dct_wri 
     1138 
     1139 
     1140   FUNCTION interp(ki, kj, kk, cd_point, ptab) 
    11461141  !!---------------------------------------------------------------------- 
    11471142  !! 
     
    12971292#endif 
    12981293 
     1294   !!====================================================================== 
    12991295END MODULE diadct 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90

    r5845 r5866  
    109109      IF( ln_trabbc )   z_frc_trd_t = z_frc_trd_t +               glob_sum( qgh_trd0(:,:) * surf(:,:) ) 
    110110      ! 
    111       IF( .NOT. lk_vvl ) THEN 
     111      IF( ln_linssh ) THEN 
    112112         IF ( ln_isfcav ) THEN 
    113113            DO ji=1,jpi 
     
    129129      frc_s = frc_s + z_frc_trd_s * rdt 
    130130      !                                          ! Advection flux through fixed surface (z=0) 
    131       IF( .NOT. lk_vvl ) THEN 
     131      IF( ln_linssh ) THEN 
    132132         frc_wn_t = frc_wn_t + z_wn_trd_t * rdt 
    133133         frc_wn_s = frc_wn_s + z_wn_trd_s * rdt 
     
    145145 
    146146      ! heat & salt content variation (associated with ssh) 
    147       IF( .NOT. lk_vvl ) THEN 
     147      IF( ln_linssh ) THEN 
    148148         IF ( ln_isfcav ) THEN 
    149149            DO ji = 1, jpi 
     
    175175      ! Substract forcing from heat content, salt content and volume variations 
    176176      zdiff_v1 = zdiff_v1 - frc_v 
    177       IF( lk_vvl )   zdiff_v2 = zdiff_v2 - frc_v 
     177      IF( .NOT.ln_linssh )   zdiff_v2 = zdiff_v2 - frc_v 
    178178      zdiff_hc = zdiff_hc - frc_t 
    179179      zdiff_sc = zdiff_sc - frc_s 
    180       IF( .NOT. lk_vvl ) THEN 
     180      IF( ln_linssh ) THEN 
    181181         zdiff_hc1 = zdiff_hc + z_ssh_hc  
    182182         zdiff_sc1 = zdiff_sc + z_ssh_sc 
     
    194194 
    195195!!gm to be added ? 
    196 !      IF( .NOT. lk_vvl ) THEN            ! fixed volume, add the ssh contribution 
     196!      IF( ln_linssh ) THEN            ! fixed volume, add the ssh contribution 
    197197!        zvol_tot = zvol_tot + glob_sum( surf(:,:) * sshn(:,:) ) 
    198198!      ENDIF 
    199199!!gm end 
    200200 
    201       IF( lk_vvl ) THEN 
     201      IF( .NOT.ln_linssh ) THEN 
    202202        CALL iom_put( 'bgtemper' , zdiff_hc / zvol_tot )              ! Temperature variation (C)  
    203203        CALL iom_put( 'bgsaline' , zdiff_sc / zvol_tot )              ! Salinity    variation (psu) 
     
    256256           CALL iom_get( numror, 'frc_t', frc_t ) 
    257257           CALL iom_get( numror, 'frc_s', frc_s ) 
    258            IF( .NOT. lk_vvl ) THEN 
     258           IF( ln_linssh ) THEN 
    259259              CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 
    260260              CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 
     
    264264           CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 
    265265           CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 
    266            IF( .NOT. lk_vvl ) THEN 
     266           IF( ln_linssh ) THEN 
    267267              CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    268268              CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     
    281281          frc_t = 0._wp                                           ! heat content   -    -   -    -    
    282282          frc_s = 0._wp                                           ! salt content   -    -   -    -         
    283           IF( .NOT. lk_vvl ) THEN 
     283          IF( ln_linssh ) THEN 
    284284             IF ( ln_isfcav ) THEN 
    285285                DO ji=1,jpi 
     
    307307        CALL iom_rstput( kt, nitrst, numrow, 'frc_t'   , frc_t     ) 
    308308        CALL iom_rstput( kt, nitrst, numrow, 'frc_s'   , frc_s     ) 
    309         IF( .NOT. lk_vvl ) THEN 
     309        IF( ln_linssh ) THEN 
    310310           CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 
    311311           CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 
     
    315315        CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 
    316316        CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 
    317         IF( .NOT. lk_vvl ) THEN 
     317        IF( ln_linssh ) THEN 
    318318           CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 
    319319           CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 
     
    384384      ENDIF 
    385385 
    386       IF(.NOT. lk_vvl ) ALLOCATE( ssh_hc_loc_ini(jpi,jpj), ssh_sc_loc_ini(jpi,jpj),STAT=ierror ) 
     386      IF( ln_linssh )  ALLOCATE( ssh_hc_loc_ini(jpi,jpj), ssh_sc_loc_ini(jpi,jpj),STAT=ierror ) 
    387387      IF( ierror > 0 ) THEN 
    388388         CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' )   ;   RETURN 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DIA/diahth.F90

    r5845 r5866  
    311311      END DO 
    312312      ! surface boundary condition 
    313       IF( lk_vvl ) THEN   ;   zthick(:,:) = 0._wp       ;   htc3(:,:) = 0._wp                                    
    314       ELSE                ;   zthick(:,:) = sshn(:,:)   ;   htc3(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:) * tmask(:,:,1)    
     313      IF( .NOT.ln_linssh ) THEN   ;   zthick(:,:) = 0._wp       ;   htc3(:,:) = 0._wp                                    
     314      ELSE                        ;   zthick(:,:) = sshn(:,:)   ;   htc3(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:) * tmask(:,:,1)   
    315315      ENDIF 
    316316      ! integration down to ilevel 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r5845 r5866  
    146146      ENDIF 
    147147 
    148       IF( .NOT.lk_vvl ) THEN 
     148      IF( ln_linssh ) THEN 
    149149         CALL iom_put( "e3t" , e3t_n(:,:,:) ) 
    150150         CALL iom_put( "e3u" , e3u_n(:,:,:) ) 
     
    419419      IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
    420420      ! 
    421                      CALL wrk_alloc( jpi,jpj      , zw2d ) 
    422       IF( lk_vvl )   CALL wrk_alloc( jpi,jpj,jpk  , zw3d ) 
     421                             CALL wrk_alloc( jpi,jpj      , zw2d ) 
     422      IF( .NOT.ln_linssh )   CALL wrk_alloc( jpi,jpj,jpk  , zw3d ) 
    423423      ! 
    424424      ! Output the initial state and forcings 
     
    563563         CALL histdef( nid_T, "vosaline", "Salinity"                           , "PSU"    ,   &  ! sn 
    564564            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    565          IF(  lk_vvl  ) THEN 
     565         IF(  .NOT.ln_linssh  ) THEN 
    566566            CALL histdef( nid_T, "vovvle3t", "Level thickness"                    , "m"      ,&  ! e3t_n 
    567567            &             jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
     
    584584         CALL histdef( nid_T, "sosfldow", "downward salt flux"                 , "PSU/m2/s",  &  ! sfx 
    585585            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    586          IF(  .NOT. lk_vvl  ) THEN 
     586         IF(  ln_linssh  ) THEN 
    587587            CALL histdef( nid_T, "sosst_cd", "Concentration/Dilution term on temperature"     &  ! emp * tsn(:,:,1,jp_tem) 
    588588            &                                                                  , "KgC/m2/s",  &  ! sosst_cd 
     
    730730      ENDIF 
    731731 
    732       IF( lk_vvl ) THEN 
     732      IF( .NOT.ln_linssh ) THEN 
    733733         CALL histwrite( nid_T, "votemper", it, tsn(:,:,:,jp_tem) * e3t_n(:,:,:) , ndim_T , ndex_T  )   ! heat content 
    734734         CALL histwrite( nid_T, "vosaline", it, tsn(:,:,:,jp_sal) * e3t_n(:,:,:) , ndim_T , ndex_T  )   ! salt content 
     
    741741         CALL histwrite( nid_T, "sosaline", it, tsn(:,:,1,jp_sal) , ndim_hT, ndex_hT )   ! sea surface salinity 
    742742      ENDIF 
    743       IF( lk_vvl ) THEN 
     743      IF( .NOT.ln_linssh ) THEN 
    744744         zw3d(:,:,:) = ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    745745         CALL histwrite( nid_T, "vovvle3t", it, e3t_n (:,:,:) , ndim_T , ndex_T  )   ! level thickness 
     
    753753                                                                                  ! (includes virtual salt flux beneath ice  
    754754                                                                                  ! in linear free surface case) 
    755       IF( .NOT. lk_vvl ) THEN 
     755      IF( ln_linssh ) THEN 
    756756         zw2d(:,:) = emp (:,:) * tsn(:,:,1,jp_tem) 
    757757         CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT )          ! c/d term on sst 
     
    838838      ENDIF 
    839839      ! 
    840                      CALL wrk_dealloc( jpi , jpj        , zw2d ) 
    841       IF( lk_vvl )   CALL wrk_dealloc( jpi , jpj , jpk  , zw3d ) 
     840                             CALL wrk_dealloc( jpi , jpj        , zw2d ) 
     841      IF( .NOT.ln_linssh )   CALL wrk_dealloc( jpi , jpj , jpk  , zw3d ) 
    842842      ! 
    843843      IF( nn_timing == 1 )   CALL timing_stop('dia_wri') 
     
    936936      CALL histdef( id_i, "sometauy", "Meridional Wind Stress", "N/m2"   ,   &   ! j-wind stress 
    937937         &          jpi, jpj, nh_i, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    938       IF( lk_vvl ) THEN 
     938      IF( .NOT.ln_linssh ) THEN 
    939939         CALL histdef( id_i, "vovvldep", "T point depth"         , "m"      ,   &   ! t-point depth 
    940940            &          jpi, jpj, nh_i, jpk, 1, jpk, nz_i, 32, clop, zsto, zout ) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90

    r5862 r5866  
    173173   !! vertical coordinate and scale factors 
    174174   !! --------------------------------------------------------------------- 
    175    !                                 !!* Namelist namzgr : vertical coordinate * 
    176    LOGICAL, PUBLIC ::   ln_zco        !: z-coordinate - full step 
    177    LOGICAL, PUBLIC ::   ln_zps        !: z-coordinate - partial step 
    178    LOGICAL, PUBLIC ::   ln_sco        !: s-coordinate or hybrid z-s coordinate 
    179    LOGICAL, PUBLIC ::   ln_isfcav     !: presence of ISF  
    180  
    181 !!gm 
    182 #if defined key_vvl 
    183    LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .TRUE.    !: variable grid flag 
    184    LOGICAL, PUBLIC ::   lk_linssh = .FALSE.    !: variable grid flag 
    185 #else 
    186    LOGICAL, PUBLIC, PARAMETER ::   lk_vvl = .FALSE.   !: variable grid flag 
    187    LOGICAL, PUBLIC ::   lk_linssh = .TRUE.    !: variable grid flag 
    188 #endif 
    189 !!gm 
     175   !                                !!* Namelist namzgr : vertical coordinate * 
     176   LOGICAL, PUBLIC ::   ln_zco       !: z-coordinate - full step 
     177   LOGICAL, PUBLIC ::   ln_zps       !: z-coordinate - partial step 
     178   LOGICAL, PUBLIC ::   ln_sco       !: s-coordinate or hybrid z-s coordinate 
     179   LOGICAL, PUBLIC ::   ln_isfcav    !: presence of ISF  
     180   LOGICAL, PUBLIC ::   ln_linssh    !: variable grid flag 
    190181 
    191182   !                                                        !  ref.   ! before  !   now   ! after  ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r5863 r5866  
    101101      END DO 
    102102      ! 
    103       IF( lk_vvl ) THEN       !==  time varying coordinate system  ==! 
    104          ! 
    105          CALL dom_vvl_init                      ! set before/now/after variables 
    106          ! 
    107       ELSE                    !==  Fix in time  ==!   set everything to the reference one for all 
    108          ! 
     103      !              !==  time varying part of coordinate system  ==! 
     104      ! 
     105      IF( .NOT.ln_linssh ) THEN                 ! time varying : initialize before/now/after variables 
     106         ! 
     107         CALL dom_vvl_init  
     108         ! 
     109      ELSE                                      ! Fix in time : set to the reference one for all 
    109110         !       before        !          now          !       after         ! 
    110111         ;  gdept_b = gdept_0  ;   gdept_n = gdept_0   !        ---          ! depth of grid-points 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90

    r5845 r5866  
    8282            IF(lwp) WRITE(numout,*)'               accelerating the convergence' 
    8383            IF(lwp) WRITE(numout,*)'               dynamics time step = ', rdt/3600., ' hours' 
    84             IF( ln_sco .AND. rdtmin /= rdtmax .AND. lk_vvl )   & 
     84            IF( ln_sco .AND. rdtmin /= rdtmax .AND. .NOT.ln_linssh )   & 
    8585                 & CALL ctl_stop ( ' depth dependent acceleration of convergence not implemented in s-coordinates & 
    8686                 &                   nor in variable volume' ) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r5862 r5866  
    178178      ht_n(:,:) = e3t_n(:,:,1) * tmask(:,:,1)   !!gm  BUG  :  this should be 1/2 * e3w(k=1) .... 
    179179      hu_b(:,:) = e3u_b(:,:,1) * umask(:,:,1) 
    180       hv_b(:,:) = e3u_b(:,:,1) * vmask(:,:,1) 
    181180      hu_n(:,:) = e3u_n(:,:,1) * umask(:,:,1) 
     181      hv_b(:,:) = e3v_b(:,:,1) * vmask(:,:,1) 
    182182      hv_n(:,:) = e3v_n(:,:,1) * vmask(:,:,1) 
    183183      DO jk = 2, jpkm1 
     
    617617       
    618618      ! Vertical scale factor interpolations 
    619       ! ------------------------------------ 
    620       CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
     619      CALL dom_vvl_interpol( e3t_n(:,:,:),  e3w_n(:,:,:), 'W'  ) 
    621620      CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    622621      CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    623       CALL dom_vvl_interpol( e3t_b(:,:,:), e3w_b (:,:,:), 'W'  ) 
     622      CALL dom_vvl_interpol( e3t_b(:,:,:),  e3w_b(:,:,:), 'W'  ) 
    624623      CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
    625624      CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
    626       ! t- and w- points depth 
    627       ! ---------------------- 
    628       ! set the isf depth as it is in the initial step 
     625 
     626      ! t- and w- points depth (set the isf depth as it is in the initial step) 
    629627      gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    630628      gdepw_n(:,:,1) = 0.0_wp 
     
    656654      ! Write outputs 
    657655      ! ============= 
    658       CALL iom_put(     "e3t" , e3t_n  (:,:,:) ) 
    659       CALL iom_put(     "e3u" , e3u_n  (:,:,:) ) 
    660       CALL iom_put(     "e3v" , e3v_n  (:,:,:) ) 
    661       CALL iom_put(     "e3w" , e3w_n  (:,:,:) ) 
    662       CALL iom_put( "tpt_dep" , gde3w_n(:,:,:) ) 
     656      CALL iom_put(     "e3t",   e3t_n(:,:,:) ) 
     657      CALL iom_put(     "e3u",   e3u_n(:,:,:) ) 
     658      CALL iom_put(     "e3v",   e3v_n(:,:,:) ) 
     659      CALL iom_put(     "e3w",   e3w_n(:,:,:) ) 
     660      CALL iom_put( "tpt_dep", gde3w_n(:,:,:) ) 
    663661      IF( iom_use("e3tdef") )   & 
    664          CALL iom_put( "e3tdef"  , ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 ) 
     662         CALL iom_put( "e3tdef", ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100. * tmask(:,:,:) ) ** 2 ) 
    665663 
    666664      ! write restart file 
    667665      ! ================== 
    668       IF( lrst_oce ) CALL dom_vvl_rst( kt, 'WRITE' ) 
    669       ! 
    670       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_sf_swp') 
     666      IF( lrst_oce )   CALL dom_vvl_rst( kt, 'WRITE' ) 
     667      ! 
     668      IF( nn_timing == 1 )   CALL timing_stop('dom_vvl_sf_swp') 
    671669      ! 
    672670   END SUBROUTINE dom_vvl_sf_swp 
     
    691689      !!---------------------------------------------------------------------- 
    692690      ! 
    693       IF( nn_timing == 1 )  CALL timing_start('dom_vvl_interpol') 
     691      IF( nn_timing == 1 )   CALL timing_start('dom_vvl_interpol') 
    694692      ! 
    695693      SELECT CASE ( pout )    !==  type of interpolation  ==! 
     
    765763      END SELECT 
    766764      ! 
    767       IF( nn_timing == 1 )  CALL timing_stop('dom_vvl_interpol') 
     765      IF( nn_timing == 1 )   CALL timing_stop('dom_vvl_interpol') 
    768766      ! 
    769767   END SUBROUTINE dom_vvl_interpol 
     
    970968      ! 
    971969      IF( ioptio /= 1 )   CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 
    972       IF( .NOT. ln_vvl_zstar .AND. nn_isf .NE. 0) CALL ctl_stop( 'Only vvl_zstar has been tested with ice shelf cavity' ) 
     970      IF( .NOT. ln_vvl_zstar .AND. nn_isf /= 0)  CALL ctl_stop( 'Only vvl_zstar has been tested with ice shelf cavity' ) 
    973971      ! 
    974972      IF(lwp) THEN                   ! Print the choice 
     
    984982      ! 
    985983#if defined key_agrif 
    986       IF (.NOT.Agrif_Root()) CALL ctl_stop( 'AGRIF not implemented with non-linear free surface (key_vvl)' ) 
     984      IF(.NOT.Agrif_Root() )   CALL ctl_stop( 'AGRIF not implemented with non-linear free surface' ) 
    987985#endif 
    988986      ! 
     
    991989   !!====================================================================== 
    992990END MODULE domvvl 
    993  
    994  
    995  
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5862 r5866  
    102102      INTEGER ::   ios 
    103103      ! 
    104       NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav 
     104      NAMELIST/namzgr/ ln_zco, ln_zps, ln_sco, ln_isfcav, ln_linssh 
    105105      !!---------------------------------------------------------------------- 
    106106      ! 
     
    120120         WRITE(numout,*) 'dom_zgr : vertical coordinate' 
    121121         WRITE(numout,*) '~~~~~~~' 
    122          WRITE(numout,*) '          Namelist namzgr : set vertical coordinate' 
    123          WRITE(numout,*) '             z-coordinate - full steps      ln_zco    = ', ln_zco 
    124          WRITE(numout,*) '             z-coordinate - partial steps   ln_zps    = ', ln_zps 
    125          WRITE(numout,*) '             s- or hybrid z-s-coordinate    ln_sco    = ', ln_sco 
    126          WRITE(numout,*) '             ice shelf cavities             ln_isfcav = ', ln_isfcav 
     122         WRITE(numout,*) '   Namelist namzgr : set vertical coordinate' 
     123         WRITE(numout,*) '      z-coordinate - full steps      ln_zco    = ', ln_zco 
     124         WRITE(numout,*) '      z-coordinate - partial steps   ln_zps    = ', ln_zps 
     125         WRITE(numout,*) '      s- or hybrid z-s-coordinate    ln_sco    = ', ln_sco 
     126         WRITE(numout,*) '      ice shelf cavities             ln_isfcav = ', ln_isfcav 
     127         WRITE(numout,*) '      linear free surface            ln_linssh = ', ln_linssh 
    127128      ENDIF 
     129 
     130      IF( ln_linssh .AND. lwp) WRITE(numout,*) '   linear free surface: the vertical mesh does not change in time' 
    128131 
    129132      ioptio = 0                       ! Check Vertical coordinate options 
     
    20592062      e3uw_n (:,:,:) = e3uw_0 (:,:,:) 
    20602063      e3vw_n (:,:,:) = e3vw_0 (:,:,:) 
     2064!!gm and obviously in the following, use the _0 arrays until the end of this subroutine 
    20612065!! gm end 
    20622066!! 
     
    21902194      !!---------------------------------------------------------------------- 
    21912195 
    2192       CALL wrk_alloc( jpi,jpj,jpk,  z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
    2193       CALL wrk_alloc( jpi,jpj,jpk,  z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
     2196      CALL wrk_alloc( jpi,jpj,jpk,   z_gsigw3, z_gsigt3, z_gsi3w3                                      ) 
     2197      CALL wrk_alloc( jpi,jpj,jpk,   z_esigt3, z_esigw3, z_esigtu3, z_esigtv3, z_esigtf3, z_esigwu3, z_esigwv3 ) 
    21942198 
    21952199      z_gsigw3  = 0._wp   ;   z_gsigt3  = 0._wp   ;   z_gsi3w3  = 0._wp 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r5845 r5866  
    124124         !    
    125125         ! - ML - sshn could be modified by istate_eel, so that initialization of e3t_b is done here 
    126          IF( lk_vvl ) THEN 
     126         IF( .NOT.ln_linssh ) THEN 
    127127            DO jk = 1, jpk 
    128128               e3t_b(:,:,jk) = e3t_n(:,:,jk) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90

    r5845 r5866  
    119119            zfv_vw(:,:,jpk) = 0.e0 
    120120            !                                           ! Surface value : 
    121             IF( lk_vvl ) THEN                                ! variable volume : flux set to zero 
    122                zfu_uw(:,:, 1 ) = 0.e0     
    123                zfv_vw(:,:, 1 ) = 0.e0 
     121            IF( .NOT.ln_linssh ) THEN                        ! variable volume : flux set to zero 
     122               zfu_uw(:,:, 1 ) = 0._wp     
     123               zfv_vw(:,:, 1 ) = 0._wp 
    124124            ELSE                                             ! constant volume : advection through the surface 
    125125               DO jj = 2, jpjm1 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r5845 r5866  
    208208            zfv_vw(:,:,jpk) = 0.e0 
    209209            !                                           ! Surface value : 
    210             IF( lk_vvl ) THEN                                ! variable volume : flux set to zero 
    211                zfu_uw(:,:, 1 ) = 0.e0     
    212                zfv_vw(:,:, 1 ) = 0.e0 
     210            IF( .NOT.ln_linssh ) THEN                        ! variable volume : flux set to zero 
     211               zfu_uw(:,:, 1 ) = 0._wp 
     212               zfv_vw(:,:, 1 ) = 0._wp 
    213213            ELSE                                             ! constant volume : advection through the surface 
    214214               DO jj = 2, jpjm1 
    215215                  DO ji = fs_2, fs_jpim1 
    216                      zfu_uw(ji,jj, 1 ) = 2.e0 * ( zfw(ji,jj,1) + zfw(ji+1,jj  ,1) ) * un(ji,jj,1) 
    217                      zfv_vw(ji,jj, 1 ) = 2.e0 * ( zfw(ji,jj,1) + zfw(ji  ,jj+1,1) ) * vn(ji,jj,1) 
     216                     zfu_uw(ji,jj, 1 ) = 2._wp * ( zfw(ji,jj,1) + zfw(ji+1,jj  ,1) ) * un(ji,jj,1) 
     217                     zfv_vw(ji,jj, 1 ) = 2._wp * ( zfw(ji,jj,1) + zfw(ji  ,jj+1,1) ) * vn(ji,jj,1) 
    218218                  END DO 
    219219               END DO 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r5864 r5866  
    162162                           & either  ln_hpg_sco or  ln_hpg_prj instead') 
    163163      ! 
    164       IF( lk_vvl .AND. .NOT. (ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) )   & 
    165          &   CALL ctl_stop('dyn_hpg_init : variable volume key_vvl requires:& 
    166                            & the standard jacobian formulation hpg_sco or & 
    167                            & the pressure jacobian formulation hpg_prj') 
     164      IF( .NOT.ln_linssh .AND. .NOT. (ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) )       & 
     165         &   CALL ctl_stop('dyn_hpg_init : non-linear free surface requires either ', & 
     166         &                 '   the standard jacobian formulation hpg_sco    or '    , & 
     167         &                 '   the pressure jacobian formulation hpg_prj'            ) 
    168168 
    169169      IF(       ln_hpg_isf .AND. .NOT. ln_isfcav )   & 
     
    393393      zcoef0 = - grav * 0.5_wp 
    394394      ! To use density and not density anomaly 
    395       IF ( lk_vvl ) THEN   ;     znad = 1._wp          ! Variable volume 
    396       ELSE                 ;     znad = 0._wp         ! Fixed volume 
     395      IF ( .NOT.ln_linssh ) THEN   ;     znad = 1._wp          ! Variable volume 
     396      ELSE                         ;     znad = 0._wp         ! Fixed volume 
    397397      ENDIF 
    398398 
     
    484484      zcoef0 = - grav * 0.5_wp 
    485485      ! To use density and not density anomaly 
    486 !      IF ( lk_vvl ) THEN   ;     znad = 1._wp          ! Variable volume 
    487 !      ELSE                 ;     znad = 0._wp         ! Fixed volume 
     486!      IF ( .NOT.ln_linssh ) THEN   ;     znad = 1._wp          ! Variable volume 
     487!      ELSE                         ;     znad = 0._wp         ! Fixed volume 
    488488!      ENDIF 
    489489      znad=1._wp 
     
    970970      zcoef0 = - grav 
    971971      znad = 0.0_wp 
    972       IF( lk_vvl ) znad = 1._wp 
     972      IF( .NOT.ln_linssh )  znad = 1._wp 
    973973 
    974974      ! Clean 3-D work arrays 
     
    11451145 
    11461146               zdpdx1 = zcoef0 * r1_e1u(ji,jj) * ( zhpi(ji+1,jj,jk) - zhpi(ji,jj,jk) ) 
    1147                IF( lk_vvl ) THEN 
     1147               IF( .NOT.ln_linssh ) THEN 
    11481148                 zdpdx2 = zcoef0 * r1_e1u(ji,jj) * & 
    11491149                    &    ( REAL(jis-jid, wp) * (zpwes + zpwed) + (sshn(ji+1,jj)-sshn(ji,jj)) ) 
     
    12021202 
    12031203               zdpdy1 = zcoef0 * r1_e2v(ji,jj) * ( zhpi(ji,jj+1,jk) - zhpi(ji,jj,jk) ) 
    1204                IF( lk_vvl ) THEN 
     1204               IF( .NOT.ln_linssh ) THEN 
    12051205                   zdpdy2 = zcoef0 * r1_e2v(ji,jj) * & 
    12061206                           ( REAL(jjs-jjd, wp) * (zpnss + zpnsd) + (sshn(ji,jj+1)-sshn(ji,jj)) ) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90

    r5845 r5866  
    8686            DO ji = fs_2, jpi   ! vector opt. 
    8787               !                                      ! ahm * e3 * curl  (computed from 1 to jpim1/jpjm1) 
    88                zcur(ji-1,jj-1) = ahmf(ji-1,jj-1,jk) * e3f_n(ji-1,jj-1,jk) * r1_e1e2f(ji-1,jj-1)      & 
    89                   &     * (  e2v(ji  ,jj-1) * pvb(ji  ,jj-1,jk) - e2v(ji-1,jj-1) * pvb(ji-1,jj-1,jk)                & 
    90                   &        - e1u(ji-1,jj  ) * pub(ji-1,jj  ,jk) + e1u(ji-1,jj-1) * pub(ji-1,jj-1,jk)  ) * fmask(ji-1,jj-1,jk) 
     88!!gm open question here : fse3f  at before or now ?    probably now... 
     89!!gm note that ahmf has already been multiplied by fmask 
     90               zcur(ji-1,jj-1) = ahmf(ji-1,jj-1,jk) * e3f_n(ji-1,jj-1,jk) * r1_e1e2f(ji-1,jj-1)       & 
     91                  &     * (  e2v(ji  ,jj-1) * pvb(ji  ,jj-1,jk) - e2v(ji-1,jj-1) * pvb(ji-1,jj-1,jk)  & 
     92                  &        - e1u(ji-1,jj  ) * pub(ji-1,jj  ,jk) + e1u(ji-1,jj-1) * pub(ji-1,jj-1,jk)  ) 
    9193               !                                      ! ahm * div        (computed from 2 to jpi/jpj) 
    92                zdiv(ji,jj)     = ahmt(ji,jj,jk) / ( e1e2t(ji,jj) * e3t_n(ji,jj,jk) )                     * tmask(ji,jj,jk)    & 
    93                   &     * (  e2u(ji,jj)*e3u_n(ji,jj,jk) * pub(ji,jj,jk) - e2u(ji-1,jj)*e3u_n(ji-1,jj,jk) * pub(ji-1,jj,jk)    & 
    94                   &        + e1v(ji,jj)*e3v_n(ji,jj,jk) * pvb(ji,jj,jk) - e1v(ji,jj-1)*e3v_n(ji,jj-1,jk) * pvb(ji,jj-1,jk)  ) 
     94!!gm note that ahmt has already been multiplied by tmask 
     95               zdiv(ji,jj)     = ahmt(ji,jj,jk) * r1_e1e2t(ji,jj) / e3t_b(ji,jj,jk)                                         & 
     96                  &     * (  e2u(ji,jj)*e3u_b(ji,jj,jk) * pub(ji,jj,jk) - e2u(ji-1,jj)*e3u_b(ji-1,jj,jk) * pub(ji-1,jj,jk)  & 
     97                  &        + e1v(ji,jj)*e3v_b(ji,jj,jk) * pvb(ji,jj,jk) - e1v(ji,jj-1)*e3v_b(ji,jj-1,jk) * pvb(ji,jj-1,jk)  ) 
    9598            END DO   
    9699         END DO   
     
    98101         DO jj = 2, jpjm1                             ! - curl( curl) + grad( div ) 
    99102            DO ji = fs_2, fs_jpim1   ! vector opt. 
    100                pua(ji,jj,jk) = pua(ji,jj,jk) + zsign * (                                                   & 
    101                   &              - ( zcur(ji  ,jj) - zcur(ji,jj-1) ) /  ( e2u(ji,jj) * e3u_n(ji,jj,jk) )   & 
     103               pua(ji,jj,jk) = pua(ji,jj,jk) + zsign * (                                                 & 
     104                  &              - ( zcur(ji  ,jj) - zcur(ji,jj-1) ) * r1_e2u(ji,jj) / e3u_n(ji,jj,jk)   & 
    102105                  &              + ( zdiv(ji+1,jj) - zdiv(ji,jj  ) ) * r1_e1u(ji,jj)                     ) 
    103106                  ! 
    104                pva(ji,jj,jk) = pva(ji,jj,jk) + zsign * (                                                   & 
    105                   &                ( zcur(ji,jj  ) - zcur(ji-1,jj) ) /  ( e1v(ji,jj) * e3v_n(ji,jj,jk) )   & 
     107               pva(ji,jj,jk) = pva(ji,jj,jk) + zsign * (                                                 & 
     108                  &                ( zcur(ji,jj  ) - zcur(ji-1,jj) ) * r1_e1v(ji,jj) / e3v_n(ji,jj,jk)   & 
    106109                  &              + ( zdiv(ji,jj+1) - zdiv(ji  ,jj) ) * r1_e2v(ji,jj)                     ) 
    107110            END DO 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r5845 r5866  
    7373      !! ** Method  : * After velocity is compute using a leap-frog scheme: 
    7474      !!                       (ua,va) = (ub,vb) + 2 rdt (ua,va) 
    75       !!             Note that with flux form advection and variable volume layer 
    76       !!             (lk_vvl=T), the leap-frog is applied on thickness weighted 
    77       !!             velocity. 
     75      !!             Note that with flux form advection and non linear free surface, 
     76      !!             the leap-frog is applied on thickness weighted velocity. 
    7877      !!             Note also that in filtered free surface (lk_dynspg_flt=T), 
    7978      !!             the time stepping has already been done in dynspg module 
     
    8887      !!                (ub,vb) = (un,vn) + atfp [ (ub,vb) + (ua,va) - 2 (un,vn) ] 
    8988      !!                (un,vn) = (ua,va). 
    90       !!             Note that with flux form advection and variable volume layer 
    91       !!             (lk_vvl=T), the time filter is applied on thickness weighted 
    92       !!             velocity. 
     89      !!             Note that with flux form advection and non linear free surface, 
     90      !!             the time filter is applied on thickness weighted velocity. 
    9391      !! 
    9492      !! ** Action :   ub,vb   filtered before horizontal velocity of next time-step 
     
    137135      IF( neuler == 0 .AND. kt == nit000 )  z2dt = rdt 
    138136      ! 
    139       IF( ln_dynadv_vec .OR. .NOT. lk_vvl ) THEN      ! applied on velocity 
     137      IF( ln_dynadv_vec .OR. ln_linssh ) THEN         !==  applied on velocity  ==! 
    140138         DO jk = 1, jpkm1 
    141139            ua(:,:,jk) = ( ub(:,:,jk) + z2dt * ua(:,:,jk) ) * umask(:,:,jk) 
    142140            va(:,:,jk) = ( vb(:,:,jk) + z2dt * va(:,:,jk) ) * vmask(:,:,jk) 
    143141         END DO 
    144       ELSE                                            ! applied on thickness weighted velocity 
     142      ELSE                                            !==  applied on thickness weighted velocity  ==! 
    145143         DO jk = 1, jpkm1 
    146144            ua(:,:,jk) = (          ub(:,:,jk) * e3u_b(:,:,jk)    & 
     
    225223            vn(:,:,jk) = va(:,:,jk) 
    226224         END DO 
    227          IF (lk_vvl) THEN 
     225         IF(.NOT.ln_linssh ) THEN 
    228226            DO jk = 1, jpkm1 
    229227               e3t_b(:,:,jk) = e3t_n(:,:,jk) 
    230228               e3u_b(:,:,jk) = e3u_n(:,:,jk) 
    231229               e3v_b(:,:,jk) = e3v_n(:,:,jk) 
    232             ENDDO 
     230            END DO 
    233231         ENDIF 
    234232      ELSE                                             !* Leap-Frog : Asselin filter and swap 
    235233         !                                ! =============! 
    236          IF( .NOT. lk_vvl ) THEN          ! Fixed volume ! 
     234         IF( ln_linssh ) THEN             ! Fixed volume ! 
    237235            !                             ! =============! 
    238236            DO jk = 1, jpkm1                               
     
    354352      ! 
    355353      ! 
    356       IF (lk_vvl) THEN 
     354      IF(.NOT.ln_linssh ) THEN 
    357355         hu_b(:,:) = e3u_b(:,:,1) * umask(:,:,1) 
    358356         hv_b(:,:) = e3v_b(:,:,1) * vmask(:,:,1) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90

    r5845 r5866  
    7373         spgu(:,:) = 0._wp   ;   spgv(:,:) = 0._wp 
    7474         ! 
    75          IF( lk_vvl .AND. lwp ) WRITE(numout,*) '              lk_vvl=T : spg is included in dynhpg' 
     75         IF( .NOT.ln_linssh .AND. lwp ) WRITE(numout,*) '      non linear free surface: spg is included in dynhpg' 
    7676      ENDIF 
    7777 
    78       IF( .NOT. lk_vvl ) THEN          !* fixed volume : add the surface pressure gradient trend 
     78      IF( ln_linssh ) THEN          !* linear free surface : add the surface pressure gradient trend 
    7979         ! 
    8080         DO jj = 2, jpjm1                    ! now surface pressure gradient 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90

    r5845 r5866  
    138138      ! Evaluate the masked next velocity (effect of the additional force not included) 
    139139      ! ---------------------------------   
    140       IF( lk_vvl ) THEN          ! variable volume  (surface pressure gradient already included in dyn_hpg) 
     140      IF( .NOT.ln_linssh ) THEN     ! variable volume  (surface pressure gradient already included in dyn_hpg) 
    141141         ! 
    142142         IF( ln_dynadv_vec ) THEN      ! vector form : applied on velocity 
     
    230230      CALL lbc_lnk( spgv, 'V', -1. ) 
    231231 
    232       IF( lk_vvl ) CALL sol_mat( kt )      ! build the matrix at kt (vvl case only) 
     232      IF( .NOT.ln_linssh )   CALL sol_mat( kt )      ! build the matrix at kt (non-linear free surface only) 
    233233 
    234234      ! Right hand side of the elliptic equation and first guess 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5845 r5866  
    212212      ! and update depths at T-F points (ht and zhf resp.) at each barotropic time step 
    213213      ! 
    214       IF ( kt == nit000 .OR. lk_vvl ) THEN 
     214      IF ( kt == nit000 .OR. .NOT.ln_linssh ) THEN 
    215215         IF ( ln_dynvor_een ) THEN              !==  EEN scheme  ==! 
    216216            SELECT CASE( nn_een_e3f )              !* ff/e3 at F-point 
     
    366366      !                                   !* Right-Hand-Side of the barotropic momentum equation 
    367367      !                                   ! ---------------------------------------------------- 
    368       IF( lk_vvl ) THEN                         ! Variable volume : remove surface pressure gradient 
     368      IF( .NOT.ln_linssh ) THEN                 ! Variable volume : remove surface pressure gradient 
    369369         DO jj = 2, jpjm1  
    370370            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    530530         va_e(:,:) = za1 * zvn_e(:,:) + za2 * vb_e(:,:) + za3 * vbb_e(:,:) 
    531531 
    532          IF( lk_vvl ) THEN                                !* Update ocean depth (variable volume case only) 
     532         IF( .NOT.ln_linssh ) THEN                        !* Update ocean depth (variable volume case only) 
    533533            !                                             !  ------------------ 
    534534            ! Extrapolate Sea Level at step jit+0.5: 
     
    562562         ! 
    563563#if defined key_agrif 
    564          ! Set fluxes during predictor step to ensure  
    565          ! volume conservation 
    566          IF( (.NOT.Agrif_Root()).AND.ln_bt_fw ) THEN 
     564         ! Set fluxes during predictor step to ensure volume conservation 
     565         IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) THEN 
    567566            IF((nbondi == -1).OR.(nbondi == 2)) THEN 
    568567               DO jj=1,jpj 
     
    604603 
    605604#if defined key_bdy 
    606          ! Duplicate sea level across open boundaries (this is only cosmetic if lk_vvl=.false.) 
    607          IF (lk_bdy) CALL bdy_ssh( ssha_e ) 
     605         ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T) 
     606         IF( lk_bdy )  CALL bdy_ssh( ssha_e ) 
    608607#endif 
    609608#if defined key_agrif 
    610          IF( .NOT.Agrif_Root() ) CALL agrif_ssh_ts( jn ) 
     609         IF( .NOT.Agrif_Root() )   CALL agrif_ssh_ts( jn ) 
    611610#endif 
    612611         !   
    613612         ! Sea Surface Height at u-,v-points (vvl case only) 
    614          IF ( lk_vvl ) THEN                                 
     613         IF( .NOT.ln_linssh ) THEN                                 
    615614            DO jj = 2, jpjm1 
    616615               DO ji = 2, jpim1      ! NO Vector Opt. 
     
    644643           za3=0.013_wp                     ! za3 = eps 
    645644         ENDIF 
    646  
     645         ! 
    647646         zsshp2_e(:,:) = za0 *  ssha_e(:,:) + za1 *  sshn_e (:,:) & 
    648647          &            + za2 *  sshb_e(:,:) + za3 *  sshbb_e(:,:) 
    649  
    650648         ! 
    651649         ! Compute associated depths at U and V points: 
    652          IF ( lk_vvl.AND.(.NOT.ln_dynadv_vec) ) THEN       
     650         IF( ln_dynadv_vec .OR. ln_linssh ) THEN   !* Vector form 
    653651            !                                         
    654652            DO jj = 2, jpjm1                             
     
    667665         ! 
    668666         ! Add Coriolis trend: 
    669          ! zwz array below or triads normally depend on sea level with key_vvl and should be updated 
     667         ! zwz array below or triads normally depend on sea level with ln_linssh=F and should be updated 
    670668         ! at each time step. We however keep them constant here for optimization. 
    671669         ! Recall that zwx and zwy arrays hold fluxes at this stage: 
     
    741739         ! 
    742740         ! Set next velocities: 
    743          IF( ln_dynadv_vec .OR. (.NOT. lk_vvl) ) THEN    ! Vector form 
     741         IF( ln_dynadv_vec .OR. ln_linssh ) THEN   !* Vector form 
    744742            DO jj = 2, jpjm1 
    745743               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    758756            END DO 
    759757 
    760          ELSE                 ! Flux form 
     758         ELSE                                      !* Flux form 
    761759            DO jj = 2, jpjm1 
    762760               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    780778         ENDIF 
    781779         ! 
    782          IF( lk_vvl ) THEN                             !* Update ocean depth (variable volume case only) 
     780         IF( .NOT.ln_linssh ) THEN                     !* Update ocean depth (variable volume case only) 
    783781            !                                          !  ----------------------------------------------         
    784782            hu_e (:,:) = hu_0(:,:) + zsshu_a(:,:) 
     
    788786            ! 
    789787         ENDIF 
    790          !                                                 !* domain lateral boundary 
    791          !                                                 !  ----------------------- 
     788         !                                             !* domain lateral boundary 
     789         !                                             !  ----------------------- 
    792790         ! 
    793791         CALL lbc_lnk_multi( ua_e, 'U', -1._wp, va_e , 'V', -1._wp ) 
    794  
     792         ! 
    795793#if defined key_bdy   
    796                                                            ! open boundaries 
     794         !                                                 ! open boundaries 
    797795         IF( lk_bdy ) CALL bdy_dyn2d( jn, ua_e, va_e, zun_e, zvn_e, hur_e, hvr_e, ssha_e ) 
    798796#endif 
     
    817815         !                                             !  ---------------------- 
    818816         za1 = wgtbtp1(jn)                                     
    819          IF (( ln_dynadv_vec ).OR. (.NOT. lk_vvl)) THEN    ! Sum velocities 
     817         IF( ln_dynadv_vec .OR. ln_linssh ) THEN    ! Sum velocities 
    820818            ua_b  (:,:) = ua_b  (:,:) + za1 * ua_e  (:,:)  
    821819            va_b  (:,:) = va_b  (:,:) + za1 * va_e  (:,:)  
     
    835833      ! At this stage ssha holds a time averaged value 
    836834      !                                                ! Sea Surface Height at u-,v- and f-points 
    837       IF( lk_vvl ) THEN                                ! (required only in key_vvl case) 
     835      IF( .NOT.ln_linssh ) THEN                        ! (required only in non-linear free surface case) 
    838836         DO jj = 1, jpjm1 
    839837            DO ji = 1, jpim1      ! NO Vector Opt. 
     
    864862      ! 
    865863      ! Update barotropic trend: 
    866       IF( ln_dynadv_vec .OR. .NOT.lk_vvl ) THEN 
     864      IF( ln_dynadv_vec .OR. ln_linssh ) THEN 
    867865         DO jk=1,jpkm1 
    868866            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
     
    10791077      CALL wrk_alloc( jpi, jpj, zcu ) 
    10801078      ! 
    1081       IF (lk_vvl) THEN  
     1079      IF( .NOT.ln_linssh ) THEN  
    10821080         DO jj = 1, jpj 
    10831081            DO ji =1, jpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r5845 r5866  
    3333   PUBLIC   dyn_zdf_imp   ! called by step.F90 
    3434 
    35    REAL(wp) ::  r_vvl     ! variable volume indicator, =1 if lk_vvl=T, =0 otherwise  
     35   REAL(wp) ::  r_vvl     ! variable volume indicator, =1 if ln_linssh=F, =0 otherwise  
    3636 
    3737   !! * Substitutions 
     
    8181         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
    8282         ! 
    83          IF( lk_vvl ) THEN   ;    r_vvl = 1._wp       ! Variable volume indicator 
    84          ELSE                ;    r_vvl = 0._wp        
     83         IF( .NOT.ln_linssh ) THEN   ;    r_vvl = 1._wp       ! Variable volume indicator 
     84         ELSE                        ;    r_vvl = 0._wp        
    8585         ENDIF 
    8686      ENDIF 
     
    119119 
    120120#if defined key_dynspg_ts 
    121       IF( ln_dynadv_vec .OR. .NOT. lk_vvl ) THEN      ! applied on velocity 
     121      IF( ln_dynadv_vec .OR. ln_linssh ) THEN      ! applied on velocity 
    122122         DO jk = 1, jpkm1 
    123123            ua(:,:,jk) = ( ub(:,:,jk) + p2dt * ua(:,:,jk) ) * umask(:,:,jk) 
    124124            va(:,:,jk) = ( vb(:,:,jk) + p2dt * va(:,:,jk) ) * vmask(:,:,jk) 
    125125         END DO 
    126       ELSE                                            ! applied on thickness weighted velocity 
     126      ELSE                                         ! applied on thickness weighted velocity 
    127127         DO jk = 1, jpkm1 
    128             ua(:,:,jk) = (          ub(:,:,jk) * e3u_b(:,:,jk)      & 
    129                &           + p2dt * ua(:,:,jk) * e3u_n(:,:,jk)  )   & 
    130                &                               / e3u_a(:,:,jk) * umask(:,:,jk) 
    131             va(:,:,jk) = (          vb(:,:,jk) * e3v_b(:,:,jk)      & 
    132                &           + p2dt * va(:,:,jk) * e3v_n(:,:,jk)  )   & 
    133                &                               / e3v_a(:,:,jk) * vmask(:,:,jk) 
     128            ua(:,:,jk) = (          ub(:,:,jk) * e3u_b(:,:,jk)    & 
     129               &           + p2dt * ua(:,:,jk) * e3u_n(:,:,jk)  ) / e3u_a(:,:,jk) * umask(:,:,jk) 
     130            va(:,:,jk) = (          vb(:,:,jk) * e3v_b(:,:,jk)    & 
     131               &           + p2dt * va(:,:,jk) * e3v_n(:,:,jk)  ) / e3v_a(:,:,jk) * vmask(:,:,jk) 
    134132         END DO 
    135133      ENDIF 
     
    178176               ze3ua =  ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl   * e3u_a(ji,jj,jk)   ! after scale factor at T-point 
    179177               zcoef = - p2dt / ze3ua       
    180                zzwi          = zcoef * avmu  (ji,jj,jk  ) / e3uw_n(ji,jj,jk  ) 
     178               zzwi  = zcoef * avmu(ji,jj,jk  ) / e3uw_n(ji,jj,jk  ) 
     179               zzws  = zcoef * avmu(ji,jj,jk+1) / e3uw_n(ji,jj,jk+1)  
    181180               zwi(ji,jj,jk) = zzwi  * wumask(ji,jj,jk  ) 
    182                zzws          = zcoef * avmu  (ji,jj,jk+1) / e3uw_n(ji,jj,jk+1)  
    183181               zws(ji,jj,jk) = zzws  * wumask(ji,jj,jk+1) 
    184182               zwd(ji,jj,jk) = 1._wp - zzwi - zzws 
     
    223221               &                                      / ( ze3ua * rau0 ) * umask(ji,jj,1)  
    224222#else 
    225             ua(ji,jj,1) = ub(ji,jj,1) & 
    226                &                   + p2dt *(ua(ji,jj,1) +  0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) )   & 
    227                &                                      / ( e3u_n(ji,jj,1) * rau0    ) * umask(ji,jj,1) )  
     223            ua(ji,jj,1) = ub(ji,jj,1)  & 
     224               &        + p2dt *( ua(ji,jj,1) +  0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) )   & 
     225               &                                        / ( e3u_n(ji,jj,1) * rau0 ) * umask(ji,jj,1) )  
    228226#endif 
    229227         END DO 
     
    322320               &                                      / ( ze3va * rau0 )  
    323321#else 
    324             va(ji,jj,1) = vb(ji,jj,1) & 
    325                &                   + p2dt *(va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) )   & 
    326                &                                                       / ( e3v_n(ji,jj,1) * rau0     )  ) 
     322            va(ji,jj,1) = vb(ji,jj,1)   & 
     323               &        + p2dt *( va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) )   & 
     324               &                                       / ( e3v_n(ji,jj,1) * rau0 )         ) 
    327325#endif 
    328326         END DO 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r5845 r5866  
    259259      ELSE                                         !** Leap-Frog time-stepping: Asselin filter + swap 
    260260         sshb(:,:) = sshn(:,:) + atfp * ( sshb(:,:) - 2 * sshn(:,:) + ssha(:,:) )     ! before <-- now filtered 
    261          IF( lk_vvl ) sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:)    - emp(:,:)    & 
     261         IF( .NOT.ln_linssh )  sshb(:,:) = sshb(:,:) - atfp * rdt / rau0 * ( emp_b(:,:)    - emp(:,:)    & 
    262262                                &                                 - rnf_b(:,:)    + rnf(:,:)    & 
    263263                                &                                 + fwfisf_b(:,:) - fwfisf(:,:) ) * ssmask(:,:) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/IOM/restart.F90

    r5845 r5866  
    245245         sshb (:,:)     = sshn (:,:) 
    246246         ! 
    247          IF( lk_vvl ) THEN 
     247         IF( .NOT.ln_linssh ) THEN 
    248248            DO jk = 1, jpk 
    249249               e3t_b(:,:,jk) = e3t_n(:,:,jk) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r5845 r5866  
    766766 
    767767         !!gm I no longer understand this..... 
    768 !!gm         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (lk_vvl .AND. ln_rstart) ) THEN 
     768!!gm         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (.NOT.ln_linssh .AND. ln_rstart) ) THEN 
    769769!            IF(lwp)   WRITE(numout,*) '          Horizontal mixing in s-coordinate: slope = slope of s-surfaces' 
    770770! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r5845 r5866  
    534534         IF( .NOT. ln_cpl ) srcv(:)%nsgn    = 1.        ! force default definition in case of opa <-> sas coupling 
    535535         srcv( (/jpr_toce, jpr_soce, jpr_ssh, jpr_fraqsr, jpr_ocx1, jpr_ocy1/) )%laction = .TRUE. 
    536          srcv( jpr_e3t1st )%laction = lk_vvl 
     536         srcv( jpr_e3t1st )%laction = .NOT.ln_linssh 
    537537         srcv(jpr_ocx1)%clgrid = 'U'        ! oce components given at U-point 
    538538         srcv(jpr_ocy1)%clgrid = 'V'        !           and           V-point 
     
    700700         ssnd(:)%laction = .FALSE.   ! force default definition in case of opa <-> sas coupling 
    701701         ssnd( (/jps_toce, jps_soce, jps_ssh, jps_fraqsr, jps_ocx1, jps_ocy1/) )%laction = .TRUE. 
    702          ssnd( jps_e3t1st )%laction = lk_vvl 
     702         ssnd( jps_e3t1st )%laction = .NOT.ln_linssh 
    703703         ! vector definition: not used but cleaner... 
    704704         ssnd(jps_ocx1)%clgrid  = 'U'        ! oce components given at U-point 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r5845 r5866  
    240240         snwice_mass_b(:,:) = 0.0_wp         ! no mass exchanges 
    241241      ENDIF 
    242       IF( .NOT. ln_rstart ) THEN 
     242      IF( .NOT.ln_rstart ) THEN 
    243243         IF( nn_ice_embd == 2 ) THEN            ! full embedment (case 2) deplete the initial ssh below sea-ice area 
    244244            sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
    245245            sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
    246 #if defined key_vvl             
    247 !!gm key_vvl necessary? clem: yes for compilation purpose 
    248 !!gm same remark as in limsbc 
    249             DO jk = 1,jpkm1                     ! adjust initial vertical scale factors 
    250                e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    251                e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
    252             ENDDO 
    253             e3t_a(:,:,:) = e3t_b(:,:,:) 
    254             ! Reconstruction of all vertical scale factors at now and before time 
    255             ! steps 
    256             ! ============================================================================= 
    257             ! Horizontal scale factor interpolations 
    258             ! -------------------------------------- 
    259             CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
    260             CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
    261             CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
    262             CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
    263             CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
    264             ! Vertical scale factor interpolations 
    265             ! ------------------------------------ 
    266             CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
    267             CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    268             CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    269             CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
    270             CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
    271             ! t- and w- points depth 
    272             ! ---------------------- 
    273             gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    274             gdepw_n(:,:,1) = 0.0_wp 
    275             gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
    276             DO jk = 2, jpk 
    277                gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
    278                gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
    279                gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
    280             END DO 
    281 #endif 
     246 
     247!!gm This should be put elsewhere....   (same remark for limsbc) 
     248!!gm especially here it is assumed zstar coordinate, but it can be ztilde.... 
     249            IF( .NOT.ln_linssh ) THEN 
     250               ! 
     251               DO jk = 1,jpkm1                     ! adjust initial vertical scale factors 
     252                  e3t_n(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshn(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     253                  e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 
     254               ENDDO 
     255               e3t_a(:,:,:) = e3t_b(:,:,:) 
     256               ! Reconstruction of all vertical scale factors at now and before time-steps 
     257               ! ============================================================================= 
     258               ! Horizontal scale factor interpolations 
     259               ! -------------------------------------- 
     260               CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
     261               CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
     262               CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
     263               CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
     264               CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
     265               ! Vertical scale factor interpolations 
     266               ! ------------------------------------ 
     267               CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
     268               CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
     269               CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
     270               CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
     271               CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
     272               ! t- and w- points depth 
     273               ! ---------------------- 
     274               gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
     275               gdepw_n(:,:,1) = 0.0_wp 
     276               gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
     277               DO jk = 2, jpk 
     278                  gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk) 
     279                  gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
     280                  gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn   (:,:) 
     281               END DO 
     282            ENDIF 
    282283         ENDIF 
    283284      ENDIF 
    284   
     285      ! 
    285286      CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 ) 
    286287      ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90

    r5845 r5866  
    780780      zfact   = 0.5_wp 
    781781      ! 
    782       IF (lk_vvl) THEN     ! need to re compute level distribution of isf fresh water 
     782      IF(.NOT.ln_linssh ) THEN     ! need to re compute level distribution of isf fresh water 
    783783         DO jj = 1,jpj 
    784784            DO ji = 1,jpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r5845 r5866  
    209209      ! 
    210210      IF( ln_rnf_depth .OR. ln_rnf_depth_ini ) THEN      !==   runoff distributed over several levels   ==! 
    211          IF( lk_vvl ) THEN             ! variable volume case 
     211         IF( .NOT.ln_linssh ) THEN     ! variable volume case 
    212212            DO jj = 1, jpj                   ! update the depth over which runoffs are distributed 
    213213               DO ji = 1, jpi 
     
    232232         ENDIF 
    233233      ELSE                       !==   runoff put only at the surface   ==! 
    234          IF( lk_vvl ) THEN              ! variable volume case 
     234         IF( .NOT.ln_linssh ) THEN              ! variable volume case 
    235235            h_rnf(:,:) = e3t_n(:,:,1)   ! recalculate h_rnf to be depth of top box 
    236236         ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r5845 r5866  
    7878         ENDIF 
    7979         ! 
    80          IF( lk_vvl )   e3t_m(:,:) = e3t_n(:,:,1) 
     80         IF( .NOT.ln_linssh )   e3t_m(:,:) = e3t_n(:,:,1) 
    8181         ! 
    8282         frq_m(:,:) = fraqsr_1lev(:,:) 
     
    100100            ENDIF 
    101101            ! 
    102             IF( lk_vvl )   e3t_m(:,:) = zcoef * e3t_n(:,:,1) 
     102            IF( .NOT.ln_linssh )   e3t_m(:,:) = zcoef * e3t_n(:,:,1) 
    103103            ! 
    104104            frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 
     
    106106         ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   ! 
    107107            !                                             ! ---------------------------------------- ! 
    108             ssu_m(:,:) = 0.e0      ! reset to zero ocean mean sbc fields 
    109             ssv_m(:,:) = 0.e0 
    110             sst_m(:,:) = 0.e0 
    111             sss_m(:,:) = 0.e0 
    112             ssh_m(:,:) = 0.e0 
    113             IF( lk_vvl )   e3t_m(:,:) = 0.e0 
    114             frq_m(:,:) = 0.e0 
     108            ssu_m(:,:) = 0._wp     ! reset to zero ocean mean sbc fields 
     109            ssv_m(:,:) = 0._wp 
     110            sst_m(:,:) = 0._wp 
     111            sss_m(:,:) = 0._wp 
     112            ssh_m(:,:) = 0._wp 
     113            IF( .NOT.ln_linssh )   e3t_m(:,:) = 0._wp 
     114            frq_m(:,:) = 0._wp 
    115115         ENDIF 
    116116         !                                                ! ---------------------------------------- ! 
     
    128128         ENDIF 
    129129         ! 
    130          IF( lk_vvl )   e3t_m(:,:) = e3t_m(:,:) + e3t_n(:,:,1) 
     130         IF( .NOT.ln_linssh )   e3t_m(:,:) = e3t_m(:,:) + e3t_n(:,:,1) 
    131131         ! 
    132132         frq_m(:,:) =   frq_m(:,:) + fraqsr_1lev(:,:) 
     
    141141            ssv_m(:,:) = ssv_m(:,:) * zcoef           ! 
    142142            ssh_m(:,:) = ssh_m(:,:) * zcoef           ! mean SSH             [m] 
    143             IF( lk_vvl )   e3t_m(:,:) = e3t_m(:,:) * zcoef   ! mean vertical scale factor [m] 
     143            IF( .NOT.ln_linssh )   e3t_m(:,:) = e3t_m(:,:) * zcoef   ! mean vertical scale factor [m] 
    144144            frq_m(:,:) = frq_m(:,:) * zcoef   ! mean fraction of solar net radiation absorbed in the 1st T level [-] 
    145145            ! 
     
    159159            CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m  ) 
    160160            CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  ) 
    161             IF( lk_vvl )   CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m  ) 
     161            IF( .NOT.ln_linssh )   CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m  ) 
    162162            CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m  ) 
    163163            ! 
     
    172172         CALL iom_put( 'sss_m', sss_m ) 
    173173         CALL iom_put( 'ssh_m', ssh_m ) 
    174          IF( lk_vvl )   CALL iom_put( 'e3t_m', e3t_m ) 
     174         IF( .NOT.ln_linssh )   CALL iom_put( 'e3t_m', e3t_m ) 
    175175         CALL iom_put( 'frq_m', frq_m ) 
    176176      ENDIF 
     
    209209            CALL iom_get( numror, jpdom_autoglo, 'sss_m'  , sss_m  )   !   "         "    salinity    (T-point) 
    210210            CALL iom_get( numror, jpdom_autoglo, 'ssh_m'  , ssh_m  )   !   "         "    height      (T-point) 
    211             IF( lk_vvl ) CALL iom_get( numror, jpdom_autoglo, 'e3t_m', e3t_m ) 
     211            IF( .NOT.ln_linssh )  CALL iom_get( numror, jpdom_autoglo, 'e3t_m', e3t_m ) 
    212212            ! fraction of solar net radiation absorbed in 1st T level 
    213213            IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 
     
    226226               sss_m(:,:) = zcoef * sss_m(:,:) 
    227227               ssh_m(:,:) = zcoef * ssh_m(:,:) 
    228                IF( lk_vvl )   e3t_m(:,:) = zcoef * e3t_m(:,:) 
     228               IF( .NOT.ln_linssh )   e3t_m(:,:) = zcoef * e3t_m(:,:) 
    229229               frq_m(:,:) = zcoef * frq_m(:,:) 
    230230            ELSE 
     
    244244         sss_m(:,:) = tsn(:,:,1,jp_sal) 
    245245         ssh_m(:,:) = sshn(:,:) 
    246          IF( lk_vvl )   e3t_m(:,:) = e3t_n(:,:,1) 
     246         IF( .NOT.ln_linssh )   e3t_m(:,:) = e3t_n(:,:,1) 
    247247         frq_m(:,:) = 1._wp 
    248248         ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r5845 r5866  
    228228            CALL ctl_stop( 'tra_adv_init: force 2nd order FCT scheme, 4th order does not exist with sub-timestepping' ) 
    229229         ENDIF 
    230          IF( lk_vvl ) THEN 
     230         IF( .NOT.ln_linssh ) THEN 
    231231            CALL ctl_stop( 'tra_adv_init: vertical sub-timestepping not allow in non-linear free surface' ) 
    232232         ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen.F90

    r5845 r5866  
    9090      ! 
    9191      !                          ! surface & bottom values  
    92       IF( lk_vvl )   zwz(:,:, 1 ) = 0._wp             ! set to zero one for all 
    93                      zwz(:,:,jpk) = 0._wp             ! except at the surface in linear free surface 
     92      IF( .NOT.ln_linssh )   zwz(:,:, 1 ) = 0._wp             ! set to zero one for all 
     93                             zwz(:,:,jpk) = 0._wp             ! except at the surface in linear free surface 
    9494      ! 
    9595      DO jn = 1, kjpt            !==  loop over the tracers  ==! 
     
    164164         END SELECT 
    165165         ! 
    166          IF(.NOT.lk_vvl ) THEN               !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
     166         IF( ln_linssh ) THEN                !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
    167167            IF( ln_isfcav ) THEN                  ! ice-shelf cavities (top of the ocean) 
    168168               DO jj = 1, jpj 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90

    r5845 r5866  
    102102      ! 
    103103      !                                         ! surface & bottom value : flux set to zero one for all 
    104       IF( lk_vvl )   zwz(:,:, 1 ) = 0._wp                ! except at the surface in linear free surface case 
     104      IF( .NOT.ln_linssh )   zwz(:,:, 1 ) = 0._wp                ! except at the surface in linear free surface case 
    105105      zwx(:,:,jpk) = 0._wp   ;   zwy(:,:,jpk) = 0._wp    ;    zwz(:,:,jpk) = 0._wp 
    106106      ! 
     
    136136         END DO 
    137137         !                     
    138          IF(.NOT.lk_vvl ) THEN   ! top ocean value (only in linear free surface as zwz has been w-masked) 
     138         IF( ln_linssh ) THEN    ! top ocean value (only in linear free surface as zwz has been w-masked) 
    139139            IF( ln_isfcav ) THEN             ! top of the ice-shelf cavities and at the ocean surface 
    140140               DO jj = 1, jpj 
     
    428428         END DO 
    429429         !                       ! top value 
    430          IF( lk_vvl ) THEN             ! variable volume: only k=1 as zwz is multiplied by wmask 
     430         IF( .NOT.ln_linssh ) THEN             ! variable volume: only k=1 as zwz is multiplied by wmask 
    431431            zwz(:,:, 1 ) = 0._wp 
    432432         ELSE                          ! linear free surface 
     
    502502         ztrs   (:,:,:,1) = ptb(:,:,:,jn) 
    503503         zwzts  (:,:,:)   = 0._wp 
    504          IF( lk_vvl )   zwz(:,:, 1 ) = 0._wp    ! surface value set to zero in vvl case 
     504         IF( .NOT.ln_linssh )   zwz(:,:, 1 ) = 0._wp    ! surface value set to zero in vvl case 
    505505         ! 
    506506         DO jl = 1, kn_fct_zts                  ! Start of sub timestepping loop 
     
    528528               END DO 
    529529            END DO 
    530             IF(.NOT.lk_vvl ) THEN                    ! top value (only in linear free surface case) 
     530            IF( ln_linssh ) THEN                    ! top value (only in linear free surface case) 
    531531               IF( ln_isfcav ) THEN                      ! ice-shelf cavities 
    532532                  DO jj = 1, jpj 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mus.F90

    r5845 r5866  
    250250         END DO 
    251251         !                                      ! top values  (bottom already set to zero) 
    252          IF( lk_vvl ) THEN                            !  variable volume 
    253             zwx(:,:, 1 ) = 0._wp                            ! k=1 only as zwx has been multiplied by wmask 
    254          ELSE                                         ! linear free surface  
     252         IF( ln_linssh ) THEN                         !* linear free surface  
    255253            IF( ln_isfcav ) THEN                            ! ice-shelf cavities (top of the ocean) 
    256254               DO jj = 1, jpj 
     
    262260               zwx(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn) 
    263261            ENDIF 
     262         ELSE                                       !* non-linear free surface 
     263            zwx(:,:, 1 ) = 0._wp                            ! k=1 only as zwx has been multiplied by wmask 
    264264         ENDIF 
    265265         ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_qck.F90

    r5845 r5866  
    382382      ! 
    383383      !                          ! surface & bottom values  
    384       IF( lk_vvl )   zwz(:,:, 1 ) = 0._wp             ! set to zero one for all 
    385                      zwz(:,:,jpk) = 0._wp             ! except at the surface in linear free surface 
     384      IF( .NOT.ln_linssh )   zwz(:,:, 1 ) = 0._wp             ! set to zero one for all 
     385                             zwz(:,:,jpk) = 0._wp             ! except at the surface in linear free surface 
    386386      ! 
    387387      !                                                          ! =========== 
     
    396396            END DO 
    397397         END DO 
    398          IF(.NOT.lk_vvl ) THEN               !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
     398         IF( ln_linssh ) THEN                !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
    399399            IF( ln_isfcav ) THEN                  ! ice-shelf cavities (top of the ocean) 
    400400               DO jj = 1, jpj 
     
    421421      END DO 
    422422      ! 
    423       CALL wrk_dealloc( jpi, jpj, jpk, zwz ) 
     423      CALL wrk_dealloc( jpi,jpj,jpk,  zwz ) 
    424424      ! 
    425425   END SUBROUTINE tra_adv_cen2_k 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_ubs.F90

    r5845 r5866  
    112112      zltu(:,:,jpk) = 0._wp   ;   zltv(:,:,jpk) = 0._wp     ! Bottom value : set to zero one for all 
    113113      ztw (:,:,jpk) = 0._wp   ;   zti (:,:,jpk) = 0._wp 
    114       IF( lk_vvl )   ztw(:,:, 1 ) = 0._wp                   ! surface value: set to zero only in vvl case 
     114      IF( .NOT.ln_linssh )   ztw(:,:, 1 ) = 0._wp                   ! surface value: set to zero only in vvl case 
    115115      ! 
    116116      !                                                          ! =========== 
     
    199199               END DO 
    200200            END DO  
    201             IF(.NOT.lk_vvl ) THEN            ! top ocean value (only in linear free surface as ztw has been w-masked) 
     201            IF( ln_linssh ) THEN             ! top ocean value (only in linear free surface as ztw has been w-masked) 
    202202               IF( ln_isfcav ) THEN                ! top of the ice-shelf cavities and at the ocean surface 
    203203                  DO jj = 1, jpj 
     
    233233            END DO 
    234234            !                                            ! top ocean value: high order == upstream  ==>>  zwz=0 
    235             IF(.NOT.lk_vvl )   ztw(:,:, 1 ) = 0._wp      ! only ocean surface as interior zwz values have been w-masked 
     235            IF( ln_linssh )   ztw(:,:, 1 ) = 0._wp       ! only ocean surface as interior zwz values have been w-masked 
    236236            ! 
    237237            CALL nonosc_z( ptb(:,:,:,jn), ztw, zti, p2dt )      !  monotonicity algorithm 
     
    246246               END DO 
    247247            END DO 
    248             IF(.NOT.lk_vvl )   ztw(:,:, 1 ) = pwn(:,:,1) * ptn(:,:,1,jn)     !!gm ISF & 4th COMPACT doesn't work 
     248            IF( ln_linssh )   ztw(:,:, 1 ) = pwn(:,:,1) * ptn(:,:,1,jn)     !!gm ISF & 4th COMPACT doesn't work 
    249249            ! 
    250250         END SELECT 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r5845 r5866  
    144144      ELSE                                            ! Leap-Frog + Asselin filter time stepping 
    145145         ! 
    146          IF( lk_vvl )  THEN   ;   CALL tra_nxt_vvl( kt, nit000, rdttra, 'TRA', tsb, tsn, tsa,   & 
    147            &                                                              sbc_tsc, sbc_tsc_b, jpts )  ! variable volume level (vvl)  
    148          ELSE                 ;   CALL tra_nxt_fix( kt, nit000,         'TRA', tsb, tsn, tsa, jpts )  ! fixed    volume level  
     146         IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nit000,         'TRA', tsb, tsn, tsa, jpts )  ! linear free surface  
     147         ELSE                   ;   CALL tra_nxt_vvl( kt, nit000, rdttra, 'TRA', tsb, tsn, tsa,   & 
     148           &                                                                sbc_tsc, sbc_tsc_b, jpts )  ! non-linear free surface 
    149149         ENDIF 
    150150      ENDIF      
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r5845 r5866  
    182182            !                                             ! ------------------------- ! 
    183183            ! Set chlorophyl concentration 
    184             IF( nn_chldta == 1 .OR. lk_vvl ) THEN            !*  Variable Chlorophyll or ocean volume 
     184            IF( nn_chldta == 1 .OR. .NOT.ln_linssh ) THEN            !*  Variable Chlorophyll or ocean volume 
    185185               ! 
    186186               IF( nn_chldta == 1 ) THEN                             !*  Variable Chlorophyll 
     
    261261            !                                             ! ------------------------- ! 
    262262            ! 
    263             IF( lk_vvl ) THEN                                  !* variable volume 
     263            IF( .NOT.ln_linssh ) THEN                                  !* variable volume 
    264264               zz0   =        rn_abs   * r1_rau0_rcp 
    265265               zz1   = ( 1. - rn_abs ) * r1_rau0_rcp 
     
    376376      IF( nn_timing == 1 )  CALL timing_start('tra_qsr_init') 
    377377      ! 
    378       CALL wrk_alloc( jpi, jpj,      zekb, zekg, zekr        )  
    379       CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     378      CALL wrk_alloc( jpi,jpj,       zekb, zekg, zekr        )  
     379      CALL wrk_alloc( jpi,jpj,jpk,  ze0, ze1, ze2, ze3, zea )  
    380380      ! 
    381381 
     
    470470               IF(lwp) WRITE(numout,*) 
    471471               IF(lwp) WRITE(numout,*) '        Constant Chlorophyll concentration = 0.05' 
    472                IF( lk_vvl ) THEN                   ! variable volume 
    473                   IF(lwp) WRITE(numout,*) '        key_vvl: light distribution will be computed at each time step' 
     472               IF( .NOT.ln_linssh ) THEN                   ! variable volume 
     473                  IF(lwp) WRITE(numout,*) '        non-linear free surface: light distribution will be computed at each time step' 
    474474               ELSE                                ! constant volume: computes one for all 
    475                   IF(lwp) WRITE(numout,*) '        fixed volume: light distribution computed one for all' 
     475                  IF(lwp) WRITE(numout,*) '        linear free surface: light distribution computed one for all' 
    476476                  ! 
    477477                  zchl = 0.05                                 ! constant chlorophyll 
     
    524524            ENDIF 
    525525            ! 
    526             IF( lk_vvl ) THEN                   ! variable volume 
    527                IF(lwp) WRITE(numout,*) '        key_vvl: light distribution will be computed at each time step' 
     526            IF( .NOT.ln_linssh ) THEN                   ! variable volume 
     527               IF(lwp) WRITE(numout,*) '        non-linear free surface: light distribution will be computed at each time step' 
    528528            ELSE                                ! constant volume: computes one for all 
    529529               zz0 =        rn_abs   * r1_rau0_rcp 
     
    538538                  END DO 
    539539               END DO 
    540                etot3(:,:,nksr+1:jpk) = 0.e0                   ! below 400m set to zero 
     540               etot3(:,:,nksr+1:jpk) = 0._wp                  ! below 400m set to zero 
    541541               ! 
    542542            ENDIF 
     
    559559      ENDIF 
    560560      ! 
    561       CALL wrk_dealloc( jpi, jpj,      zekb, zekg, zekr        )  
    562       CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea )  
     561      CALL wrk_dealloc( jpi,jpj,       zekb, zekg, zekr        )  
     562      CALL wrk_dealloc( jpi,jpj,jpk,  ze0, ze1, ze2, ze3, zea )  
    563563      ! 
    564564      IF( nn_timing == 1 )  CALL timing_stop('tra_qsr_init') 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trasbc.F90

    r5845 r5866  
    7474      !!      The formulation for Fwb and Fwi vary according to the free  
    7575      !!      surface formulation (linear or variable volume).  
    76       !!      * Linear free surface 
     76      !!      * Linear free surface (ln_linssh=T) 
    7777      !!            The surface freshwater flux modifies the ocean volume 
    7878      !!         and thus the concentration of a tracer and the temperature. 
     
    100100      !!         forcing and must be taken into account in the global heat 
    101101      !!         balance). 
    102       !!      * nonlinear free surface (variable volume, lk_vvl) 
     102      !!      * nonlinear free surface (ln_linssh=F) 
    103103      !!         contrary to the linear free surface case, Fwi is properly  
    104104      !!         taken into account by using the true layer thicknesses to        
     
    145145      !        EMP, SFX and QNS effects 
    146146      !---------------------------------------- 
    147       !                                          Set before sbc tracer content fields 
    148       !                                          ************************************ 
     147      !                                   !==  Set before sbc tracer content fields  ==! 
     148      ! 
    149149      IF( kt == nit000 ) THEN                      ! Set the forcing field at nit000 - 1 
    150          !                                         ! ----------------------------------- 
     150         ! 
    151151         IF( ln_rstart .AND.    &                     ! Restart: read in restart file 
    152152              & iom_varid( numror, 'sbc_hc_b', ldstop = .FALSE. ) > 0 ) THEN 
     
    160160         ENDIF 
    161161      ELSE                                         ! Swap of forcing fields 
    162          !                                         ! ---------------------- 
    163162         zfact = 0.5_wp 
    164163         sbc_tsc_b(:,:,:) = sbc_tsc(:,:,:) 
     
    170169                                                   ! evaporation, precipitation and qns, but not river runoff  
    171170                                                
    172       IF( lk_vvl ) THEN                            ! Variable Volume case  ==>> heat content of mass flux is in qns 
     171      IF( .NOT.ln_linssh ) THEN                    !* Variable Volume case  ==>> heat content of mass flux is in qns 
    173172         DO jj = 1, jpj 
    174173            DO ji = 1, jpi  
     
    177176            END DO 
    178177         END DO 
    179       ELSE                                         ! Constant Volume case ==>> Concentration dilution effect 
     178      ELSE                                         !* Constant Volume case ==>> Concentration dilution effect 
    180179         DO jj = 2, jpj 
    181180            DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    191190         IF( iom_use('emp_x_sss') )   CALL iom_put( "emp_x_sss", emp (:,:) * tsn(:,:,1,jp_sal) )   ! c/d term on sss 
    192191      ENDIF 
    193       ! Concentration dilution effect on (t,s) due to evapouration, precipitation and qns, but not river runoff   
     192      ! 
    194193      DO jn = 1, jpts 
    195194         DO jj = 2, jpj 
     
    218217      ! 
    219218      IF( nn_isf > 0 ) THEN 
    220          zfact = 0.5e0 
     219         zfact = 0.5_wp 
    221220         DO jj = 2, jpj 
    222221            DO ji = fs_2, fs_jpim1 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r5845 r5866  
    6666      !!      (N.B. bottom condition is applied through the masked field avt). 
    6767      !!              - the after tracer fields due to the whole trend is  
    68       !!      obtained in leap-frog environment by : 
    69       !!          pta = zwx + p2dt pta 
    70       !!              - in case of variable level thickness (lk_vvl=T) the  
    71       !!     the leap-frog is applied on thickness weighted tracer. That is: 
     68      !!      obtained in leap-frog environment applied on thickness weighted tracer by : 
    7269      !!          pta = [ ptb*e3tb + e3tn*( zwx - ptb + p2dt pta ) ] / e3tn 
    7370      !! 
    7471      !! ** Action : - after tracer fields pta 
    7572      !!--------------------------------------------------------------------- 
    76       ! 
    7773      INTEGER                              , INTENT(in   ) ::   kt          ! ocean time-step index 
    7874      INTEGER                              , INTENT(in   ) ::   kit000      ! first time step index 
     
    9288      IF( nn_timing == 1 )  CALL timing_start('tra_zdf_exp') 
    9389      ! 
    94       CALL wrk_alloc( jpi, jpj, jpk, zwx, zwy )  
     90      CALL wrk_alloc( jpi,jpj,jpk,  zwx, zwy )  
    9591      ! 
    9692 
     
    121117               DO jj = 2, jpjm1  
    122118                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    123                      zave3r = 1.e0 / e3w_n(ji,jj,jk)  
     119                     zave3r = 1.e0 / e3w_n(ji,jj,jk)            !!gm here it should be e3w_b  ???? 
    124120                     IF( cdtype == 'TRA' .AND. jn == jp_tem ) THEN  ! temperature : use of avt 
    125121                        zwy(ji,jj,jk) =   avt(ji,jj,jk) * ( zwx(ji,jj,jk-1) - zwx(ji,jj,jk) ) * zave3r 
     
    144140         ! After tracer due to all trends 
    145141         ! ------------------------------ 
    146          IF( lk_vvl ) THEN          ! variable level thickness : leap-frog on tracer*e3t 
     142         IF( .NOT.ln_linssh ) THEN     ! variable level thickness : leap-frog on tracer*e3t 
    147143            DO jk = 1, jpkm1 
    148144               DO jj = 2, jpjm1  
     
    154150               END DO 
    155151            END DO 
    156          ELSE                       ! fixed level thickness : leap-frog on tracers 
     152         ELSE                          ! fixed level thickness : leap-frog on tracers 
    157153            DO jk = 1, jpkm1 
    158154               DO jj = 2, jpjm1  
     
    166162      END DO 
    167163      ! 
    168       CALL wrk_dealloc( jpi, jpj, jpk, zwx, zwy )  
     164      CALL wrk_dealloc( jpi,jpj,jpk,  zwx, zwy )  
    169165      ! 
    170166      IF( nn_timing == 1 )  CALL timing_stop('tra_zdf_exp') 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r5845 r5866  
    4242   PUBLIC   tra_zdf_imp   !  routine called by step.F90 
    4343 
    44    REAL(wp) ::  r_vvl     ! variable volume indicator, =1 if lk_vvl=T, =0 otherwise  
     44   REAL(wp) ::  r_vvl     ! variable volume indicator, =1 if ln_linssh=F, =0 otherwise  
    4545 
    4646   !! * Substitutions 
     
    9595         IF(lwp)WRITE(numout,*) '~~~~~~~~~~~ ' 
    9696         ! 
    97          IF( lk_vvl ) THEN   ;    r_vvl = 1._wp       ! Variable volume indicator 
    98          ELSE                ;    r_vvl = 0._wp        
     97         IF( .NOT.ln_linssh ) THEN   ;    r_vvl = 1._wp       ! Variable volume indicator 
     98         ELSE                        ;    r_vvl = 0._wp        
    9999         ENDIF 
    100100      ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRD/trdglo.F90

    r5845 r5866  
    102102            END DO 
    103103            !                       ! linear free surface: diagnose advective flux trough the fixed k=1 w-surface 
    104             IF( .NOT.lk_vvl .AND. ktrd == jptra_zad ) THEN   
    105                tmo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * e1e2t(:,:) ) 
    106                smo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * e1e2t(:,:) ) 
    107                t2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * tsn(:,:,1,jp_tem) * e1e2t(:,:) ) 
    108                s2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * tsn(:,:,1,jp_sal) * e1e2t(:,:) ) 
     104            IF( ln_linssh .AND. ktrd == jptra_zad ) THEN   
     105               tmo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * e1e2t(:,:) * tmask_i(:,:) ) 
     106               smo(jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * e1e2t(:,:) * tmask_i(:,:) ) 
     107               t2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_tem) * tsn(:,:,1,jp_tem) * e1e2t(:,:) * tmask_i(:,:) ) 
     108               s2 (jptra_sad) = SUM( wn(:,:,1) * tsn(:,:,1,jp_sal) * tsn(:,:,1,jp_sal) * e1e2t(:,:) * tmask_i(:,:) ) 
    109109            ENDIF 
    110110            ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRD/trdini.F90

    r5845 r5866  
    9090!!gm end 
    9191      ! 
    92       IF( lk_vvl .AND. ( l_trdtra .OR. l_trddyn ) )  CALL ctl_stop( 'trend diagnostics with variable volume not validated' ) 
     92      IF( .NOT.ln_linssh .AND. ( l_trdtra .OR. l_trddyn ) )  CALL ctl_stop( 'trend diagnostics with variable volume not validated' ) 
    9393       
    9494!!gm  : Potential BUG : 3D output only for vector invariant form!  add a ctl_stop or code the flux form case 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRD/trdken.F90

    r5845 r5866  
    9393      CALL lbc_lnk( putrd, 'U', -1. )   ;   CALL lbc_lnk( pvtrd, 'V', -1. )      ! lateral boundary conditions 
    9494      ! 
    95       IF ( lk_vvl .AND. kt /= nkstp ) THEN   ! Variable volume: set box volume at the 1st call of kt time step 
     95      IF( .NOT.ln_linssh .AND. kt /= nkstp ) THEN   ! Variable volume: set box volume at the 1st call of kt time step 
    9696         nkstp = kt 
    9797         DO jk = 1, jpkm1 
     
    268268!!gm         &   CALL ctl_stop('trd_ken_init : only full and partial cells are coded for conversion rate') 
    269269      ! 
    270       IF( .NOT.lk_vvl ) THEN      ! constant volume: bu, bv, 1/bt computed one for all 
     270      IF( ln_linssh ) THEN      ! constant volume: bu, bv, 1/bt computed one for all 
    271271         DO jk = 1, jpkm1 
    272272            bu   (:,:,jk) =           e1e2u(:,:) * e3u_n(:,:,jk) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRD/trdpen.F90

    r5845 r5866  
    9696      CASE ( jptra_yad  )   ;   CALL iom_put( "petrd_yad", zpe )   ! merid.   advection 
    9797      CASE ( jptra_zad  )   ;   CALL iom_put( "petrd_zad", zpe )   ! vertical advection 
    98                                 IF( .NOT.lk_vvl ) THEN                   ! cst volume : adv flux through z=0 surface 
     98                                IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface 
    9999                                   CALL wrk_alloc( jpi, jpj, z2d ) 
    100100                                   z2d(:,:) = wn(:,:,1) * ( & 
     
    115115      CASE ( jptra_bbc  )   ;   CALL iom_put( "petrd_bbc" , zpe )   ! bottom bound cond (geoth flux) 
    116116      CASE ( jptra_atf  )   ;   CALL iom_put( "petrd_atf" , zpe )   ! asselin time filter (last trend) 
    117                                 !IF( .NOT.lk_vvl ) THEN                   ! cst volume : ssh term (otherwise include in e3t variation) 
     117                                !IF( ln_linssh ) THEN                   ! cst volume : ssh term (otherwise include in e3t variation) 
    118118                                !   CALL wrk_alloc( jpi, jpj, z2d ) 
    119119                                !   z2d(:,:) = ( ssha(:,:) - sshb(:,:) )                 & 
     
    150150      rab_pe(:,:,:,:) = 0._wp 
    151151      ! 
    152       IF ( lk_vvl              )   CALL ctl_stop('trd_pen_init : PE trends not coded for variable volume') 
     152      IF( .NOT.ln_linssh )   CALL ctl_stop('trd_pen_init : PE trends not coded for variable volume') 
    153153      ! 
    154154      nkstp     = nit000 - 1 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90

    r5845 r5866  
    305305      CASE( jptra_zad  )   ;   CALL iom_put( "ttrd_zad" , ptrdx )        ! z- vertical   advection 
    306306                               CALL iom_put( "strd_zad" , ptrdy ) 
    307                                IF( .NOT. lk_vvl ) THEN                   ! cst volume : adv flux through z=0 surface 
     307                               IF( ln_linssh ) THEN                   ! cst volume : adv flux through z=0 surface 
    308308                                  CALL wrk_alloc( jpi, jpj, z2dx, z2dy ) 
    309309                                  z2dx(:,:) = wn(:,:,1) * tsn(:,:,1,jp_tem) / e3t_n(:,:,1) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfbfr.F90

    r5845 r5866  
    110110         CALL wrk_alloc( jpi, jpj, zbfrt, ztfrt ) 
    111111 
    112          IF ( ln_loglayer.AND.lk_vvl ) THEN ! "log layer" bottom friction coefficient 
     112         IF ( ln_loglayer.AND. .NOT.ln_linssh ) THEN ! "log layer" bottom friction coefficient 
    113113 
    114114            DO jj = 1, jpj 
     
    370370         END IF 
    371371         ! 
    372          IF ( ln_loglayer.AND.(.NOT.lk_vvl) ) THEN ! set "log layer" bottom friction once for all 
     372         IF( ln_loglayer.AND. ln_linssh ) THEN ! set "log layer" bottom friction once for all 
    373373            DO jj = 1, jpj 
    374374               DO ji = 1, jpi 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/step.F90

    r5845 r5866  
    178178      !  Ocean dynamics : hdiv, ssh, e3, wn 
    179179      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    180                          CALL ssh_nxt       ( kstp )  ! after ssh (includes call to div_hor) 
    181       IF( lk_vvl    )   CALL dom_vvl_sf_nxt( kstp )  ! after vertical scale factors  
    182                          CALL wzv           ( kstp )  ! now cross-level velocity  
     180                             CALL ssh_nxt       ( kstp )  ! after ssh (includes call to div_hor) 
     181      IF( .NOT.ln_linssh )   CALL dom_vvl_sf_nxt( kstp )  ! after vertical scale factors  
     182                             CALL wzv           ( kstp )  ! now cross-level velocity  
    183183 
    184184      IF( lk_dynspg_ts ) THEN  
     
    217217 
    218218                                  CALL div_hor( kstp )         ! Horizontal divergence  (2nd call in time-split case) 
    219           IF( lk_vvl     )        CALL dom_vvl_sf_nxt( kstp, kcall=2 )  ! after vertical scale factors (update depth average component) 
     219          IF( .NOT.ln_linssh )    CALL dom_vvl_sf_nxt( kstp, kcall=2 )  ! after vertical scale factors (update depth average component) 
    220220                                  CALL wzv           ( kstp )  ! now cross-level velocity  
    221221      ENDIF 
     
    331331 
    332332                               CALL ssh_swp( kstp )         ! swap of sea surface height 
    333       IF( lk_vvl           )   CALL dom_vvl_sf_swp( kstp )  ! swap of vertical scale factors 
     333      IF( .NOT.ln_linssh )     CALL dom_vvl_sf_swp( kstp )  ! swap of vertical scale factors 
    334334      ! 
    335335 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/SAS_SRC/sbcssm.F90

    r5407 r5866  
    8888         ssu_m(:,:) = sf_ssm_3d(jf_usp)%fnow(:,:,1) * umask(:,:,1)    ! u-velocity 
    8989         ssv_m(:,:) = sf_ssm_3d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1)    ! v-velocity  
    90          IF( lk_vvl )   e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1)    ! v-velocity  
     90         IF( .NOT.ln_linssh )   e3t_m(:,:) = sf_ssm_3d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1)    ! v-velocity  
    9191      ELSE 
    9292         ssu_m(:,:) = sf_ssm_2d(jf_usp)%fnow(:,:,1) * umask(:,:,1)    ! u-velocity 
    9393         ssv_m(:,:) = sf_ssm_2d(jf_vsp)%fnow(:,:,1) * vmask(:,:,1)    ! v-velocity  
    94          IF( lk_vvl )   e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1)    ! v-velocity  
     94         IF( .NOT.ln_linssh )   e3t_m(:,:) = sf_ssm_2d(jf_e3t)%fnow(:,:,1) * tmask(:,:,1)    ! v-velocity  
    9595      ENDIF 
    9696      ! 
     
    115115         CALL prt_ctl(tab2d_1=ssv_m, clinfo1=' ssv_m   - : ', mask1=vmask, ovlap=1   ) 
    116116         CALL prt_ctl(tab2d_1=ssh_m, clinfo1=' ssh_m   - : ', mask1=tmask, ovlap=1   ) 
    117          IF( lk_vvl      )   CALL prt_ctl(tab2d_1=ssh_m, clinfo1=' e3t_m   - : ', mask1=tmask, ovlap=1   ) 
    118          IF( ln_read_frq )   CALL prt_ctl(tab2d_1=frq_m, clinfo1=' frq_m   - : ', mask1=tmask, ovlap=1   ) 
     117         IF( .NOT.ln_linssh )   CALL prt_ctl(tab2d_1=ssh_m, clinfo1=' e3t_m   - : ', mask1=tmask, ovlap=1   ) 
     118         IF( ln_read_frq    )   CALL prt_ctl(tab2d_1=frq_m, clinfo1=' frq_m   - : ', mask1=tmask, ovlap=1   ) 
    119119      ENDIF 
    120120      ! 
     
    125125         CALL iom_put( 'sss_m', sss_m ) 
    126126         CALL iom_put( 'ssh_m', ssh_m ) 
    127          IF( lk_vvl      )   CALL iom_put( 'e3t_m', e3t_m ) 
    128          IF( ln_read_frq )   CALL iom_put( 'frq_m', frq_m ) 
     127         IF( .NOT.ln_linssh )   CALL iom_put( 'e3t_m', e3t_m ) 
     128         IF( ln_read_frq    )   CALL iom_put( 'frq_m', frq_m ) 
    129129      ENDIF 
    130130      ! 
     
    216216      IF( ln_3d_uve ) THEN 
    217217         jf_usp = 1 ; jf_vsp = 2 ; jf_e3t = 3      ! define 3D fields index 
    218          nfld_3d  = 2 + COUNT( (/lk_vvl/) )        ! number of 3D fields to read 
     218         nfld_3d  = 2 + COUNT( (/.NOT.ln_linssh/) )        ! number of 3D fields to read 
    219219         nfld_2d  = 3 + COUNT( (/ln_read_frq/) )   ! number of 2D fields to read 
    220220      ELSE 
    221          jf_usp = 4 ; jf_vsp = 5 ; jf_e3t = 6 ; jf_frq = 6 + COUNT( (/lk_vvl/) )   ! update 2D fields index 
     221         jf_usp = 4 ; jf_vsp = 5 ; jf_e3t = 6 ; jf_frq = 6 + COUNT( (/.NOT.ln_linssh/) )   ! update 2D fields index 
    222222         nfld_3d  = 0                                                              ! no 3D fields to read 
    223          nfld_2d  = 5 + COUNT( (/lk_vvl/) ) + COUNT( (/ln_read_frq/) )             ! number of 2D fields to read 
     223         nfld_2d  = 5 + COUNT( (/.NOT.ln_linssh/) ) + COUNT( (/ln_read_frq/) )             ! number of 2D fields to read 
    224224      ENDIF 
    225225 
     
    231231         slf_3d(jf_usp) = sn_usp 
    232232         slf_3d(jf_vsp) = sn_vsp 
    233          IF( lk_vvl )   slf_3d(jf_e3t) = sn_e3t 
     233         IF( .NOT.ln_linssh )   slf_3d(jf_e3t) = sn_e3t 
    234234      ENDIF 
    235235 
     
    243243         IF( .NOT. ln_3d_uve ) THEN 
    244244            slf_2d(jf_usp) = sn_usp ; slf_2d(jf_vsp) = sn_vsp 
    245             IF( lk_vvl )   slf_2d(jf_e3t) = sn_e3t 
     245            IF( .NOT.ln_linssh )   slf_2d(jf_e3t) = sn_e3t 
    246246         ENDIF 
    247247      ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r5845 r5866  
    230230            CALL ctl_stop( 'trc_adv_init: force 2nd order FCT scheme, 4th order does not exist with sub-timestepping' ) 
    231231         ENDIF 
    232          IF( lk_vvl ) THEN 
     232         IF( .NOT.ln_linssh ) THEN 
    233233            CALL ctl_stop( 'trc_adv_init: vertical sub-timestepping not allow in non-linear free surface' ) 
    234234         ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90

    r5656 r5866  
    137137      ELSE 
    138138         ! Leap-Frog + Asselin filter time stepping 
    139          IF( lk_vvl ) THEN   ;   CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra,      & 
    140            &                                                                sbc_trc, sbc_trc_b, jptra )      ! variable volume level (vvl)  
    141          ELSE                ;   CALL tra_nxt_fix( kt, nittrc000,         'TRC', trb, trn, tra, jptra )      ! fixed    volume level  
     139         IF( ln_linssh ) THEN   ;   CALL tra_nxt_fix( kt, nittrc000,         'TRC', trb, trn, tra, jptra )  !     linear ssh 
     140         ELSE                   ;   CALL tra_nxt_vvl( kt, nittrc000, rdttrc, 'TRC', trb, trn, tra,      & 
     141           &                                                                   sbc_trc, sbc_trc_b, jptra )  ! non-linear ssh 
    142142         ENDIF 
    143143      ENDIF 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r5845 r5866  
    7575      ! 
    7676      ! Allocate temporary workspace 
    77                       CALL wrk_alloc( jpi, jpj,      zsfx   ) 
    78       IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrtrd ) 
     77                      CALL wrk_alloc( jpi,jpj,       zsfx   ) 
     78      IF( l_trdtrc )  CALL wrk_alloc( jpi,jpj,jpk,  ztrtrd ) 
    7979      ! 
    8080      zrtrn = 1.e-15_wp 
     
    128128      ! Coupling offline : runoff are in emp which contains E-P-R 
    129129      ! 
    130       IF( .NOT. lk_offline .AND. lk_vvl ) THEN  ! online coupling with vvl 
     130      IF( .NOT. lk_offline .AND. .NOT.ln_linssh ) THEN  ! online coupling with vvl 
    131131         zsfx(:,:) = 0._wp 
    132132      ELSE                                      ! online coupling free surface or offline with free surface 
     
    137137      DO jn = 1, jptra 
    138138         ! 
    139          IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn)  ! save trends 
    140          !                                             ! add the trend to the general tracer trend 
     139         IF( l_trdtrc )   ztrtrd(:,:,:) = tra(:,:,:,jn)  ! save trends 
    141140 
    142141         IF ( nn_ice_tr == -1 ) THEN  ! No tracers in sea ice (null concentration in sea ice) 
     
    202201                                           CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
    203202      ENDIF 
    204                       CALL wrk_dealloc( jpi, jpj,      zsfx   ) 
    205       IF( l_trdtrc )  CALL wrk_dealloc( jpi, jpj, jpk, ztrtrd ) 
     203                      CALL wrk_dealloc( jpi,jpj,       zsfx   ) 
     204      IF( l_trdtrc )  CALL wrk_dealloc( jpi,jpj,jpk,  ztrtrd ) 
    206205      ! 
    207206      IF( nn_timing == 1 )  CALL timing_stop('trc_sbc') 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/trcdta.F90

    r5845 r5866  
    235235         sf_dta(1)%fnow(:,:,:) = sf_dta(1)%fnow(:,:,:) * zrf_trfac   !  multiplicative factor 
    236236         ! 
    237          IF( lwp .AND. kt == nit000 ) THEN 
    238                clndta = TRIM( sf_dta(1)%clvar )  
    239                WRITE(numout,*) ''//clndta//' data ' 
    240                WRITE(numout,*) 
    241                WRITE(numout,*)'  level = 1' 
    242                CALL prihre( sf_dta(1)%fnow(:,:,1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 
    243                WRITE(numout,*)'  level = ', jpk/2 
    244                CALL prihre( sf_dta(1)%fnow(:,:,jpk/2), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 
    245                WRITE(numout,*)'  level = ', jpkm1 
    246                CALL prihre( sf_dta(1)%fnow(:,:,jpkm1), jpi, jpj, 1, jpi, 20, 1, jpj, 20, 1., numout ) 
    247                WRITE(numout,*) 
    248          ENDIF 
    249237      ENDIF 
    250238      ! 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/trcstp.F90

    r5845 r5866  
    6464      IF( kt == nittrc000 .AND. lk_trdmxl_trc )  CALL trd_mxl_trc_init    ! trends: Mixed-layer 
    6565      ! 
    66       IF( lk_vvl ) THEN                                                   ! update ocean volume due to ssh temporal evolution 
     66      IF( .NOT.ln_linssh ) THEN                                           ! update ocean volume due to ssh temporal evolution 
    6767         DO jk = 1, jpk 
    6868            cvol(:,:,jk) = e1e2t(:,:) * e3t_n(:,:,jk) * tmask(:,:,jk) 
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/TOP_SRC/trcsub.F90

    r5845 r5866  
    446446      !!                    
    447447      !! ** Purpose :   compute the after ssh (ssha), the now vertical velocity 
    448       !!              and update the now vertical coordinate (lk_vvl=T). 
     448      !!              and update the now vertical coordinate (ln_linssh=F). 
    449449      !! 
    450450      !! ** Method  : - Using the incompressibility hypothesis, the vertical  
     
    455455      !! ** action  :   ssha    : after sea surface height 
    456456      !!                wn      : now vertical velocity 
    457       !!                sshu_a, sshv_a, sshf_a  : after sea surface height (lk_vvl=T) 
     457      !!                sshu_a, sshv_a, sshf_a  : after sea surface height (ln_linssh=F) 
    458458      !! 
    459459      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling. 
    460460      !!---------------------------------------------------------------------- 
    461       ! 
    462461      INTEGER, INTENT(in) ::   kt   ! time step 
    463462      ! 
     
    470469      ! 
    471470      ! Allocate temporary workspace 
    472       CALL wrk_alloc( jpi, jpj, zhdiv ) 
     471      CALL wrk_alloc( jpi,jpj,  zhdiv ) 
    473472 
    474473      IF( kt == nittrc000 ) THEN 
     
    482481      ENDIF 
    483482      ! 
     483!!gm BUG here !   hdivn will include the runoff divergence at the wrong timestep !!!! 
    484484      CALL div_hor( kt )                              ! Horizontal divergence & Relative vorticity 
    485485      ! 
     
    510510#endif 
    511511#endif 
    512  
    513  
     512      ! 
    514513      !                                           !------------------------------! 
    515514      !                                           !     Now Vertical Velocity    ! 
     
    525524#endif 
    526525      END DO 
    527  
    528       ! 
    529       CALL wrk_dealloc( jpi, jpj, zhdiv ) 
     526      ! 
     527      CALL wrk_dealloc( jpi,jpj,   zhdiv ) 
    530528      ! 
    531529      IF( nn_timing == 1 )  CALL timing_stop('trc_sub_ssh') 
    532530      ! 
    533531   END SUBROUTINE trc_sub_ssh 
     532 
    534533 
    535534   INTEGER FUNCTION trc_sub_alloc() 
Note: See TracChangeset for help on using the changeset viewer.