Skip to content
Snippets Groups Projects
Commit 9e6ecd5a authored by ESCOBAR Juan's avatar ESCOBAR Juan
Browse files

Juan 9/04/2013: clean acc directive , ALL OK in 16 proc

parent 45d8e0f5
No related branches found
No related tags found
No related merge requests found
......@@ -6,8 +6,7 @@ CONTAINS
SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT, &
PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
PTHT, PTKET, PRT, &
PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME, &
ZRHOX11 )
PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME )
! ######################################################################
!
!!**** *PPM_MET *
......@@ -57,12 +56,12 @@ USE MODI_ADVEC_PPM_ALGO
! incorporate ADVEC_4TH_ORDER_ALG, MZF4 and MZM4
!USE MODI_ADVEC_4TH_ORDER_AUX
!
!define ZSRC ZW3D26
USE MODE_MNH_ZWORK, ONLY : ZUNIT3D, &
& ZRHOX1=>ZW3D20 ,ZRHOX2=>ZW3D21, &
& ZRHOY1=>ZW3D22 ,ZRHOY2=>ZW3D23, &
& ZRHOZ1=>ZW3D24 ,ZRHOZ2=>ZW3D25
!& ZSRC
& ZRHOX1=>ZRHOX1_PPM_MET ,ZRHOX2=>ZRHOX2_PPM_MET, &
& ZRHOY1=>ZRHOY1_PPM_MET ,ZRHOY2=>ZRHOY2_PPM_MET, &
& ZRHOZ1=>ZRHOZ1_PPM_MET ,ZRHOZ2=>ZRHOZ2_PPM_MET, &
& ZSRCTHT=>ZSRC_PPM_MET, &
& ZSRC=>ZSRC_PPM_MET
!
IMPLICIT NONE
!
......@@ -88,7 +87,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES! Source terms
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: ZRHOX11
!
!* 0.2 Declarations of local variables :
!
......@@ -101,7 +99,7 @@ INTEGER :: IGRID ! localisation on the model grid
!* Variables specific to ppm scheme
!
! Advection source term calulated in the PPM algorithm
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC,ZSRCTHT
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
!
! Temporary advected rhodj
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
......@@ -126,56 +124,40 @@ IGRID = 1
!
! Calculate the advection of the density RHODJ to pass to the algorithm
!
! acc data
! acc update device (PCRV) async(11)
! acc update device (PCRW) async(12)
! acc update device (PTHT) async(13)
! acc update device (PRT) async(14)
! acc & pcopyout(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2)
!$acc data pcopyin (PCRU,PRHODJ) pcopyin(PCRV,PCRW)
! create(ZSRC)
!$acc data pcopyin(PCRU,PCRV,PCRW,PRHODJ)
! create/mirror(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2)
CALL PPM_S0_X(HLBCX, IGRID, ZUNIT3D, PCRU, PRHODJ, PTSTEP, ZRHOX1)
! acc wait(1)
! acc update device (PCRV) async(11)
! acc wait(11)
CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
! acc wait(12)
CALL PPM_S0_Z(IGRID, ZUNIT3D, PCRW, ZRHOY1, PTSTEP, ZRHOZ1)
CALL PPM_S0_Z(IGRID, ZUNIT3D, PCRW, PRHODJ, PTSTEP, ZRHOZ2)
CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOZ2, PTSTEP, ZRHOY2)
CALL PPM_S0_X(HLBCX, IGRID, ZUNIT3D, PCRU, ZRHOY2, PTSTEP, ZRHOX2)
! acc end data
! acc update host (ZRHOX1)
!
!
! Potential temperature
!
! acc wait(13)
!$acc data copyin (PTHT)
! pcopyout(ZSRC)
!$acc data create(ZSRCTHT)
!$acc data pcopyin (PTHT) pcopy(PRTHS)
! create/mirror(ZSRCTHT)
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
ZSRCTHT, KTCOUNT, PCRU, PCRV, PCRW)
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
!$acc kernels
! add the advection to the sources
!PRTHS = PRTHS + ZSRCTHT
!$acc update host(ZSRCTHT)
!$acc end data ! create(ZSRCTHT)
!$acc end data ! pcopyout(PRTHS)
PRTHS = PRTHS + ZSRCTHT
! acc end data
PRTHS = PRTHS + ZSRC
!$acc end kernels
!$acc end data
!
IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
!
! Turbulence variables
!
IF (GTKEALLOC) THEN
!$acc data pcopyin (PTKET)
!$acc data pcopyin (PTKET) pcopy(PRTKES)
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, &
ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
PRTKES = PRTKES + ZSRC
!$acc kernels
PRTKES = PRTKES + ZSRC
!$acc end kernels
!$acc end data
!
IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
......@@ -188,13 +170,16 @@ END IF
!
! acc wait(14)
DO JRR=1,KRR
!$acc update device(PRT(:,:,:,JRR))
!
! acc update device(PRT(:,:,:,JRR))
!$acc data pcopy(PRRS(:,:,:,JRR)) pcopyin(PRT(:,:,:,JRR))
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PRT(:,:,:,JRR), &
PRHODJ, PTSTEP, &
ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
!$acc kernels
PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
!$acc end kernels
!$acc end data
!
IF (JRR==1.AND.LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'ADV_BU_RRV')
IF (JRR==2.AND.LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'ADV_BU_RRC')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment