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 15627 for NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stprk3_stg.F90 – NEMO

Ignore:
Timestamp:
2022-01-04T19:30:17+01:00 (3 years ago)
Author:
techene
Message:

#2605 qco r3. ratios management optimised (RK3) and some cleanning (MLF)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/stprk3_stg.F90

    r15621 r15627  
    4949   REAL(wp) ::   r2_3 = 2._wp / 3._wp 
    5050 
    51    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssha         ! sea-surface height  at N+1 
    52    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ua_b, va_b   ! barotropic velocity at N+1 
     51   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ssha                    ! sea-surface height  at N+1 
     52   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   r3ta, r3ua, r3va, r3fa, r3fb   ! ssh/h_0 ratio at t,u,v-column 
     53   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ua_b, va_b              ! barotropic velocity at N+1 
    5354 
    5455   !! * Substitutions 
     
    120121         vv_b(:,:,Kaa) = r2_3 * vv_b(:,:,Kbb) + r1_3 * va_b(:,:) 
    121122         ! 
     123         ! 
     124         !                     !==  ssh/h0 ratio at Kaa  ==!  
     125         ! 
     126         IF( .NOT.lk_linssh ) THEN     ! "after" ssh/h_0 ratio at t,u,v-column 
     127            ! 
     128            ALLOCATE( r3ta(jpi,jpj) , r3ua(jpi,jpj) , r3va(jpi,jpj) , r3fa(jpi,jpj) , r3fb(jpi,jpj) ) 
     129            ! 
     130            r3fb(:,:) = r3f(:,:)       !!st dirty fix check with gm 
     131            CALL dom_qco_r3c_RK3( ssha, r3ta, r3ua, r3va, r3fa ) 
     132            ! 
     133            CALL lbc_lnk( 'stprk3_stg', r3ua, 'U', 1._wp, r3va, 'V', 1._wp, r3fa, 'F', 1._wp ) 
     134            ! 
     135            r3t(:,:,Kaa) = r2_3 * r3t(:,:,Kbb) + r1_3 * r3ta(:,:) 
     136            r3u(:,:,Kaa) = r2_3 * r3u(:,:,Kbb) + r1_3 * r3ua(:,:) 
     137            r3v(:,:,Kaa) = r2_3 * r3v(:,:,Kbb) + r1_3 * r3va(:,:) 
     138            r3f(:,:) = r2_3 * r3fb(:,:) + r1_3 * r3fa(:,:) 
     139         ENDIF 
     140         ! 
    122141         !                 !---------------! 
    123142      CASE ( 2 )           !==  Stage 2  ==!   Kbb = N   ;   Kmm = N+1/3   ;   Kaa = N+1/2 
     
    132151         vv_b(:,:,Kaa) = r1_2 * ( vv_b(:,:,Kbb) + va_b(:,:) ) 
    133152         ! 
     153         IF( .NOT.lk_linssh ) THEN 
     154            r3t(:,:,Kaa) = r1_2 * ( r3t(:,:,Kbb) + r3ta(:,:) ) 
     155            r3u(:,:,Kaa) = r1_2 * ( r3u(:,:,Kbb) + r3ua(:,:) ) 
     156            r3v(:,:,Kaa) = r1_2 * ( r3v(:,:,Kbb) + r3va(:,:) ) 
     157            r3f(:,:) = r1_2 * ( r3fb(:,:) + r3fa(:,:) ) 
     158         ENDIF 
     159         ! 
    134160         !                 !---------------! 
    135161      CASE ( 3 )           !==  Stage 3  ==!   Kbb = N   ;   Kmm = N+1/2   ;   Kaa = N+1 
     
    145171         DEALLOCATE( ssha , ua_b , va_b ) 
    146172         ! 
     173         IF( .NOT.lk_linssh ) THEN 
     174            r3t(:,:,Kaa) = r3ta(:,:) 
     175            r3u(:,:,Kaa) = r3ua(:,:) 
     176            r3v(:,:,Kaa) = r3va(:,:) 
     177            r3f(:,:    ) = r3fa(:,:) 
     178            DEALLOCATE( r3ta, r3ua, r3va, r3fa, r3fb ) 
     179            ! 
     180         ENDIF 
     181         ! 
    147182      END SELECT 
    148       ! 
    149       !                     !==  ssh/h0 ratio at Kaa  ==!  
    150       ! 
    151       IF( .NOT.lk_linssh )   CALL dom_qco_r3c( ssh(:,:,Kaa), r3t(:,:,Kaa), r3u(:,:,Kaa), r3v(:,:,Kaa), r3f(:,:) )   ! "after" ssh/h_0 ratio at t,u,v-column 
    152 !!      SELECT CASE( kstg ) 
    153          ! 
    154 !!      CASE ( 3 ) 
    155          !!st required at each stage for div hor loops 
    156          CALL lbc_lnk( 'stprk3_stg', r3u(:,:,Kaa), 'U', 1._wp, r3v(:,:,Kaa), 'V', 1._wp, r3f(:,:), 'F', 1._wp ) 
    157          ! 
    158 !!      END SELECT 
    159183      ! 
    160184      ! 
Note: See TracChangeset for help on using the changeset viewer.