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 13295 for NEMO/trunk/src/OCE/SBC – NEMO

Ignore:
Timestamp:
2020-07-10T20:24:21+02:00 (4 years ago)
Author:
acc
Message:

Replace do-loop macros in the trunk with alternative forms with greater flexibility for extra halo applications. This alters a lot of routines but does not change any behaviour or results. do_loop_substitute.h90 is greatly simplified by this change. SETTE results are identical to those with the previous revision

Location:
NEMO/trunk/src/OCE/SBC
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/SBC/cyclone.F90

    r12377 r13295  
    147147            zb = 2. 
    148148 
    149             DO_2D_11_11 
     149            DO_2D( 1, 1, 1, 1 ) 
    150150 
    151151               ! calc distance between TC center and any point following great circle 
     
    208208            ENDIF            
    209209         
    210             DO_2D_11_11 
     210            DO_2D( 1, 1, 1, 1 ) 
    211211                                
    212212               zzrglam = rad * glamt(ji,jj) - zrlon 
  • NEMO/trunk/src/OCE/SBC/fldread.F90

    r13286 r13295  
    11691169            WRITE(clname,'(a3,i2.2)') 'src',jn 
    11701170            CALL iom_get ( inum, jpdom_global, clname, data_tmp(:,:), cd_type = 'Z' )   !  no call to lbc_lnk 
    1171             DO_2D_00_00 
     1171            DO_2D( 0, 0, 0, 0 ) 
    11721172               isrc = NINT(data_tmp(ji,jj)) - 1 
    11731173               ref_wgts(nxt_wgt)%data_jpi(ji,jj,jn) = 1 + MOD(isrc,  ref_wgts(nxt_wgt)%ddims(1)) 
     
    11791179            WRITE(clname,'(a3,i2.2)') 'wgt',jn 
    11801180            CALL iom_get ( inum, jpdom_global, clname, data_tmp(:,:), cd_type = 'Z' )   !  no call to lbc_lnk 
    1181             DO_2D_00_00 
     1181            DO_2D( 0, 0, 0, 0 ) 
    11821182               ref_wgts(nxt_wgt)%data_wgt(ji,jj,jn) = data_tmp(ji,jj) 
    11831183            END_2D 
     
    14421442      dta(:,:,:) = 0._wp 
    14431443      DO jn = 1,4 
    1444          DO_3D_00_00( 1,ipk ) 
     1444         DO_3D( 0, 0, 0, 0, 1,ipk ) 
    14451445            ni = ref_wgts(kw)%data_jpi(ji,jj,jn) + 1 
    14461446            nj = ref_wgts(kw)%data_jpj(ji,jj,jn) + 1 
     
    14861486         ! 
    14871487!!$         DO jn = 1,4 
    1488 !!$            DO_3D_00_00( 1,ipk ) 
     1488!!$            DO_3D( 0, 0, 0, 0, 1,ipk ) 
    14891489!!$               ni = ref_wgts(kw)%data_jpi(ji,jj,jn) + 1 
    14901490!!$               nj = ref_wgts(kw)%data_jpj(ji,jj,jn) + 1 
     
    15041504         ! 
    15051505         DO jn = 1,4 
    1506             DO_3D_00_00( 1,ipk ) 
     1506            DO_3D( 0, 0, 0, 0, 1,ipk ) 
    15071507               ni = ref_wgts(kw)%data_jpi(ji,jj,jn) 
    15081508               nj = ref_wgts(kw)%data_jpj(ji,jj,jn) 
     
    15131513         END DO 
    15141514         DO jn = 1,4 
    1515             DO_3D_00_00( 1,ipk ) 
     1515            DO_3D( 0, 0, 0, 0, 1,ipk ) 
    15161516               ni = ref_wgts(kw)%data_jpi(ji,jj,jn) 
    15171517               nj = ref_wgts(kw)%data_jpj(ji,jj,jn) 
     
    15221522         END DO 
    15231523         DO jn = 1,4 
    1524             DO_3D_00_00( 1,ipk ) 
     1524            DO_3D( 0, 0, 0, 0, 1,ipk ) 
    15251525               ni = ref_wgts(kw)%data_jpi(ji,jj,jn) 
    15261526               nj = ref_wgts(kw)%data_jpj(ji,jj,jn) 
  • NEMO/trunk/src/OCE/SBC/geo2ocean.F90

    r13226 r13295  
    160160      ! (computation done on the north stereographic polar plane) 
    161161      ! 
    162       DO_2D_00_01 
     162      DO_2D( 0, 0, 0, 1 ) 
    163163         !                   
    164164         zlam = plamt(ji,jj)     ! north pole direction & modulous (at t-point) 
     
    249249      ! =============== ! 
    250250 
    251       DO_2D_00_01 
     251      DO_2D( 0, 0, 0, 1 ) 
    252252         IF( MOD( ABS( plamv(ji,jj) - plamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 
    253253            gsint(ji,jj) = 0. 
  • NEMO/trunk/src/OCE/SBC/sbc_oce.F90

    r13226 r13295  
    217217      !!--------------------------------------------------------------------- 
    218218      zcoef = 0.5 / ( zrhoa * zcdrag ) 
    219       DO_2D_00_00 
     219      DO_2D( 0, 0, 0, 0 ) 
    220220         ztx = utau(ji-1,jj  ) + utau(ji,jj) 
    221221         zty = vtau(ji  ,jj-1) + vtau(ji,jj) 
  • NEMO/trunk/src/OCE/SBC/sbcblk.F90

    r13226 r13295  
    568568      zwnd_j(:,:) = 0._wp 
    569569      CALL wnd_cyc( kt, zwnd_i, zwnd_j )    ! add analytical tropical cyclone (Vincent et al. JGR 2012) 
    570       DO_2D_11_11 
     570      DO_2D( 1, 1, 1, 1 ) 
    571571         zwnd_i(ji,jj) = pwndi(ji,jj) + zwnd_i(ji,jj) 
    572572         zwnd_j(ji,jj) = pwndj(ji,jj) + zwnd_j(ji,jj) 
     
    576576#else 
    577577      ! ... scalar wind module at T-point (not masked) 
    578       DO_2D_11_11 
     578      DO_2D( 1, 1, 1, 1 ) 
    579579         wndm(ji,jj) = SQRT(  pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj)  ) 
    580580      END_2D 
     
    628628         !     use scalar version of gamma_moist() ... 
    629629         IF( ln_tpot ) THEN 
    630             DO_2D_11_11 
     630            DO_2D( 1, 1, 1, 1 ) 
    631631               ztpot(ji,jj) = ptair(ji,jj) + gamma_moist( ptair(ji,jj), zqair(ji,jj) ) * rn_zqt 
    632632            END_2D 
     
    690690 
    691691      IF( ln_abl ) THEN         !==  ABL formulation  ==!   multiplication by rho_air and turbulent fluxes computation done in ablstp 
    692          DO_2D_11_11 
     692         DO_2D( 1, 1, 1, 1 ) 
    693693            zztmp = zU_zu(ji,jj) 
    694694            wndm(ji,jj)   = zztmp                   ! Store zU_zu in wndm to compute ustar2 in ablmod 
     
    710710         pevp(:,:) = pevp(:,:) * tmask(:,:,1) 
    711711 
    712          DO_2D_11_11 
     712         DO_2D( 1, 1, 1, 1 ) 
    713713            IF( wndm(ji,jj) > 0._wp ) THEN 
    714714               zztmp = taum(ji,jj) / wndm(ji,jj) 
     
    728728         IF( ln_crt_fbk ) THEN   ! aply eq. 10 and 11 of Renault et al. 2020 (doi: 10.1029/2019MS001715) 
    729729            zstmax = MIN( rn_stau_a * 3._wp + rn_stau_b, 0._wp )   ! set the max value of Stau corresponding to a wind of 3 m/s (<0) 
    730             DO_2D_01_01   ! end at jpj and jpi, as ztau_j(ji,jj+1) ztau_i(ji+1,jj) used in the next loop 
     730            DO_2D( 0, 1, 0, 1 )   ! end at jpj and jpi, as ztau_j(ji,jj+1) ztau_i(ji+1,jj) used in the next loop 
    731731               zstau = MIN( rn_stau_a * wndm(ji,jj) + rn_stau_b, zstmax )   ! stau (<0) must be smaller than zstmax 
    732732               ztau_i(ji,jj) = ztau_i(ji,jj) + zstau * ( 0.5_wp * ( pu(ji-1,jj  ) + pu(ji,jj) ) - puatm(ji,jj) ) 
     
    739739         !     Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 
    740740         !     Note that coastal wind stress is not used in the code... so this extra care has no effect 
    741          DO_2D_00_00              ! start loop at 2, in case ln_crt_fbk = T 
     741         DO_2D( 0, 0, 0, 0 )              ! start loop at 2, in case ln_crt_fbk = T 
    742742            utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( ztau_i(ji,jj) + ztau_i(ji+1,jj  ) ) & 
    743743               &              * MAX(tmask(ji,jj,1),tmask(ji+1,jj,1)) 
     
    828828 
    829829      ! use scalar version of L_vap() for AGRIF compatibility 
    830       DO_2D_11_11 
     830      DO_2D( 1, 1, 1, 1 ) 
    831831         zqla(ji,jj) = - L_vap( ztskk(ji,jj) ) * pevp(ji,jj)    ! Latent Heat flux !!GS: possibility to add a global qla to avoid recomputation after abl update 
    832832      END_2D 
     
    933933      ! ------------------------------------------------------------ ! 
    934934      ! C-grid ice dynamics :   U & V-points (same as ocean) 
    935       DO_2D_11_11 
     935      DO_2D( 1, 1, 1, 1 ) 
    936936         wndm_ice(ji,jj) = SQRT( pwndi(ji,jj) * pwndi(ji,jj) + pwndj(ji,jj) * pwndj(ji,jj) ) 
    937937      END_2D 
     
    959959         ! ---------------------------------------------------- ! 
    960960         ! supress moving ice in wind stress computation as we don't know how to do it properly... 
    961          DO_2D_01_01    ! at T point  
     961         DO_2D( 0, 1, 0, 1 )    ! at T point  
    962962            putaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndi(ji,jj) 
    963963            pvtaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndj(ji,jj) 
    964964         END_2D 
    965965         ! 
    966          DO_2D_00_00    ! U & V-points (same as ocean). 
     966         DO_2D( 0, 0, 0, 0 )    ! U & V-points (same as ocean). 
    967967            ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology  
    968968            zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     
    978978         zztmp1 = 11637800.0_wp 
    979979         zztmp2 =    -5897.8_wp 
    980          DO_2D_11_11 
     980         DO_2D( 1, 1, 1, 1 ) 
    981981            pcd_dui(ji,jj) = zcd_dui (ji,jj) 
    982982            pseni  (ji,jj) = wndm_ice(ji,jj) * Ch_ice(ji,jj) 
     
    12331233         ! 
    12341234         DO jl = 1, jpl 
    1235             DO_2D_11_11 
     1235            DO_2D( 1, 1, 1, 1 ) 
    12361236               zhe = ( rn_cnd_s * phi(ji,jj,jl) + rcnd_i * phs(ji,jj,jl) ) * zfac                            ! Effective thickness 
    12371237               IF( zhe >=  zfac2 )   zgfac(ji,jj,jl) = MIN( 2._wp, 0.5_wp * ( 1._wp + LOG( zhe * zfac3 ) ) ) ! Enhanced conduction factor 
     
    12481248      ! 
    12491249      DO jl = 1, jpl 
    1250          DO_2D_11_11 
     1250         DO_2D( 1, 1, 1, 1 ) 
    12511251            ! 
    12521252            zkeff_h = zfac * zgfac(ji,jj,jl) / &                                    ! Effective conductivity of the snow-ice system divided by thickness 
     
    13961396      zqi_sat(:,:) =                  q_sat( ptm_su(:,:), pslp(:,:) )   ! saturation humidity over ice   [kg/kg] 
    13971397      ! 
    1398       DO_2D_00_00 
     1398      DO_2D( 0, 0, 0, 0 ) 
    13991399         ! Virtual potential temperature [K] 
    14001400         zthetav_os = zst(ji,jj)    * ( 1._wp + rctv0 * zqo_sat(ji,jj) )   ! over ocean 
  • NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p0.F90

    r12615 r13295  
    394394      !!------------------------------------------------------------------- 
    395395      ! 
    396       DO_2D_11_11 
     396      DO_2D( 1, 1, 1, 1 ) 
    397397      ! 
    398398      zw = pwnd(ji,jj)   ! wind speed 
     
    430430      !!---------------------------------------------------------------------------------- 
    431431      ! 
    432       DO_2D_11_11 
     432      DO_2D( 1, 1, 1, 1 ) 
    433433      ! 
    434434      zta = pzeta(ji,jj) 
     
    481481      REAL(wp) :: zta, zphi_h, zphi_c, zpsi_k, zpsi_c, zf, zc, zstab 
    482482      ! 
    483       DO_2D_11_11 
     483      DO_2D( 1, 1, 1, 1 ) 
    484484      ! 
    485485      zta = pzeta(ji,jj) 
  • NEMO/trunk/src/OCE/SBC/sbcblk_algo_coare3p6.F90

    r12615 r13295  
    430430      !!---------------------------------------------------------------------------------- 
    431431      ! 
    432       DO_2D_11_11 
     432      DO_2D( 1, 1, 1, 1 ) 
    433433      ! 
    434434      zta = pzeta(ji,jj) 
     
    481481      REAL(wp) :: zta, zphi_h, zphi_c, zpsi_k, zpsi_c, zf, zc, zstab 
    482482      ! 
    483       DO_2D_11_11 
     483      DO_2D( 1, 1, 1, 1 ) 
    484484      ! 
    485485      zta = pzeta(ji,jj) 
  • NEMO/trunk/src/OCE/SBC/sbcblk_algo_ecmwf.F90

    r12615 r13295  
    410410      REAL(wp) :: zzeta, zx, ztmp, psi_unst, psi_stab, stab 
    411411      !!---------------------------------------------------------------------------------- 
    412       DO_2D_11_11 
     412      DO_2D( 1, 1, 1, 1 ) 
    413413      ! 
    414414      zzeta = MIN( pzeta(ji,jj) , 5._wp ) !! Very stable conditions (L positif and big!): 
     
    455455      !!---------------------------------------------------------------------------------- 
    456456      ! 
    457       DO_2D_11_11 
     457      DO_2D( 1, 1, 1, 1 ) 
    458458      ! 
    459459      zzeta = MIN(pzeta(ji,jj) , 5._wp)   ! Very stable conditions (L positif and big!): 
  • NEMO/trunk/src/OCE/SBC/sbcblk_algo_ncar.F90

    r12615 r13295  
    241241      !!---------------------------------------------------------------------------------- 
    242242      ! 
    243       DO_2D_11_11 
     243      DO_2D( 1, 1, 1, 1 ) 
    244244         ! 
    245245         zw  = pw10(ji,jj) 
     
    277277      REAL(wp) :: zx2, zx, zstab   ! local scalars 
    278278      !!---------------------------------------------------------------------------------- 
    279       DO_2D_11_11 
     279      DO_2D( 1, 1, 1, 1 ) 
    280280         zx2 = SQRT( ABS( 1._wp - 16._wp*pzeta(ji,jj) ) ) 
    281281         zx2 = MAX( zx2 , 1._wp ) 
     
    308308      !!---------------------------------------------------------------------------------- 
    309309      ! 
    310       DO_2D_11_11 
     310      DO_2D( 1, 1, 1, 1 ) 
    311311         zx2 = SQRT( ABS( 1._wp - 16._wp*pzeta(ji,jj) ) ) 
    312312         zx2 = MAX( zx2 , 1._wp ) 
  • NEMO/trunk/src/OCE/SBC/sbcblk_phy.F90

    r13165 r13295  
    181181      !!---------------------------------------------------------------------------------- 
    182182      ! 
    183       DO_2D_11_11 
     183      DO_2D( 1, 1, 1, 1 ) 
    184184         ztc  = ptak(ji,jj) - rt0   ! air temp, in deg. C 
    185185         ztc2 = ztc*ztc 
     
    270270      INTEGER  ::   ji, jj         ! dummy loop indices 
    271271      !!---------------------------------------------------------------------------------- 
    272       DO_2D_11_11 
     272      DO_2D( 1, 1, 1, 1 ) 
    273273         gamma_moist_vctr(ji,jj) = gamma_moist_sclr( ptak(ji,jj), pqa(ji,jj) ) 
    274274      END_2D 
     
    315315      !!------------------------------------------------------------------- 
    316316      ! 
    317       DO_2D_11_11 
     317      DO_2D( 1, 1, 1, 1 ) 
    318318         ! 
    319319         zqa = (1._wp + rctv0*pqa(ji,jj)) 
     
    351351      !!------------------------------------------------------------------- 
    352352      ! 
    353       DO_2D_11_11 
     353      DO_2D( 1, 1, 1, 1 ) 
    354354         ! 
    355355         zqa = 0.5_wp*(pqa(ji,jj)+pssq(ji,jj))                                        ! ~ mean q within the layer... 
     
    448448      !!---------------------------------------------------------------------------------- 
    449449      ! 
    450       DO_2D_11_11 
     450      DO_2D( 1, 1, 1, 1 ) 
    451451         ! 
    452452         ze_sat =  e_sat_sclr( ptak(ji,jj) ) 
     
    473473      !!---------------------------------------------------------------------------------- 
    474474      ! 
    475       DO_2D_11_11 
     475      DO_2D( 1, 1, 1, 1 ) 
    476476         ze = prha(ji,jj)*e_sat_sclr(ptak(ji,jj)) 
    477477         q_air_rh(ji,jj) = ze*reps0/(pslp(ji,jj) - (1. - reps0)*ze) 
     
    511511      INTEGER  ::   ji, jj     ! dummy loop indices 
    512512      !!---------------------------------------------------------------------------------- 
    513       DO_2D_11_11 
     513      DO_2D( 1, 1, 1, 1 ) 
    514514 
    515515         zdt = pTa(ji,jj) - pTs(ji,jj) ;  zdt = SIGN( MAX(ABS(zdt),1.E-6_wp), zdt ) 
     
    621621      IF( PRESENT(pfact_evap) ) zfact_evap = pfact_evap 
    622622 
    623       DO_2D_11_11 
     623      DO_2D( 1, 1, 1, 1 ) 
    624624 
    625625         CALL BULK_FORMULA_SCLR( pzu, pTs(ji,jj), pqs(ji,jj), pTa(ji,jj), pqa(ji,jj), & 
  • NEMO/trunk/src/OCE/SBC/sbcblk_skin_coare.F90

    r12489 r13295  
    8989      REAL(wp) :: zQabs, zdlt, zfr, zalfa, zqlat, zus 
    9090      !!--------------------------------------------------------------------- 
    91       DO_2D_11_11 
     91      DO_2D( 1, 1, 1, 1 ) 
    9292 
    9393         zQabs = pQnsol(ji,jj) ! first guess of heat flux absorbed within the viscous sublayer of thicknes delta, 
     
    156156      ztime = REAL(nsec_day,wp)/(24._wp*3600._wp) ! time of current time step since 00:00 for current day (UTC) -> ztime = 0 -> 00:00 / ztime = 0.5 -> 12:00 ... 
    157157 
    158       DO_2D_11_11 
     158      DO_2D( 1, 1, 1, 1 ) 
    159159 
    160160         l_exit       = .FALSE. 
  • NEMO/trunk/src/OCE/SBC/sbcblk_skin_ecmwf.F90

    r12489 r13295  
    9595      REAL(wp) :: zQabs, zdlt, zfr, zalfa, zus 
    9696      !!--------------------------------------------------------------------- 
    97       DO_2D_11_11 
     97      DO_2D( 1, 1, 1, 1 ) 
    9898 
    9999         zQabs = pQnsol(ji,jj) ! first guess of heat flux absorbed within the viscous sublayer of thicknes delta, 
     
    173173      IF( PRESENT(pustk) ) l_pustk_known = .TRUE. 
    174174 
    175       DO_2D_11_11 
     175      DO_2D( 1, 1, 1, 1 ) 
    176176 
    177177         zHwl = Hz_wl(ji,jj) ! first guess for warm-layer depth (and unique..., less advanced than COARE3p6 !) 
  • NEMO/trunk/src/OCE/SBC/sbccpl.F90

    r13286 r13295  
    11701170            !                               
    11711171            IF( srcv(jpr_otx1)%clgrid == 'T' ) THEN 
    1172                DO_2D_00_00 
     1172               DO_2D( 0, 0, 0, 0 ) 
    11731173                  frcv(jpr_otx1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_otx1)%z3(ji+1,jj  ,1) + frcv(jpr_otx1)%z3(ji,jj,1) ) 
    11741174                  frcv(jpr_oty1)%z3(ji,jj,1) = 0.5 * ( frcv(jpr_oty1)%z3(ji  ,jj+1,1) + frcv(jpr_oty1)%z3(ji,jj,1) ) 
     
    11941194         ! => need to be done only when otx1 was changed 
    11951195         IF( llnewtx ) THEN 
    1196             DO_2D_00_00 
     1196            DO_2D( 0, 0, 0, 0 ) 
    11971197               zzx = frcv(jpr_otx1)%z3(ji-1,jj  ,1) + frcv(jpr_otx1)%z3(ji,jj,1) 
    11981198               zzy = frcv(jpr_oty1)%z3(ji  ,jj-1,1) + frcv(jpr_oty1)%z3(ji,jj,1) 
     
    12191219         IF( llnewtau ) THEN  
    12201220            zcoef = 1. / ( zrhoa * zcdrag )  
    1221             DO_2D_11_11 
     1221            DO_2D( 1, 1, 1, 1 ) 
    12221222               frcv(jpr_w10m)%z3(ji,jj,1) = SQRT( frcv(jpr_taum)%z3(ji,jj,1) * zcoef ) 
    12231223            END_2D 
     
    15491549            p_tauj(:,:) = frcv(jpr_ity1)%z3(:,:,1) 
    15501550         CASE( 'T' ) 
    1551             DO_2D_00_00 
     1551            DO_2D( 0, 0, 0, 0 ) 
    15521552               ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology  
    15531553               zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     
    23652365            SELECT CASE( TRIM( sn_snd_crt%cldes ) ) 
    23662366            CASE( 'oce only'             )      ! C-grid ==> T 
    2367                DO_2D_00_00 
     2367               DO_2D( 0, 0, 0, 0 ) 
    23682368                  zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Kmm) + uu(ji-1,jj  ,1,Kmm) ) 
    23692369                  zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Kmm) + vv(ji  ,jj-1,1,Kmm) )  
    23702370               END_2D 
    23712371            CASE( 'weighted oce and ice' )      ! Ocean and Ice on C-grid ==> T   
    2372                DO_2D_00_00 
     2372               DO_2D( 0, 0, 0, 0 ) 
    23732373                  zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   
    23742374                  zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj) 
     
    23782378               CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp, zity1, 'T', -1.0_wp ) 
    23792379            CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T 
    2380                DO_2D_00_00 
     2380               DO_2D( 0, 0, 0, 0 ) 
    23812381                  zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   & 
    23822382                     &         + 0.5 * ( u_ice(ji,jj  )     + u_ice(ji-1,jj    )     ) *  fr_i(ji,jj) 
     
    24422442          SELECT CASE( TRIM( sn_snd_crtw%cldes ) )  
    24432443          CASE( 'oce only'             )      ! C-grid ==> T  
    2444              DO_2D_00_00 
     2444             DO_2D( 0, 0, 0, 0 ) 
    24452445                zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Kmm) + uu(ji-1,jj  ,1,Kmm) )  
    24462446                zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Kmm) + vv(ji , jj-1,1,Kmm) )   
    24472447             END_2D 
    24482448          CASE( 'weighted oce and ice' )      ! Ocean and Ice on C-grid ==> T    
    2449              DO_2D_00_00 
     2449             DO_2D( 0, 0, 0, 0 ) 
    24502450                zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)    
    24512451                zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj)  
     
    24552455             CALL lbc_lnk_multi( 'sbccpl', zitx1, 'T', -1.0_wp,  zity1, 'T', -1.0_wp )  
    24562456          CASE( 'mixed oce-ice'        )      ! Ocean and Ice on C-grid ==> T   
    2457              DO_2D_00_00 
     2457             DO_2D( 0, 0, 0, 0 ) 
    24582458                zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   &  
    24592459                   &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
  • NEMO/trunk/src/OCE/SBC/sbcdcy.F90

    r12489 r13295  
    110110 
    111111      imask_night(:,:) = 0 
    112       DO_2D_11_11 
     112      DO_2D( 1, 1, 1, 1 ) 
    113113         ztmpm = 0._wp 
    114114         IF( ABS(rab(ji,jj)) < 1. ) THEN         ! day duration is less than 24h 
     
    193193 
    194194         zsin = SIN( zdecrad )   ;   zcos = COS( zdecrad ) 
    195          DO_2D_11_11 
     195         DO_2D( 1, 1, 1, 1 ) 
    196196            ztmp = rad * gphit(ji,jj) 
    197197            raa(ji,jj) = SIN( ztmp ) * zsin 
     
    202202         ! rab to test if the day time is equal to 0, less than 24h of full day 
    203203         rab(:,:) = -raa(:,:) / rbb(:,:) 
    204          DO_2D_11_11 
     204         DO_2D( 1, 1, 1, 1 ) 
    205205            IF( ABS(rab(ji,jj)) < 1._wp ) THEN         ! day duration is less than 24h 
    206206               ! When is it night? 
     
    226226         !         Avoid possible infinite scaling factor, associated with very short daylight 
    227227         !         periods, by ignoring periods less than 1/1000th of a day (ticket #1040) 
    228          DO_2D_11_11 
     228         DO_2D( 1, 1, 1, 1 ) 
    229229            IF( ABS(rab(ji,jj)) < 1._wp ) THEN         ! day duration is less than 24h 
    230230               rscal(ji,jj) = 0.0_wp 
  • NEMO/trunk/src/OCE/SBC/sbcflx.F90

    r13226 r13295  
    129129         ELSE                  ;   qsr(:,:) =          sf(jp_qsr)%fnow(:,:,1) 
    130130         ENDIF 
    131          DO_2D_11_11 
     131         DO_2D( 1, 1, 1, 1 ) 
    132132            utau(ji,jj) = sf(jp_utau)%fnow(ji,jj,1) 
    133133            vtau(ji,jj) = sf(jp_vtau)%fnow(ji,jj,1) 
     
    143143         !                                                        ! module of wind stress and wind speed at T-point 
    144144         zcoef = 1. / ( zrhoa * zcdrag ) 
    145          DO_2D_00_00 
     145         DO_2D( 0, 0, 0, 0 ) 
    146146            ztx = utau(ji-1,jj  ) + utau(ji,jj)  
    147147            zty = vtau(ji  ,jj-1) + vtau(ji,jj)  
  • NEMO/trunk/src/OCE/SBC/sbcice_cice.F90

    r13286 r13295  
    217217! T point to U point 
    218218! T point to V point 
    219       DO_2D_10_10 
     219      DO_2D( 1, 0, 1, 0 ) 
    220220         fr_iu(ji,jj)=0.5*(fr_i(ji,jj)+fr_i(ji+1,jj))*umask(ji,jj,1) 
    221221         fr_iv(ji,jj)=0.5*(fr_i(ji,jj)+fr_i(ji,jj+1))*vmask(ji,jj,1) 
     
    312312! x comp of wind stress (CI_1) 
    313313! U point to F point 
    314          DO_2D_10_11 
     314         DO_2D( 1, 0, 1, 1 ) 
    315315            ztmp(ji,jj) = 0.5 * (  fr_iu(ji,jj) * utau(ji,jj)      & 
    316316                                 + fr_iu(ji,jj+1) * utau(ji,jj+1) ) * fmask(ji,jj,1) 
     
    320320! y comp of wind stress (CI_2) 
    321321! V point to F point 
    322          DO_2D_11_10 
     322         DO_2D( 1, 1, 1, 0 ) 
    323323            ztmp(ji,jj) = 0.5 * (  fr_iv(ji,jj) * vtau(ji,jj)      & 
    324324                                 + fr_iv(ji+1,jj) * vtau(ji+1,jj) ) * fmask(ji,jj,1) 
     
    335335            qla_ice(:,:,1)= - ( emp_ice(:,:)+sprecip(:,:) ) * rLsub 
    336336! End of temporary code 
    337             DO_2D_11_11 
     337            DO_2D( 1, 1, 1, 1 ) 
    338338               IF(fr_i(ji,jj).eq.0.0) THEN 
    339339                  DO jl=1,ncat 
     
    437437! x comp and y comp of surface ocean current 
    438438! U point to F point 
    439       DO_2D_10_11 
     439      DO_2D( 1, 0, 1, 1 ) 
    440440         ztmp(ji,jj)=0.5*(ssu_m(ji,jj)+ssu_m(ji,jj+1))*fmask(ji,jj,1) 
    441441      END_2D 
     
    443443 
    444444! V point to F point 
    445       DO_2D_11_10 
     445      DO_2D( 1, 1, 1, 0 ) 
    446446         ztmp(ji,jj)=0.5*(ssv_m(ji,jj)+ssv_m(ji+1,jj))*fmask(ji,jj,1) 
    447447      END_2D 
     
    467467! x comp and y comp of sea surface slope (on F points) 
    468468! T point to F point 
    469       DO_2D_10_10 
     469      DO_2D( 1, 0, 1, 0 ) 
    470470         ztmp(ji,jj)=0.5 * (  (zpice(ji+1,jj  )-zpice(ji,jj  )) * r1_e1u(ji,jj  )    & 
    471471            &               + (zpice(ji+1,jj+1)-zpice(ji,jj+1)) * r1_e1u(ji,jj+1)  ) * fmask(ji,jj,1) 
     
    474474 
    475475! T point to F point 
    476       DO_2D_10_10 
     476      DO_2D( 1, 0, 1, 0 ) 
    477477         ztmp(ji,jj)=0.5 * (  (zpice(ji  ,jj+1)-zpice(ji  ,jj)) * r1_e2v(ji  ,jj)    & 
    478478            &               + (zpice(ji+1,jj+1)-zpice(ji+1,jj)) * r1_e2v(ji+1,jj)  ) *  fmask(ji,jj,1) 
     
    503503      ss_iou(:,:)=0.0 
    504504! F point to U point 
    505       DO_2D_00_00 
     505      DO_2D( 0, 0, 0, 0 ) 
    506506         ss_iou(ji,jj) = 0.5 * ( ztmp1(ji,jj-1) + ztmp1(ji,jj) ) * umask(ji,jj,1) 
    507507      END_2D 
     
    513513! F point to V point 
    514514 
    515       DO_2D_10_00 
     515      DO_2D( 1, 0, 0, 0 ) 
    516516         ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 
    517517      END_2D 
     
    597597      CALL lbc_lnk( 'sbcice_cice', qsr , 'T', 1.0_wp ) 
    598598 
    599       DO_2D_11_11 
     599      DO_2D( 1, 1, 1, 1 ) 
    600600         nfrzmlt(ji,jj)=MAX(nfrzmlt(ji,jj),0.0) 
    601601      END_2D 
     
    621621! T point to U point 
    622622! T point to V point 
    623       DO_2D_10_10 
     623      DO_2D( 1, 0, 1, 0 ) 
    624624         fr_iu(ji,jj)=0.5*(fr_i(ji,jj)+fr_i(ji+1,jj))*umask(ji,jj,1) 
    625625         fr_iv(ji,jj)=0.5*(fr_i(ji,jj)+fr_i(ji,jj+1))*vmask(ji,jj,1) 
     
    981981 
    982982      pn(:,:)=0.0 
    983       DO_2D_10_10 
     983      DO_2D( 1, 0, 1, 0 ) 
    984984         pn(ji,jj)=pc(ji+1-ji_off,jj+1-jj_off,1) 
    985985      END_2D 
  • NEMO/trunk/src/OCE/SBC/sbcice_if.F90

    r12377 r13295  
    109109 
    110110         ! Flux and ice fraction computation 
    111          DO_2D_11_11 
     111         DO_2D( 1, 1, 1, 1 ) 
    112112            ! 
    113113            zt_fzp  = fr_i(ji,jj)                        ! freezing point temperature 
  • NEMO/trunk/src/OCE/SBC/sbcrnf.F90

    r13286 r13295  
    209209      IF( ln_rnf_depth .OR. ln_rnf_depth_ini ) THEN      !==   runoff distributed over several levels   ==! 
    210210         IF( ln_linssh ) THEN    !* constant volume case : just apply the runoff input flow 
    211             DO_2D_11_11 
     211            DO_2D( 1, 1, 1, 1 ) 
    212212               DO jk = 1, nk_rnf(ji,jj) 
    213213                  phdivn(ji,jj,jk) = phdivn(ji,jj,jk) - ( rnf(ji,jj) + rnf_b(ji,jj) ) * zfact * r1_rho0 / h_rnf(ji,jj) 
     
    215215            END_2D 
    216216         ELSE                    !* variable volume case 
    217             DO_2D_11_11 
     217            DO_2D( 1, 1, 1, 1 ) 
    218218               h_rnf(ji,jj) = 0._wp 
    219219               DO jk = 1, nk_rnf(ji,jj)                           ! recalculates h_rnf to be the depth in metres 
     
    361361         ! 
    362362         nk_rnf(:,:) = 0                               ! set the number of level over which river runoffs are applied 
    363          DO_2D_11_11 
     363         DO_2D( 1, 1, 1, 1 ) 
    364364            IF( h_rnf(ji,jj) > 0._wp ) THEN 
    365365               jk = 2 
     
    374374            ENDIF 
    375375         END_2D 
    376          DO_2D_11_11 
     376         DO_2D( 1, 1, 1, 1 ) 
    377377            h_rnf(ji,jj) = 0._wp 
    378378            DO jk = 1, nk_rnf(ji,jj) 
     
    404404         WHERE( zrnfcl(:,:,1) > 0._wp )  h_rnf(:,:) = zacoef * zrnfcl(:,:,1)   ! compute depth for all runoffs 
    405405         ! 
    406          DO_2D_11_11 
     406         DO_2D( 1, 1, 1, 1 ) 
    407407            IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 
    408408               jk = mbkt(ji,jj) 
     
    412412         ! 
    413413         nk_rnf(:,:) = 0                       ! number of levels on which runoffs are distributed 
    414          DO_2D_11_11 
     414         DO_2D( 1, 1, 1, 1 ) 
    415415            IF( zrnfcl(ji,jj,1) > 0._wp ) THEN 
    416416               jk = 2 
     
    423423         END_2D 
    424424         ! 
    425          DO_2D_11_11 
     425         DO_2D( 1, 1, 1, 1 ) 
    426426            h_rnf(ji,jj) = 0._wp 
    427427            DO jk = 1, nk_rnf(ji,jj) 
  • NEMO/trunk/src/OCE/SBC/sbcssr.F90

    r13226 r13295  
    9595            ! 
    9696            IF( nn_sstr == 1 ) THEN                                   !* Temperature restoring term 
    97                DO_2D_11_11 
     97               DO_2D( 1, 1, 1, 1 ) 
    9898                  zqrp = rn_dqdt * ( sst_m(ji,jj) - sf_sst(1)%fnow(ji,jj,1) ) * tmask(ji,jj,1) 
    9999                  qns(ji,jj) = qns(ji,jj) + zqrp 
     
    105105              ! use fraction of ice ( fr_i ) to adjust relaxation under ice if nn_sssr_ice .ne. 1 
    106106              ! n.b. coefice is initialised and fixed to 1._wp if nn_sssr_ice = 1 
    107                DO_2D_11_11 
     107               DO_2D( 1, 1, 1, 1 ) 
    108108                  SELECT CASE ( nn_sssr_ice ) 
    109109                    CASE ( 0 )    ;  coefice(ji,jj) = 1._wp - fr_i(ji,jj)              ! no/reduced damping under ice 
     
    115115            IF( nn_sssr == 1 ) THEN                                   !* Salinity damping term (salt flux only (sfx)) 
    116116               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    117                DO_2D_11_11 
     117               DO_2D( 1, 1, 1, 1 ) 
    118118                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    119119                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
     
    126126               zsrp = rn_deds / rday                                  ! from [mm/day] to [kg/m2/s] 
    127127               zerp_bnd = rn_sssr_bnd / rday                          !       -              -     
    128                DO_2D_11_11 
     128               DO_2D( 1, 1, 1, 1 ) 
    129129                  zerp = zsrp * ( 1. - 2.*rnfmsk(ji,jj) )   &      ! No damping in vicinity of river mouths 
    130130                     &        *   coefice(ji,jj)            &      ! Optional control of damping under sea-ice 
  • NEMO/trunk/src/OCE/SBC/sbcwave.F90

    r13237 r13295  
    113113      IF( ll_st_bv_li ) THEN   ! (Eq. (19) in Breivik et al. (2014) ) 
    114114         zfac = 2.0_wp * rpi / 16.0_wp 
    115          DO_2D_11_11 
     115         DO_2D( 1, 1, 1, 1 ) 
    116116            ! Stokes drift velocity estimated from Hs and Tmean 
    117117            ztransp = zfac * hsw(ji,jj)*hsw(ji,jj) / MAX( wmp(ji,jj), 0.0000001_wp ) 
     
    121121            zk_t(ji,jj) = ABS( tsd2d(ji,jj) ) / MAX( ABS( 5.97_wp*ztransp ), 0.0000001_wp ) 
    122122         END_2D 
    123          DO_2D_10_10 
     123         DO_2D( 1, 0, 1, 0 ) 
    124124            zk_u(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji+1,jj) ) 
    125125            zk_v(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji,jj+1) ) 
     
    129129         END_2D 
    130130      ELSE IF( ll_st_peakfr ) THEN    ! peak wave number calculated from the peak frequency received by the wave model 
    131          DO_2D_11_11 
     131         DO_2D( 1, 1, 1, 1 ) 
    132132            zk_t(ji,jj) = ( 2.0_wp * rpi * wfreq(ji,jj) ) * ( 2.0_wp * rpi * wfreq(ji,jj) ) / grav 
    133133         END_2D 
    134          DO_2D_10_10 
     134         DO_2D( 1, 0, 1, 0 ) 
    135135            zk_u(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji+1,jj) ) 
    136136            zk_v(ji,jj) = 0.5_wp * ( zk_t(ji,jj) + zk_t(ji,jj+1) ) 
     
    143143      !                       !==  horizontal Stokes Drift 3D velocity  ==! 
    144144      IF( ll_st_bv2014 ) THEN 
    145          DO_3D_00_00( 1, jpkm1 ) 
     145         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    146146            zdep_u = 0.5_wp * ( gdept(ji,jj,jk,Kmm) + gdept(ji+1,jj,jk,Kmm) ) 
    147147            zdep_v = 0.5_wp * ( gdept(ji,jj,jk,Kmm) + gdept(ji,jj+1,jk,Kmm) ) 
     
    158158      ELSE IF( ll_st_li2017 .OR. ll_st_peakfr ) THEN 
    159159         ALLOCATE( zstokes_psi_u_top(jpi,jpj), zstokes_psi_v_top(jpi,jpj) ) 
    160          DO_2D_10_10 
     160         DO_2D( 1, 0, 1, 0 ) 
    161161            zstokes_psi_u_top(ji,jj) = 0._wp 
    162162            zstokes_psi_v_top(ji,jj) = 0._wp 
     
    164164         zsqrtpi = SQRT(rpi) 
    165165         z_two_thirds = 2.0_wp / 3.0_wp 
    166          DO_3D_00_00( 1, jpkm1 ) 
     166         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    167167            zbot_u = ( gdepw(ji,jj,jk+1,Kmm) + gdepw(ji+1,jj,jk+1,Kmm) )  ! 2 * bottom depth 
    168168            zbot_v = ( gdepw(ji,jj,jk+1,Kmm) + gdepw(ji,jj+1,jk+1,Kmm) )  ! 2 * bottom depth 
     
    204204      !                       !==  vertical Stokes Drift 3D velocity  ==! 
    205205      ! 
    206       DO_3D_01_01( 1, jpkm1 ) 
     206      DO_3D( 0, 1, 0, 1, 1, jpkm1 ) 
    207207         ze3divh(ji,jj,jk) = (  e2u(ji  ,jj) * e3u(ji  ,jj,jk,Kmm) * usd(ji  ,jj,jk)    & 
    208208            &                 - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * usd(ji-1,jj,jk)    & 
     
    263263      ! 
    264264      IF( ln_tauw ) THEN 
    265          DO_2D_10_10 
     265         DO_2D( 1, 0, 1, 0 ) 
    266266            ! Stress components at u- & v-points 
    267267            utau(ji,jj) = 0.5_wp * ( tauw_x(ji,jj) + tauw_x(ji+1,jj) ) 
Note: See TracChangeset for help on using the changeset viewer.