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

Juan 7/11/2013: use of ZT3D temp var in PPM_MET

parent d06cde23
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,61 @@ CONTAINS
PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
PTHT, PTKET, PRT, &
PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME )
USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D
USE MODE_MNH_ZWORK, ONLY : ZUNIT3D
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
CHARACTER (LEN=6), INTENT(IN) :: HMET_ADV_SCHEME
!
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KTCOUNT! iteration count
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRU ! contravariant
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRV ! components
REAL, DIMENSION(:,:,:), INTENT(IN) :: PCRW ! of momentum
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODJ ! density
!
REAL, INTENT(IN) :: PTSTEP ! Time step
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET ! Vars at t
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
!
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRTHS, PRTKES! Source terms
REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS
INTEGER :: IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2
CALL MNH_GET_ZT3D(IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2)
CALL PPM_MET_D(HLBCX,HLBCY, KRR, KTCOUNT, &
& PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
& PTHT, PTKET, PRT, &
& PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME , &
& ZT3D(:,:,:,IZSRC), &
& ZT3D(:,:,:,IZRHOX1),ZT3D(:,:,:,IZRHOX2),ZT3D(:,:,:,IZRHOY1), &
& ZT3D(:,:,:,IZRHOY2),ZT3D(:,:,:,IZRHOZ1),ZT3D(:,:,:,IZRHOZ2), &
& ZUNIT3D )
CALL MNH_REL_ZT3D(IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2)
CONTAINS
SUBROUTINE PPM_MET_D(HLBCX,HLBCY, KRR, KTCOUNT, &
& PCRU, PCRV, PCRW, PTSTEP, PRHODJ, &
& PTHT, PTKET, PRT, &
& PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME, &
& ZSRC, &
& ZRHOX1,ZRHOX2,ZRHOY1,ZRHOY2,ZRHOZ1,ZRHOZ2, &
& ZUNIT )
! ######################################################################
!
!!**** *PPM_MET *
......@@ -56,13 +111,6 @@ USE MODI_ADVEC_PPM_ALGO
! incorporate ADVEC_4TH_ORDER_ALG, MZF4 and MZM4
!USE MODI_ADVEC_4TH_ORDER_AUX
!
USE MODE_MNH_ZWORK, ONLY : ZUNIT3D, &
& 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
!
!* 0.1 Declarations of dummy arguments :
......@@ -99,14 +147,15 @@ 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
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
!$acc declare present (ZSRC)
!
! Temporary advected rhodj
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX2
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT3D
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
!$acc declare present (ZRHOX1,ZRHOX2,ZRHOY1,ZRHOY2,ZRHOZ1,ZRHOZ2,ZUNIT)
!
!-------------------------------------------------------------------------------
!
......@@ -124,19 +173,17 @@ IGRID = 1
!
! Calculate the advection of the density RHODJ to pass to the algorithm
!
!$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)
CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
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 data pcopyin(PCRU,PCRV,PCRW,PRHODJ)
CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP, ZRHOX1)
CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, ZRHOY1, PTSTEP, ZRHOZ1)
CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP, ZRHOZ2)
CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOZ2, PTSTEP, ZRHOY2)
CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, ZRHOY2, PTSTEP, ZRHOX2)
!
! Potential temperature
!
!$acc data pcopyin (PTHT) pcopy(PRTHS)
! create/mirror(ZSRC)
CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
......@@ -164,13 +211,9 @@ IF (GTKEALLOC) THEN
!
END IF
!
!
!
! Case with KRR moist variables
!
! acc wait(14)
DO JRR=1,KRR
! 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, &
......@@ -192,7 +235,8 @@ DO JRR=1,KRR
END DO
!$acc end data
!
!
END SUBROUTINE PPM_MET_D
END SUBROUTINE PPM_MET
END MODULE MODI_PPM_MET
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