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

Changeset 4311


Ignore:
Timestamp:
2013-11-22T11:41:01+01:00 (10 years ago)
Author:
cbricaud
Message:

time split corrections ctd

Location:
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r4178 r4311  
    106106      REAL(wp) ::   zue3a, zue3n, zue3b, zuf, zec   ! local scalars 
    107107      REAL(wp) ::   zve3a, zve3n, zve3b, zvf        !   -      - 
    108       REAL(wp), POINTER, DIMENSION(:,:)   ::  zua, zva 
     108      REAL(wp), POINTER, DIMENSION(:,:)   ::  zua, zva, zhura, zhvra 
    109109      REAL(wp), POINTER, DIMENSION(:,:,:) ::  ze3u_f, ze3v_f  
    110110      !!---------------------------------------------------------------------- 
     
    113113      ! 
    114114      CALL wrk_alloc( jpi,jpj,jpk, ze3u_f, ze3v_f ) 
    115       IF ( lk_dynspg_ts ) CALL wrk_alloc( jpi,jpj, zua, zva ) 
     115      IF ( lk_dynspg_ts ) CALL wrk_alloc( jpi,jpj, zua, zva, zhura, zhvra ) 
    116116      ! 
    117117      IF( kt == nit000 ) THEN 
     
    162162      zva(:,:) = 0._wp 
    163163      IF (lk_vvl) THEN 
     164         zhura(:,:) = 0._wp 
     165         zhvra(:,:) = 0._wp 
    164166         DO jk = 1, jpkm1 
    165167            zua(:,:) = zua(:,:) + fse3u_a(:,:,jk) * ua(:,:,jk) * umask(:,:,jk) 
    166168            zva(:,:) = zva(:,:) + fse3v_a(:,:,jk) * va(:,:,jk) * vmask(:,:,jk)     
    167          END DO 
    168          DO jk = 1, jpkm1 
    169             ua(:,:,jk) = ( ua(:,:,jk) - zua(:,:) * hur_e(:,:) + ua_b(:,:) ) * umask(:,:,jk) 
    170             va(:,:,jk) = ( va(:,:,jk) - zva(:,:) * hvr_e(:,:) + va_b(:,:) ) * vmask(:,:,jk) 
     169            zhura(:,:) = zhura(:,:) + fse3u_a(:,:,jk) * umask(:,:,jk) 
     170            zhvra(:,:) = zhvra(:,:) + fse3v_a(:,:,jk) * vmask(:,:,jk) 
     171         END DO 
     172         zhura(:,:) = umask(:,:,1)/(zhura(:,:) + 1._wp - umask(:,:,1))  
     173         zhvra(:,:) = vmask(:,:,1)/(zhvra(:,:) + 1._wp - vmask(:,:,1))   
     174 
     175         DO jk = 1, jpkm1 
     176            ua(:,:,jk) = ( ua(:,:,jk) - zua(:,:) * zhura(:,:) + ua_b(:,:) ) * umask(:,:,jk) 
     177            va(:,:,jk) = ( va(:,:,jk) - zva(:,:) * zhvra(:,:) + va_b(:,:) ) * vmask(:,:,jk) 
    171178         END DO 
    172179      ELSE 
     
    185192         ! prior to asselin filtering      
    186193         ! In the forward case, this is done below after asselin filtering     
     194         ! so that asselin contribution is removed at the same time 
    187195         DO jk = 1, jpkm1 
    188196            un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk) 
     
    333341         ! 
    334342         IF (lk_dynspg_ts.AND.ln_bt_fw) THEN 
    335          ! Remove asselin filtering of barotropic velocities if forward time splitting 
    336          ! note that we replace barotropic velocities by advective velocities        
     343         ! Revert "before" velocities to time split estimate 
     344         ! Doing it here also means that asselin filter contribution is removed   
     345         !  
    337346            zua(:,:) = 0._wp 
    338347            zva(:,:) = 0._wp 
     
    360369      !  
    361370      CALL wrk_dealloc( jpi,jpj,jpk, ze3u_f, ze3v_f ) 
    362       IF ( lk_dynspg_ts ) CALL wrk_dealloc( jpi,jpj, zua, zva ) 
     371      IF ( lk_dynspg_ts ) CALL wrk_dealloc( jpi,jpj, zua, zva , zhura, zhvra) 
    363372      ! 
    364373      IF( nn_timing == 1 )  CALL timing_stop('dyn_nxt') 
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/step.F90

    r4288 r4311  
    126126                                  CALL dyn_spg( kstp, indic )  ! surface pressure gradient 
    127127 
    128                                   hdivb(:,:,:) = hdivn(:,:,:)  ! Store now divergence and rot temporarly, revert to these below  
    129                                   rotb(:,:,:)  = rotn(:,:,:)      
    130                                   ua_sv(:,:,:) = ua(:,:,:)     ! Save trends (barotropic trend has been fully updated) 
     128                                  ua_sv(:,:,:) = ua(:,:,:)     ! Save trends (barotropic trend has been fully updated at this stage) 
    131129                                  va_sv(:,:,:) = va(:,:,:) 
    132130 
     
    134132      ENDIF 
    135133      IF( lk_vvl     )   CALL dom_vvl_sf_nxt( kstp )  ! after vertical scale factors 
    136                          CALL wzv           ( kstp )  ! now cross-level velocity (original) 
     134                         CALL wzv           ( kstp )  ! now cross-level velocity 
    137135 
    138136      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
Note: See TracChangeset for help on using the changeset viewer.