Skip to content
Snippets Groups Projects
Commit ebf3469d authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 08/12/2021: OpenACC: add mppdb_check + coordinate changes between MNH and ZSOLVER

parent 0ee0aa8a
No related branches found
No related tags found
No related merge requests found
!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
......@@ -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
!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
......@@ -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 )
......
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