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 7698 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90 – NEMO

Ignore:
Timestamp:
2017-02-18T10:02:03+01:00 (7 years ago)
Author:
mocavero
Message:

update trunk with OpenMP parallelization

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90

    r7646 r7698  
    7676      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7777      ! 
    78       INTEGER  ::   ji, jj    ! dummy loop indices 
     78      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    7979      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrdt 
    8080      !!---------------------------------------------------------------------- 
     
    8484      IF( l_trdtra )   THEN         ! Save the input temperature trend 
    8585         CALL wrk_alloc( jpi,jpj,jpk,   ztrdt ) 
    86          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
     86!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     87         DO jk = 1, jpk 
     88            DO jj = 1, jpj 
     89               DO ji = 1, jpi 
     90                  ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) 
     91               END DO 
     92            END DO 
     93         END DO 
    8794      ENDIF 
    8895      !                             !  Add the geothermal trend on temperature 
     96!$OMP PARALLEL DO schedule(static) private(jj, ji) 
    8997      DO jj = 2, jpjm1 
    9098         DO ji = 2, jpim1 
     
    96104      ! 
    97105      IF( l_trdtra ) THEN        ! Send the trend for diagnostics 
    98          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
     106!$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 
     107         DO jk = 1, jpk 
     108            DO jj = 1, jpj 
     109               DO ji = 1, jpi 
     110                  ztrdt(ji,jj,jk) = tsa(ji,jj,jk,jp_tem) - ztrdt(ji,jj,jk) 
     111               END DO 
     112            END DO 
     113         END DO 
    99114         CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt ) 
    100115         CALL wrk_dealloc( jpi,jpj,jpk,   ztrdt ) 
     
    162177         CASE ( 1 )                          !* constant flux 
    163178            IF(lwp) WRITE(numout,*) '      *** constant heat flux  =   ', rn_geoflx_cst 
    164             qgh_trd0(:,:) = r1_rau0_rcp * rn_geoflx_cst 
     179!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     180            DO jj = 1, jpj 
     181               DO ji = 1, jpi 
     182                  qgh_trd0(ji,jj) = r1_rau0_rcp * rn_geoflx_cst 
     183               END DO 
     184            END DO 
    165185            ! 
    166186         CASE ( 2 )                          !* variable geothermal heat flux : read the geothermal fluxes in mW/m2 
     
    179199 
    180200            CALL fld_read( nit000, 1, sf_qgh )                         ! Read qgh data 
    181             qgh_trd0(:,:) = r1_rau0_rcp * sf_qgh(1)%fnow(:,:,1) * 1.e-3 ! conversion in W/m2 
     201!$OMP PARALLEL DO schedule(static) private(jj, ji) 
     202            DO jj = 1, jpj 
     203               DO ji = 1, jpi 
     204                  qgh_trd0(ji,jj) = r1_rau0_rcp * sf_qgh(1)%fnow(ji,jj,1) * 1.e-3 ! conversion in W/m2 
     205               END DO 
     206            END DO 
    182207            ! 
    183208         CASE DEFAULT 
Note: See TracChangeset for help on using the changeset viewer.