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 14215 for NEMO/trunk/src/ICE – NEMO

Changeset 14215 for NEMO/trunk/src/ICE


Ignore:
Timestamp:
2020-12-18T14:49:22+01:00 (3 years ago)
Author:
acc
Message:

trunk changes to swap the order of arguments to the DO LOOP macros. These changes result in a more natural i-j-k ordering as explained in #2595. SETTE is passed before and after these changes and results are unchanged. This fixes #2595

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

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/ICE/icedyn_adv_pra.F90

    r14103 r14215  
    582582         ! 
    583583         ! Limitation of moments. 
    584          DO_2D( 1, 1, ji0, ji0 ) 
     584         DO_2D( ji0, ji0, 1, 1 ) 
    585585            ! 
    586586            zpsm  = psm (ji,jj,jl) ! optimization 
     
    642642         END_2D 
    643643         ! 
    644          DO_2D( 1, 0, ji0, ji0 ) 
     644         DO_2D( ji0, ji0, 1, 0 ) 
    645645            !                                !  Flux from j+1 to j when v LT 0. 
    646646            zalf          = MAX( 0._wp, -pvt(ji,jj) ) * pdt / psm(ji,jj+1,jl) 
     
    662662         END_2D 
    663663 
    664          DO_2D( 0, 0, ji0, ji0 ) 
     664         DO_2D( ji0, ji0, 0, 0 ) 
    665665            !                                !  Readjust moments remaining in the box. 
    666666            zbt  =         zbet(ji,jj-1) 
  • NEMO/trunk/src/ICE/icedyn_adv_umx.F90

    r14072 r14215  
    491491      IF( pamsk == 0._wp ) THEN 
    492492         DO jl = 1, jpl 
    493             DO_2D( 0, 0, 1, 0 ) 
     493            DO_2D( 1, 0, 0, 0 ) 
    494494               IF( ABS( pu(ji,jj) ) > epsi10 ) THEN 
    495495                  zfu_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) * puc    (ji,jj,jl) / pu(ji,jj) 
     
    501501               ! 
    502502            END_2D 
    503             DO_2D( 1, 0, 0, 0 ) 
     503            DO_2D( 0, 0, 1, 0 ) 
    504504               IF( ABS( pv(ji,jj) ) > epsi10 ) THEN 
    505505                  zfv_ho (ji,jj,jl) = zfv_ho (ji,jj,jl) * pvc    (ji,jj,jl) / pv(ji,jj) 
     
    536536      IF( PRESENT( pua_ho ) ) THEN 
    537537         DO jl = 1, jpl 
    538             DO_2D( 0, 0, 1, 0 ) 
     538            DO_2D( 1, 0, 0, 0 ) 
    539539               pua_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) 
    540540               pua_ups(ji,jj,jl) = zfu_ups(ji,jj,jl) 
    541541            END_2D 
    542             DO_2D( 1, 0, 0, 0 ) 
     542            DO_2D( 0, 0, 1, 0 ) 
    543543               pva_ho (ji,jj,jl) = zfv_ho (ji,jj,jl) 
    544544               pva_ups(ji,jj,jl) = zfv_ups(ji,jj,jl) 
     
    594594            ! 
    595595            DO jl = 1, jpl              !-- flux in x-direction 
    596                DO_2D( 1, 1, 1, 0 ) 
     596               DO_2D( 1, 0, 1, 1 ) 
    597597                  pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * pt(ji+1,jj,jl) 
    598598               END_2D 
     
    600600            ! 
    601601            DO jl = 1, jpl              !-- first guess of tracer from u-flux 
    602                DO_2D( 1, 1, 0, 0 ) 
     602               DO_2D( 0, 0, 1, 1 ) 
    603603                  ztra = - ( pfu_ups(ji,jj,jl) - pfu_ups(ji-1,jj,jl) )              & 
    604604                     &   + ( pu     (ji,jj   ) - pu     (ji-1,jj   ) ) * pt(ji,jj,jl) * (1.-pamsk) 
     
    609609            ! 
    610610            DO jl = 1, jpl              !-- flux in y-direction 
    611                DO_2D( 1, 0, 0, 0 ) 
     611               DO_2D( 0, 0, 1, 0 ) 
    612612                  pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * zpt(ji,jj+1,jl) 
    613613               END_2D 
     
    617617            ! 
    618618            DO jl = 1, jpl              !-- flux in y-direction 
    619                DO_2D( 1, 0, 1, 1 ) 
     619               DO_2D( 1, 1, 1, 0 ) 
    620620                  pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * pt(ji,jj+1,jl) 
    621621               END_2D 
     
    623623            ! 
    624624            DO jl = 1, jpl              !-- first guess of tracer from v-flux 
    625                DO_2D( 0, 0, 1, 1 ) 
     625               DO_2D( 1, 1, 0, 0 ) 
    626626                  ztra = - ( pfv_ups(ji,jj,jl) - pfv_ups(ji,jj-1,jl) )  & 
    627627                     &   + ( pv     (ji,jj   ) - pv     (ji,jj-1   ) ) * pt(ji,jj,jl) * (1.-pamsk) 
     
    632632            ! 
    633633            DO jl = 1, jpl              !-- flux in x-direction 
    634                DO_2D( 0, 0, 1, 0 ) 
     634               DO_2D( 1, 0, 0, 0 ) 
    635635                  pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * zpt(ji+1,jj,jl) 
    636636               END_2D 
     
    681681         ! 
    682682         DO jl = 1, jpl 
     683            DO_2D( 1, 0, 1, 1 ) 
     684               pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj  ,jl) ) 
     685            END_2D 
    683686            DO_2D( 1, 1, 1, 0 ) 
    684                pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj  ,jl) ) 
    685             END_2D 
    686             DO_2D( 1, 0, 1, 1 ) 
    687687               pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji  ,jj+1,jl) ) 
    688688            END_2D 
     
    701701            ! 
    702702            DO jl = 1, jpl              !-- flux in x-direction 
    703                DO_2D( 1, 1, 1, 0 ) 
     703               DO_2D( 1, 0, 1, 1 ) 
    704704                  pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj,jl) ) 
    705705               END_2D 
     
    708708 
    709709            DO jl = 1, jpl              !-- first guess of tracer from u-flux 
    710                DO_2D( 1, 1, 0, 0 ) 
     710               DO_2D( 0, 0, 1, 1 ) 
    711711                  ztra = - ( pfu_ho(ji,jj,jl) - pfu_ho(ji-1,jj,jl) )              & 
    712712                     &   + ( pu    (ji,jj   ) - pu    (ji-1,jj   ) ) * pt(ji,jj,jl) * (1.-pamsk) 
     
    717717 
    718718            DO jl = 1, jpl              !-- flux in y-direction 
    719                DO_2D( 1, 0, 0, 0 ) 
     719               DO_2D( 0, 0, 1, 0 ) 
    720720                  pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji,jj+1,jl) ) 
    721721               END_2D 
     
    726726            ! 
    727727            DO jl = 1, jpl              !-- flux in y-direction 
    728                DO_2D( 1, 0, 1, 1 ) 
     728               DO_2D( 1, 1, 1, 0 ) 
    729729                  pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji,jj+1,jl) ) 
    730730               END_2D 
     
    733733            ! 
    734734            DO jl = 1, jpl              !-- first guess of tracer from v-flux 
    735                DO_2D( 0, 0, 1, 1 ) 
     735               DO_2D( 1, 1, 0, 0 ) 
    736736                  ztra = - ( pfv_ho(ji,jj,jl) - pfv_ho(ji,jj-1,jl) )  & 
    737737                     &   + ( pv    (ji,jj   ) - pv    (ji,jj-1   ) ) * pt(ji,jj,jl) * (1.-pamsk) 
     
    742742            ! 
    743743            DO jl = 1, jpl              !-- flux in x-direction 
    744                DO_2D( 0, 0, 1, 0 ) 
     744               DO_2D( 1, 0, 0, 0 ) 
    745745                  pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji+1,jj,jl) ) 
    746746               END_2D 
     
    899899         ! 
    900900         DO jl = 1, jpl 
    901             DO_2D( 0, 0, 1, 0 ) 
     901            DO_2D( 1, 0, 0, 0 ) 
    902902               pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * (                                pt(ji+1,jj,jl) + pt(ji,jj,jl)   & 
    903903                  &                                         - SIGN( 1._wp, pu(ji,jj) ) * ( pt(ji+1,jj,jl) - pt(ji,jj,jl) ) ) 
     
    908908         ! 
    909909         DO jl = 1, jpl 
    910             DO_2D( 0, 0, 1, 0 ) 
     910            DO_2D( 1, 0, 0, 0 ) 
    911911               zcu  = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
    912912               pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * (                                pt(ji+1,jj,jl) + pt(ji,jj,jl)   & 
     
    918918         ! 
    919919         DO jl = 1, jpl 
    920             DO_2D( 0, 0, 1, 0 ) 
     920            DO_2D( 1, 0, 0, 0 ) 
    921921               zcu  = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
    922922               zdx2 = e1u(ji,jj) * e1u(ji,jj) 
     
    932932         ! 
    933933         DO jl = 1, jpl 
    934             DO_2D( 0, 0, 1, 0 ) 
     934            DO_2D( 1, 0, 0, 0 ) 
    935935               zcu  = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
    936936               zdx2 = e1u(ji,jj) * e1u(ji,jj) 
     
    946946         ! 
    947947         DO jl = 1, jpl 
    948             DO_2D( 0, 0, 1, 0 ) 
     948            DO_2D( 1, 0, 0, 0 ) 
    949949               zcu  = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 
    950950               zdx2 = e1u(ji,jj) * e1u(ji,jj) 
     
    967967      IF( ll_neg ) THEN 
    968968         DO jl = 1, jpl 
    969             DO_2D( 0, 0, 1, 0 ) 
     969            DO_2D( 1, 0, 0, 0 ) 
    970970               IF( pt_u(ji,jj,jl) < 0._wp .OR. ( imsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 
    971971                  pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * (                                pt(ji+1,jj,jl) + pt(ji,jj,jl)   & 
     
    977977      !                                                     !-- High order flux in i-direction  --! 
    978978      DO jl = 1, jpl 
    979          DO_2D( 0, 0, 1, 0 ) 
     979         DO_2D( 1, 0, 0, 0 ) 
    980980            pfu_ho(ji,jj,jl) = pu(ji,jj) * pt_u(ji,jj,jl) 
    981981         END_2D 
     
    10101010      !                                                     !--  Laplacian in j-direction  --! 
    10111011      DO jl = 1, jpl 
    1012          DO_2D( 1, 0, 0, 0 )         ! First derivative (gradient) 
     1012         DO_2D( 0, 0, 1, 0 )         ! First derivative (gradient) 
    10131013            ztv1(ji,jj,jl) = ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 
    10141014         END_2D 
     
    10211021      !                                                     !--  BiLaplacian in j-direction  --! 
    10221022      DO jl = 1, jpl 
    1023          DO_2D( 1, 0, 0, 0 )         ! First derivative 
     1023         DO_2D( 0, 0, 1, 0 )         ! First derivative 
    10241024            ztv3(ji,jj,jl) = ( ztv2(ji,jj+1,jl) - ztv2(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 
    10251025         END_2D 
     
    10351035      CASE( 1 )                                                !==  1st order central TIM  ==! (Eq. 21) 
    10361036         DO jl = 1, jpl 
    1037             DO_2D( 1, 0, 0, 0 ) 
     1037            DO_2D( 0, 0, 1, 0 ) 
    10381038               pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * (                                pt(ji,jj+1,jl) + pt(ji,jj,jl)   & 
    10391039                  &                                         - SIGN( 1._wp, pv(ji,jj) ) * ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) ) 
     
    10431043      CASE( 2 )                                                !==  2nd order central TIM  ==! (Eq. 23) 
    10441044         DO jl = 1, jpl 
    1045             DO_2D( 1, 0, 0, 0 ) 
     1045            DO_2D( 0, 0, 1, 0 ) 
    10461046               zcv  = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    10471047               pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * (                                pt(ji,jj+1,jl) + pt(ji,jj,jl)   & 
     
    10521052      CASE( 3 )                                                !==  3rd order central TIM  ==! (Eq. 24) 
    10531053         DO jl = 1, jpl 
    1054             DO_2D( 1, 0, 0, 0 ) 
     1054            DO_2D( 0, 0, 1, 0 ) 
    10551055               zcv  = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    10561056               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    10651065      CASE( 4 )                                                !==  4th order central TIM  ==! (Eq. 27) 
    10661066         DO jl = 1, jpl 
    1067             DO_2D( 1, 0, 0, 0 ) 
     1067            DO_2D( 0, 0, 1, 0 ) 
    10681068               zcv  = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    10691069               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    10781078      CASE( 5 )                                                !==  5th order central TIM  ==! (Eq. 29) 
    10791079         DO jl = 1, jpl 
    1080             DO_2D( 1, 0, 0, 0 ) 
     1080            DO_2D( 0, 0, 1, 0 ) 
    10811081               zcv  = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 
    10821082               zdy2 = e2v(ji,jj) * e2v(ji,jj) 
     
    10991099      IF( ll_neg ) THEN 
    11001100         DO jl = 1, jpl 
    1101             DO_2D( 1, 0, 0, 0 ) 
     1101            DO_2D( 0, 0, 1, 0 ) 
    11021102               IF( pt_v(ji,jj,jl) < 0._wp .OR. ( jmsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 
    11031103                  pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * (                              ( pt(ji,jj+1,jl) + pt(ji,jj,jl) )  & 
     
    11091109      !                                                     !-- High order flux in j-direction  --! 
    11101110      DO jl = 1, jpl 
    1111          DO_2D( 1, 0, 0, 0 ) 
     1111         DO_2D( 0, 0, 1, 0 ) 
    11121112            pfv_ho(ji,jj,jl) = pv(ji,jj) * pt_v(ji,jj,jl) 
    11131113         END_2D 
     
    11451145      ! -------------------------------------------------- 
    11461146      DO jl = 1, jpl 
     1147         DO_2D( 1, 0, 0, 0 ) 
     1148            pfu_ho(ji,jj,jl) = pfu_ho(ji,jj,jl) - pfu_ups(ji,jj,jl) 
     1149         END_2D 
    11471150         DO_2D( 0, 0, 1, 0 ) 
    1148             pfu_ho(ji,jj,jl) = pfu_ho(ji,jj,jl) - pfu_ups(ji,jj,jl) 
    1149          END_2D 
    1150          DO_2D( 1, 0, 0, 0 ) 
    11511151            pfv_ho(ji,jj,jl) = pfv_ho(ji,jj,jl) - pfv_ups(ji,jj,jl) 
    11521152         END_2D 
     
    12541254      ! --------------------------------- 
    12551255      DO jl = 1, jpl 
    1256          DO_2D( 0, 0, 1, 0 ) 
     1256         DO_2D( 1, 0, 0, 0 ) 
    12571257            zau = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji+1,jj,jl) ) 
    12581258            zbu = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji+1,jj,jl) ) 
     
    12651265         END_2D 
    12661266 
    1267          DO_2D( 1, 0, 0, 0 ) 
     1267         DO_2D( 0, 0, 1, 0 ) 
    12681268            zav = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji,jj+1,jl) ) 
    12691269            zbv = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji,jj+1,jl) ) 
Note: See TracChangeset for help on using the changeset viewer.