Ignore:
Timestamp:
Dec 18, 2018 12:31:28 PM (5 years ago)
Author:
knoop
Message:

OpenACC port for SPEC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/tridia_solver_mod.f90

    r3274 r3634  
    2525! -----------------
    2626! $Id$
     27! OpenACC port for SPEC
     28!
     29! 3274 2018-09-24 15:42:55Z knoop
    2730! Modularization of all bulk cloud physics code components
    2831!
     
    150153
    151154       USE arrays_3d,                                                          &
    152            ONLY:  ddzu_pres, ddzw, rho_air_zw
     155           ONLY:  ddzu_pres, ddzw, rho_air_zw, tri
    153156
    154157       IMPLICIT NONE
     
    169172       CALL maketri
    170173       CALL split
     174
     175       !$ACC ENTER DATA &
     176       !$ACC COPYIN(ddzuw(0:nz-1,1:3)) &
     177       !$ACC COPYIN(tri(nxl_z:nxr_z,nys_z:nyn_z,0:nz-1,1:2))
    171178
    172179    END SUBROUTINE tridia_init
     
    290297
    291298          REAL(wp), DIMENSION(nxl_z:nxr_z,nys_z:nyn_z,0:nz-1)   ::  ar1 !<
     299          !$ACC DECLARE CREATE(ar1)
    292300
    293301!
    294302!--       Forward substitution
     303          !$ACC PARALLEL PRESENT(ar, ar1, tri) PRIVATE(i,j,k)
    295304          DO  k = 0, nz - 1
     305             !$ACC LOOP COLLAPSE(2)
    296306             DO  j = nys_z, nyn_z
    297307                DO  i = nxl_z, nxr_z
     
    306316             ENDDO
    307317          ENDDO
     318          !$ACC END PARALLEL
    308319
    309320!
     
    312323!--       by zero appearing if the pressure bc is set to neumann at the top of
    313324!--       the model domain.
     325          !$ACC PARALLEL PRESENT(ar, ar1, ddzuw, tri) PRIVATE(i,j,k)
    314326          DO  k = nz-1, 0, -1
     327             !$ACC LOOP COLLAPSE(2)
    315328             DO  j = nys_z, nyn_z
    316329                DO  i = nxl_z, nxr_z
     
    325338             ENDDO
    326339          ENDDO
     340          !$ACC END PARALLEL
    327341
    328342!
     
    332346          IF ( ibc_p_b == 1  .AND.  ibc_p_t == 1 )  THEN
    333347             IF ( nys_z == 0  .AND.  nxl_z == 0 )  THEN
     348                !$ACC PARALLEL LOOP PRESENT(ar)
    334349                DO  k = 1, nz
    335350                   ar(nxl_z,nys_z,k) = 0.0_wp
Note: See TracChangeset for help on using the changeset viewer.