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

Juan 20/11/2013 : add present/upate(PRHODJ) & inline MXM/MYM/MZM

parent bcc7c63b
No related branches found
No related tags found
No related merge requests found
......@@ -237,10 +237,7 @@ USE MODI_MPDATA_SCALAR
USE MODI_PPM_MET
USE MODI_PPM_SCALAR
!
#ifndef USET3D
!!$USE MODE_MNH_ZWORK, ONLY : ZRUT,ZRVT,ZRWT,ZRUCT,ZRVCT,ZRWCT
#endif
!!$USE MODE_MNH_ZWORK, ONLY : ZRUT,ZRVT,ZRWT
USE MODD_PARAMETERS , ONLY : JPHEXT
!
!-------------------------------------------------------------------------------
!
......@@ -276,6 +273,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PUM, PVM, PWM
! Variables at t-dt
REAL, DIMENSION(:,:,:), INTENT(IN) :: PUT , PVT , PWT
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PTKET, PRHODJ
!$acc declara present(PRHODJ)
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT , PSVT
! Variables at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PDXX,PDYY,PDZZ,PDZX,PDZY
......@@ -289,6 +287,7 @@ TYPE(HALO2LIST_ll), POINTER :: TPHALO2MLIST ! momentum variables
TYPE(HALO2LIST_ll), POINTER :: TPHALO2LIST ! meteorological scalar variables
TYPE(HALO2LIST_ll), POINTER :: TPHALO2SLIST ! tracer scalar variables
!
INTEGER :: IIU,IJU,IKU
!
!* 0.2 declarations of local variables
!
......@@ -299,7 +298,6 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRUT
REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRVT
REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWT
!$acc declare present (ZRUT,ZRVT,ZRWT)
! cartesian
! components of
! momentum
......@@ -315,17 +313,34 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZRWCT
!
INTEGER :: IINFO_ll ! return code of parallel routine
TYPE(LIST_ll), POINTER :: TZFIELDS_ll ! list of fields to exchange
!
#define mxm(PMXM,PA) PMXM(2:IIU,:,:) = 0.5*( PA(2:IIU,:,:)+PA(1:IIU-1,:,:) ) ; PMXM(1,:,:) = PMXM(IIU-2*JPHEXT+1,:,:) ! MXM(PMXM,PA)
#define mym(PMYM,PA) PMYM(:,2:IJU,:) = 0.5*( PA(:,2:IJU,:)+PA(:,1:IJU-1,:) ) ; PMYM(:,1,:) = PMYM(:,IJU-2*JPHEXT+1,:) ! MYM(PMYM,PA)
#define mzm(PMZM,PA) PMZM(:,:,2:IKU) = 0.5*( PA(:,:,2:IKU)+PA(:,:,1:IKU-1) ) ; PMZM(:,:,1) = -999. ! MZM(PMZM,PA)
!
!-------------------------------------------------------------------------------
!
!* 0. COMPUTES THE DOMAIN DIMENSIONS
! ------------------------------
CALL GET_DIM_EXT_ll('B',IIU,IJU)
IKU=SIZE(PUT,3)
!
!* 1. COMPUTES THE CONTRAVARIANT COMPONENTS
! -------------------------------------
!
ZRUT = PUT(:,:,:) * MXM(PRHODJ)
ZRVT = PVT(:,:,:) * MYM(PRHODJ)
ZRWT = PWT(:,:,:) * MZM(PRHODJ)
!!$ZRUT = PUT(:,:,:) * MXM(PRHODJ)
!!$ZRVT = PVT(:,:,:) * MYM(PRHODJ)
!!$ZRWT = PWT(:,:,:) * MZM(PRHODJ)
!$acc update device(PRHODJ)
!$acc kernels pcopyin(PUT,PVT,PWT)
mxm(ZRUT,PRHODJ)
ZRUT = PUT(:,:,:) * ZRUT
mym(ZRVT,PRHODJ)
ZRVT = PVT(:,:,:) * ZRVT
mzm(ZRWT,PRHODJ)
ZRWT = PWT(:,:,:) * ZRWT
!$acc end kernels
!$acc update host (ZRUT,ZRVT,ZRWT)
!
CALL CONTRAV (ZRUT,ZRVT,ZRWT,PDXX,PDYY,PDZZ,PDZX,PDZY,ZRUCT,ZRVCT,ZRWCT)
!
......
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