From 98adf2c65b69fa0f229664cc786e73db301f77cd Mon Sep 17 00:00:00 2001 From: ESCOBAR Juan <escj@nuwa> Date: Wed, 20 Nov 2013 18:04:39 +0100 Subject: [PATCH] Juan 20/11/2013 : add present/upate(PRHODJ) & inline MXM/MYM/MZM --- MNH/advection.f90 | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/MNH/advection.f90 b/MNH/advection.f90 index a113ecc71..adfe7e0ac 100644 --- a/MNH/advection.f90 +++ b/MNH/advection.f90 @@ -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) ! -- GitLab