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 8637 for branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_umx.F90 – NEMO

Ignore:
Timestamp:
2017-10-18T19:14:32+02:00 (7 years ago)
Author:
gm
Message:

#1911 (ENHANCE-09): PART I.3 - phasing with updated branch dev_r8183_ICEMODEL revision 8626

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_umx.F90

    r8586 r8637  
    124124            CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pv_s(:,:,jl) )         ! Snow volume 
    125125            CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pe_s(:,:,1,jl) )       ! Snow heat content 
    126             IF ( nn_pnd_scheme > 0 ) THEN 
     126            IF ( ln_pnd_H12 ) THEN 
    127127               CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pa_ip(:,:,jl) )     ! Melt pond fraction 
    128128               CALL adv_umx( k_order, kt, zdt, zudy, zvdx, zcu_box, zcv_box, pv_ip(:,:,jl) )     ! Melt pond volume 
     
    191191      SELECT CASE( k_order ) 
    192192      CASE ( 20 )                          ! centered second order 
    193          DO jj = 2, jpjm1 
    194             DO ji = fs_2, fs_jpim1   ! vector opt. 
     193         DO jj = 1, jpjm1 
     194            DO ji = 1, fs_jpim1   ! vector opt. 
    195195               zfu_ho(ji,jj) = 0.5 * puc(ji,jj) * ( ptc(ji,jj) + ptc(ji+1,jj) ) 
    196196               zfv_ho(ji,jj) = 0.5 * pvc(ji,jj) * ( ptc(ji,jj) + ptc(ji,jj+1) ) 
     
    201201         CALL macho( k_order, kt, pdt, ptc, puc, pvc, pubox, pvbox, zt_u, zt_v ) 
    202202         ! 
    203          DO jj = 2, jpjm1 
    204             DO ji = fs_2, fs_jpim1   ! vector opt. 
     203         DO jj = 1, jpjm1 
     204            DO ji = 1, fs_jpim1   ! vector opt. 
    205205               zfu_ho(ji,jj) = puc(ji,jj) * zt_u(ji,jj) 
    206206               zfv_ho(ji,jj) = pvc(ji,jj) * zt_v(ji,jj) 
     
    212212      ! antidiffusive flux : high order minus low order 
    213213      ! -------------------------------------------------- 
    214       DO jj = 2, jpjm1 
    215          DO ji = fs_2, fs_jpim1   ! vector opt. 
     214      DO jj = 1, jpjm1 
     215         DO ji = 1, fs_jpim1   ! vector opt. 
    216216            zfu_ho(ji,jj) = zfu_ho(ji,jj) - zfu_ups(ji,jj) 
    217217            zfv_ho(ji,jj) = zfv_ho(ji,jj) - zfv_ups(ji,jj) 
    218218         END DO 
    219219      END DO 
    220       CALL lbc_lnk_multi( zfu_ho, 'U', -1., zfv_ho, 'V', -1. )         ! Lateral bondary conditions 
    221220       
    222221      ! monotonicity algorithm 
     
    360359      CASE( 1 )                                                   !==  1st order central TIM  ==! (Eq. 21) 
    361360         !         
    362          DO jj = 1, jpj 
     361         DO jj = 2, jpjm1 
    363362            DO ji = 1, fs_jpim1   ! vector opt. 
    364363               pt_u(ji,jj) = 0.5_wp * umask(ji,jj,1) * (                               pt(ji+1,jj) + pt(ji,jj)   & 
     
    369368      CASE( 2 )                                                   !==  2nd order central TIM  ==! (Eq. 23) 
    370369         ! 
    371          DO jj = 1, jpj 
     370         DO jj = 2, jpjm1 
    372371            DO ji = 1, fs_jpim1   ! vector opt. 
    373372               zcu  = puc(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
     
    376375            END DO 
    377376         END DO 
    378          CALL lbc_lnk( pt_u(:,:) , 'U',  1. ) 
    379377         !   
    380378      CASE( 3 )                                                   !==  3rd order central TIM  ==! (Eq. 24) 
    381379         ! 
    382          DO jj = 1, jpj 
     380         DO jj = 2, jpjm1 
    383381            DO ji = 1, fs_jpim1   ! vector opt. 
    384382               zcu  = puc(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
     
    394392      CASE( 4 )                                                   !==  4th order central TIM  ==! (Eq. 27) 
    395393         ! 
    396          DO jj = 1, jpj 
     394         DO jj = 2, jpjm1 
    397395            DO ji = 1, fs_jpim1   ! vector opt. 
    398396               zcu  = puc(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
     
    408406      CASE( 5 )                                                   !==  5th order central TIM  ==! (Eq. 29) 
    409407         ! 
    410          DO jj = 1, jpj 
     408         DO jj = 2, jpjm1 
    411409            DO ji = 1, fs_jpim1   ! vector opt. 
    412410               zcu  = puc(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
     
    485483      CASE( 1 )                                                !==  1st order central TIM  ==! (Eq. 21) 
    486484         DO jj = 1, jpjm1 
    487             DO ji = 1, jpi 
     485            DO ji = fs_2, fs_jpim1 
    488486               pt_v(ji,jj) = 0.5_wp * vmask(ji,jj,1) * (                              ( pt(ji,jj+1) + pt(ji,jj) )  & 
    489487                  &                                     - SIGN( 1._wp, pvc(ji,jj) ) * ( pt(ji,jj+1) - pt(ji,jj) ) ) 
     
    493491      CASE( 2 )                                                !==  2nd order central TIM  ==! (Eq. 23) 
    494492         DO jj = 1, jpjm1 
    495             DO ji = 1, jpi 
     493            DO ji = fs_2, fs_jpim1 
    496494               zcv  = pvc(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    497495               pt_v(ji,jj) = 0.5_wp * vmask(ji,jj,1) * (        ( pt(ji,jj+1) + pt(ji,jj) )  & 
     
    503501      CASE( 3 )                                                !==  3rd order central TIM  ==! (Eq. 24) 
    504502         DO jj = 1, jpjm1 
    505             DO ji = 1, jpi 
     503            DO ji = fs_2, fs_jpim1 
    506504               zcv  = pvc(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    507505               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    516514      CASE( 4 )                                                !==  4th order central TIM  ==! (Eq. 27) 
    517515         DO jj = 1, jpjm1 
    518             DO ji = 1, jpi 
     516            DO ji = fs_2, fs_jpim1 
    519517               zcv  = pvc(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    520518               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    529527      CASE( 5 )                                                !==  5th order central TIM  ==! (Eq. 29) 
    530528         DO jj = 1, jpjm1 
    531             DO ji = 1, jpi 
     529            DO ji = fs_2, fs_jpim1 
    532530               zcv  = pvc(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    533531               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    629627      ! ------------------------------------- 
    630628      DO jj = 2, jpjm1 
    631          DO ji = fs_2, fs_jpim1   ! vector opt. 
     629         DO ji = 1, fs_jpim1   ! vector opt. 
    632630            zau = MIN( 1._wp , zbetdo(ji,jj) , zbetup(ji+1,jj) ) 
    633631            zbu = MIN( 1._wp , zbetup(ji,jj) , zbetdo(ji+1,jj) ) 
    634632            zcu = 0.5  + SIGN( 0.5 , paa(ji,jj) ) 
    635633            ! 
     634            paa(ji,jj) = paa(ji,jj) * ( zcu * zau + ( 1._wp - zcu) * zbu ) 
     635         END DO 
     636      END DO 
     637      ! 
     638      DO jj = 1, jpjm1 
     639         DO ji = fs_2, fs_jpim1   ! vector opt. 
    636640            zav = MIN( 1._wp , zbetdo(ji,jj) , zbetup(ji,jj+1) ) 
    637641            zbv = MIN( 1._wp , zbetup(ji,jj) , zbetdo(ji,jj+1) ) 
    638642            zcv = 0.5  + SIGN( 0.5 , pbb(ji,jj) ) 
    639643            ! 
    640             paa(ji,jj) = paa(ji,jj) * ( zcu * zau + ( 1._wp - zcu) * zbu ) 
    641644            pbb(ji,jj) = pbb(ji,jj) * ( zcv * zav + ( 1._wp - zcv) * zbv ) 
    642             ! 
    643          END DO 
    644       END DO 
    645       CALL lbc_lnk_multi( paa, 'U', -1., pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
     645         END DO 
     646      END DO 
    646647      ! 
    647648!!      IF( nn_timing == 1 )  CALL timing_stop('nonosc_2d') 
Note: See TracChangeset for help on using the changeset viewer.