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 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. !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 MODULE MODI_MASS_LEAK
!#################### !####################
...@@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK ...@@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK
USE MODD_PARAMETERS USE MODD_PARAMETERS
! !
USE MODE_ll USE MODE_ll
USE MODE_MPPDB
!JUAN !JUAN
USE MODE_REPRO_SUM USE MODE_REPRO_SUM
!JUAN !JUAN
...@@ -147,8 +143,18 @@ INTEGER :: JJ ! Loop index in y direction ...@@ -147,8 +143,18 @@ INTEGER :: JJ ! Loop index in y direction
INTEGER :: JK ! Loop index in z direction INTEGER :: JK ! Loop index in z direction
! !
INTEGER :: IINFO_ll ! return code of parallel routine 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: !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
...@@ -166,6 +172,10 @@ IKE = SIZE(PRUS,3) - JPVEXT ...@@ -166,6 +172,10 @@ IKE = SIZE(PRUS,3) - JPVEXT
! ------------------- ! -------------------
! !
ZLEAK=0. ZLEAK=0.
ZLEAK_E=0.
ZLEAK_W=0.
ZLEAK_S=0.
ZLEAK_N=0.
! !
IF( HLBCX(1) /= 'CYCL' ) THEN IF( HLBCX(1) /= 'CYCL' ) THEN
ALLOCATE( ZLEAK_W_2D(IIB:IIB,IJB:IJE)) ALLOCATE( ZLEAK_W_2D(IIB:IIB,IJB:IJE))
...@@ -177,7 +187,6 @@ IF( HLBCX(1) /= 'CYCL' ) THEN ...@@ -177,7 +187,6 @@ IF( HLBCX(1) /= 'CYCL' ) THEN
END DO END DO
END DO END DO
END IF END IF
ZLEAK = SUM_DD_R2_ll(ZLEAK_W_2D)
! !
ALLOCATE( ZLEAK_E_2D(IIE+1:IIE+1,IJB:IJE)) ALLOCATE( ZLEAK_E_2D(IIE+1:IIE+1,IJB:IJE))
ZLEAK_E_2D = 0.0 ZLEAK_E_2D = 0.0
...@@ -188,8 +197,9 @@ IF( HLBCX(1) /= 'CYCL' ) THEN ...@@ -188,8 +197,9 @@ IF( HLBCX(1) /= 'CYCL' ) THEN
END DO END DO
END DO END DO
END IF 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 END IF
! !
IF( HLBCY(1) /= 'CYCL' ) THEN IF( HLBCY(1) /= 'CYCL' ) THEN
...@@ -202,7 +212,6 @@ IF( HLBCY(1) /= 'CYCL' ) THEN ...@@ -202,7 +212,6 @@ IF( HLBCY(1) /= 'CYCL' ) THEN
END DO END DO
END DO END DO
END IF END IF
ZLEAK = ZLEAK + SUM_DD_R2_ll(ZLEAK_S_2D)
! !
ALLOCATE( ZLEAK_N_2D(IIB:IIE,IJE+1:IJE+1)) ALLOCATE( ZLEAK_N_2D(IIB:IIE,IJE+1:IJE+1))
ZLEAK_N_2D = 0.0 ZLEAK_N_2D = 0.0
...@@ -213,10 +222,13 @@ IF( HLBCY(1) /= 'CYCL' ) THEN ...@@ -213,10 +222,13 @@ IF( HLBCY(1) /= 'CYCL' ) THEN
END DO END DO
END DO END DO
END IF 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 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 !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() ) & ...@@ -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 END SUBROUTINE MASS_LEAK
...@@ -247,6 +247,9 @@ USE MODE_MPPDB ...@@ -247,6 +247,9 @@ USE MODE_MPPDB
USE MODE_MSG USE MODE_MSG
USE MODE_SUM2_ll, ONLY: GMAXLOC_ll USE MODE_SUM2_ll, ONLY: GMAXLOC_ll
! !
#ifdef MNH_BITREP
USE MODI_BITREP
#endif
USE MODI_CONJGRAD USE MODI_CONJGRAD
USE MODI_CONRESOL USE MODI_CONRESOL
USE MODI_CONRESOLZ USE MODI_CONRESOLZ
...@@ -383,6 +386,35 @@ INTEGER :: IIMAX_ll,IJMAX_ll ...@@ -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 !* 1. PRELIMINARIES
...@@ -514,7 +546,11 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN ...@@ -514,7 +546,11 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN
ENDWHERE ENDWHERE
ENDIF ENDIF
! !
#ifndef MNH_BITREP
ZPHIT(:,:,:)=(PPABST(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:) ZPHIT(:,:,:)=(PPABST(:,:,:)/XP00)**(XRD/XCPD)-PEXNREF(:,:,:)
#else
ZPHIT(:,:,:)=BR_POW(PPABST(:,:,:)/XP00,XRD/XCPD)-PEXNREF(:,:,:)
#endif
! !
ELSEIF(CEQNSYS=='LHE') THEN ELSEIF(CEQNSYS=='LHE') THEN
IF ( .NOT. LOCEAN) THEN IF ( .NOT. LOCEAN) THEN
...@@ -860,6 +896,13 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN ...@@ -860,6 +896,13 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN
! !
END IF 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 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 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. !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 MODULE MODI_MASS_LEAK
!#################### !####################
...@@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK ...@@ -108,6 +103,7 @@ END MODULE MODI_MASS_LEAK
USE MODD_PARAMETERS USE MODD_PARAMETERS
! !
USE MODE_ll USE MODE_ll
USE MODE_MPPDB
!JUAN !JUAN
USE MODE_REPRO_SUM USE MODE_REPRO_SUM
!JUAN !JUAN
...@@ -152,6 +148,19 @@ LOGICAL :: GWEST,GEAST,GSOUTH,GNORTH ...@@ -152,6 +148,19 @@ LOGICAL :: GWEST,GEAST,GSOUTH,GNORTH
REAL :: ZLEAK_W,ZLEAK_E,ZLEAK_S,ZLEAK_N REAL :: ZLEAK_W,ZLEAK_E,ZLEAK_S,ZLEAK_N
! !
LOGICAL , SAVE :: GFIRST_CALL_MASS_LEAK = .TRUE. 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: !* 1. COMPUTE DIMENSIONS OF ARRAYS AND OTHER INDICES:
...@@ -289,6 +298,14 @@ END IF ...@@ -289,6 +298,14 @@ END IF
!$acc wait !$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 END SUBROUTINE MASS_LEAK
...@@ -434,6 +434,35 @@ LOGICAL :: GSOUTH2D,GNORTH2D,GPRVREF0 ...@@ -434,6 +434,35 @@ LOGICAL :: GSOUTH2D,GNORTH2D,GPRVREF0
LOGICAL, SAVE :: GFIRST_CALL_PRESSUREZ = .TRUE. 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 !* 1. PRELIMINARIES
...@@ -1060,6 +1089,14 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN ...@@ -1060,6 +1089,14 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN
!$acc wait !$acc wait
! !
END IF 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 #ifndef MNH_OPENACC
deallocate( ZDV_SOURCE ) 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