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 7753 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90 – NEMO

Ignore:
Timestamp:
2017-03-03T12:46:59+01:00 (7 years ago)
Author:
mocavero
Message:

Reverting trunk to remove OpenMP

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r7698 r7753  
    8080      !!------------------------------------------------------------------ 
    8181      INTEGER, INTENT( in ) ::   kn     ! =1 at_i & vt only ; = what is needed 
    82       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_s, ze_i 
    8382      ! 
    8483      INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices 
    8584      !!------------------------------------------------------------------ 
    8685 
    87       CALL wrk_alloc( jpi, jpj, nlay_s, ze_s ) 
    88       CALL wrk_alloc( jpi, jpj, nlay_i, ze_i ) 
    8986      ! integrated values 
    90 !$OMP PARALLEL 
    91 !$OMP DO schedule(static) private(jj, ji) 
    92       DO jj = 1, jpj 
    93          DO ji = 1, jpi 
    94             vt_i (ji,jj) = 0._wp 
    95             vt_s (ji,jj) = 0._wp 
    96             at_i (ji,jj) = 0._wp 
    97             et_s(ji,jj)  = 0._wp 
    98             et_i(ji,jj)  = 0._wp 
    99          END DO 
    100       END DO 
    101       DO jl = 1, jpl 
    102 !$OMP DO schedule(static) private(jj, ji) 
    103          DO jj = 1, jpj 
    104             DO ji = 1, jpi 
    105                vt_i (ji,jj) = vt_i (ji,jj) + v_i (ji,jj,jl) 
    106                vt_s (ji,jj) = vt_s (ji,jj) + v_s (ji,jj,jl) 
    107                at_i (ji,jj) = at_i (ji,jj) + a_i (ji,jj,jl) 
    108             END DO 
    109          END DO 
    110       END DO 
    111       DO jk = 1, nlay_s 
    112 !$OMP DO schedule(static) private(jj, ji) 
    113          DO jj = 1, jpj 
    114             DO ji = 1, jpi 
    115                ze_s(ji,jj,jk)  = 0._wp 
    116             END DO 
    117          END DO 
    118       END DO 
    119       DO jk = 1, nlay_i 
    120 !$OMP DO schedule(static) private(jj, ji) 
    121          DO jj = 1, jpj 
    122             DO ji = 1, jpi 
    123                ze_i(ji,jj,jk)  = 0._wp 
    124             END DO 
    125          END DO 
    126       END DO 
    127       DO jl = 1, jpl 
    128          DO jk = 1, nlay_s 
    129 !$OMP DO schedule(static) private(jj, ji) 
    130             DO jj = 1, jpj 
    131                DO ji = 1, jpi 
    132                   ze_s(ji,jj,jk)  = ze_s(ji,jj,jk) + e_s(ji,jj,jk,jl) 
    133                END DO 
    134             END DO 
    135          END DO 
    136       END DO 
    137       DO jl = 1, jpl 
    138          DO jk = 1, nlay_i 
    139 !$OMP DO schedule(static) private(jj, ji) 
    140             DO jj = 1, jpj 
    141                DO ji = 1, jpi 
    142                   ze_i(ji,jj,jk)  = ze_i(ji,jj,jk) + e_i(ji,jj,jk,jl) 
    143                END DO 
    144             END DO 
    145          END DO 
    146       END DO 
    147       DO jk = 1, nlay_s 
    148 !$OMP DO schedule(static) private(jj, ji) 
    149          DO jj = 1, jpj 
    150             DO ji = 1, jpi 
    151                et_s(ji,jj)  = et_s(ji,jj) + ze_s(ji,jj,jk) 
    152             END DO 
    153          END DO 
    154       END DO 
    155       DO jk = 1, nlay_i 
    156 !$OMP DO schedule(static) private(jj, ji) 
    157          DO jj = 1, jpj 
    158             DO ji = 1, jpi 
    159                et_i(ji,jj)  = et_i(ji,jj) + ze_i(ji,jj,jk) 
    160             END DO 
    161          END DO 
    162       END DO 
     87      vt_i (:,:) = SUM( v_i, dim=3 ) 
     88      vt_s (:,:) = SUM( v_s, dim=3 ) 
     89      at_i (:,:) = SUM( a_i, dim=3 ) 
     90      et_s(:,:)  = SUM( SUM( e_s(:,:,:,:), dim=4 ), dim=3 ) 
     91      et_i(:,:)  = SUM( SUM( e_i(:,:,:,:), dim=4 ), dim=3 ) 
    16392 
    16493      ! open water fraction 
    165 !$OMP DO schedule(static) private(jj, ji) 
    16694      DO jj = 1, jpj 
    16795         DO ji = 1, jpi 
     
    16997         END DO 
    17098      END DO 
    171 !$OMP END PARALLEL 
    17299 
    173100      IF( kn > 1 ) THEN 
    174101 
    175 !$OMP PARALLEL 
    176102         ! mean ice/snow thickness 
    177 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    178103         DO jj = 1, jpj 
    179104            DO ji = 1, jpi 
     
    185110 
    186111         ! mean temperature (K), salinity and age 
    187 !$OMP DO schedule(static) private(jj,ji) 
    188          DO jj = 1, jpj 
    189             DO ji = 1, jpi 
    190                smt_i(ji,jj) = 0._wp 
    191                tm_i(ji,jj)  = 0._wp 
    192                tm_su(ji,jj) = 0._wp 
    193                om_i (ji,jj) = 0._wp 
    194             ENDDO 
    195          ENDDO 
     112         smt_i(:,:) = 0._wp 
     113         tm_i(:,:)  = 0._wp 
     114         tm_su(:,:) = 0._wp 
     115         om_i (:,:) = 0._wp 
    196116         DO jl = 1, jpl 
    197117             
    198 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    199118            DO jj = 1, jpj 
    200119               DO ji = 1, jpi 
     
    206125             
    207126            DO jk = 1, nlay_i 
    208 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    209127               DO jj = 1, jpj 
    210128                  DO ji = 1, jpi 
     
    218136            END DO 
    219137         END DO 
    220 !$OMP END PARALLEL 
    221138         tm_i  = tm_i  + rt0 
    222139         tm_su = tm_su + rt0 
    223140         ! 
    224141      ENDIF 
    225       CALL wrk_dealloc( jpi, jpj, nlay_s, ze_s ) 
    226       CALL wrk_dealloc( jpi, jpj, nlay_i, ze_i ) 
    227142      ! 
    228143   END SUBROUTINE lim_var_agg 
     
    244159      ! Ice thickness, snow thickness, ice salinity, ice age 
    245160      !------------------------------------------------------- 
    246 !$OMP PARALLEL 
    247       DO jl = 1, jpl 
    248 !$OMP DO schedule(static) private(jj,ji,rswitch) 
     161      DO jl = 1, jpl 
    249162         DO jj = 1, jpj 
    250163            DO ji = 1, jpi 
     
    255168      END DO 
    256169      ! Force the upper limit of ht_i to always be < hi_max (99 m). 
    257 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    258170      DO jj = 1, jpj 
    259171         DO ji = 1, jpi 
     
    265177 
    266178      DO jl = 1, jpl 
    267 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    268179         DO jj = 1, jpj 
    269180            DO ji = 1, jpi 
     
    277188      IF(  nn_icesal == 2  )THEN 
    278189         DO jl = 1, jpl 
    279 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    280190            DO jj = 1, jpj 
    281191               DO ji = 1, jpi 
     
    288198         END DO 
    289199      ENDIF 
    290 !$OMP END PARALLEL 
    291200 
    292201      CALL lim_var_salprof      ! salinity profile 
     
    295204      ! Ice temperatures 
    296205      !------------------- 
    297 !$OMP PARALLEL 
    298206      DO jl = 1, jpl 
    299207         DO jk = 1, nlay_i 
    300 !$OMP DO schedule(static) private(jj,ji,rswitch,zq_i,ztmelts,zaaa,zbbb,zccc,zdiscrim) 
    301208            DO jj = 1, jpj 
    302209               DO ji = 1, jpi 
     
    324231      DO jl = 1, jpl 
    325232         DO jk = 1, nlay_s 
    326 !$OMP DO schedule(static) private(jj,ji,rswitch,zq_s) 
    327233            DO jj = 1, jpj 
    328234               DO ji = 1, jpi 
     
    339245 
    340246      ! integrated values 
    341 !$OMP DO schedule(static) private(jj, ji) 
    342       DO jj = 1, jpj 
    343          DO ji = 1, jpi 
    344             vt_i (ji,jj) = 0._wp 
    345             vt_s (ji,jj) = 0._wp 
    346             at_i (ji,jj) = 0._wp 
    347          END DO 
    348       END DO 
    349       DO jl = 1, jpl 
    350 !$OMP DO schedule(static) private(jj, ji) 
    351          DO jj = 1, jpj 
    352             DO ji = 1, jpi 
    353                vt_i (ji,jj) = vt_i (ji,jj) + v_i (ji,jj,jl) 
    354                vt_s (ji,jj) = vt_s (ji,jj) + v_s (ji,jj,jl) 
    355                at_i (ji,jj) = at_i (ji,jj) + a_i (ji,jj,jl) 
    356             END DO 
    357          END DO 
    358       END DO 
    359 !$OMP END PARALLEL 
     247      vt_i (:,:) = SUM( v_i, dim=3 ) 
     248      vt_s (:,:) = SUM( v_s, dim=3 ) 
     249      at_i (:,:) = SUM( a_i, dim=3 ) 
     250 
    360251      ! 
    361252   END SUBROUTINE lim_var_glo2eqv 
     
    409300      !--------------------------------------- 
    410301      IF(  nn_icesal == 1  )  THEN 
    411 !$OMP PARALLEL 
    412          DO jl = 1, jpl 
    413             DO jk = 1, nlay_i 
    414 !$OMP DO schedule(static) private(jj, ji) 
    415                DO jj = 1, jpj 
    416                   DO ji = 1, jpi 
    417                      s_i (ji,jj,jk,jl) = rn_icesal 
    418                   END DO 
    419                END DO 
    420             END DO 
    421          END DO 
    422          DO jl = 1, jpl  
    423 !$OMP DO schedule(static) private(jj, ji) 
    424             DO jj = 1, jpj 
    425                DO ji = 1, jpi 
    426                   sm_i(ji,jj,jl)   = rn_icesal 
    427                END DO 
    428             END DO 
    429          END DO 
    430 !$OMP END PARALLEL 
     302         s_i (:,:,:,:) = rn_icesal 
     303         sm_i(:,:,:)   = rn_icesal 
    431304      ENDIF 
    432305 
     
    436309      IF(  nn_icesal == 2  ) THEN 
    437310         ! 
    438 !$OMP PARALLEL 
    439          DO jl = 1, jpl 
    440             DO jk = 1, nlay_i 
    441 !$OMP DO schedule(static) private(jj, ji) 
    442                DO jj = 1, jpj 
    443                   DO ji = 1, jpi 
    444                      s_i(ji,jj,jk,jl)  = sm_i(ji,jj,jl) 
    445                   END DO 
    446                END DO 
    447 !$OMP END DO NOWAIT 
    448             END DO 
     311         DO jk = 1, nlay_i 
     312            s_i(:,:,jk,:)  = sm_i(:,:,:) 
    449313         END DO 
    450314         ! 
    451315         DO jl = 1, jpl                               ! Slope of the linear profile  
    452 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    453316            DO jj = 1, jpj 
    454317               DO ji = 1, jpi 
     
    457320               END DO 
    458321            END DO 
    459 !$OMP END DO NOWAIT 
    460322         END DO 
    461323         ! 
     
    463325         zfac1 = zsi1  / ( zsi1 - zsi0 ) 
    464326         ! 
     327         zalpha(:,:,:) = 0._wp 
    465328         DO jl = 1, jpl 
    466 !$OMP DO schedule(static) private(jj, ji) 
    467             DO jj = 1, jpj 
    468                DO ji = 1, jpi 
    469                   zalpha(ji,jj,jl) = 0._wp 
    470                END DO 
    471             END DO 
    472          END DO 
    473          DO jl = 1, jpl 
    474 !$OMP DO schedule(static) private(jj,ji,zswi0,zswi01,rswitch) 
    475329            DO jj = 1, jpj 
    476330               DO ji = 1, jpi 
     
    491345         DO jl = 1, jpl 
    492346            DO jk = 1, nlay_i 
    493 !$OMP DO schedule(static) private(jj,ji,zs_zero) 
    494347               DO jj = 1, jpj 
    495348                  DO ji = 1, jpi 
     
    504357            END DO 
    505358         END DO 
    506 !$OMP END PARALLEL 
    507359         ! 
    508360      ENDIF ! nn_icesal 
     
    514366      IF(  nn_icesal == 3  ) THEN      ! Schwarzacher (1959) multiyear salinity profile (mean = 2.30) 
    515367         ! 
    516 !$OMP PARALLEL 
    517          DO jl = 1, jpl 
    518 !$OMP DO schedule(static) private(jj,ji) 
    519             DO jj = 1, jpj 
    520                DO ji = 1, jpi 
    521                   sm_i(ji,jj,jl) = 2.30_wp 
    522                END DO 
    523             END DO 
    524 !$OMP END DO NOWAIT 
    525          END DO 
     368         sm_i(:,:,:) = 2.30_wp 
    526369         ! 
    527370         DO jl = 1, jpl 
     
    529372               zargtemp  = ( REAL(jk,wp) - 0.5_wp ) * r1_nlay_i 
    530373               zsal =  1.6_wp * (  1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) )  ) 
    531 !$OMP DO schedule(static) private(jj,ji) 
    532                DO jj = 1, jpj 
    533                   DO ji = 1, jpi 
    534                      s_i(ji,jj,jk,jl) =  zsal 
    535                   END DO 
    536                END DO 
    537             END DO 
    538          END DO 
    539 !$OMP END PARALLEL 
     374               s_i(:,:,jk,jl) =  zsal 
     375            END DO 
     376         END DO 
    540377         ! 
    541378      ENDIF ! nn_icesal 
     
    559396      !!------------------------------------------------------------------ 
    560397      ! 
    561 !$OMP PARALLEL 
    562 !$OMP DO schedule(static) private(jj,ji) 
    563       DO jj = 1, jpj 
    564          DO ji = 1, jpi 
    565             bvm_i(ji,jj) = 0._wp 
    566          END DO 
    567       END DO 
    568       DO jl = 1, jpl 
    569 !$OMP DO schedule(static) private(jj,ji) 
    570          DO jj = 1, jpj 
    571             DO ji = 1, jpi 
    572                bv_i (ji,jj,jl) = 0._wp 
    573             END DO 
    574          END DO 
    575       END DO 
     398      bvm_i(:,:)   = 0._wp 
     399      bv_i (:,:,:) = 0._wp 
    576400      DO jl = 1, jpl 
    577401         DO jk = 1, nlay_i 
    578 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    579402            DO jj = 1, jpj 
    580403               DO ji = 1, jpi 
     
    586409         END DO 
    587410          
    588 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    589411         DO jj = 1, jpj 
    590412            DO ji = 1, jpi 
     
    594416         END DO 
    595417      END DO 
    596 !$OMP END PARALLEL 
    597418      ! 
    598419   END SUBROUTINE lim_var_bv 
     
    697518      REAL(wp) ::   zsal, zvi, zvs, zei, zes 
    698519      !!------------------------------------------------------------------- 
    699 !$OMP PARALLEL 
    700 !$OMP DO schedule(static) private(jj,ji) 
    701       DO jj = 1, jpj 
    702          DO ji = 1, jpi 
    703             at_i (ji,jj) = 0._wp 
    704          END DO 
    705       END DO 
    706       DO jl = 1, jpl 
    707 !$OMP DO schedule(static) private(jj,ji) 
    708          DO jj = 1, jpj 
    709             DO ji = 1, jpi 
    710                at_i(ji,jj) = at_i(ji,jj) + a_i(ji,jj,jl) 
    711             END DO 
    712          END DO 
     520      at_i (:,:) = 0._wp 
     521      DO jl = 1, jpl 
     522         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    713523      END DO 
    714524 
     
    719529         !----------------------------------------------------------------- 
    720530         DO jk = 1, nlay_i 
    721 !$OMP DO schedule(static) private(jj,ji,rswitch,zei) 
    722531            DO jj = 1 , jpj 
    723532               DO ji = 1 , jpi 
     
    736545         END DO 
    737546 
    738 !$OMP DO schedule(static) private(jj,ji,rswitch,zsal,zvi,zvs,zes) 
    739547         DO jj = 1 , jpj 
    740548            DO ji = 1 , jpi 
     
    775583 
    776584      ! to be sure that at_i is the sum of a_i(jl) 
    777 !$OMP DO schedule(static) private(jj,ji) 
    778       DO jj = 1, jpj 
    779          DO ji = 1, jpi 
    780             at_i (ji,jj) = 0._wp 
    781          END DO 
    782       END DO 
    783       DO jl = 1, jpl 
    784 !$OMP DO schedule(static) private(jj,ji) 
    785          DO jj = 1, jpj 
    786             DO ji = 1, jpi 
    787                at_i(ji,jj) = at_i(ji,jj) + a_i(ji,jj,jl) 
    788             END DO 
    789          END DO 
     585      at_i (:,:) = 0._wp 
     586      DO jl = 1, jpl 
     587         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    790588      END DO 
    791589 
    792590      ! open water = 1 if at_i=0 
    793 !$OMP DO schedule(static) private(jj,ji,rswitch) 
    794591      DO jj = 1, jpj 
    795592         DO ji = 1, jpi 
     
    798595         END DO 
    799596      END DO 
    800 !$OMP END PARALLEL 
    801597 
    802598      ! 
Note: See TracChangeset for help on using the changeset viewer.