Changeset 10907


Ignore:
Timestamp:
2019-04-29T17:54:07+02:00 (18 months ago)
Author:
clem
Message:

solve ticket #2275

Location:
NEMO/trunk/src/OCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/DYN/sshwzv.F90

    r10425 r10907  
    297297         IF(lwp) WRITE(numout,*) 'wAimp : Courant number-based partitioning of now vertical velocity ' 
    298298         IF(lwp) WRITE(numout,*) '~~~~~ ' 
    299          ! 
    300          Cu_adv(:,:,jpk) = 0._wp              ! bottom value : Cu_adv=0 (set once for all) 
    301       ENDIF 
     299      ENDIF 
     300      ! 
    302301      ! 
    303302      DO jk = 1, jpkm1            ! calculate Courant numbers 
     
    305304            DO ji = 2, fs_jpim1   ! vector opt. 
    306305               z1_e3w = 1._wp / e3w_n(ji,jj,jk) 
    307                Cu_adv(ji,jj,jk) = r2dt * ( ( MAX( wn(ji,jj,jk) , 0._wp ) - MIN( wn(ji,jj,jk+1) , 0._wp ) )    & 
    308                   &                      + ( MAX( e2u(ji  ,jj)*e3uw_n(ji  ,jj,jk)*un(ji  ,jj,jk), 0._wp ) -   & 
    309                   &                          MIN( e2u(ji-1,jj)*e3uw_n(ji-1,jj,jk)*un(ji-1,jj,jk), 0._wp ) )   & 
    310                   &                        * r1_e1e2t(ji,jj)                                                  & 
    311                   &                      + ( MAX( e1v(ji,jj  )*e3vw_n(ji,jj  ,jk)*vn(ji,jj  ,jk), 0._wp ) -   & 
    312                   &                          MIN( e1v(ji,jj-1)*e3vw_n(ji,jj-1,jk)*vn(ji,jj-1,jk), 0._wp ) )   & 
    313                   &                        * r1_e1e2t(ji,jj)                                                  & 
    314                   &                      ) * z1_e3w 
     306               Cu_adv(ji,jj,jk) = 2._wp * rdt * ( ( MAX( wn(ji,jj,jk) , 0._wp ) - MIN( wn(ji,jj,jk+1) , 0._wp ) )    &  ! 2*rdt and not r2dt (for restartability) 
     307                  &                             + ( MAX( e2u(ji  ,jj)*e3uw_n(ji  ,jj,jk)*un(ji  ,jj,jk), 0._wp ) -   & 
     308                  &                                 MIN( e2u(ji-1,jj)*e3uw_n(ji-1,jj,jk)*un(ji-1,jj,jk), 0._wp ) )   & 
     309                  &                               * r1_e1e2t(ji,jj)                                                  & 
     310                  &                             + ( MAX( e1v(ji,jj  )*e3vw_n(ji,jj  ,jk)*vn(ji,jj  ,jk), 0._wp ) -   & 
     311                  &                                 MIN( e1v(ji,jj-1)*e3vw_n(ji,jj-1,jk)*vn(ji,jj-1,jk), 0._wp ) )   & 
     312                  &                               * r1_e1e2t(ji,jj)                                                  & 
     313                  &                             ) * z1_e3w 
    315314            END DO 
    316315         END DO 
    317316      END DO 
     317      CALL lbc_lnk( 'sshwzv', Cu_adv, 'T', 1. ) 
    318318      ! 
    319319      CALL iom_put("Courant",Cu_adv) 
    320320      ! 
    321       wi(:,:,:) = 0._wp                                 ! Includes top and bottom values set to zero 
    322321      IF( MAXVAL( Cu_adv(:,:,:) ) > Cu_min ) THEN       ! Quick check if any breaches anywhere 
    323322         DO jk = 1, jpkm1                               ! or scan Courant criterion and partition 
    324             DO jj = 2, jpjm1                            ! w where necessary 
    325                DO ji = 2, fs_jpim1   ! vector opt. 
     323            DO jj = 1, jpj                              ! w where necessary 
     324               DO ji = 1, jpi 
    326325                  ! 
    327326                  zCu = MAX( Cu_adv(ji,jj,jk) , Cu_adv(ji,jj,jk+1) ) 
    328327                  ! 
    329                   IF( zCu < Cu_min ) THEN               !<-- Fully explicit 
     328                  IF( zCu <= Cu_min ) THEN              !<-- Fully explicit 
    330329                     zcff = 0._wp 
    331330                  ELSEIF( zCu < Cu_cut ) THEN           !<-- Mixed explicit 
     
    346345      ELSE 
    347346         ! Fully explicit everywhere 
    348          Cu_adv = 0.0_wp                                ! Reuse array to output coefficient 
     347         Cu_adv(:,:,:) = 0._wp                          ! Reuse array to output coefficient 
     348         wi    (:,:,:) = 0._wp 
    349349      ENDIF 
    350350      CALL iom_put("wimp",wi)  
  • NEMO/trunk/src/OCE/ZDF/zdfphy.F90

    r10425 r10907  
    132132      IF( ln_zad_Aimp ) THEN 
    133133         IF( zdf_phy_alloc() /= 0 )   & 
    134         &       CALL ctl_stop( 'STOP', 'zdf_phy_init : unable to allocate adaptive-implicit z-advection arrays' ) 
    135          wi(:,:,:) = 0._wp 
     134            &       CALL ctl_stop( 'STOP', 'zdf_phy_init : unable to allocate adaptive-implicit z-advection arrays' ) 
     135         Cu_adv(:,:,:) = 0._wp 
     136         wi    (:,:,:) = 0._wp 
    136137      ENDIF 
    137138      !                          !==  Background eddy viscosity and diffusivity  ==! 
Note: See TracChangeset for help on using the changeset viewer.