SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modd_flaken.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_FLAKE_n - declaration of surface parameters for the FLake model
10 !! for inland water surfaces
11 !!
12 !! PURPOSE
13 !! -------
14 ! Declaration of surface parameters
15 !
16 !!
17 !!** IMPLICIT ARGUMENTS
18 !! ------------------
19 !! None
20 !!
21 !! REFERENCE
22 !! ---------
23 !!
24 !! AUTHOR
25 !! ------
26 !! V. Masson *Meteo France*
27 !!
28 !! MODIFICATIONS
29 !! -------------
30 !! Original 01/2004
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
36 !
37 USE yomhook ,ONLY : lhook, dr_hook
38 USE parkind1 ,ONLY : jprb
39 !
40 IMPLICIT NONE
41 !
42 TYPE flake_t
43 !
44 !-------------------------------------------------------------------------------------
45 ! General surface:
46 !-------------------------------------------------------------------------------------
47 !
48  REAL, POINTER, DIMENSION(:) :: XZS ! orography (m)
49  REAL, POINTER, DIMENSION(:) :: XZ0 ! roughness length (m)
50  REAL, POINTER, DIMENSION(:) :: XUSTAR ! air friction velocity (m/s)
51  REAL, POINTER, DIMENSION(:) :: XEMIS ! water surface emissivity (NOT USED BY FLAKE)
52 !
53  REAL, POINTER, DIMENSION(:,:) :: XCOVER ! fraction of each ecosystem (-)
54 ! ! F: no atmospheric layers below forcing level
55 !
56  LOGICAL, POINTER, DIMENSION(:) :: LCOVER ! GCOVER(i)=T --> ith cover field is not 0.
57  LOGICAL :: LSBL ! T: SBL scheme within the Surface Boundary Layer
58 !
59 !-------------------------------------------------------------------------------------
60 ! Date and time:
61 !-------------------------------------------------------------------------------------
62 !
63  TYPE (date_time) :: TTIME ! current date and time
64 !
65  REAL :: XTSTEP ! time step
66 !
67  REAL :: XOUT_TSTEP ! output writing time step
68 !
69 !-------------------------------------------------------------------------------------
70 ! FLake switches
71 !-------------------------------------------------------------------------------------
72 !
73  LOGICAL :: LSEDIMENTS ! flag to use or not the bottom sediments
74  LOGICAL :: LSKINTEMP ! flag to use or not the skin temperature computation
75  CHARACTER(LEN=3) :: CSNOW_FLK ! FLake snow scheme
76  CHARACTER(LEN=5) :: CFLK_FLUX ! Type of flux computation
77  CHARACTER(LEN=4) :: CFLK_ALB ! Type of albedo
78 !
79 !-------------------------------------------------------------------------------------
80 ! FLake parameters and variables
81 !-------------------------------------------------------------------------------------
82 !
83  REAL, POINTER, DIMENSION(:) :: XWATER_DEPTH ! Lake depth (m)
84  REAL, POINTER, DIMENSION(:) :: XWATER_FETCH ! Lake fetch (m)
85  REAL, POINTER, DIMENSION(:) :: XT_BS ! Temperature at the outer edge of the thermally
86  ! active layer of the bottom sediments [K]
87  REAL, POINTER, DIMENSION(:) :: XDEPTH_BS ! Depth of the thermally active layer of the
88  ! bottom sediments [m]
89  REAL, POINTER, DIMENSION(:) :: XCORIO ! The Coriolis parameter [s^{-1}]
90  REAL, POINTER, DIMENSION(:) :: XDIR_ALB ! Water surface direct albedo
91  REAL, POINTER, DIMENSION(:) :: XSCA_ALB ! Water surface diffuse albedo
92  REAL, POINTER, DIMENSION(:) :: XICE_ALB ! Ice surface albedo (for ESM coupling)
93  REAL, POINTER, DIMENSION(:) :: XSNOW_ALB ! Snow surface albedo
94  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_WATER ! Extinction coefficient for the water [m^{-1}]
95  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_ICE ! Extinction coefficient for the ice [m^{-1}]
96  REAL, POINTER, DIMENSION(:) :: XEXTCOEF_SNOW ! Extinction coefficient for the snow [m^{-1}]
97  REAL, POINTER, DIMENSION(:) :: XT_SNOW ! Temperature at the air-snow interface [K]
98  REAL, POINTER, DIMENSION(:) :: XT_ICE ! Temperature at the snow-ice or air-ice
99  ! interface [K]
100  REAL, POINTER, DIMENSION(:) :: XT_MNW ! Mean temperature of the water column [K]
101  REAL, POINTER, DIMENSION(:) :: XT_WML ! Mixed-layer temperature [K]
102  REAL, POINTER, DIMENSION(:) :: XT_BOT ! Temperature at the water-bottom sediment
103  ! interface [K]
104  REAL, POINTER, DIMENSION(:) :: XT_B1 ! Temperature at the bottom of the upper
105  ! layer of the sediments [K]
106  REAL, POINTER, DIMENSION(:) :: XCT ! Shape factor (thermocline)
107  REAL, POINTER, DIMENSION(:) :: XH_SNOW ! Snow thickness [m]
108  REAL, POINTER, DIMENSION(:) :: XH_ICE ! Ice thickness [m]
109  REAL, POINTER, DIMENSION(:) :: XH_ML ! Thickness of the mixed-layer [m]
110  REAL, POINTER, DIMENSION(:) :: XH_B1 ! Thickness of the upper layer of bottom sediments [m]
111 !
112  REAL, POINTER, DIMENSION(:) :: XTS ! surface temperature (K)
113  ! (water or ice or snow)
114 !
115 !-------------------------------------------------------------------------------------
116 ! Coupling field for Earth system model
117 !-------------------------------------------------------------------------------------
118 !
119  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_EVAP ! Evaporation for ESM coupling
120  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_RAIN ! Rainfall for ESM coupling
121  REAL, POINTER, DIMENSION(:) :: XCPL_FLAKE_SNOW ! Snowfall for ESM coupling
122 !
123 END TYPE flake_t
124 !
125 !-------------------------------------------------------------------------------------
126 !
127 
128 
129  CONTAINS
130 !
131 !-------------------------------------------------------------------------------------
132 !
133 !
134 !
135 
136 
137 !
138 !
139 !-------------------------------------------------------------------------------------
140 !
141 SUBROUTINE flake_init(YFLAKE)
142 TYPE(flake_t), INTENT(INOUT) :: yflake
143 REAL(KIND=JPRB) :: zhook_handle
144 IF (lhook) CALL dr_hook("MODD_FLAKE_N:FLAKE_INIT",0,zhook_handle)
145  nullify(yflake%XZS)
146  nullify(yflake%XZ0)
147  nullify(yflake%XUSTAR)
148  nullify(yflake%XCOVER)
149  nullify(yflake%LCOVER)
150  nullify(yflake%XEMIS)
151  nullify(yflake%XWATER_DEPTH)
152  nullify(yflake%XWATER_FETCH)
153  nullify(yflake%XT_BS)
154  nullify(yflake%XDEPTH_BS)
155  nullify(yflake%XCORIO)
156  nullify(yflake%XDIR_ALB)
157  nullify(yflake%XSCA_ALB)
158  nullify(yflake%XICE_ALB)
159  nullify(yflake%XSNOW_ALB)
160  nullify(yflake%XEXTCOEF_WATER)
161  nullify(yflake%XEXTCOEF_ICE)
162  nullify(yflake%XEXTCOEF_SNOW)
163  nullify(yflake%XT_SNOW)
164  nullify(yflake%XT_ICE)
165  nullify(yflake%XT_MNW)
166  nullify(yflake%XT_WML)
167  nullify(yflake%XT_BOT)
168  nullify(yflake%XT_B1)
169  nullify(yflake%XCT)
170  nullify(yflake%XH_SNOW)
171  nullify(yflake%XH_ICE)
172  nullify(yflake%XH_ML)
173  nullify(yflake%XH_B1)
174  nullify(yflake%XTS)
175  nullify(yflake%XCPL_FLAKE_EVAP)
176  nullify(yflake%XCPL_FLAKE_RAIN)
177  nullify(yflake%XCPL_FLAKE_SNOW)
178 yflake%LSBL=.false.
179 yflake%XTSTEP=0.
180 yflake%XOUT_TSTEP=0.
181 yflake%LSEDIMENTS=.false.
182 yflake%LSKINTEMP=.false.
183 yflake%CSNOW_FLK=' '
184 yflake%CFLK_ALB=' '
185 yflake%CFLK_FLUX=' '
186 IF (lhook) CALL dr_hook("MODD_FLAKE_N:FLAKE_INIT",1,zhook_handle)
187 END SUBROUTINE flake_init
188 !
189 !-------------------------------------------------------------------------------------
190 !
191 !
192 !-------------------------------------------------------------------------------------
193 !
194 END MODULE modd_flake_n
subroutine flake_init(YFLAKE)