From ebf3469d7161fc0899b2a703d1cf313b7bb8bb86 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Wed, 8 Dec 2021 15:45:11 +0100 Subject: [PATCH] Philippe 08/12/2021: OpenACC: add mppdb_check + coordinate changes between MNH and ZSOLVER --- src/MNH/mass_leak.f90 | 39 +++++++++++++++++++++++++---------- src/MNH/pressurez.f90 | 43 +++++++++++++++++++++++++++++++++++++++ src/ZSOLVER/mass_leak.f90 | 31 +++++++++++++++++++++------- src/ZSOLVER/pressurez.f90 | 37 +++++++++++++++++++++++++++++++++ 4 files changed, 132 insertions(+), 18 deletions(-) diff --git a/src/MNH/mass_leak.f90 b/src/MNH/mass_leak.f90 index c5dc3e31e..20faa17c6 100644 --- a/src/MNH/mass_leak.f90 +++ b/src/MNH/mass_leak.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 solver 2006/05/18 14:41:09 -!----------------------------------------------------------------- !#################### MODULE MODI_MASS_LEAK !#################### @@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK USE MODD_PARAMETERS ! USE MODE_ll +USE MODE_MPPDB !JUAN USE MODE_REPRO_SUM !JUAN @@ -147,8 +143,18 @@ INTEGER :: JJ ! Loop index in y direction INTEGER :: JK ! Loop index in z direction ! INTEGER :: IINFO_ll ! return code of parallel routine +REAL :: ZLEAK_W,ZLEAK_E,ZLEAK_S,ZLEAK_N ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK(PDXX, "MASS_LEAK beg:PDXX") + CALL MPPDB_CHECK(PDYY, "MASS_LEAK beg:PDYY") + CALL MPPDB_CHECK(PRHODJ,"MASS_LEAK beg:PRHODJ") + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"MASS_LEAK beg:PRUS") + CALL MPPDB_CHECK(PRVS,"MASS_LEAK beg:PRVS") +END IF !------------------------------------------------------------------------------- ! !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES: @@ -166,6 +172,10 @@ IKE = SIZE(PRUS,3) - JPVEXT ! ------------------- ! ZLEAK=0. +ZLEAK_E=0. +ZLEAK_W=0. +ZLEAK_S=0. +ZLEAK_N=0. ! IF( HLBCX(1) /= 'CYCL' ) THEN ALLOCATE( ZLEAK_W_2D(IIB:IIB,IJB:IJE)) @@ -177,7 +187,6 @@ IF( HLBCX(1) /= 'CYCL' ) THEN END DO END DO END IF - ZLEAK = SUM_DD_R2_ll(ZLEAK_W_2D) ! ALLOCATE( ZLEAK_E_2D(IIE+1:IIE+1,IJB:IJE)) ZLEAK_E_2D = 0.0 @@ -188,8 +197,9 @@ IF( HLBCX(1) /= 'CYCL' ) THEN END DO END DO END IF - ZLEAK = ZLEAK + SUM_DD_R2_ll(ZLEAK_E_2D) ! + ZLEAK_W = SUM_DD_R2_ll(ZLEAK_W_2D) + ZLEAK_E = SUM_DD_R2_ll(ZLEAK_E_2D) END IF ! IF( HLBCY(1) /= 'CYCL' ) THEN @@ -202,7 +212,6 @@ IF( HLBCY(1) /= 'CYCL' ) THEN END DO END DO END IF - ZLEAK = ZLEAK + SUM_DD_R2_ll(ZLEAK_S_2D) ! ALLOCATE( ZLEAK_N_2D(IIB:IIE,IJE+1:IJE+1)) ZLEAK_N_2D = 0.0 @@ -213,10 +222,13 @@ IF( HLBCY(1) /= 'CYCL' ) THEN END DO END DO END IF - ZLEAK = ZLEAK + SUM_DD_R2_ll(ZLEAK_N_2D) ! + ZLEAK_S = SUM_DD_R2_ll(ZLEAK_S_2D) + ZLEAK_N = SUM_DD_R2_ll(ZLEAK_N_2D) END IF ! +ZLEAK = ZLEAK_E + ZLEAK_W + ZLEAK_S + ZLEAK_N +! !CALL REDUCESUM_ll(ZLEAK,IINFO_ll) ! we do the reducesum_ll in SUM_DD_R2_ll so we do not do it here ! !------------------------------------------------------------------------------- @@ -241,6 +253,11 @@ IF (HLBCY(2)=='OPEN' .AND. LNORTH_ll() ) & ! ! ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"MASS_LEAK end:PRUS") + CALL MPPDB_CHECK(PRVS,"MASS_LEAK end:PRVS") +END IF !------------------------------------------------------------------------------- ! END SUBROUTINE MASS_LEAK diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90 index e9d0240e7..86cbcf51f 100644 --- a/src/MNH/pressurez.f90 +++ b/src/MNH/pressurez.f90 @@ -247,6 +247,9 @@ USE MODE_MPPDB USE MODE_MSG USE MODE_SUM2_ll, ONLY: GMAXLOC_ll ! +#ifdef MNH_BITREP +USE MODI_BITREP +#endif USE MODI_CONJGRAD USE MODI_CONRESOL USE MODI_CONRESOLZ @@ -383,6 +386,35 @@ INTEGER :: IIMAX_ll,IJMAX_ll ! ! !------------------------------------------------------------------------------ +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK(PRHODJ,"PRESSUREZ beg:PRHODJ") + CALL MPPDB_CHECK(PDXX,"PRESSUREZ beg:PDXX") + CALL MPPDB_CHECK(PDYY,"PRESSUREZ beg:PDYY") + CALL MPPDB_CHECK(PDZZ,"PRESSUREZ beg:PDZZ") + CALL MPPDB_CHECK(PDZX,"PRESSUREZ beg:PDZX") + CALL MPPDB_CHECK(PRHOT,"PRESSUREZ beg:PRHOT") + CALL MPPDB_CHECK(PAF,"PRESSUREZ beg:PAF") + CALL MPPDB_CHECK(PCF,"PRESSUREZ beg:PCF") + CALL MPPDB_CHECK(PBF,"PRESSUREZ beg:PBF") + CALL MPPDB_CHECK(PTRIGSX,"PRESSUREZ beg:PTRIGSX") + CALL MPPDB_CHECK(PTRIGSY,"PRESSUREZ beg:PTRIGSY") + CALL MPPDB_CHECK(KIFAXX,"PRESSUREZ beg:KIFAXX") + CALL MPPDB_CHECK(KIFAXY,"PRESSUREZ beg:KIFAXY") + CALL MPPDB_CHECK(PTHT,"PRESSUREZ beg:PTHT") + CALL MPPDB_CHECK(PRT,"PRESSUREZ beg:PRT") + CALL MPPDB_CHECK(PRHODREF,"PRESSUREZ beg:PRHODREF") + CALL MPPDB_CHECK(PTHVREF,"PRESSUREZ beg:PTHVREF") + CALL MPPDB_CHECK(PRVREF,"PRESSUREZ beg:PRVREF") + CALL MPPDB_CHECK(PEXNREF,"PRESSUREZ beg:PEXNREF") + CALL MPPDB_CHECK(PBFB,"PRESSUREZ beg:PBFB") + CALL MPPDB_CHECK(PBF_SXP2_YP1_Z,"PRESSUREZ beg:PBF_SXP2_YP1_Z") + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"PRESSUREZ beg:PRUS") + CALL MPPDB_CHECK(PRVS,"PRESSUREZ beg:PRVS") + CALL MPPDB_CHECK(PRWS,"PRESSUREZ beg:PRWS") + CALL MPPDB_CHECK(PPABST,"PRESSUREZ beg:PPABST") +END IF !------------------------------------------------------------------------------- ! !* 1. PRELIMINARIES @@ -514,7 +546,11 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN ENDWHERE ENDIF ! +#ifndef MNH_BITREP ZPHIT(:,:,:)=(PPABST(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:) +#else + ZPHIT(:,:,:)=BR_POW(PPABST(:,:,:)/XP00,XRD/XCPD)-PEXNREF(:,:,:) +#endif ! ELSEIF(CEQNSYS=='LHE') THEN IF ( .NOT. LOCEAN) THEN @@ -860,6 +896,13 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN ! END IF ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"PRESSUREZ end:PRUS") + CALL MPPDB_CHECK(PRVS,"PRESSUREZ end:PRVS") + CALL MPPDB_CHECK(PRWS,"PRESSUREZ end:PRWS") + CALL MPPDB_CHECK(PPABST,"PRESSUREZ end:PPABST") +END IF !------------------------------------------------------------------------------- ! END SUBROUTINE PRESSUREZ diff --git a/src/ZSOLVER/mass_leak.f90 b/src/ZSOLVER/mass_leak.f90 index 6a6b7206d..bb0dd5ae9 100644 --- a/src/ZSOLVER/mass_leak.f90 +++ b/src/ZSOLVER/mass_leak.f90 @@ -1,13 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1995-2021 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for RCS information -!----------------------------------------------------------------- -! $Source$ $Revision$ -! MASDEV4_7 solver 2006/05/18 14:41:09 -!----------------------------------------------------------------- !#################### MODULE MODI_MASS_LEAK !#################### @@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK USE MODD_PARAMETERS ! USE MODE_ll +USE MODE_MPPDB !JUAN USE MODE_REPRO_SUM !JUAN @@ -152,6 +148,19 @@ LOGICAL :: GWEST,GEAST,GSOUTH,GNORTH REAL :: ZLEAK_W,ZLEAK_E,ZLEAK_S,ZLEAK_N ! LOGICAL , SAVE :: GFIRST_CALL_MASS_LEAK = .TRUE. + + +!$acc data present( PDXX, PDYY, PRHODJ, PRUS, PRVS ) + +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK(PDXX, "MASS_LEAK beg:PDXX") + CALL MPPDB_CHECK(PDYY, "MASS_LEAK beg:PDYY") + CALL MPPDB_CHECK(PRHODJ,"MASS_LEAK beg:PRHODJ") + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"MASS_LEAK beg:PRUS") + CALL MPPDB_CHECK(PRVS,"MASS_LEAK beg:PRVS") +END IF !------------------------------------------------------------------------------- ! !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES: @@ -289,6 +298,14 @@ END IF !$acc wait ! ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"MASS_LEAK end:PRUS") + CALL MPPDB_CHECK(PRVS,"MASS_LEAK end:PRVS") +END IF + +!$acc end data + !------------------------------------------------------------------------------- ! END SUBROUTINE MASS_LEAK diff --git a/src/ZSOLVER/pressurez.f90 b/src/ZSOLVER/pressurez.f90 index 67ee08c9f..32ec521e8 100644 --- a/src/ZSOLVER/pressurez.f90 +++ b/src/ZSOLVER/pressurez.f90 @@ -434,6 +434,35 @@ LOGICAL :: GSOUTH2D,GNORTH2D,GPRVREF0 LOGICAL, SAVE :: GFIRST_CALL_PRESSUREZ = .TRUE. ! !------------------------------------------------------------------------------ +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK(PRHODJ,"PRESSUREZ beg:PRHODJ") + CALL MPPDB_CHECK(PDXX,"PRESSUREZ beg:PDXX") + CALL MPPDB_CHECK(PDYY,"PRESSUREZ beg:PDYY") + CALL MPPDB_CHECK(PDZZ,"PRESSUREZ beg:PDZZ") + CALL MPPDB_CHECK(PDZX,"PRESSUREZ beg:PDZX") + CALL MPPDB_CHECK(PRHOT,"PRESSUREZ beg:PRHOT") + CALL MPPDB_CHECK(PAF,"PRESSUREZ beg:PAF") + CALL MPPDB_CHECK(PCF,"PRESSUREZ beg:PCF") + CALL MPPDB_CHECK(PBF,"PRESSUREZ beg:PBF") + CALL MPPDB_CHECK(PTRIGSX,"PRESSUREZ beg:PTRIGSX") + CALL MPPDB_CHECK(PTRIGSY,"PRESSUREZ beg:PTRIGSY") + CALL MPPDB_CHECK(KIFAXX,"PRESSUREZ beg:KIFAXX") + CALL MPPDB_CHECK(KIFAXY,"PRESSUREZ beg:KIFAXY") + CALL MPPDB_CHECK(PTHT,"PRESSUREZ beg:PTHT") + CALL MPPDB_CHECK(PRT,"PRESSUREZ beg:PRT") + CALL MPPDB_CHECK(PRHODREF,"PRESSUREZ beg:PRHODREF") + CALL MPPDB_CHECK(PTHVREF,"PRESSUREZ beg:PTHVREF") + CALL MPPDB_CHECK(PRVREF,"PRESSUREZ beg:PRVREF") + CALL MPPDB_CHECK(PEXNREF,"PRESSUREZ beg:PEXNREF") + CALL MPPDB_CHECK(PBFB,"PRESSUREZ beg:PBFB") + CALL MPPDB_CHECK(PBF_SXP2_YP1_Z,"PRESSUREZ beg:PBF_SXP2_YP1_Z") + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"PRESSUREZ beg:PRUS") + CALL MPPDB_CHECK(PRVS,"PRESSUREZ beg:PRVS") + CALL MPPDB_CHECK(PRWS,"PRESSUREZ beg:PRWS") + CALL MPPDB_CHECK(PPABST,"PRESSUREZ beg:PPABST") +END IF !------------------------------------------------------------------------------- ! !* 1. PRELIMINARIES @@ -1060,6 +1089,14 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN !$acc wait ! END IF + +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK(PRUS,"PRESSUREZ end:PRUS") + CALL MPPDB_CHECK(PRVS,"PRESSUREZ end:PRVS") + CALL MPPDB_CHECK(PRWS,"PRESSUREZ end:PRWS") + CALL MPPDB_CHECK(PPABST,"PRESSUREZ end:PPABST") +END IF ! #ifndef MNH_OPENACC deallocate( ZDV_SOURCE ) -- GitLab