Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$
! MASDEV4_7 modd 2007/02/19 11:58:44
!-----------------------------------------------------------------
! ################
MODULE MODD_ADV_n
! ################
!
!!**** *MODD_ADV$n* - declaration of scalar advection scheme control variables
!!
!! PURPOSE
!! -------
! The purpose of this declarative module is to declare the advective
! control variables.
!
!!
!!** IMPLICIT ARGUMENTS
!! ------------------
!! None
!!
!! REFERENCE
!! ---------
!! Book2 of documentation of Meso-NH (module MODD_ADVn)
!!
!! AUTHOR
!! ------
!! Vila, Lafore *Meteo France*
!!
!! MODIFICATIONS
!! -------------
!! Original 23/10/95 (Vila, lafore) For new scalar advection schemes
!! C.Lac 24/04/06 Introduction of CUVW_ADV_SCHEME and
!! removal of CFV_ADV_SCHEME
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_PARAMETERS, ONLY: JPMODELMAX
IMPLICIT NONE
TYPE ADV_t
!
CHARACTER(LEN=6) :: CMET_ADV_SCHEME, CSV_ADV_SCHEME, CUVW_ADV_SCHEME
! Control the selected advection scheme
! for the scalar variables
!
INTEGER :: NLITER ! Number iterations MPDATA
REAL, DIMENSION(:,:,:), POINTER :: XRTHMS=>NULL() ! Source of (rho theta)
! advection for PPM
REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL() ! Idem for kinetic energy
REAL, DIMENSION(:,:,:,:), POINTER :: XRRMS=>NULL() ! Idem for Moist variables
REAL, DIMENSION(:,:,:,:), POINTER :: XRSVMS=>NULL() ! Idem for addi. scalar
!
END TYPE ADV_t
TYPE(ADV_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: ADV_MODEL
CHARACTER(LEN=6), POINTER :: CMET_ADV_SCHEME=>NULL(), CSV_ADV_SCHEME=>NULL(), CUVW_ADV_SCHEME=>NULL()
INTEGER, POINTER :: NLITER=>NULL()
REAL, DIMENSION(:,:,:), POINTER :: XRTHMS=>NULL()
REAL, DIMENSION(:,:,:), POINTER :: XRTKEMS=>NULL()
REAL, DIMENSION(:,:,:,:), POINTER :: XRRMS=>NULL()
REAL, DIMENSION(:,:,:,:), POINTER :: XRSVMS=>NULL()
CONTAINS
SUBROUTINE ADV_GOTO_MODEL(KFROM, KTO)
INTEGER, INTENT(IN) :: KFROM, KTO
!
! Save current state for allocated arrays
ADV_MODEL(KFROM)%XRTHMS=>XRTHMS
ADV_MODEL(KFROM)%XRTKEMS=>XRTKEMS
ADV_MODEL(KFROM)%XRRMS=>XRRMS
ADV_MODEL(KFROM)%XRSVMS=>XRSVMS
!
! Current model is set to model KTO
CUVW_ADV_SCHEME=>ADV_MODEL(KTO)%CUVW_ADV_SCHEME
CMET_ADV_SCHEME=>ADV_MODEL(KTO)%CMET_ADV_SCHEME
CSV_ADV_SCHEME=>ADV_MODEL(KTO)%CSV_ADV_SCHEME
NLITER=>ADV_MODEL(KTO)%NLITER
XRTHMS=>ADV_MODEL(KTO)%XRTHMS
XRTKEMS=>ADV_MODEL(KTO)%XRTKEMS
XRRMS=>ADV_MODEL(KTO)%XRRMS
XRSVMS=>ADV_MODEL(KTO)%XRSVMS
END SUBROUTINE ADV_GOTO_MODEL
END MODULE MODD_ADV_n