SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modd_diag_seafluxn.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ######################
7 ! ######################
8 !
9 !!**** *MODD_DIAG_SEAFLUX - declaration of diagnostics for SEAFLUX scheme
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!
15 !!** IMPLICIT ARGUMENTS
16 !! ------------------
17 !! None
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !! AUTHOR
23 !! ------
24 !! V. Masson *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 01/2004
29 !! Modified 01/2006 : sea flux parameterization.
30 !! S.Senesi 01/2014 : add diags on seaice
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
35 !
36 !
37 USE yomhook ,ONLY : lhook, dr_hook
38 USE parkind1 ,ONLY : jprb
39 !
40 IMPLICIT NONE
41 
43 !------------------------------------------------------------------------------
44 !
45  REAL :: XDIAG_TSTEP ! time step for diagnostics writing
46 !
47  INTEGER :: N2M ! flag for 2 meters (and 10 meters) quantities
48  LOGICAL :: L2M_MIN_ZS ! flag for 2 meters quantities evaluated on
49 ! ! the minimum orographyy of the grid
50  LOGICAL :: LSURF_BUDGET ! flag for surface energy budget
51  LOGICAL :: LRAD_BUDGET ! flag for radiative energy budget
52  LOGICAL :: LCOEF ! flag for transfer coefficients
53  LOGICAL :: LSURF_VARS ! flag for surface variables
54  LOGICAL :: LSURF_BUDGETC ! flag for surface cumulated energy budget
55  LOGICAL :: LRESET_BUDGETC ! flag for surface cumulated energy budget
56 !
57 !* averaged variables
58 !
59  REAL, POINTER, DIMENSION(:) :: XRI ! Bulk-Richardson number (-)
60  REAL, POINTER, DIMENSION(:) :: XRI_ICE ! Seaice Bulk-Richardson number (-)
61  REAL, POINTER, DIMENSION(:) :: XCD ! drag coefficient for wind (W/s2)
62  REAL, POINTER, DIMENSION(:) :: XCD_ICE ! Seaice drag coefficient for wind (W/s2)
63  REAL, POINTER, DIMENSION(:) :: XCH ! drag coefficient for heat (W/s)
64  REAL, POINTER, DIMENSION(:) :: XCH_ICE ! Seaice drag coefficient for heat (W/s)
65  REAL, POINTER, DIMENSION(:) :: XCE ! drag coefficient for vapor (W/s/K)
66  REAL, POINTER, DIMENSION(:) :: XZ0 ! roughness length for momentum (m)
67  REAL, POINTER, DIMENSION(:) :: XZ0_ICE ! Seaice roughness length for momentum (m)
68  REAL, POINTER, DIMENSION(:) :: XZ0H ! roughness length for heat (m)
69  REAL, POINTER, DIMENSION(:) :: XZ0H_ICE ! Seaice roughness length for heat (m)
70  REAL, POINTER, DIMENSION(:) :: XRN ! net radiation at surface (W/m2)
71  REAL, POINTER, DIMENSION(:) :: XRN_ICE ! Seaice net radiation at surface (W/m2)
72  REAL, POINTER, DIMENSION(:) :: XH ! sensible heat flux (W/m2)
73  REAL, POINTER, DIMENSION(:) :: XH_ICE ! Seaice sensible heat flux (W/m2)
74  REAL, POINTER, DIMENSION(:) :: XLE ! total latent heat flux (W/m2)
75  REAL, POINTER, DIMENSION(:) :: XLE_ICE ! sublimation latent heat flux (W/m2)
76  REAL, POINTER, DIMENSION(:) :: XGFLUX ! net soil-vegetation flux (W/m2)
77  REAL, POINTER, DIMENSION(:) :: XGFLUX_ICE ! net soil-vegetation flux (seaice) (W/m2)
78  REAL, POINTER, DIMENSION(:) :: XEVAP ! total evaporation (kg/m2/s)
79  REAL, POINTER, DIMENSION(:) :: XSUBL ! sublimation (kg/m2/s)
80  REAL, POINTER, DIMENSION(:) :: XT2M ! air temperature at 2 meters (K)
81  REAL, POINTER, DIMENSION(:) :: XT2M_ICE ! Seaice air temperature at 2 meters (K)
82  REAL, POINTER, DIMENSION(:) :: XT2M_MIN ! Minimum air temperature at 2 meters (K)
83  REAL, POINTER, DIMENSION(:) :: XT2M_MAX ! Maximum air temperature at 2 meters (K)
84  REAL, POINTER, DIMENSION(:) :: XQ2M ! air humidity at 2 meters (kg/kg)
85  REAL, POINTER, DIMENSION(:) :: XQ2M_ICE ! Seaice air humidity at 2 meters (kg/kg)
86  REAL, POINTER, DIMENSION(:) :: XHU2M ! air relative humidity at 2 meters(-)
87  REAL, POINTER, DIMENSION(:) :: XHU2M_ICE! Seaice air relative humidity at 2 meters(-)
88  REAL, POINTER, DIMENSION(:) :: XHU2M_MIN! Minimum relative humidity at 2 meters (-)
89  REAL, POINTER, DIMENSION(:) :: XHU2M_MAX! Maximum relative humidity at 2 meters (-)
90  REAL, POINTER, DIMENSION(:) :: XQS ! air humidity at surface (kg/kg)
91  REAL, POINTER, DIMENSION(:) :: XQS_ICE ! Seaice air humidity at surface (kg/kg)
92  REAL, POINTER, DIMENSION(:) :: XZON10M ! zonal wind at 10 meters (m/s)
93  REAL, POINTER, DIMENSION(:) :: XZON10M_ICE ! Seaice zonal wind at 10 meters(m/s)
94  REAL, POINTER, DIMENSION(:) :: XMER10M ! meridian wind at 10 meters (m/s)
95  REAL, POINTER, DIMENSION(:) :: XMER10M_ICE ! Seaice meridian wind at 10 meters (m/s)
96  REAL, POINTER, DIMENSION(:) :: XWIND10M ! wind at 10 meters (m/s)
97  REAL, POINTER, DIMENSION(:) :: XWIND10M_ICE ! Seaice wind at 10 meters (m/s)
98  REAL, POINTER, DIMENSION(:) :: XWIND10M_MAX! Maximum wind at 10 meters (m/s)
99  REAL, POINTER, DIMENSION(:) :: XLWD ! downward long wave radiation (W/m2)
100  REAL, POINTER, DIMENSION(:) :: XLWU ! upward long wave radiation (W/m2)
101  REAL, POINTER, DIMENSION(:) :: XLWU_ICE ! Seaice upward long wave radiation (W/m2)
102  REAL, POINTER, DIMENSION(:) :: XSWD ! downward short wave radiation (W/m2)
103  REAL, POINTER, DIMENSION(:) :: XSWU ! upward short wave radiation (W/m2)
104  REAL, POINTER, DIMENSION(:) :: XSWU_ICE ! Seaice upward short wave radiation (W/m2)
105  REAL, POINTER, DIMENSION(:,:) :: XSWBD ! downward short wave radiation by spectral band (W/m2)
106  REAL, POINTER, DIMENSION(:,:) :: XSWBU ! upward short wave radiation by spectral band (W/m2)
107  REAL, POINTER, DIMENSION(:,:) :: XSWBU_ICE! Seaice upward short wave radiation by spectral band (W/m2)
108  REAL, POINTER, DIMENSION(:) :: XFMU ! horizontal momentum flux zonal (kg/ms2)
109  REAL, POINTER, DIMENSION(:) :: XFMU_ICE ! Seaice horizontal momentum flux zonal (kg/ms2)
110  REAL, POINTER, DIMENSION(:) :: XFMV ! horizontal momentum flux meridian (kg/ms2)
111  REAL, POINTER, DIMENSION(:) :: XFMV_ICE ! Seaice horizontal momentum flux meridian (kg/ms2)
112 !
113  REAL, POINTER, DIMENSION(:) :: XTS ! surface temperature (K)
114  REAL, POINTER, DIMENSION(:) :: XTSRAD ! surface radiative temperature (K)
115  REAL, POINTER, DIMENSION(:) :: XALBT ! Total Albedo
116 !
117 !* cumulated averaged variables
118 !
119  REAL, POINTER, DIMENSION(:) :: XRNC ! net radiation at surface (J/m2)
120  REAL, POINTER, DIMENSION(:) :: XRNC_ICE ! Seaice net radiation at surface (J/m2)
121  REAL, POINTER, DIMENSION(:) :: XHC ! sensible heat flux (J/m2)
122  REAL, POINTER, DIMENSION(:) :: XHC_ICE ! Seaice sensible heat flux (J/m2)
123  REAL, POINTER, DIMENSION(:) :: XLEC ! total latent heat flux (J/m2)
124  REAL, POINTER, DIMENSION(:) :: XLEC_ICE ! sublimation latent heat flux (J/m2)
125  REAL, POINTER, DIMENSION(:) :: XGFLUXC ! net soil-vegetation flux (J/m2)
126  REAL, POINTER, DIMENSION(:) :: XGFLUXC_ICE !Seaice net soil-vegetation flux(J/m2)
127  REAL, POINTER, DIMENSION(:) :: XEVAPC ! total evaporation (kg/m2)
128  REAL, POINTER, DIMENSION(:) :: XSUBLC ! sublimation (kg/m2)
129  REAL, POINTER, DIMENSION(:) :: XLWDC ! downward long wave radiation (J/m2)
130  REAL, POINTER, DIMENSION(:) :: XLWUC ! upward long wave radiation (J/m2)
131  REAL, POINTER, DIMENSION(:) :: XLWUC_ICE! Seaice upward long wave radiation(J/m2)
132  REAL, POINTER, DIMENSION(:) :: XSWDC ! downward short wave radiation (J/m2)
133  REAL, POINTER, DIMENSION(:) :: XSWUC ! upward short wave radiation (J/m2)
134  REAL, POINTER, DIMENSION(:) :: XSWUC_ICE! Seaice upward short wave radiation(J/m2)
135  REAL, POINTER, DIMENSION(:) :: XFMUC ! horizontal momentum flux zonal (kg/ms)
136  REAL, POINTER, DIMENSION(:) :: XFMUC_ICE! Seaice horizontal momentum flux zonal (kg/ms)
137  REAL, POINTER, DIMENSION(:) :: XFMVC ! horizontal momentum flux meridian (kg/ms)
138  REAL, POINTER, DIMENSION(:) :: XFMVC_ICE! Seaice horizontal momentum flux meridian (kg/ms)
139 !
140 !------------------------------------------------------------------------------
141 !
142 END TYPE diag_seaflux_t
143 
144 
145 
146  CONTAINS
147 
148 !
149 
150 
151 
152 
153 
154 SUBROUTINE diag_seaflux_init(YDIAG_SEAFLUX)
155 TYPE(diag_seaflux_t), INTENT(INOUT) :: ydiag_seaflux
156 REAL(KIND=JPRB) :: zhook_handle
157 IF (lhook) CALL dr_hook("MODD_DIAG_SEAFLUX_N:DIAG_SEAFLUX_INIT",0,zhook_handle)
158  nullify(ydiag_seaflux%XRI)
159  nullify(ydiag_seaflux%XRI_ICE)
160  nullify(ydiag_seaflux%XCD)
161  nullify(ydiag_seaflux%XCD_ICE)
162  nullify(ydiag_seaflux%XCH)
163  nullify(ydiag_seaflux%XCH_ICE)
164  nullify(ydiag_seaflux%XCE)
165  nullify(ydiag_seaflux%XZ0)
166  nullify(ydiag_seaflux%XZ0_ICE)
167  nullify(ydiag_seaflux%XZ0H)
168  nullify(ydiag_seaflux%XZ0H_ICE)
169  nullify(ydiag_seaflux%XRN)
170  nullify(ydiag_seaflux%XRN_ICE)
171  nullify(ydiag_seaflux%XH)
172  nullify(ydiag_seaflux%XH_ICE)
173  nullify(ydiag_seaflux%XLE)
174  nullify(ydiag_seaflux%XLE_ICE)
175  nullify(ydiag_seaflux%XGFLUX)
176  nullify(ydiag_seaflux%XGFLUX_ICE)
177  nullify(ydiag_seaflux%XEVAP)
178  nullify(ydiag_seaflux%XSUBL)
179  nullify(ydiag_seaflux%XT2M)
180  nullify(ydiag_seaflux%XT2M_ICE)
181  nullify(ydiag_seaflux%XT2M_MIN)
182  nullify(ydiag_seaflux%XT2M_MAX)
183  nullify(ydiag_seaflux%XQ2M)
184  nullify(ydiag_seaflux%XQ2M_ICE)
185  nullify(ydiag_seaflux%XHU2M)
186  nullify(ydiag_seaflux%XHU2M_ICE)
187  nullify(ydiag_seaflux%XHU2M_MIN)
188  nullify(ydiag_seaflux%XHU2M_MAX)
189  nullify(ydiag_seaflux%XQS)
190  nullify(ydiag_seaflux%XQS_ICE)
191  nullify(ydiag_seaflux%XZON10M)
192  nullify(ydiag_seaflux%XZON10M_ICE)
193  nullify(ydiag_seaflux%XMER10M)
194  nullify(ydiag_seaflux%XMER10M_ICE)
195  nullify(ydiag_seaflux%XWIND10M)
196  nullify(ydiag_seaflux%XWIND10M_ICE)
197  nullify(ydiag_seaflux%XWIND10M_MAX)
198  nullify(ydiag_seaflux%XLWD)
199  nullify(ydiag_seaflux%XLWU)
200  nullify(ydiag_seaflux%XLWU_ICE)
201  nullify(ydiag_seaflux%XSWD)
202  nullify(ydiag_seaflux%XSWU)
203  nullify(ydiag_seaflux%XSWU_ICE)
204  nullify(ydiag_seaflux%XSWBD)
205  nullify(ydiag_seaflux%XSWBU)
206  nullify(ydiag_seaflux%XSWBU_ICE)
207  nullify(ydiag_seaflux%XFMU)
208  nullify(ydiag_seaflux%XFMU_ICE)
209  nullify(ydiag_seaflux%XFMV)
210  nullify(ydiag_seaflux%XFMV_ICE)
211  nullify(ydiag_seaflux%XTS)
212  nullify(ydiag_seaflux%XTSRAD)
213  nullify(ydiag_seaflux%XALBT)
214  nullify(ydiag_seaflux%XRNC)
215  nullify(ydiag_seaflux%XRNC_ICE)
216  nullify(ydiag_seaflux%XHC)
217  nullify(ydiag_seaflux%XHC_ICE)
218  nullify(ydiag_seaflux%XLEC)
219  nullify(ydiag_seaflux%XLEC_ICE)
220  nullify(ydiag_seaflux%XGFLUXC)
221  nullify(ydiag_seaflux%XGFLUXC_ICE)
222  nullify(ydiag_seaflux%XEVAPC)
223  nullify(ydiag_seaflux%XSUBLC)
224  nullify(ydiag_seaflux%XLWDC)
225  nullify(ydiag_seaflux%XLWUC)
226  nullify(ydiag_seaflux%XLWUC_ICE)
227  nullify(ydiag_seaflux%XSWDC)
228  nullify(ydiag_seaflux%XSWUC)
229  nullify(ydiag_seaflux%XSWUC_ICE)
230  nullify(ydiag_seaflux%XFMUC)
231  nullify(ydiag_seaflux%XFMUC_ICE)
232  nullify(ydiag_seaflux%XFMVC)
233  nullify(ydiag_seaflux%XFMVC_ICE)
234 ydiag_seaflux%XDIAG_TSTEP=0.
235 ydiag_seaflux%N2M=0
236 ydiag_seaflux%L2M_MIN_ZS=.false.
237 ydiag_seaflux%LSURF_BUDGET=.false.
238 ydiag_seaflux%LRAD_BUDGET=.false.
239 ydiag_seaflux%LCOEF=.false.
240 ydiag_seaflux%LSURF_VARS=.false.
241 ydiag_seaflux%LSURF_BUDGETC=.false.
242 ydiag_seaflux%LRESET_BUDGETC=.false.
243 IF (lhook) CALL dr_hook("MODD_DIAG_SEAFLUX_N:DIAG_SEAFLUX_INIT",1,zhook_handle)
244 END SUBROUTINE diag_seaflux_init
245 
246 
247 END MODULE modd_diag_seaflux_n
subroutine diag_seaflux_init(YDIAG_SEAFLUX)