Newer
Older
!MNH_LIC Copyright 1994-2014 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 for details. version 1.
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
!-----------------------------------------------------------------
! #####################
MODULE MODI_GRAVITY_IMPL
! #####################
!
INTERFACE
SUBROUTINE GRAVITY_IMPL (HLBCX, HLBCY,KRR,KRRL,KRRI, PTSTEP, &
PTHT, PRT, PTHVREF, PRHODJ, &
PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD )
!
CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC
!
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KRRL ! Number of liquid water var.
INTEGER, INTENT(IN) :: KRRI ! Number of ice water var.
!
REAL, INTENT(IN) :: PTSTEP
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PRHODJ
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
! Variables at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF ! Virtual Temperature
! of the reference state
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRWS
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRTHS
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRRS
! Sources terms
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRTHS_CLD
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRRS_CLD
! tendencies from previous time-step
! cloud processes
!
END SUBROUTINE GRAVITY_IMPL
!
END INTERFACE
!
END MODULE MODI_GRAVITY_IMPL
! ##########################################################################
SUBROUTINE GRAVITY_IMPL (HLBCX, HLBCY,KRR,KRRL,KRRI, PTSTEP, &
PTHT, PRT, PTHVREF, PRHODJ, &
PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD )
! ##########################################################################
!
!!**** *GRAVITY_IMPL * - routine to estimate gravity term using future buoyancy
!!
!! PURPOSE
!! -------
!!
!!** METHOD
!! ------
!!
!! EXTERNAL
!! --------
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!! NONE
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!! V. Masson * Meteo France *
!!
!! MODIFICATIONS
!! -------------
!! Original 04/2011
!!
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!
USE MODI_GRAVITY
USE MODI_ADV_BOUNDARIES
!
!-------------------------------------------------------------------------------
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
CHARACTER(LEN=4),DIMENSION(2),INTENT(IN):: HLBCX, HLBCY ! X- and Y-direc LBC
!
INTEGER, INTENT(IN) :: KRR ! Number of moist variables
INTEGER, INTENT(IN) :: KRRL ! Number of liquid water var.
INTEGER, INTENT(IN) :: KRRI ! Number of ice water var.
!
REAL, INTENT(IN) :: PTSTEP
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT, PRHODJ
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT
! Variables at t
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHVREF ! Virtual Temperature
! of the reference state
REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRWS
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRTHS
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRRS
! Sources terms
REAL, DIMENSION(:,:,:), INTENT(IN) :: PRTHS_CLD
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRRS_CLD
! tendencies from previous time-step
! cloud processes
!
!
!* 0.2 declarations of local variables
!
!
! Tendencies of W due to gravity
REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZRWS_GRAV
! Guess of future theta
REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZTH
! Guess of future mixing ratios
REAL, DIMENSION(SIZE(PRT,1),SIZE(PRT,2),SIZE(PRT,3),SIZE(PRT,4)) :: ZR
!
INTEGER :: JR
!
!-------------------------------------------------------------------------------
!
ZRWS_GRAV = 0.
!
! guess of Theta at future time-step
ZTH(:,:,:) = (PRTHS(:,:,:) + PRTHS_CLD(:,:,:)) / PRHODJ * PTSTEP
DO JR = 1, KRR
ZR(:,:,:,JR) = (PRRS(:,:,:,JR) + PRRS_CLD(:,:,:,JR)) / PRHODJ * PTSTEP
END DO
!
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZTH, PTHT )
DO JR = 1, KRR
CALL ADV_BOUNDARIES (HLBCX, HLBCY, ZR(:,:,:,JR), PRT(:,:,:,JR))
END DO
!
! ====> A vérifier si c'est nécessaire d'échanger les champs
! A priori, je dirai non.
!
! gravity effect on vertical speed
CALL GRAVITY ( KRR,KRRL, KRRI, ZTH, ZR, PRHODJ, PTHVREF, ZRWS_GRAV(:,:,:) )
!
PRWS(:,:,:) = PRWS(:,:,:) + ZRWS_GRAV(:,:,:)
!
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE GRAVITY_IMPL