Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Meso-NH-NOT-OFFICIAL-TESTONLY
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RODIER Quentin
Meso-NH-NOT-OFFICIAL-TESTONLY
Commits
88f14ec3
Commit
88f14ec3
authored
3 years ago
by
Juan Escobar
Browse files
Options
Downloads
Patches
Plain Diff
Juan 16/11/2021:ZSOLVER, manage compilation with(out) MNH_OPENACC/MNH_BITREP for non nvhpc compiler
parent
9bdb8f07
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/ZSOLVER/p_abs.f90
+1
-1
1 addition, 1 deletion
src/ZSOLVER/p_abs.f90
src/ZSOLVER/pressurez.f90
+31
-9
31 additions, 9 deletions
src/ZSOLVER/pressurez.f90
with
32 additions
and
10 deletions
src/ZSOLVER/p_abs.f90
+
1
−
1
View file @
88f14ec3
...
...
@@ -276,7 +276,7 @@ IF ( CEQNSYS=='DUR' .OR. CEQNSYS=='MAE' ) THEN
DO
JJ
=
IJB
,
IJE
DO
JI
=
IIB
,
IIE
ZMASSGUESS_2D
(
JI
,
JJ
)
=
ZMASSGUESS_2D
(
JI
,
JJ
)
+
&
#ifndef MNH_
OPENACC
#ifndef MNH_
BITREP
(
PEXNREF
(
JI
,
JJ
,
JK
)
+
PPHIT
(
JI
,
JJ
,
JK
))
**
ZCVD_O_RD
&
#else
BR_POW
((
PEXNREF
(
JI
,
JJ
,
JK
)
+
PPHIT
(
JI
,
JJ
,
JK
)),
ZCVD_O_RD
)
&
...
...
This diff is collapsed.
Click to expand it.
src/ZSOLVER/pressurez.f90
+
31
−
9
View file @
88f14ec3
...
...
@@ -42,7 +42,8 @@ REAL, INTENT(IN) :: PRELAX ! relaxation coefficient for
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PRHODJ
! density of reference state
! * J
!
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
,
PDZX
,
PDZY
! metric coefficients
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
REAL
,
DIMENSION
(:,:,:),
INTENT
(
INOUT
)
::
PDZX
,
PDZY
! metric coefficients
!
REAL
,
INTENT
(
IN
)
::
PDXHATM
! mean grid increment in the x
! direction
...
...
@@ -270,11 +271,11 @@ USE MODI_SHUMAN
#ifdef MNH_OPENACC
USE
MODI_SHUMAN_DEVICE
USE
MODI_GET_HALO
USE
MODE_MNH_ZWORK
,
ONLY
:
MNH_ALLOCATE_ZT3D
,
MNH_REL_ZT3D
#endif
!
#ifdef MNH_BITREP
USE
MODI_BITREP
USE
MODE_MNH_ZWORK
,
ONLY
:
MNH_ALLOCATE_ZT3D
,
MNH_REL_ZT3D
#endif
!
IMPLICIT
NONE
...
...
@@ -298,7 +299,8 @@ REAL, INTENT(IN) :: PRELAX ! relaxation coefficient for
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PRHODJ
! density of reference state
! * J
!
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
,
PDZX
,
PDZY
! metric coefficients
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PDXX
,
PDYY
,
PDZZ
REAL
,
DIMENSION
(:,:,:),
INTENT
(
INOUT
)
::
PDZX
,
PDZY
! metric coefficients
!
REAL
,
INTENT
(
IN
)
::
PDXHATM
! mean grid increment in the x
! direction
...
...
@@ -446,6 +448,11 @@ GNORTH2D = ( L2D .AND. LNORTH_ll() )
!
GPRVREF0
=
(
SIZE
(
PRVREF
,
1
)
==
0
)
!
#ifndef MNH_OPENACC
ALLOCATE
(
ZDV_SOURCE
(
IIU
,
IJU
,
IKU
))
ALLOCATE
(
ZTHETAV
(
IIU
,
IJU
,
IKU
))
ALLOCATE
(
ZPHIT
(
IIU
,
IJU
,
IKU
))
#else
IZDV_SOURCE
=
MNH_ALLOCATE_ZT3D
(
ZDV_SOURCE
,
IIU
,
IJU
,
IKU
)
IZTHETAV
=
MNH_ALLOCATE_ZT3D
(
ZTHETAV
,
IIU
,
IJU
,
IKU
)
IZPHIT
=
MNH_ALLOCATE_ZT3D
(
ZPHIT
,
IIU
,
IJU
,
IKU
)
...
...
@@ -455,6 +462,7 @@ IZMXM_PRHODJ = MNH_ALLOCATE_ZT3D( ZMXM_PRHODJ,IIU,IJU,IKU )
IZMZM_PRHODJ
=
MNH_ALLOCATE_ZT3D
(
ZMZM_PRHODJ
,
IIU
,
IJU
,
IKU
)
IZGZ_M_W
=
MNH_ALLOCATE_ZT3D
(
ZGZ_M_W
,
IIU
,
IJU
,
IKU
)
IZMYM_PRHODJ
=
MNH_ALLOCATE_ZT3D
(
ZMYM_PRHODJ
,
IIU
,
IJU
,
IKU
)
#endif
!
IF
(
GFIRST_CALL_PRESSUREZ
)
THEN
GFIRST_CALL_PRESSUREZ
=
.FALSE.
...
...
@@ -562,7 +570,11 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN
#else
!$acc kernels
DO
CONCURRENT
(
JI
=
1
:
IIU
,
JJ
=
1
:
IJU
,
JK
=
1
:
IKU
)
#ifndef MNH_BITREP
ZPHIT
(
JI
,
JJ
,
JK
)
=
(
PPABST
(
JI
,
JJ
,
JK
)/
XP00
)
**
(
XRD
/
XCPD
)
-
PEXNREF
(
JI
,
JJ
,
JK
)
#else
ZPHIT
(
JI
,
JJ
,
JK
)
=
BR_POW
((
PPABST
(
JI
,
JJ
,
JK
)/
XP00
),(
XRD
/
XCPD
))
-
PEXNREF
(
JI
,
JJ
,
JK
)
#endif
END
DO
!$acc end kernels
#endif
...
...
@@ -698,9 +710,11 @@ END IF
!$acc wait
!
CALL
MPPDB_CHECK3DM
(
"before MXM PRESSUREZ :PRU/V/WS"
,
PRECISION
,
PRUS
,
PRVS
,
PRWS
)
IF
(
CEQNSYS
==
'MAE'
.OR.
CEQNSYS
==
'DUR'
)
THEN
!!$ PRUS = PRUS - MXM(PRHODJ * XCPD * ZTHETAV) * ZDV_SOURCE
!!$ PRWS = PRWS - MZM(PRHODJ * XCPD * ZTHETAV) * GZ_M_W(1,IKU,1,ZPHIT,PDZZ)
IF
(
CEQNSYS
==
'MAE'
.OR.
CEQNSYS
==
'DUR'
)
THEN
#ifndef MNH_OPENACC
PRUS
=
PRUS
-
MXM
(
PRHODJ
*
XCPD
*
ZTHETAV
)
*
ZDV_SOURCE
PRWS
=
PRWS
-
MZM
(
PRHODJ
*
XCPD
*
ZTHETAV
)
*
GZ_M_W
(
1
,
IKU
,
1
,
ZPHIT
,
PDZZ
)
#else
!$acc kernels
ZPRHODJ
=
PRHODJ
*
XCPD
*
ZTHETAV
!$acc end kernels
...
...
@@ -711,13 +725,14 @@ IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN
PRUS
=
PRUS
-
ZMXM_PRHODJ
*
ZDV_SOURCE
PRWS
=
PRWS
-
ZMZM_PRHODJ
*
ZGZ_M_W
!$acc end kernels
#endif
ELSEIF
(
CEQNSYS
==
'LHE'
)
THEN
PRUS
=
PRUS
-
MXM
(
PRHODJ
)
*
ZDV_SOURCE
PRWS
=
PRWS
-
MZM
(
PRHODJ
)
*
GZ_M_W
(
1
,
IKU
,
1
,
ZPHIT
,
PDZZ
)
END
IF
!
IF
(
.NOT.
L2D
)
THEN
!
!
#ifndef MNH_OPENACC
ZDV_SOURCE
=
GY_M_V
(
1
,
IKU
,
1
,
ZPHIT
,
PDYY
,
PDZZ
,
PDZY
)
#else
...
...
@@ -757,11 +772,14 @@ IF(.NOT. L2D) THEN
!
CALL
MPPDB_CHECK3DM
(
"before MYM PRESSUREZ :PRU/V/WS"
,
PRECISION
,
PRUS
,
PRVS
,
PRWS
)
IF
(
CEQNSYS
==
'MAE'
.OR.
CEQNSYS
==
'DUR'
)
THEN
!!$ PRVS = PRVS - MYM(PRHODJ * XCPD * ZTHETAV) * ZDV_SOURCE
#ifndef MNH_OPENACC
PRVS
=
PRVS
-
MYM
(
PRHODJ
*
XCPD
*
ZTHETAV
)
*
ZDV_SOURCE
#else
CALL
MYM_DEVICE
(
ZPRHODJ
,
ZMYM_PRHODJ
)
!$acc kernels
PRVS
=
PRVS
-
ZMYM_PRHODJ
*
ZDV_SOURCE
!$acc end kernels
#endif
ELSEIF
(
CEQNSYS
==
'LHE'
)
THEN
PRVS
=
PRVS
-
MYM
(
PRHODJ
)
*
ZDV_SOURCE
END
IF
...
...
@@ -866,7 +884,11 @@ IF ((ZMAX_ll > 1.E-12) .AND. KTCOUNT >0 ) THEN
PPABST
(:,:,:)
=
XP00
*
(
ZPHIT
+
PEXNREF
)
**
(
XCPD
/
XRD
)
#else
!$acc kernels
PPABST
(:,:,:)
=
XP00
*
BR_POW
((
ZPHIT
+
PEXNREF
),(
XCPD
/
XRD
))
#ifndef MNH_BITREP
PPABST
(:,:,:)
=
XP00
*
(
ZPHIT
+
PEXNREF
)
**
(
XCPD
/
XRD
)
#else
PPABST
(:,:,:)
=
XP00
*
BR_POW
((
ZPHIT
+
PEXNREF
),(
XCPD
/
XRD
))
#endif
!$acc end kernels
#endif
ELSEIF
(
CEQNSYS
==
'LHE'
)
THEN
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment