SURFEX v8.1
General documentation of Surfex
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)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15