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 5845 for branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2015-10-31T08:40:45+01:00 (8 years ago)
Author:
gm
Message:

#1613: vvl by default: suppression of domzgr_substitute.h90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r5836 r5845  
    7575 
    7676   !! * Substitutions 
    77 #  include "domzgr_substitute.h90" 
    7877#  include "vectopt_loop_substitute.h90" 
    7978   !!---------------------------------------------------------------------- 
     
    9190      !!---------------------------------------------------------------------- 
    9291      ierr(:) = 0 
    93  
     92      ! 
    9493      ALLOCATE( sshb_e(jpi,jpj), sshbb_e(jpi,jpj), & 
    9594         &      ub_e(jpi,jpj)  , vb_e(jpi,jpj)   , & 
    9695         &      ubb_e(jpi,jpj) , vbb_e(jpi,jpj)  , STAT= ierr(1) ) 
    97  
     96         ! 
    9897      ALLOCATE( wgtbtp1(3*nn_baro), wgtbtp2(3*nn_baro), zwz(jpi,jpj), STAT= ierr(2) ) 
    99  
     98      ! 
    10099      IF( ln_dynvor_een ) ALLOCATE( ftnw(jpi,jpj) , ftne(jpi,jpj) , &  
    101100         &                          ftsw(jpi,jpj) , ftse(jpi,jpj) , STAT=ierr(3) ) 
    102  
    103       dyn_spg_ts_alloc = MAXVAL(ierr(:)) 
    104  
     101      ! 
     102      dyn_spg_ts_alloc = MAXVAL( ierr(:) ) 
    105103      IF( lk_mpp                )   CALL mpp_sum( dyn_spg_ts_alloc ) 
    106104      IF( dyn_spg_ts_alloc /= 0 )   CALL ctl_warn('dynspg_oce_alloc: failed to allocate arrays') 
     
    138136      !!              Ocean Modelling, 9, 347-404.  
    139137      !!--------------------------------------------------------------------- 
    140       ! 
    141138      INTEGER, INTENT(in)  ::   kt   ! ocean time-step index 
    142139      ! 
    143       LOGICAL  ::   ll_fw_start        ! if true, forward integration  
    144       LOGICAL  ::   ll_init             ! if true, special startup of 2d equations 
    145       INTEGER  ::   ji, jj, jk, jn        ! dummy loop indices 
    146       INTEGER  ::   ikbu, ikbv, noffset      ! local integers 
    147       REAL(wp) ::   zraur, z1_2dt_b, z2dt_bf    ! local scalars 
     140      LOGICAL  ::   ll_fw_start      ! if true, forward integration  
     141      LOGICAL  ::   ll_init          ! if true, special startup of 2d equations 
     142      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     143      INTEGER  ::   ikbu, ikbv, noffset        ! local integers 
     144      REAL(wp) ::   zraur, z1_2dt_b, z2dt_bf   ! local scalars 
    148145      REAL(wp) ::   zx1, zy1, zx2, zy2         !   -      - 
    149146      REAL(wp) ::   z1_12, z1_8, z1_4, z1_2    !   -      - 
    150147      REAL(wp) ::   zu_spg, zv_spg             !   -      - 
    151148      REAL(wp) ::   zhura, zhvra               !   -      - 
    152       REAL(wp) ::   za0, za1, za2, za3           !   -      - 
    153       ! 
    154       REAL(wp), POINTER, DIMENSION(:,:) :: zun_e, zvn_e, zsshp2_e 
    155       REAL(wp), POINTER, DIMENSION(:,:) :: zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc 
    156       REAL(wp), POINTER, DIMENSION(:,:) :: zu_sum, zv_sum, zwx, zwy, zhdiv 
    157       REAL(wp), POINTER, DIMENSION(:,:) :: zhup2_e, zhvp2_e, zhust_e, zhvst_e 
    158       REAL(wp), POINTER, DIMENSION(:,:) :: zsshu_a, zsshv_a 
    159       REAL(wp), POINTER, DIMENSION(:,:) :: zhf 
     149      REAL(wp) ::   za0, za1, za2, za3         !   -      - 
     150      ! 
     151      REAL(wp), POINTER, DIMENSION(:,:) ::   zun_e, zvn_e, zsshp2_e 
     152      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_trd, zv_trd, zu_frc, zv_frc, zssh_frc 
     153      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_sum, zv_sum, zwx, zwy, zhdiv 
     154      REAL(wp), POINTER, DIMENSION(:,:) ::   zhup2_e, zhvp2_e, zhust_e, zhvst_e 
     155      REAL(wp), POINTER, DIMENSION(:,:) ::   zsshu_a, zsshv_a 
     156      REAL(wp), POINTER, DIMENSION(:,:) ::   zhf 
    160157      !!---------------------------------------------------------------------- 
    161158      ! 
    162159      IF( nn_timing == 1 )  CALL timing_start('dyn_spg_ts') 
    163160      ! 
    164       !                                         !* Allocate temporary arrays 
    165       CALL wrk_alloc( jpi, jpj, zsshp2_e, zhdiv ) 
    166       CALL wrk_alloc( jpi, jpj, zu_trd, zv_trd, zun_e, zvn_e  ) 
    167       CALL wrk_alloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc) 
    168       CALL wrk_alloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e) 
    169       CALL wrk_alloc( jpi, jpj, zsshu_a, zsshv_a                                   ) 
    170       CALL wrk_alloc( jpi, jpj, zhf ) 
    171       ! 
    172       !                                         !* Local constant initialization 
    173       z1_12 = 1._wp / 12._wp  
     161      CALL wrk_alloc( jpi,jpj,   zsshp2_e, zhdiv ) 
     162      CALL wrk_alloc( jpi,jpj,   zu_trd, zv_trd, zun_e, zvn_e  ) 
     163      CALL wrk_alloc( jpi,jpj,   zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc) 
     164      CALL wrk_alloc( jpi,jpj,   zhup2_e, zhvp2_e, zhust_e, zhvst_e) 
     165      CALL wrk_alloc( jpi,jpj,   zsshu_a, zsshv_a ) 
     166      CALL wrk_alloc( jpi,jpj,   zhf ) 
     167      ! 
     168      z1_12 = 1._wp / 12._wp                 !* Local constant initialization 
    174169      z1_8  = 0.125_wp                                    
    175170      z1_4  = 0.25_wp 
    176171      z1_2  = 0.5_wp      
    177172      zraur = 1._wp / rau0 
    178       ! 
    179       IF( kt == nit000 .AND. neuler == 0 ) THEN    ! reciprocal of baroclinic time step  
    180         z2dt_bf = rdt 
    181       ELSE 
    182         z2dt_bf = 2.0_wp * rdt 
     173      !                                            ! reciprocal of baroclinic time step  
     174      IF( kt == nit000 .AND. neuler == 0 ) THEN   ;   z2dt_bf =          rdt 
     175      ELSE                                        ;   z2dt_bf = 2.0_wp * rdt 
    183176      ENDIF 
    184177      z1_2dt_b = 1.0_wp / z2dt_bf  
    185178      ! 
    186       ll_init = ln_bt_av                           ! if no time averaging, then no specific restart  
     179      ll_init     = ln_bt_av                       ! if no time averaging, then no specific restart  
    187180      ll_fw_start = .FALSE. 
    188       ! 
    189                                                        ! time offset in steps for bdy data update 
    190       IF (.NOT.ln_bt_fw) THEN ; noffset=-2*nn_baro ; ELSE ;  noffset = 0 ; ENDIF 
     181      !                                            ! time offset in steps for bdy data update 
     182      IF( .NOT.ln_bt_fw ) THEN   ;   noffset =-2*nn_baro 
     183      ELSE                       ;   noffset = 0  
     184      ENDIF 
    191185      ! 
    192186      IF( kt == nit000 ) THEN                !* initialisation 
     
    197191         IF(lwp) WRITE(numout,*) 
    198192         ! 
    199          IF (neuler==0) ll_init=.TRUE. 
    200          ! 
    201          IF (ln_bt_fw.OR.(neuler==0)) THEN 
    202            ll_fw_start=.TRUE. 
    203            noffset = 0 
     193         IF( neuler == 0 )  ll_init=.TRUE. 
     194         ! 
     195         IF( ln_bt_fw .OR. neuler == 0 ) THEN 
     196            ll_fw_start=.TRUE. 
     197            noffset = 0 
    204198         ELSE 
    205            ll_fw_start=.FALSE. 
     199            ll_fw_start=.FALSE. 
    206200         ENDIF 
    207201         ! 
    208202         ! Set averaging weights and cycle length: 
    209          CALL ts_wgt(ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2) 
    210          ! 
     203         CALL ts_wgt( ln_bt_av, ll_fw_start, icycle, wgtbtp1, wgtbtp2 ) 
    211204         ! 
    212205      ENDIF 
     
    225218               DO jj = 1, jpjm1 
    226219                  DO ji = 1, jpim1 
    227                      zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                    & 
    228                         &             ht(ji  ,jj  ) + ht(ji+1,jj  )   ) / 4._wp   
     220                     zwz(ji,jj) =   ( ht_n(ji  ,jj+1) + ht_n(ji+1,jj+1) +                    & 
     221                        &             ht_n(ji  ,jj  ) + ht_n(ji+1,jj  )   ) / 4._wp   
    229222                     IF( zwz(ji,jj) /= 0._wp )   zwz(ji,jj) = ff(ji,jj) / zwz(ji,jj) 
    230223                  END DO 
     
    233226               DO jj = 1, jpjm1 
    234227                  DO ji = 1, jpim1 
    235                      zwz(ji,jj) =   ( ht(ji  ,jj+1) + ht(ji+1,jj+1) +                     & 
    236                         &             ht(ji  ,jj  ) + ht(ji+1,jj  )   )                   & 
     228                     zwz(ji,jj) =   ( ht_n(ji  ,jj+1) + ht_n(ji+1,jj+1) +                     & 
     229                        &             ht_n(ji  ,jj  ) + ht_n(ji+1,jj  )   )                   & 
    237230                        &       / ( MAX( 1._wp, tmask(ji  ,jj+1, 1) + tmask(ji+1,jj+1, 1) +    & 
    238231                        &                       tmask(ji  ,jj  , 1) + tmask(ji+1,jj  , 1) ) ) 
     
    276269            DO jk = 1, jpkm1 
    277270               DO jj = 1, jpjm1 
    278                   zhf(:,jj) = zhf(:,jj) + fse3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
     271                  zhf(:,jj) = zhf(:,jj) + e3f_n(:,jj,jk) * umask(:,jj,jk) * umask(:,jj+1,jk) 
    279272               END DO 
    280273            END DO 
     
    308301      ! 
    309302      DO jk = 1, jpkm1 
    310          zu_frc(:,:) = zu_frc(:,:) + fse3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
    311          zv_frc(:,:) = zv_frc(:,:) + fse3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)          
     303         zu_frc(:,:) = zu_frc(:,:) + e3u_n(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
     304         zv_frc(:,:) = zv_frc(:,:) + e3v_n(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)          
    312305      END DO 
    313306      ! 
    314       zu_frc(:,:) = zu_frc(:,:) * hur(:,:) 
    315       zv_frc(:,:) = zv_frc(:,:) * hvr(:,:) 
     307      zu_frc(:,:) = zu_frc(:,:) * r1_hu_n(:,:) 
     308      zv_frc(:,:) = zv_frc(:,:) * r1_hv_n(:,:) 
    316309      ! 
    317310      ! 
     
    327320      !                                   !* barotropic Coriolis trends (vorticity scheme dependent) 
    328321      !                                   ! -------------------------------------------------------- 
    329       zwx(:,:) = un_b(:,:) * hu(:,:) * e2u(:,:)        ! now fluxes  
    330       zwy(:,:) = vn_b(:,:) * hv(:,:) * e1v(:,:) 
     322      zwx(:,:) = un_b(:,:) * hu_n(:,:) * e2u(:,:)        ! now fluxes  
     323      zwy(:,:) = vn_b(:,:) * hv_n(:,:) * e1v(:,:) 
    331324      ! 
    332325      IF( ln_dynvor_ene .OR. ln_dynvor_mix ) THEN      ! energy conserving or mixed scheme 
     
    411404      ! 
    412405      ! Note that the "unclipped" bottom friction parameter is used even with explicit drag 
    413       zu_frc(:,:) = zu_frc(:,:) + hur(:,:) * bfrua(:,:) * zwx(:,:) 
    414       zv_frc(:,:) = zv_frc(:,:) + hvr(:,:) * bfrva(:,:) * zwy(:,:) 
     406      zu_frc(:,:) = zu_frc(:,:) + r1_hu_n(:,:) * bfrua(:,:) * zwx(:,:) 
     407      zv_frc(:,:) = zv_frc(:,:) + r1_hv_n(:,:) * bfrva(:,:) * zwy(:,:) 
    415408      !        
    416409      IF (ln_bt_fw) THEN                        ! Add wind forcing 
    417          zu_frc(:,:) =  zu_frc(:,:) + zraur * utau(:,:) * hur(:,:) 
    418          zv_frc(:,:) =  zv_frc(:,:) + zraur * vtau(:,:) * hvr(:,:) 
     410         zu_frc(:,:) =  zu_frc(:,:) + zraur * utau(:,:) * r1_hu_n(:,:) 
     411         zv_frc(:,:) =  zv_frc(:,:) + zraur * vtau(:,:) * r1_hv_n(:,:) 
    419412      ELSE 
    420          zu_frc(:,:) =  zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * hur(:,:) 
    421          zv_frc(:,:) =  zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * hvr(:,:) 
     413         zu_frc(:,:) =  zu_frc(:,:) + zraur * z1_2 * ( utau_b(:,:) + utau(:,:) ) * r1_hu_n(:,:) 
     414         zv_frc(:,:) =  zv_frc(:,:) + zraur * z1_2 * ( vtau_b(:,:) + vtau(:,:) ) * r1_hv_n(:,:) 
    422415      ENDIF   
    423416      ! 
     
    484477      ! 
    485478      IF (ln_bt_fw) THEN                  ! FORWARD integration: start from NOW fields                     
    486          sshn_e(:,:) = sshn (:,:)             
    487          zun_e (:,:) = un_b (:,:)             
    488          zvn_e (:,:) = vn_b (:,:) 
    489          ! 
    490          hu_e  (:,:) = hu   (:,:)        
    491          hv_e  (:,:) = hv   (:,:)  
    492          hur_e (:,:) = hur  (:,:)     
    493          hvr_e (:,:) = hvr  (:,:) 
     479         sshn_e(:,:) = sshn(:,:)             
     480         zun_e (:,:) = un_b(:,:)             
     481         zvn_e (:,:) = vn_b(:,:) 
     482         ! 
     483         hu_e  (:,:) =    hu_n(:,:)        
     484         hv_e  (:,:) =    hv_n(:,:)  
     485         hur_e (:,:) = r1_hu_n(:,:)     
     486         hvr_e (:,:) = r1_hv_n(:,:) 
    494487      ELSE                                ! CENTRED integration: start from BEFORE fields 
    495          sshn_e(:,:) = sshb (:,:) 
    496          zun_e (:,:) = ub_b (:,:)          
    497          zvn_e (:,:) = vb_b (:,:) 
    498          ! 
    499          hu_e  (:,:) = hu_b (:,:)        
    500          hv_e  (:,:) = hv_b (:,:)  
    501          hur_e (:,:) = hur_b(:,:)     
    502          hvr_e (:,:) = hvr_b(:,:) 
     488         sshn_e(:,:) = sshb(:,:) 
     489         zun_e (:,:) = ub_b(:,:)          
     490         zvn_e (:,:) = vb_b(:,:) 
     491         ! 
     492         hu_e  (:,:) =    hu_b(:,:)        
     493         hv_e  (:,:) =    hv_b(:,:)  
     494         hur_e (:,:) = r1_hu_b(:,:)     
     495         hvr_e (:,:) = r1_hv_b(:,:) 
    503496      ENDIF 
    504497      ! 
     
    519512#if defined key_tide 
    520513         IF ( lk_bdy .AND. lk_tide )      CALL bdy_dta_tides( kt, kit=jn, time_offset=(noffset+1) ) 
    521          IF ( ln_tide_pot .AND. lk_tide ) CALL upd_tide( kt, kit=jn, koffset=noffset ) 
     514         IF ( ln_tide_pot .AND. lk_tide ) CALL upd_tide     ( kt, kit=jn, koffset=noffset ) 
    522515#endif 
    523516         ! 
     
    557550            zhvp2_e (:,:) = hv_0(:,:) + zwy(:,:) 
    558551         ELSE 
    559             zhup2_e (:,:) = hu(:,:) 
    560             zhvp2_e (:,:) = hv(:,:) 
     552            zhup2_e (:,:) = hu_n(:,:) 
     553            zhvp2_e (:,:) = hv_n(:,:) 
    561554         ENDIF 
    562555         !                                                !* after ssh 
     
    775768                            &     + rdtbt * ( zhust_e(ji,jj)  *    zwx(ji,jj)   &  
    776769                            &               + zhup2_e(ji,jj)  * zu_trd(ji,jj)   & 
    777                             &               +      hu(ji,jj)  * zu_frc(ji,jj) ) & 
     770                            &               +    hu_n(ji,jj)  * zu_frc(ji,jj) ) & 
    778771                            &   ) * zhura 
    779772 
     
    781774                            &     + rdtbt * ( zhvst_e(ji,jj)  *    zwy(ji,jj)   & 
    782775                            &               + zhvp2_e(ji,jj)  * zv_trd(ji,jj)   & 
    783                             &               +      hv(ji,jj)  * zv_frc(ji,jj) ) & 
     776                            &               +    hv_n(ji,jj)  * zv_frc(ji,jj) ) & 
    784777                            &   ) * zhvra 
    785778               END DO 
     
    857850      ! 
    858851      ! Set advection velocity correction: 
    859       IF (((kt==nit000).AND.(neuler==0)).OR.(.NOT.ln_bt_fw)) THEN      
    860          un_adv(:,:) = zu_sum(:,:)*hur(:,:) 
    861          vn_adv(:,:) = zv_sum(:,:)*hvr(:,:) 
     852      IF( ( kt == nit000 .AND. neuler==0 ) .OR. .NOT.ln_bt_fw ) THEN      
     853         un_adv(:,:) = zu_sum(:,:) * r1_hu_n(:,:) 
     854         vn_adv(:,:) = zv_sum(:,:) * r1_hv_n(:,:) 
    862855      ELSE 
    863          un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zu_sum(:,:)) * hur(:,:) 
    864          vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zv_sum(:,:)) * hvr(:,:) 
     856         un_adv(:,:) = z1_2 * ( ub2_b(:,:) + zu_sum(:,:) ) * r1_hu_n(:,:) 
     857         vn_adv(:,:) = z1_2 * ( vb2_b(:,:) + zv_sum(:,:) ) * r1_hv_n(:,:) 
    865858      END IF 
    866859 
    867       IF (ln_bt_fw) THEN ! Save integrated transport for next computation 
     860      IF( ln_bt_fw ) THEN ! Save integrated transport for next computation 
    868861         ub2_b(:,:) = zu_sum(:,:) 
    869862         vb2_b(:,:) = zv_sum(:,:) 
     
    871864      ! 
    872865      ! Update barotropic trend: 
    873       IF (( ln_dynadv_vec ).OR. (.NOT. lk_vvl)) THEN 
     866      IF( ln_dynadv_vec .OR. .NOT.lk_vvl ) THEN 
    874867         DO jk=1,jpkm1 
    875868            ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 
     
    878871      ELSE 
    879872         DO jk=1,jpkm1 
    880             ua(:,:,jk) = ua(:,:,jk) + hur(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
    881             va(:,:,jk) = va(:,:,jk) + hvr(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 
     873            ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 
     874            va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 
    882875         END DO 
    883876         ! Save barotropic velocities not transport: 
    884          ua_b  (:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - umask(:,:,1) ) 
    885          va_b  (:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - vmask(:,:,1) ) 
     877         ua_b(:,:) =  ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - umask(:,:,1) ) 
     878         va_b(:,:) =  va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - vmask(:,:,1) ) 
    886879      ENDIF 
    887880      ! 
    888881      DO jk = 1, jpkm1 
    889882         ! Correct velocities: 
    890          un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) )*umask(:,:,jk) 
    891          vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) )*vmask(:,:,jk) 
     883         un(:,:,jk) = ( un(:,:,jk) + un_adv(:,:) - un_b(:,:) ) * umask(:,:,jk) 
     884         vn(:,:,jk) = ( vn(:,:,jk) + vn_adv(:,:) - vn_b(:,:) ) * vmask(:,:,jk) 
    892885         ! 
    893886      END DO 
     
    897890      ! (used to update coarse grid transports at next time step) 
    898891      ! 
    899       IF ( (.NOT.Agrif_Root()).AND.(ln_bt_fw) ) THEN 
    900          IF ( Agrif_NbStepint().EQ.0 ) THEN 
    901             ub2_i_b(:,:) = 0.e0 
    902             vb2_i_b(:,:) = 0.e0 
     892      IF( .NOT.Agrif_Root() .AND. ln_bt_fw ) THEN 
     893         IF( Agrif_NbStepint() == 0 ) THEN 
     894            ub2_i_b(:,:) = 0._wp 
     895            vb2_i_b(:,:) = 0._wp 
    903896         END IF 
    904897         ! 
     
    912905      ! 
    913906      !                                   !* write time-spliting arrays in the restart 
    914       IF(lrst_oce .AND.ln_bt_fw)   CALL ts_rst( kt, 'WRITE' ) 
    915       ! 
    916       CALL wrk_dealloc( jpi, jpj, zsshp2_e, zhdiv ) 
    917       CALL wrk_dealloc( jpi, jpj, zu_trd, zv_trd, zun_e, zvn_e ) 
    918       CALL wrk_dealloc( jpi, jpj, zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc ) 
    919       CALL wrk_dealloc( jpi, jpj, zhup2_e, zhvp2_e, zhust_e, zhvst_e ) 
    920       CALL wrk_dealloc( jpi, jpj, zsshu_a, zsshv_a                                  ) 
    921       CALL wrk_dealloc( jpi, jpj, zhf ) 
     907      IF( lrst_oce .AND.ln_bt_fw )   CALL ts_rst( kt, 'WRITE' ) 
     908      ! 
     909      CALL wrk_dealloc( jpi,jpj,  zsshp2_e, zhdiv ) 
     910      CALL wrk_dealloc( jpi,jpj,  zu_trd, zv_trd, zun_e, zvn_e ) 
     911      CALL wrk_dealloc( jpi,jpj,  zwx, zwy, zu_sum, zv_sum, zssh_frc, zu_frc, zv_frc ) 
     912      CALL wrk_dealloc( jpi,jpj,  zhup2_e, zhvp2_e, zhust_e, zhvst_e ) 
     913      CALL wrk_dealloc( jpi,jpj,   zsshu_a, zsshv_a ) 
     914      CALL wrk_dealloc( jpi,jpj,  zhf ) 
    922915      ! 
    923916      IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_ts') 
    924917      ! 
    925918   END SUBROUTINE dyn_spg_ts 
     919 
    926920 
    927921   SUBROUTINE ts_wgt( ll_av, ll_fw, jpit, zwgt1, zwgt2) 
     
    10941088         END DO 
    10951089      ELSE 
     1090!!gm  BUG ??  restartability issue if ssh changes are large.... 
     1091!!gm          We should just test this with ht_0 only, no? 
    10961092         DO jj = 1, jpj 
    10971093            DO ji =1, jpi 
    10981094               zxr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
    10991095               zyr2 = r1_e1t(ji,jj) * r1_e1t(ji,jj) 
    1100                zcu(ji,jj) = SQRT( grav * ht(ji,jj) * (zxr2 + zyr2) ) 
     1096               zcu(ji,jj) = SQRT( grav * ht_n(ji,jj) * (zxr2 + zyr2) ) 
    11011097            END DO 
    11021098         END DO 
Note: See TracChangeset for help on using the changeset viewer.