Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Méso-NH code
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
Méso-NH code
Commits
2387b20a
Commit
2387b20a
authored
11 years ago
by
ESCOBAR Juan
Browse files
Options
Downloads
Patches
Plain Diff
Juan 7/11/2013: use of ZT3D temp var in PPM_MET
parent
d06cde23
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
MNH/ppm_met.f90
+71
-27
71 additions, 27 deletions
MNH/ppm_met.f90
with
71 additions
and
27 deletions
MNH/ppm_met.f90
+
71
−
27
View file @
2387b20a
...
...
@@ -7,6 +7,61 @@ CONTAINS
PCRU
,
PCRV
,
PCRW
,
PTSTEP
,
PRHODJ
,
&
PTHT
,
PTKET
,
PRT
,
&
PRTHS
,
PRTKES
,
PRRS
,
HMET_ADV_SCHEME
)
USE
MODE_MNH_ZWORK
,
ONLY
:
ZT3D
,
MNH_GET_ZT3D
,
MNH_REL_ZT3D
USE
MODE_MNH_ZWORK
,
ONLY
:
ZUNIT3D
IMPLICIT
NONE
!
!* 0.1 Declarations of dummy arguments :
!
CHARACTER
(
LEN
=
4
),
DIMENSION
(
2
),
INTENT
(
IN
)
::
HLBCX
! X direction LBC type
CHARACTER
(
LEN
=
4
),
DIMENSION
(
2
),
INTENT
(
IN
)
::
HLBCY
! Y direction LBC type
CHARACTER
(
LEN
=
6
),
INTENT
(
IN
)
::
HMET_ADV_SCHEME
!
INTEGER
,
INTENT
(
IN
)
::
KRR
! Number of moist variables
INTEGER
,
INTENT
(
IN
)
::
KTCOUNT
! iteration count
!
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PCRU
! contravariant
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PCRV
! components
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PCRW
! of momentum
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PRHODJ
! density
!
REAL
,
INTENT
(
IN
)
::
PTSTEP
! Time step
!
REAL
,
DIMENSION
(:,:,:),
INTENT
(
IN
)
::
PTHT
,
PTKET
! Vars at t
REAL
,
DIMENSION
(:,:,:,:),
INTENT
(
IN
)
::
PRT
!
REAL
,
DIMENSION
(:,:,:),
INTENT
(
INOUT
)
::
PRTHS
,
PRTKES
! Source terms
REAL
,
DIMENSION
(:,:,:,:),
INTENT
(
INOUT
)
::
PRRS
INTEGER
::
IZSRC
,
IZRHOX1
,
IZRHOX2
,
IZRHOY1
,
IZRHOY2
,
IZRHOZ1
,
IZRHOZ2
CALL
MNH_GET_ZT3D
(
IZSRC
,
IZRHOX1
,
IZRHOX2
,
IZRHOY1
,
IZRHOY2
,
IZRHOZ1
,
IZRHOZ2
)
CALL
PPM_MET_D
(
HLBCX
,
HLBCY
,
KRR
,
KTCOUNT
,
&
&
PCRU
,
PCRV
,
PCRW
,
PTSTEP
,
PRHODJ
,
&
&
PTHT
,
PTKET
,
PRT
,
&
&
PRTHS
,
PRTKES
,
PRRS
,
HMET_ADV_SCHEME
,
&
&
ZT3D
(:,:,:,
IZSRC
),
&
&
ZT3D
(:,:,:,
IZRHOX1
),
ZT3D
(:,:,:,
IZRHOX2
),
ZT3D
(:,:,:,
IZRHOY1
),
&
&
ZT3D
(:,:,:,
IZRHOY2
),
ZT3D
(:,:,:,
IZRHOZ1
),
ZT3D
(:,:,:,
IZRHOZ2
),
&
&
ZUNIT3D
)
CALL
MNH_REL_ZT3D
(
IZSRC
,
IZRHOX1
,
IZRHOX2
,
IZRHOY1
,
IZRHOY2
,
IZRHOZ1
,
IZRHOZ2
)
CONTAINS
SUBROUTINE
PPM_MET_D
(
HLBCX
,
HLBCY
,
KRR
,
KTCOUNT
,
&
&
PCRU
,
PCRV
,
PCRW
,
PTSTEP
,
PRHODJ
,
&
&
PTHT
,
PTKET
,
PRT
,
&
&
PRTHS
,
PRTKES
,
PRRS
,
HMET_ADV_SCHEME
,
&
&
ZSRC
,
&
&
ZRHOX1
,
ZRHOX2
,
ZRHOY1
,
ZRHOY2
,
ZRHOZ1
,
ZRHOZ2
,
&
&
ZUNIT
)
! ######################################################################
!
!!**** *PPM_MET *
...
...
@@ -56,13 +111,6 @@ USE MODI_ADVEC_PPM_ALGO
! incorporate ADVEC_4TH_ORDER_ALG, MZF4 and MZM4
!USE MODI_ADVEC_4TH_ORDER_AUX
!
USE
MODE_MNH_ZWORK
,
ONLY
:
ZUNIT3D
,
&
&
ZRHOX1
=>
ZRHOX1_PPM_MET
,
ZRHOX2
=>
ZRHOX2_PPM_MET
,
&
&
ZRHOY1
=>
ZRHOY1_PPM_MET
,
ZRHOY2
=>
ZRHOY2_PPM_MET
,
&
&
ZRHOZ1
=>
ZRHOZ1_PPM_MET
,
ZRHOZ2
=>
ZRHOZ2_PPM_MET
,
&
&
ZSRCTHT
=>
ZSRC_PPM_MET
,
&
&
ZSRC
=>
ZSRC_PPM_MET
!
IMPLICIT
NONE
!
!* 0.1 Declarations of dummy arguments :
...
...
@@ -99,14 +147,15 @@ INTEGER :: IGRID ! localisation on the model grid
!* Variables specific to ppm scheme
!
! Advection source term calulated in the PPM algorithm
!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
REAL
,
DIMENSION
(
SIZE
(
PCRU
,
1
),
SIZE
(
PCRU
,
2
),
SIZE
(
PCRU
,
3
))
::
ZSRC
!$acc declare present (ZSRC)
!
! Temporary advected rhodj
!!$
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
!!$
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHO
X
2
!!$
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHO
Y
1,ZRHO
Y
2
!!$
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: Z
RHOZ1,ZRHOZ2
!
!$
REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) ::
ZUNIT
3D
REAL
,
DIMENSION
(
SIZE
(
PCRU
,
1
),
SIZE
(
PCRU
,
2
),
SIZE
(
PCRU
,
3
))
::
ZRHOX1
,
ZRHOX2
REAL
,
DIMENSION
(
SIZE
(
PCRU
,
1
),
SIZE
(
PCRU
,
2
),
SIZE
(
PCRU
,
3
))
::
ZRHO
Y1
,
ZRHOY
2
REAL
,
DIMENSION
(
SIZE
(
PCRU
,
1
),
SIZE
(
PCRU
,
2
),
SIZE
(
PCRU
,
3
))
::
ZRHO
Z
1
,
ZRHO
Z
2
REAL
,
DIMENSION
(
SIZE
(
PCRU
,
1
),
SIZE
(
PCRU
,
2
),
SIZE
(
PCRU
,
3
))
::
Z
UNIT
!$
acc declare present (ZRHOX1,ZRHOX2,ZRHOY1,ZRHOY2,ZRHOZ1,ZRHOZ2,
ZUNIT
)
!
!-------------------------------------------------------------------------------
!
...
...
@@ -124,19 +173,17 @@ IGRID = 1
!
! Calculate the advection of the density RHODJ to pass to the algorithm
!
!$acc data pcopyin(PCRU,PCRV,PCRW,PRHODJ)
! create/mirror(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2)
CALL
PPM_S0_X
(
HLBCX
,
IGRID
,
ZUNIT3D
,
PCRU
,
PRHODJ
,
PTSTEP
,
ZRHOX1
)
CALL
PPM_S0_Y
(
HLBCY
,
IGRID
,
ZUNIT3D
,
PCRV
,
ZRHOX1
,
PTSTEP
,
ZRHOY1
)
CALL
PPM_S0_Z
(
IGRID
,
ZUNIT3D
,
PCRW
,
ZRHOY1
,
PTSTEP
,
ZRHOZ1
)
CALL
PPM_S0_Z
(
IGRID
,
ZUNIT3D
,
PCRW
,
PRHODJ
,
PTSTEP
,
ZRHOZ2
)
CALL
PPM_S0_Y
(
HLBCY
,
IGRID
,
ZUNIT3D
,
PCRV
,
ZRHOZ2
,
PTSTEP
,
ZRHOY2
)
CALL
PPM_S0_X
(
HLBCX
,
IGRID
,
ZUNIT3D
,
PCRU
,
ZRHOY2
,
PTSTEP
,
ZRHOX2
)
!$acc data pcopyin(PCRU,PCRV,PCRW,PRHODJ)
CALL
PPM_S0_X
(
HLBCX
,
IGRID
,
ZUNIT
,
PCRU
,
PRHODJ
,
PTSTEP
,
ZRHOX1
)
CALL
PPM_S0_Y
(
HLBCY
,
IGRID
,
ZUNIT
,
PCRV
,
ZRHOX1
,
PTSTEP
,
ZRHOY1
)
CALL
PPM_S0_Z
(
IGRID
,
ZUNIT
,
PCRW
,
ZRHOY1
,
PTSTEP
,
ZRHOZ1
)
CALL
PPM_S0_Z
(
IGRID
,
ZUNIT
,
PCRW
,
PRHODJ
,
PTSTEP
,
ZRHOZ2
)
CALL
PPM_S0_Y
(
HLBCY
,
IGRID
,
ZUNIT
,
PCRV
,
ZRHOZ2
,
PTSTEP
,
ZRHOY2
)
CALL
PPM_S0_X
(
HLBCX
,
IGRID
,
ZUNIT
,
PCRU
,
ZRHOY2
,
PTSTEP
,
ZRHOX2
)
!
! Potential temperature
!
!$acc data pcopyin (PTHT) pcopy(PRTHS)
! create/mirror(ZSRC)
CALL
ADVEC_PPM_ALGO
(
HMET_ADV_SCHEME
,
HLBCX
,
HLBCY
,
IGRID
,
PTHT
,
PRHODJ
,
PTSTEP
,
&
ZRHOX1
,
ZRHOX2
,
ZRHOY1
,
ZRHOY2
,
ZRHOZ1
,
ZRHOZ2
,
&
ZSRC
,
KTCOUNT
,
PCRU
,
PCRV
,
PCRW
)
...
...
@@ -164,13 +211,9 @@ IF (GTKEALLOC) THEN
!
END
IF
!
!
!
! Case with KRR moist variables
!
! acc wait(14)
DO
JRR
=
1
,
KRR
! acc update device(PRT(:,:,:,JRR))
!$acc data pcopy(PRRS(:,:,:,JRR)) pcopyin(PRT(:,:,:,JRR))
CALL
ADVEC_PPM_ALGO
(
HMET_ADV_SCHEME
,
HLBCX
,
HLBCY
,
IGRID
,
PRT
(:,:,:,
JRR
),
&
PRHODJ
,
PTSTEP
,
&
...
...
@@ -192,7 +235,8 @@ DO JRR=1,KRR
END
DO
!$acc end data
!
!
END
SUBROUTINE
PPM_MET_D
END
SUBROUTINE
PPM_MET
END
MODULE
MODI_PPM_MET
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