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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
!-----------------------------------------------------------------
!--------------- special set of characters for RCS information
!-----------------------------------------------------------------
! $Source$ $Revision$ $Date$
!-----------------------------------------------------------------
! ###############################
MODULE MODI_EDDYUV_FLUX_ONE_WAY_n
! ###############################
!
INTERFACE
!
SUBROUTINE EDDYUV_FLUX_ONE_WAY_n (KMI,KTCOUNT,KDXRATIO,KDYRATIO,HLBCX,HLBCY)
!
!
INTEGER, INTENT(IN) :: KMI ! Model index
INTEGER, INTENT(IN) :: KTCOUNT ! iteration count
!
INTEGER, INTENT(IN) :: KDXRATIO ! x and y-direction resolution RATIO
INTEGER, INTENT(IN) :: KDYRATIO ! between inner model and outer model
CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX ! type of lateral
CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY ! boundary conditions
!
END SUBROUTINE EDDYUV_FLUX_ONE_WAY_n
!
END INTERFACE
!
END MODULE MODI_EDDYUV_FLUX_ONE_WAY_n
!
! ##################################################################################
SUBROUTINE EDDYUV_FLUX_ONE_WAY_n (KMI,KTCOUNT,KDXRATIO,KDYRATIO,HLBCX,HLBCY)
! ##################################################################################
!
!! PURPOSE
!! -------
!! In case of 2D transect (latitude, altitude) grid-nesting models
!! Barotropic fluxes (v'u') from the model 1 interpolated for the son models
!!
!!** METHOD
!! ------
!!
!! IMPLICIT ARGUMENT
!! -----------------
!!
!! REFERENCE
!! ---------
!!
!! AUTHOR
!! ------
!! M.Tomasini * Meteo-France *
!!
!! MODIFICATIONS
!! -------------
!! Original 07/07/11
!!
! ##################################################################################
!
USE MODD_DEF_EDDYUV_FLUX_n
USE MODD_FIELD_n, ONLY:XRVS
USE MODD_GRID_n
USE MODD_REF_n, ONLY:XRHODJ
USE MODD_METRICS_n
USE MODI_GRADIENT_U
!
! For the horizontal interpolation
USE MODI_BIKHARDT
USE MODD_BIKHARDT_n
USE MODD_NESTING
IMPLICIT NONE
!
INTEGER, INTENT(IN) :: KMI ! Model index
INTEGER, INTENT(IN) :: KTCOUNT ! iteration count
!
INTEGER, INTENT(IN) :: KDXRATIO ! x and y-direction resolution RATIO
INTEGER, INTENT(IN) :: KDYRATIO ! between inner model and outer model
CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCX ! type of lateral
CHARACTER (LEN=4), DIMENSION (2), INTENT(IN) :: HLBCY ! boundary conditions
!
!* 0.2 Declarations of local variables :
!
INTEGER:: IIB,IJB ! Begining useful area in x,y directions
INTEGER:: IIE,IJE ! End useful area in x,y directions
INTEGER:: ISYNCHRO ! model synchronic index relative to the model 1
! = 1 for the first time step in phase with the model 1
! = 0 for the last time step (out of phase)
INTEGER:: JMI ! Models loop
INTEGER:: IDTRATIO_KMI_1 ! Ratio between the time step of the son and the model 1
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZFLUX2 ! Work array=Dad interpolated flux field
! on the son grid
REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIV_UV! Work array=DIV of ZFLUX2
INTEGER :: IKU
!-------------------------------------------------------------------------------
!
!
! test of temporal synchronisation between the model 1 and the son KMI
!
IKU=SIZE(XZHAT)
IDTRATIO_KMI_1=1
DO JMI=2,KMI
IDTRATIO_KMI_1=IDTRATIO_KMI_1*NDTRATIO(JMI)
END DO
ISYNCHRO = MODULO (KTCOUNT, IDTRATIO_KMI_1)
!
IF (ISYNCHRO==1 .OR. IDTRATIO_KMI_1 == 1) THEN
CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
ALLOCATE(ZFLUX2(SIZE(XRVS,1),SIZE(XRVS,2),SIZE(XRVS,3)))
ALLOCATE(ZDIV_UV(SIZE(XRVS,1),SIZE(XRVS,2),SIZE(XRVS,3)))
ZDIV_UV = 0.
! v'u' (EDDY_FLUX_MODEL(1)%XVU_FLUX_M) of model1 interpolation on the son grid put into ZFLUX2
ZFLUX2 = 0.
CALL BIKHARDT (XBMX1,XBMX2,XBMX3,XBMX4,XBMY1,XBMY2,XBMY3,XBMY4, &
XBFX1,XBFX2,XBFX3,XBFX4,XBFY1,XBFY2,XBFY3,XBFY4, &
NXOR_ALL(KMI),NYOR_ALL(KMI),NXEND_ALL(KMI),NYEND_ALL(KMI),KDXRATIO,KDYRATIO,1,&
HLBCX,HLBCY,EDDYUV_FLUX_MODEL(1)%XVU_FLUX_M,ZFLUX2)
! Lateral boundary conditions
ZFLUX2(IIB,:,:) = ZFLUX2(IIB+1,:,:)
ZFLUX2(1,:,:) = ZFLUX2(IIB,:,:)
ZFLUX2(IIE,:,:) = ZFLUX2(IIE-1,:,:)
ZFLUX2(IIE+1,:,:) = ZFLUX2(IIE,:,:)
ZDIV_UV(:,:,:) = GX_U_M(1,IKU,1,ZFLUX2,XDXX,XDZZ,XDZX)
! Lateral boundary conditions
ZDIV_UV(IIB,:,:) =0.0
ZDIV_UV(1,:,:) =0.0
ZDIV_UV(IIE,:,:) =0.0
ZDIV_UV(IIE+1,:,:)=0.0
XRVS_EDDY_FLUX(:,:,:) = - XRHODJ(:,:,:)* ZDIV_UV(:,:,:)
DEALLOCATE(ZFLUX2)
ENDIF
! COMPUTE NEW zonal wind at each son time step
! ---------------------------------------------
XRVS(:,:,:) = XRVS(:,:,:) + XRVS_EDDY_FLUX(:,:,:)
END SUBROUTINE EDDYUV_FLUX_ONE_WAY_n