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 4370 for branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2014-01-23T18:13:16+01:00 (10 years ago)
Author:
jchanut
Message:

Time split cleaning / AMM12 restart / BDY and Agrif. See tickets #1228, #1227, #1225 and #1133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r4354 r4370  
    1414#if defined key_dynspg_ts   ||   defined key_esopa 
    1515   !!---------------------------------------------------------------------- 
    16    !!   'key_dynspg_ts'         free surface cst volume with time splitting 
     16   !!   'key_dynspg_ts'         split explicit free surface 
    1717   !!---------------------------------------------------------------------- 
    1818   !!   dyn_spg_ts  : compute surface pressure gradient trend using a time- 
     
    5555   PUBLIC dyn_spg_ts_init   !    "      "     "    " 
    5656 
    57    ! Potential namelist parameters below to be read in dyn_spg_ts_init 
    58    LOGICAL,  PUBLIC,  PARAMETER :: ln_bt_fw=.TRUE.        !: Forward integration of barotropic sub-stepping 
    59    LOGICAL,  PRIVATE, PARAMETER :: ln_bt_av=.TRUE.        !: Time averaging of barotropic variables 
    60    LOGICAL,  PRIVATE, PARAMETER :: ln_bt_nn_auto=.FALSE.  !: Set number of iterations automatically 
    61    INTEGER,  PRIVATE, PARAMETER :: nn_bt_flt=1            !: Filter choice 
    62    REAL(wp), PRIVATE, PARAMETER :: rn_bt_cmax=0.8_wp      !: Max. courant number (used if ln_bt_nn_auto=T) 
    63    ! End namelist parameters 
    64  
    6557   INTEGER, SAVE :: icycle  ! Number of barotropic sub-steps for each internal step nn_baro <= 2.5 nn_baro 
    6658   REAL(wp),SAVE :: rdtbt   ! Barotropic time step 
     
    160152      REAL(wp), POINTER, DIMENSION(:,:) :: zu_sum, zv_sum, zwx, zwy, zhdiv 
    161153      REAL(wp), POINTER, DIMENSION(:,:) :: zhup2_e, zhvp2_e, zhust_e, zhvst_e 
    162       REAL(wp), POINTER, DIMENSION(:,:) :: zhur_b, zhvr_b 
    163154      REAL(wp), POINTER, DIMENSION(:,:) :: zsshu_a, zsshv_a 
    164       REAL(wp), POINTER, DIMENSION(:,:) :: zht, zhf 
     155      REAL(wp), POINTER, DIMENSION(:,:) :: zhf 
    165156      !!---------------------------------------------------------------------- 
    166157      ! 
     
    172163      CALL wrk_alloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc) 
    173164      CALL wrk_alloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e) 
    174       CALL wrk_alloc( jpi, jpj, zhur_b, zhvr_b                                     ) 
    175165      CALL wrk_alloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
    176       CALL wrk_alloc( jpi, jpj, zht, zhf ) 
     166      CALL wrk_alloc( jpi, jpj, zhf ) 
    177167      ! 
    178168      !                                         !* Local constant initialization 
     
    228218      IF ( kt == nit000 .OR. lk_vvl ) THEN 
    229219         IF ( ln_dynvor_een ) THEN 
    230             ! JC: Simplification needed below: define ht_0 even when volume is fixed 
    231             IF (lk_vvl) THEN 
    232                zht(:,:) = (ht_0(:,:) + sshn(:,:)) * tmask(:,:,1)  
    233             ELSE 
    234                zht(:,:) = 0. 
    235                DO jk = 1, jpkm1 
    236                   zht(:,:) = zht(:,:) + fse3t_n(:,:,jk) * tmask(:,:,jk) 
    237                END DO 
    238             ENDIF 
    239  
    240220            DO jj = 1, jpjm1 
    241221               DO ji = 1, jpim1 
    242                   zwz(ji,jj) =   ( zht(ji  ,jj+1) + zht(ji+1,jj+1) +                     & 
    243                         &          zht(ji  ,jj  ) + zht(ji+1,jj  )   )                   & 
     222                  zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                     & 
     223                        &          ht(ji  ,jj  ) + ht(ji+1,jj  )   )                   & 
    244224                        &      / ( MAX( 1.0_wp, tmask(ji  ,jj+1, 1) + tmask(ji+1,jj+1, 1) +    & 
    245225                        &                       tmask(ji  ,jj  , 1) + tmask(ji+1,jj  , 1) ) ) 
     
    261241         ELSE 
    262242            zwz(:,:) = 0._wp 
    263             zht(:,:) = 0. 
     243            zhf(:,:) = 0. 
    264244            IF ( .not. ln_sco ) THEN 
    265245!              IF( rn_hmin < 0._wp ) THEN    ;   jk = - INT( rn_hmin )                                      ! from a nb of level 
    266246!              ELSE                          ;   jk = MINLOC( gdepw_0, mask = gdepw_0 > rn_hmin, dim = 1 )  ! from a depth 
    267247!              ENDIF 
    268 !              zht(:,:) = gdepw_0(:,:,jk+1) 
     248!              zhf(:,:) = gdepw_0(:,:,jk+1) 
    269249            ELSE 
    270                zht(:,:) = hbatf(:,:) 
     250               zhf(:,:) = hbatf(:,:) 
    271251            END IF 
    272252 
    273253            DO jj = 1, jpjm1 
    274                zht(:,jj) = zht(:,jj)*(1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 
     254               zhf(:,jj) = zhf(:,jj)*(1._wp- umask(:,jj,1) * umask(:,jj+1,1)) 
    275255            END DO 
    276256 
    277257            DO jk = 1, jpkm1 
    278258               DO jj = 1, jpjm1 
    279                   zht(:,jj) = zht(:,jj) + fse3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
    280                END DO 
    281             END DO 
    282             CALL lbc_lnk( zht, 'F', 1._wp ) 
     259                  zhf(:,jj) = zhf(:,jj) + fse3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
     260               END DO 
     261            END DO 
     262            CALL lbc_lnk( zhf, 'F', 1._wp ) 
    283263            ! JC: TBC. hf should be greater than 0  
    284264            DO jj = 1, jpj 
    285265               DO ji = 1, jpi 
    286                   IF( zht(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zht(ji,jj) ! zht is actually hf here but it saves an array 
     266                  IF( zhf(ji,jj) /= 0._wp )   zwz(ji,jj) = 1._wp / zhf(ji,jj) ! zhf is actually hf here but it saves an array 
    287267               END DO 
    288268            END DO 
     
    296276         ll_fw_start=.FALSE. 
    297277         CALL ts_wgt(ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2) 
    298       ENDIF 
    299  
    300       ! before inverse water column height at u- and v- points 
    301       IF( lk_vvl ) THEN 
    302          zhur_b(:,:) = 0. 
    303          zhvr_b(:,:) = 0. 
    304          DO jk = 1, jpk 
    305             zhur_b(:,:) = zhur_b(:,:) + fse3u_b(:,:,jk) * umask(:,:,jk) 
    306             zhvr_b(:,:) = zhvr_b(:,:) + fse3v_b(:,:,jk) * vmask(:,:,jk) 
    307          END DO 
    308          zhur_b(:,:) = umask(:,:,1) / ( zhur_b(:,:) + 1. - umask(:,:,1) ) 
    309          zhvr_b(:,:) = vmask(:,:,1) / ( zhvr_b(:,:) + 1. - vmask(:,:,1) ) 
    310       ELSE 
    311          zhur_b(:,:) = hur(:,:) 
    312          zhvr_b(:,:) = hvr(:,:) 
    313278      ENDIF 
    314279                           
     
    331296            DO ji = 1, jpi 
    332297#endif                                                                    
    333                zu_frc(ji,jj) = zu_frc(ji,jj) + fse3u(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
    334                zv_frc(ji,jj) = zv_frc(ji,jj) + fse3v(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk)          
     298               zu_frc(ji,jj) = zu_frc(ji,jj) + fse3u_n(ji,jj,jk) * ua(ji,jj,jk) * umask(ji,jj,jk) 
     299               zv_frc(ji,jj) = zv_frc(ji,jj) + fse3v_n(ji,jj,jk) * va(ji,jj,jk) * vmask(ji,jj,jk)          
    335300            END DO 
    336301         END DO 
     
    492457      !                                             !    Initialisations   ! 
    493458      !                                             ! ==================== !   
    494       ! Initialize barotropic variables:     
    495       IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                              
    496          sshn_e (:,:) = sshn (:,:)             
    497          zun_e  (:,:) = un_b (:,:)             
    498          zvn_e  (:,:) = vn_b (:,:) 
    499       ELSE                                ! CENTRED integration: start from BEFORE fields 
    500          sshn_e (:,:) = sshb (:,:) 
    501          zun_e  (:,:) = ub_b (:,:)          
    502          zvn_e  (:,:) = vb_b (:,:) 
    503       ENDIF 
    504       ! 
    505       ! Initialize depths: 
    506       IF ( lk_vvl.AND.(.NOT.ln_bt_fw) ) THEN 
    507          hu_e  (:,:) = umask(:,:,1) / ( zhur_b(:,:) + 1._wp - umask(:,:,1) ) 
    508          hv_e  (:,:) = vmask(:,:,1) / ( zhvr_b(:,:) + 1._wp - vmask(:,:,1) ) 
    509          hur_e (:,:) = zhur_b(:,:) 
    510          hvr_e (:,:) = zhvr_b(:,:) 
    511       ELSE 
     459      ! Initialize barotropic variables:       
     460      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
     461         sshn_e(:,:) = sshn (:,:)             
     462         zun_e (:,:) = un_b (:,:)             
     463         zvn_e (:,:) = vn_b (:,:) 
     464         ! 
    512465         hu_e  (:,:) = hu   (:,:)        
    513466         hv_e  (:,:) = hv   (:,:)  
    514467         hur_e (:,:) = hur  (:,:)     
    515468         hvr_e (:,:) = hvr  (:,:) 
    516       ENDIF 
    517       ! 
    518       IF (.NOT.lk_vvl) THEN ! Depths at jn+0.5: 
    519          zhup2_e (:,:) = hu(:,:) 
    520          zhvp2_e (:,:) = hv(:,:) 
    521       ENDIF 
     469      ELSE                                ! CENTRED integration: start from BEFORE fields 
     470         sshn_e(:,:) = sshb (:,:) 
     471         zun_e (:,:) = ub_b (:,:)          
     472         zvn_e (:,:) = vb_b (:,:) 
     473         ! 
     474         hu_e  (:,:) = hu_b (:,:)        
     475         hv_e  (:,:) = hv_b (:,:)  
     476         hur_e (:,:) = hur_b(:,:)     
     477         hvr_e (:,:) = hvr_b(:,:) 
     478      ENDIF 
     479      ! 
     480      ! 
    522481      ! 
    523482      ! Initialize sums: 
     
    560519            DO jj = 2, jpjm1                                    ! Sea Surface Height at u- & v-points 
    561520               DO ji = 2, fs_jpim1   ! Vector opt. 
    562                   zwx(ji,jj) = z1_2 * umask(ji,jj,1) / ( e1u(ji,jj) * e2u(ji,jj) )       & 
    563                      &              * ( e1t(ji  ,jj) * e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    564                      &              +   e1t(ji+1,jj) * e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 
    565                   zwy(ji,jj) = z1_2 * vmask(ji,jj,1) / ( e1v(ji,jj) * e2v(ji,jj) )       & 
    566                      &              * ( e1t(ji,jj  ) * e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    567                      &              +   e1t(ji,jj+1) * e2t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
     521                  zwx(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj)     & 
     522                     &              * ( e12t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
     523                     &              +   e12t(ji+1,jj) * zsshp2_e(ji+1,jj) ) 
     524                  zwy(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj)     & 
     525                     &              * ( e12t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
     526                     &              +   e12t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
    568527               END DO 
    569528            END DO 
     
    572531            zhup2_e (:,:) = hu_0(:,:) + zwx(:,:)               ! Ocean depth at U- and V-points 
    573532            zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 
     533         ELSE 
     534            zhup2_e (:,:) = hu(:,:) 
     535            zhvp2_e (:,:) = hv(:,:) 
    574536         ENDIF 
    575537         !                                                !* after ssh 
     
    583545            DO ji = fs_2, fs_jpim1   ! vector opt. 
    584546               zhdiv(ji,jj) = (   zwx(ji,jj) - zwx(ji-1,jj)   & 
    585                   &             + zwy(ji,jj) - zwy(ji,jj-1)   & 
    586                   &           ) / ( e1t(ji,jj) * e2t(ji,jj) ) 
     547                  &             + zwy(ji,jj) - zwy(ji,jj-1)   ) * r1_e12t(ji,jj) 
    587548            END DO 
    588549         END DO 
     
    609570            DO jj = 2, jpjm1 
    610571               DO ji = 2, jpim1      ! NO Vector Opt. 
    611                   zsshu_a(ji,jj) = z1_2  * umask(ji,jj,1) / ( e1u(ji  ,jj) * e2u(ji  ,jj) )                 & 
    612                      &                                   * ( e1t(ji  ,jj) * e2t(ji  ,jj) * ssha_e(ji  ,jj) & 
    613                      &                                     + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha_e(ji+1,jj) ) 
    614                   zsshv_a(ji,jj) = z1_2  * vmask(ji,jj,1) / ( e1v(ji,jj  ) * e2v(ji,jj  ) )                 & 
    615                      &                                   * ( e1t(ji,jj  ) * e2t(ji,jj  ) * ssha_e(ji,jj  ) & 
    616                      &                                     + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha_e(ji,jj+1) ) 
     572                  zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj)  & 
     573                     &              * ( e12t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
     574                     &              +   e12t(ji+1,jj  ) * ssha_e(ji+1,jj  ) ) 
     575                  zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj)  & 
     576                     &              * ( e12t(ji  ,jj  ) * ssha_e(ji  ,jj  ) & 
     577                     &              +   e12t(ji  ,jj+1) * ssha_e(ji  ,jj+1) ) 
    617578               END DO 
    618579            END DO 
     
    648609            DO jj = 2, jpjm1                             
    649610               DO ji = 2, jpim1 
    650                   zx1 = z1_2 * umask(ji,jj,1) / ( e1u(ji,jj) * e2u(ji,jj) )       & 
    651                     &        * ( e1t(ji  ,jj) * e2t(ji  ,jj) * zsshp2_e(ji  ,jj)  & 
    652                     &        +   e1t(ji+1,jj) * e2t(ji+1,jj) * zsshp2_e(ji+1,jj) )                  
    653                   zy1 = z1_2 * vmask(ji,jj,1) / ( e1v(ji,jj) * e2v(ji,jj) )       & 
    654                      &       * ( e1t(ji,jj  ) * e2t(ji,jj  ) * zsshp2_e(ji,jj  )  & 
    655                      &       +   e1t(ji,jj+1) * e2t(ji,jj+1) * zsshp2_e(ji,jj+1) ) 
     611                  zx1 = z1_2 * umask(ji  ,jj,1) *  r1_e12u(ji  ,jj)    & 
     612                     &      * ( e12t(ji  ,jj  ) * zsshp2_e(ji  ,jj)    & 
     613                     &      +   e12t(ji+1,jj  ) * zsshp2_e(ji+1,jj  ) ) 
     614                  zy1 = z1_2 * vmask(ji  ,jj,1) *  r1_e12v(ji  ,jj  )  & 
     615                     &       * ( e12t(ji ,jj  ) * zsshp2_e(ji  ,jj  )  & 
     616                     &       +   e12t(ji ,jj+1) * zsshp2_e(ji  ,jj+1) ) 
    656617                  zhust_e(ji,jj) = hu_0(ji,jj) + zx1  
    657618                  zhvst_e(ji,jj) = hv_0(ji,jj) + zy1 
     
    833794         DO jj = 1, jpjm1 
    834795            DO ji = 1, jpim1      ! NO Vector Opt. 
    835                zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1) / ( e1u(ji  ,jj) * e2u(ji  ,jj) )                  & 
    836                   &                                  * ( e1t(ji  ,jj) * e2t(ji  ,jj) * ssha(ji  ,jj)     & 
    837                   &                                    + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) ) 
    838                zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1) / ( e1v(ji,jj  ) * e2v(ji,jj  ) )                  & 
    839                   &                                  * ( e1t(ji,jj  ) * e2t(ji,jj  ) * ssha(ji,jj  )     & 
    840                   &                                    + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 
     796               zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1)  * r1_e12u(ji,jj) & 
     797                  &              * ( e12t(ji  ,jj) * ssha_e(ji  ,jj)    & 
     798                  &              +   e12t(ji+1,jj) * ssha_e(ji+1,jj) ) 
     799               zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1)  * r1_e12v(ji,jj) & 
     800                  &              * ( e12t(ji,jj  ) * ssha_e(ji,jj  )    & 
     801                  &              +   e12t(ji,jj+1) * ssha_e(ji,jj+1) ) 
    841802            END DO 
    842803         END DO 
     
    865826         END DO 
    866827      ELSE 
    867          hu_e  (:,:) = umask(:,:,1) / ( zhur_b(:,:) + 1._wp - umask(:,:,1) ) 
    868          hv_e  (:,:) = vmask(:,:,1) / ( zhvr_b(:,:) + 1._wp - vmask(:,:,1) ) 
    869828         DO jk=1,jpkm1 
    870             ua(:,:,jk) = ua(:,:,jk) + hur(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_e(:,:) ) * z1_2dt_b 
    871             va(:,:,jk) = va(:,:,jk) + hvr(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_e(:,:) ) * z1_2dt_b 
     829            ua(:,:,jk) = ua(:,:,jk) + hur(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
     830            va(:,:,jk) = va(:,:,jk) + hvr(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 
    872831         END DO 
    873832         ! Save barotropic velocities not transport: 
     
    890849      CALL wrk_dealloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc ) 
    891850      CALL wrk_dealloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e ) 
    892       CALL wrk_dealloc( jpi, jpj, zhur_b, zhvr_b                                     ) 
    893851      CALL wrk_dealloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
    894       CALL wrk_dealloc( jpi, jpj, zht, zhf ) 
     852      CALL wrk_dealloc( jpi, jpj, zhf ) 
    895853      ! 
    896854      IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_ts') 
     
    989947         CALL iom_get( numror, jpdom_autoglo, 'ub2_b'  , ub2_b  (:,:) )    
    990948         CALL iom_get( numror, jpdom_autoglo, 'vb2_b'  , vb2_b  (:,:) )  
    991          IF( .NOT.ln_bt_av .AND. iom_varid( numror, 'sshbb_e', ldstop = .FALSE. ) > 0) THEN 
     949         IF( .NOT.ln_bt_av ) THEN 
    992950            CALL iom_get( numror, jpdom_autoglo, 'sshbb_e'  , sshbb_e(:,:) )    
    993951            CALL iom_get( numror, jpdom_autoglo, 'ubb_e'    ,   ubb_e(:,:) )    
     
    996954            CALL iom_get( numror, jpdom_autoglo, 'ub_e'     ,    ub_e(:,:) )    
    997955            CALL iom_get( numror, jpdom_autoglo, 'vb_e'     ,    vb_e(:,:) ) 
    998          ELSE 
    999             sshbb_e = sshn_b                                                ! ACC GUESS WORK 
    1000             ubb_e   = ub_b 
    1001             vbb_e   = vb_b 
    1002             sshb_e  = sshn_b 
    1003             ub_e    = ub_b 
    1004             vb_e    = vb_b 
    1005956         ENDIF 
    1006957      ! 
     
    1029980      INTEGER         , INTENT(in) ::   kt         ! ocean time-step 
    1030981      ! 
    1031       INTEGER  :: ji ,jj, jk 
     982      INTEGER  :: ji ,jj 
     983      INTEGER  ::   ios                 ! Local integer output status for namelist read 
    1032984      REAL(wp) :: zxr2, zyr2, zcmax 
    1033       REAL(wp), POINTER, DIMENSION(:,:) :: zcu, zht 
     985      REAL(wp), POINTER, DIMENSION(:,:) :: zcu 
    1034986      !! 
    1035 !      NAMELIST/namsplit/ ln_bt_fw, ln_bt_av, ln_bt_nn_auto, & 
    1036 !      &                  nn_baro, rn_bt_cmax, nn_bt_flt 
     987      NAMELIST/namsplit/ ln_bt_fw, ln_bt_av, ln_bt_nn_auto, & 
     988      &                  nn_baro, rn_bt_cmax, nn_bt_flt 
    1037989      !!---------------------------------------------------------------------- 
    1038 !      REWIND( numnam )              !* Namelist namsplit: split-explicit free surface 
    1039 !      READ  ( numnam, namsplit ) 
     990      ! 
     991      REWIND( numnam_ref )              ! Namelist namsplit in reference namelist : time splitting parameters 
     992      READ  ( numnam_ref, namsplit, IOSTAT = ios, ERR = 901) 
     993901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsplit in reference namelist', lwp ) 
     994 
     995      REWIND( numnam_cfg )              ! Namelist namsplit in configuration namelist : time splitting parameters 
     996      READ  ( numnam_cfg, namsplit, IOSTAT = ios, ERR = 902 ) 
     997902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsplit in configuration namelist', lwp ) 
     998      WRITE ( numond, namsplit ) 
     999      ! 
    10401000      !         ! Max courant number for ext. grav. waves 
    10411001      ! 
    1042       CALL wrk_alloc( jpi, jpj, zcu, zht ) 
    1043       ! 
    1044       ! JC: Simplification needed below: define ht_0 even when volume is fixed 
     1002      CALL wrk_alloc( jpi, jpj, zcu ) 
     1003      ! 
    10451004      IF (lk_vvl) THEN  
    1046          zht(:,:) = ht_0(:,:) * tmask(:,:,1) 
     1005         DO jj = 1, jpj 
     1006            DO ji =1, jpi 
     1007               zxr2 = 1./(e1t(ji,jj)*e1t(ji,jj)) 
     1008               zyr2 = 1./(e2t(ji,jj)*e2t(ji,jj)) 
     1009               zcu(ji,jj) = sqrt(grav*ht_0(ji,jj)*(zxr2 + zyr2) ) 
     1010            END DO 
     1011         END DO 
    10471012      ELSE 
    1048          zht(:,:) = 0. 
    1049          DO jk = 1, jpkm1 
    1050             zht(:,:) = zht(:,:) + fse3t_n(:,:,jk) * tmask(:,:,jk) 
    1051          END DO 
    1052       ENDIF 
    1053  
    1054       DO jj = 1, jpj 
    1055          DO ji =1, jpi 
    1056             zxr2 = 1./(e1t(ji,jj)*e1t(ji,jj)) 
    1057             zyr2 = 1./(e2t(ji,jj)*e2t(ji,jj)) 
    1058             zcu(ji,jj) = sqrt(grav*zht(ji,jj)*(zxr2 + zyr2) ) 
    1059          END DO 
    1060       END DO 
     1013         DO jj = 1, jpj 
     1014            DO ji =1, jpi 
     1015               zxr2 = 1./(e1t(ji,jj)*e1t(ji,jj)) 
     1016               zyr2 = 1./(e2t(ji,jj)*e2t(ji,jj)) 
     1017               zcu(ji,jj) = sqrt(grav*ht(ji,jj)*(zxr2 + zyr2) ) 
     1018            END DO 
     1019         END DO 
     1020      ENDIF 
    10611021 
    10621022      zcmax = MAXVAL(zcu(:,:)) 
    10631023      IF( lk_mpp )   CALL mpp_max( zcmax ) 
    10641024 
    1065       ! Estimate number of iterations to satisfy a max courant number=0.8  
     1025      ! Estimate number of iterations to satisfy a max courant number= rn_bt_cmax 
    10661026      IF (ln_bt_nn_auto) nn_baro = CEILING( rdt / rn_bt_cmax * zcmax) 
    10671027       
     
    10731033      IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    10741034      IF( ln_bt_nn_auto ) THEN 
    1075          IF(lwp) WRITE(numout,*) ' ln_ts_nn_auto=.true. Automatically set nn_baro ' 
    1076          IF(lwp) WRITE(numout,*) ' Max. courant number allowed: ', rn_bt_cmax 
     1035         IF(lwp) WRITE(numout,*) '     ln_ts_nn_auto=.true. Automatically set nn_baro ' 
     1036         IF(lwp) WRITE(numout,*) '     Max. courant number allowed: ', rn_bt_cmax 
    10771037      ELSE 
    1078          IF(lwp) WRITE(numout,*) ' ln_ts_nn_auto=.false.: Use nn_baro in namelist ' 
    1079       ENDIF 
    1080       IF(lwp) WRITE(numout,*) ' nn_baro = ', nn_baro 
    1081       IF(lwp) WRITE(numout,*) ' Barotropic time step [s] is :', rdtbt 
    1082       IF(lwp) WRITE(numout,*) ' Maximum Courant number is   :', zcmax 
     1038         IF(lwp) WRITE(numout,*) '     ln_ts_nn_auto=.false.: Use nn_baro in namelist ' 
     1039      ENDIF 
    10831040 
    10841041      IF(ln_bt_av) THEN 
    1085          IF(lwp) WRITE(numout,*) ' ln_bt_av=.true.  => Time averaging over nn_baro time steps is on ' 
     1042         IF(lwp) WRITE(numout,*) '     ln_bt_av=.true.  => Time averaging over nn_baro time steps is on ' 
    10861043      ELSE 
    1087          IF(lwp) WRITE(numout,*) ' ln_bt_av=.false. => No time averaging of barotropic variables ' 
     1044         IF(lwp) WRITE(numout,*) '     ln_bt_av=.false. => No time averaging of barotropic variables ' 
    10881045      ENDIF 
    10891046      ! 
    10901047      ! 
    10911048      IF(ln_bt_fw) THEN 
    1092          IF(lwp) WRITE(numout,*) ' ln_bt_fw=.true.  => Forward integration of barotropic variables ' 
     1049         IF(lwp) WRITE(numout,*) '     ln_bt_fw=.true.  => Forward integration of barotropic variables ' 
    10931050      ELSE 
    1094          IF(lwp) WRITE(numout,*) ' ln_bt_fw =.false.=> Centred integration of barotropic variables ' 
    1095       ENDIF 
    1096       ! 
    1097       IF(lwp) WRITE(numout,*) ' Time filter choice, nn_bt_flt: ', nn_bt_flt 
     1051         IF(lwp) WRITE(numout,*) '     ln_bt_fw =.false.=> Centred integration of barotropic variables ' 
     1052      ENDIF 
     1053      ! 
     1054      IF(lwp) WRITE(numout,*)    '    Time filter choice, nn_bt_flt: ', nn_bt_flt 
    10981055      SELECT CASE ( nn_bt_flt ) 
    1099            CASE( 0 )  ;   IF(lwp) WRITE(numout,*) '      Dirac' 
    1100            CASE( 1 )  ;   IF(lwp) WRITE(numout,*) '      Boxcar: width = nn_baro' 
    1101            CASE( 2 )  ;   IF(lwp) WRITE(numout,*) '      Boxcar: width = 2*nn_baro'  
     1056           CASE( 0 )  ;   IF(lwp) WRITE(numout,*) '           Dirac' 
     1057           CASE( 1 )  ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = nn_baro' 
     1058           CASE( 2 )  ;   IF(lwp) WRITE(numout,*) '           Boxcar: width = 2*nn_baro'  
    11021059           CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_bt_flt: should 0,1,2' ) 
    11031060      END SELECT 
    11041061      ! 
     1062      IF(lwp) WRITE(numout,*) ' ' 
     1063      IF(lwp) WRITE(numout,*) '     nn_baro = ', nn_baro 
     1064      IF(lwp) WRITE(numout,*) '     Barotropic time step [s] is :', rdtbt 
     1065      IF(lwp) WRITE(numout,*) '     Maximum Courant number is   :', zcmax 
     1066      ! 
    11051067      IF ((.NOT.ln_bt_av).AND.(.NOT.ln_bt_fw)) THEN 
    11061068         CALL ctl_stop( 'dynspg_ts ERROR: No time averaging => only forward integration is possible' ) 
     
    11101072      ENDIF 
    11111073      ! 
    1112       CALL wrk_dealloc( jpi, jpj, zcu, zht ) 
     1074      CALL wrk_dealloc( jpi, jpj, zcu ) 
    11131075      ! 
    11141076   END SUBROUTINE dyn_spg_ts_init 
     
    11161078#else 
    11171079   !!--------------------------------------------------------------------------- 
    1118    !!   Default case :   Empty module   No standard free surface constant volume 
     1080   !!   Default case :   Empty module   No split explicit free surface 
    11191081   !!--------------------------------------------------------------------------- 
    1120  
    1121    USE par_kind 
    1122    LOGICAL, PUBLIC, PARAMETER :: ln_bt_fw=.FALSE. ! Forward integration of barotropic sub-stepping 
    11231082CONTAINS 
    11241083   INTEGER FUNCTION dyn_spg_ts_alloc()    ! Dummy function 
Note: See TracChangeset for help on using the changeset viewer.