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 1241 for trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90 – NEMO

Ignore:
Timestamp:
2009-01-05T17:14:49+01:00 (15 years ago)
Author:
rblod
Message:

Fix a stupid bug for time splitting and ensure restartability for dynspg_ts in addition, see tickets #280 and #292

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r1170 r1241  
    9999      !! * Local declarations 
    100100      INTEGER  ::  ji, jj, jk, jit             ! dummy loop indices 
    101       INTEGER  ::  icycle, ibaro               ! temporary scalar 
     101      INTEGER  ::  icycle                      ! temporary scalar 
    102102      REAL(wp) ::                           & 
    103103         zraur, zcoef, z2dt_e, z2dt_b, zfac25,   &  ! temporary scalars 
     
    128128         IF(lwp) WRITE(numout,*) 'dyn_spg_ts : surface pressure gradient trend' 
    129129         IF(lwp) WRITE(numout,*) '~~~~~~~~~~   free surface with time splitting' 
    130          IF(lwp) WRITE(numout,*) ' Number of sub cycle in 1 time-step (2 rdt) : icycle = ', FLOOR( 2*rdt/rdtbt ) 
     130         IF(lwp) WRITE(numout,*) ' Number of sub cycle in 1 time-step (2 rdt) : icycle = ',  2*nn_baro 
    131131 
    132132         CALL ts_rst( nit000, 'READ' )   ! read or initialize the following fields: 
     
    304304      !---------------- 
    305305      ! Number of iteration of the barotropic loop 
    306       ibaro = FLOOR( rdt / rdtbt ) 
    307       icycle = 3 /2 * ibaro  
     306      icycle = 3  * nn_baro / 2 
    308307 
    309308      ! variables for the barotropic equations 
     
    341340      DO jit = 1, icycle                                   !  sub-time-step loop  ! 
    342341         !                                                 ! ==================== ! 
    343          z2dt_e = 2. * rdtbt 
    344          IF ( jit == 1 )   z2dt_e = rdtbt 
     342         z2dt_e = 2. * ( rdt / nn_baro ) 
     343         IF ( jit == 1 )   z2dt_e = rdt / nn_baro 
    345344 
    346345         ! Time interpolation of open boundary condition data 
     
    484483         ! temporal sum 
    485484         !------------- 
    486          IF( jit >= ibaro/2 ) THEN 
     485         IF( jit >= nn_baro / 2 ) THEN 
    487486            zssha_b(:,:) = zssha_b(:,:) + ssha_e(:,:) 
    488487            zua_b  (:,:) = zua_b  (:,:) + ua_e  (:,:) 
     
    552551 
    553552      ! Time average of after barotropic variables 
    554       zcoef =  1.e0 / ( ibaro + 1 ) 
     553      zcoef =  1.e0 / ( nn_baro + 1 )  
    555554      zssha_b(:,:) = zcoef * zssha_b(:,:)  
    556555      zua_b  (:,:) = zcoef *  zua_b (:,:)  
    557556      zva_b  (:,:) = zcoef *  zva_b (:,:)  
    558557#if defined key_obc 
    559          IF( lp_obc_east  )   sshfoe_b(:,:) = zcoef * sshfoe_b(:,:) 
    560          IF( lp_obc_west  )   sshfow_b(:,:) = zcoef * sshfow_b(:,:) 
    561          IF( lp_obc_north )   sshfon_b(:,:) = zcoef * sshfon_b(:,:) 
    562          IF( lp_obc_south )   sshfos_b(:,:) = zcoef * sshfos_b(:,:) 
     558      IF( lp_obc_east  )   sshfoe_b(:,:) = zcoef * sshfoe_b(:,:) 
     559      IF( lp_obc_west  )   sshfow_b(:,:) = zcoef * sshfow_b(:,:) 
     560      IF( lp_obc_north )   sshfon_b(:,:) = zcoef * sshfon_b(:,:) 
     561      IF( lp_obc_south )   sshfos_b(:,:) = zcoef * sshfos_b(:,:) 
    563562#endif 
    564563      
     
    620619      ! ------------------------------------------ 
    621620      sshb_b(:,:) = sshn_b (:,:) 
    622       IF ( kt == nit000 ) zssha_b(:,:) = sshn(:,:) 
     621      IF ( neuler == 0 .AND. kt == nit000 ) zssha_b(:,:) = sshn(:,:) 
    623622      sshn_b(:,:) = zssha_b(:,:) 
    624623      un_b  (:,:) = zua_b  (:,:)  
Note: See TracChangeset for help on using the changeset viewer.