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 7508 for branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90 – NEMO

Ignore:
Timestamp:
2016-12-19T13:15:59+01:00 (8 years ago)
Author:
mocavero
Message:

changes on code duplication and workshare construct

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r7037 r7508  
    182182      IF ( iom_use("taubot") ) THEN                ! bottom stress 
    183183!$OMP PARALLEL 
    184 !$OMP WORKSHARE 
    185          z2d(:,:) = 0._wp 
    186 !$OMP END WORKSHARE 
     184!$OMP DO schedule(static) private(jj, ji) 
     185         DO jj = 1, jpj 
     186            DO ji = 1, jpi 
     187               z2d(ji,jj) = 0._wp 
     188            END DO 
     189         END DO 
    187190!$OMP DO schedule(static) private(jj, ji, zztmpx,zztmpy) 
    188191         DO jj = 2, jpjm1 
     
    232235         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
    233236!$OMP PARALLEL 
    234 !$OMP WORKSHARE 
    235          z2d(:,:) = rau0 * e1e2t(:,:) 
    236 !$OMP END WORKSHARE 
     237!$OMP DO schedule(static) private(jj, ji) 
     238         DO jj = 1, jpj 
     239            DO ji = 1, jpi 
     240               z2d(ji,jj) = rau0 * e1e2t(ji,jj) 
     241            END DO 
     242         END DO 
    237243!$OMP DO schedule(static) private(jk) 
    238244         DO jk = 1, jpk 
     
    277283      IF( iom_use("heatc") ) THEN 
    278284!$OMP PARALLEL 
    279 !$OMP WORKSHARE 
    280          z2d(:,:)  = 0._wp  
    281 !$OMP END WORKSHARE 
    282 !$OMP DO schedule(static) private(jk, jj, ji) 
     285!$OMP DO schedule(static) private(jj, ji) 
     286         DO jj = 1, jpj 
     287            DO ji = 1, jpi 
     288               z2d(ji,jj) = 0._wp 
     289            END DO 
     290         END DO 
    283291         DO jk = 1, jpkm1 
     292!$OMP DO schedule(static) private(jj, ji) 
    284293            DO jj = 1, jpj 
    285294               DO ji = 1, jpi 
     
    287296               END DO 
    288297            END DO 
    289          END DO 
    290298!$OMP END DO NOWAIT 
     299         END DO 
    291300!$OMP END PARALLEL 
    292301         CALL iom_put( "heatc", (rau0 * rcp) * z2d )    ! vertically integrated heat content (J/m2) 
     
    295304      IF( iom_use("saltc") ) THEN 
    296305!$OMP PARALLEL 
    297 !$OMP WORKSHARE 
    298          z2d(:,:)  = 0._wp  
    299 !$OMP END WORKSHARE 
    300 !$OMP DO schedule(static) private(jk, jj, ji) 
     306!$OMP DO schedule(static) private(jj, ji) 
     307         DO jj = 1, jpj 
     308            DO ji = 1, jpi 
     309               z2d(ji,jj) = 0._wp 
     310            END DO 
     311         END DO 
    301312         DO jk = 1, jpkm1 
     313!$OMP DO schedule(static) private(jj, ji) 
    302314            DO jj = 1, jpj 
    303315               DO ji = 1, jpi 
     
    305317               END DO 
    306318            END DO 
    307          END DO 
    308319!$OMP END DO NOWAIT 
     320         END DO 
    309321!$OMP END PARALLEL 
    310322         CALL iom_put( "saltc", rau0 * z2d )   ! vertically integrated salt content (PSU*kg/m2) 
     
    313325      IF ( iom_use("eken") ) THEN 
    314326!$OMP PARALLEL 
    315 !$OMP WORKSHARE 
    316          rke(:,:,jk) = 0._wp                               !      kinetic energy  
    317 !$OMP END WORKSHARE 
     327!$OMP DO schedule(static) private(jj, ji) 
     328         DO jj = 1, jpj 
     329            DO ji = 1, jpi 
     330               rke(ji,jj,jk) = 0._wp                               !      kinetic energy  
     331            END DO 
     332         END DO 
    318333!$OMP DO schedule(static) private(jk, jj, ji, zztmp, zztmpx, zztmpy) 
    319334         DO jk = 1, jpkm1 
     
    344359      IF( iom_use("u_masstr") .OR. iom_use("u_heattr") .OR. iom_use("u_salttr") ) THEN 
    345360!$OMP PARALLEL 
    346 !$OMP WORKSHARE 
    347          z3d(:,:,jpk) = 0.e0 
    348 !$OMP END WORKSHARE 
     361!$OMP DO schedule(static) private(jj, ji) 
     362         DO jj = 1, jpj 
     363            DO ji = 1, jpi 
     364               z3d(ji,jj,jpk) = 0.e0 
     365            END DO 
     366         END DO 
    349367!$OMP DO schedule(static) private(jk) 
    350368         DO jk = 1, jpkm1 
     
    358376      IF( iom_use("u_heattr") ) THEN 
    359377!$OMP PARALLEL 
    360 !$OMP WORKSHARE 
    361          z2d(:,:) = 0.e0  
    362 !$OMP END WORKSHARE 
    363 !$OMP DO schedule(static) private(jk, jj, ji) 
     378!$OMP DO schedule(static) private(jj, ji) 
     379         DO jj = 1, jpj 
     380            DO ji = 1, jpi 
     381               z2d(ji,jj) = 0.e0 
     382            END DO 
     383         END DO 
    364384         DO jk = 1, jpkm1 
     385!$OMP DO schedule(static) private(jj, ji) 
    365386            DO jj = 2, jpjm1 
    366387               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    368389               END DO 
    369390            END DO 
    370          END DO 
    371391!$OMP END DO NOWAIT 
     392         END DO 
    372393!$OMP END PARALLEL 
    373394         CALL lbc_lnk( z2d, 'U', -1. ) 
     
    377398      IF( iom_use("u_salttr") ) THEN 
    378399!$OMP PARALLEL 
    379 !$OMP WORKSHARE 
    380          z2d(:,:) = 0.e0  
    381 !$OMP END WORKSHARE 
    382 !$OMP DO schedule(static) private(jk, jj, ji) 
     400!$OMP DO schedule(static) private(jj, ji) 
     401         DO jj = 1, jpj 
     402            DO ji = 1, jpi 
     403               z2d(ji,jj) = 0.e0 
     404            END DO 
     405         END DO 
    383406         DO jk = 1, jpkm1 
     407!$OMP DO schedule(static) private(jj, ji) 
    384408            DO jj = 2, jpjm1 
    385409               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    387411               END DO 
    388412            END DO 
    389          END DO 
    390413!$OMP END DO NOWAIT 
     414         END DO 
    391415!$OMP END PARALLEL 
    392416         CALL lbc_lnk( z2d, 'U', -1. ) 
     
    397421      IF( iom_use("v_masstr") .OR. iom_use("v_heattr") .OR. iom_use("v_salttr") ) THEN 
    398422!$OMP PARALLEL 
    399 !$OMP WORKSHARE 
    400          z3d(:,:,jpk) = 0.e0 
    401 !$OMP END WORKSHARE 
     423!$OMP DO schedule(static) private(jj, ji) 
     424         DO jj = 1, jpj 
     425            DO ji = 1, jpi 
     426               z3d(ji,jj,jpk) = 0.e0 
     427            END DO 
     428         END DO 
    402429!$OMP DO schedule(static) private(jk) 
    403430         DO jk = 1, jpkm1 
     
    411438      IF( iom_use("v_heattr") ) THEN 
    412439!$OMP PARALLEL 
    413 !$OMP WORKSHARE 
    414          z2d(:,:) = 0.e0  
    415 !$OMP END WORKSHARE 
    416 !$OMP DO schedule(static) private(jk, jj, ji) 
     440!$OMP DO schedule(static) private(jj, ji) 
     441         DO jj = 1, jpj 
     442            DO ji = 1, jpi 
     443               z2d(ji,jj) = 0.e0 
     444            END DO 
     445         END DO 
    417446         DO jk = 1, jpkm1 
     447!$OMP DO schedule(static) private(jj, ji) 
    418448            DO jj = 2, jpjm1 
    419449               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    421451               END DO 
    422452            END DO 
    423          END DO 
    424453!$OMP END DO NOWAIT 
     454         END DO 
    425455!$OMP END PARALLEL 
    426456         CALL lbc_lnk( z2d, 'V', -1. ) 
     
    430460      IF( iom_use("v_salttr") ) THEN 
    431461!$OMP PARALLEL 
    432 !$OMP WORKSHARE 
    433          z2d(:,:) = 0.e0  
    434 !$OMP END WORKSHARE 
    435 !$OMP DO schedule(static) private(jk, jj, ji) 
     462!$OMP DO schedule(static) private(jj, ji) 
     463         DO jj = 1, jpj 
     464            DO ji = 1, jpi 
     465               z2d(ji,jj) = 0.e0 
     466            END DO 
     467         END DO 
    436468         DO jk = 1, jpkm1 
     469!$OMP DO schedule(static) private(jj, ji) 
    437470            DO jj = 2, jpjm1 
    438471               DO ji = fs_2, fs_jpim1   ! vector opt. 
     
    440473               END DO 
    441474            END DO 
    442          END DO 
    443475!$OMP END DO NOWAIT 
     476         END DO 
    444477!$OMP END PARALLEL 
    445478         CALL lbc_lnk( z2d, 'V', -1. ) 
     
    818851      ENDIF 
    819852      IF( .NOT.ln_linssh ) THEN 
    820 !$OMP PARALLEL WORKSHARE 
    821          zw3d(:,:,:) = ( ( e3t_n(:,:,:) - e3t_0(:,:,:) ) / e3t_0(:,:,:) * 100 * tmask(:,:,:) ) ** 2 
    822 !$OMP END PARALLEL WORKSHARE 
     853!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     854         DO jk = 1, jpk 
     855            DO jj = 1, jpj 
     856               DO ji = 1, jpi 
     857                  zw3d(ji,jj,jk) = ( ( e3t_n(ji,jj,jk) - e3t_0(ji,jj,jk) ) / e3t_0(ji,jj,jk) * 100 * tmask(ji,jj,jk) ) ** 2 
     858               END DO 
     859            END DO 
     860         END DO 
    823861         CALL histwrite( nid_T, "vovvle3t", it, e3t_n (:,:,:) , ndim_T , ndex_T  )   ! level thickness 
    824862         CALL histwrite( nid_T, "vovvldep", it, gdept_n(:,:,:) , ndim_T , ndex_T  )   ! t-point depth 
     
    832870                                                                                  ! in linear free surface case) 
    833871      IF( ln_linssh ) THEN 
    834 !$OMP PARALLEL WORKSHARE 
    835          zw2d(:,:) = emp (:,:) * tsn(:,:,1,jp_tem) 
    836 !$OMP END PARALLEL WORKSHARE 
     872!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     873            DO jj = 1, jpj 
     874               DO ji = 1, jpi 
     875                  zw2d(ji,jj) = emp (ji,jj) * tsn(ji,jj,1,jp_tem) 
     876               END DO 
     877            END DO 
    837878         CALL histwrite( nid_T, "sosst_cd", it, zw2d, ndim_hT, ndex_hT )          ! c/d term on sst 
    838 !$OMP PARALLEL WORKSHARE 
    839          zw2d(:,:) = emp (:,:) * tsn(:,:,1,jp_sal) 
    840 !$OMP END PARALLEL WORKSHARE 
     879!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     880            DO jj = 1, jpj 
     881               DO ji = 1, jpi 
     882                  zw2d(ji,jj) = emp (ji,jj) * tsn(ji,jj,1,jp_sal) 
     883               END DO 
     884            END DO 
    841885         CALL histwrite( nid_T, "sosss_cd", it, zw2d, ndim_hT, ndex_hT )          ! c/d term on sss 
    842886      ENDIF 
     
    875919         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    876920         IF( ln_ssr ) THEN 
    877 !$OMP PARALLEL WORKSHARE 
    878             zw2d(:,:) = erp(:,:) * tsn(:,:,1,jp_sal) * tmask(:,:,1) 
    879 !$OMP END PARALLEL WORKSHARE 
     921!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     922            DO jj = 1, jpj 
     923               DO ji = 1, jpi 
     924                  zw2d(ji,jj) = erp(ji,jj) * tsn(ji,jj,1,jp_sal) * tmask(ji,jj,1) 
     925               END DO 
     926            END DO 
    880927         END IF 
    881928         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
     
    885932         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    886933         IF( ln_ssr ) THEN 
    887 !$OMP PARALLEL WORKSHARE 
    888             zw2d(:,:) = erp(:,:) * tsn(:,:,1,jp_sal) * tmask(:,:,1) 
    889 !$OMP END PARALLEL WORKSHARE 
     934!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     935            DO jj = 1, jpj 
     936               DO ji = 1, jpi 
     937                  zw2d(ji,jj) = erp(ji,jj) * tsn(ji,jj,1,jp_sal) * tmask(ji,jj,1) 
     938               END DO 
     939            END DO 
    890940         END IF 
    891941         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
Note: See TracChangeset for help on using the changeset viewer.