SURFEX v8.1
General documentation of Surfex
modd_sson.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 ! ####################
6  MODULE modd_sso_n
7 ! ######################
8 !
9 !!**** *MODD_SSO - declaration of surface parameters related to orography
10 !!
11 !! PURPOSE
12 !! -------
13 ! Declaration of surface parameters
14 !
15 !!
16 !!** IMPLICIT ARGUMENTS
17 !! ------------------
18 !! None
19 !!
20 !! REFERENCE
21 !! ---------
22 !!
23 !! AUTHOR
24 !! ------
25 !! V. Masson *Meteo France*
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 01/2004
30 !
31 !* 0. DECLARATIONS
32 ! ------------
33 !
34 !
35 USE yomhook ,ONLY : lhook, dr_hook
36 USE parkind1 ,ONLY : jprb
37 !
38 IMPLICIT NONE
39 !
40 ! utilisé uniquement tel quel.
41 TYPE sso_t
42 !
43 !-----------------------------------------------------------------------------------------------------
44 !
45 ! Type of roughness
46 !
47  CHARACTER(LEN=4) :: crough ! type of orographic roughness
48 ! ! 'NONE'
49  ! 'Z01D'
50  ! 'Z04D'
51  ! 'BE04'
52 !
53  REAL, DIMENSION(:), POINTER :: xz0effjpdir ! heading of J direction (deg from N clockwise)
54 !
55  REAL, DIMENSION(:), POINTER :: xsso_slope ! slope of S.S.O.
56  REAL, DIMENSION(:), POINTER :: xsso_anis ! anisotropy of S.S.O.
57  REAL, DIMENSION(:), POINTER :: xsso_dir ! direction of S.S.O. (deg from N clockwise)
58  REAL, DIMENSION(:), POINTER :: xsso_stdev ! S.S.O. standard deviation (m)
59 !
60  REAL, DIMENSION(:), POINTER :: xavg_zs ! averaged orography (m)
61  REAL, DIMENSION(:), POINTER :: xsil_zs ! silhouette orography (m)
62  REAL, DIMENSION(:), POINTER :: xmax_zs ! maximum subgrid orography (m)
63  REAL, DIMENSION(:), POINTER :: xmin_zs ! minimum subgrid orography (m)
64 ! Zo threshold
65  REAL :: xfracz0 ! Z0=Min(Z0, Href/XFRACZ0)
66  REAL :: xcoefbe ! Beljaars coefficient
67 !
68 !-----------------------------------------------------------------------------------------------------
69 !
70 ! Subgrid orography parameters
71 !
72  REAL, DIMENSION(:), POINTER :: xaosip, xaosim, xaosjp, xaosjm
73 ! directional A/S quantities in 4 coordinate directions
74 ! (IP: i index up; IM: i index down; JP: j index up; JM: j index down)
75 ! They are used in soil routines to compute effective roughness length
76 !
77  REAL, DIMENSION(:), POINTER :: xho2ip, xho2im, xho2jp, xho2jm
78 ! directional h/2 quantities in 4 coordinate directions
79 ! (IP: i index up; IM: i index down; JP: j index up; JM: j index down)
80 ! They are used in soil routines to compute effective roughness length
81 !
82  REAL, DIMENSION(:), POINTER :: xz0rel ! relief roughness length (m)
83 !
84 ! utilisé par l'atmosphère
85 !
86  REAL, DIMENSION(:), POINTER :: xz0effip, xz0effim, xz0effjp, xz0effjm
87 ! directional total roughness lenghts in 4 coordinate directions
88 ! (IP: i index up; IM: i index down; JP: j index up; JM: j index down)
89 !
90 END TYPE sso_t
91 !
92 ! utilisé par isba
93 !
95 !
96 TYPE(sso_t), DIMENSION(:), POINTER :: al=>null()
97 !
98 END TYPE sso_np_t
99 !
100 CONTAINS
101 !
102 SUBROUTINE sso_init(YSSO)
103 TYPE(sso_t), INTENT(INOUT) :: YSSO
104 REAL(KIND=JPRB) :: ZHOOK_HANDLE
105 IF (lhook) CALL dr_hook("MODD_SSO_N:SSO_INIT",0,zhook_handle)
106  NULLIFY(ysso%XZ0EFFJPDIR)
107  NULLIFY(ysso%XSSO_SLOPE)
108  NULLIFY(ysso%XSSO_ANIS)
109  NULLIFY(ysso%XSSO_DIR)
110  NULLIFY(ysso%XSSO_STDEV)
111  NULLIFY(ysso%XAVG_ZS)
112  NULLIFY(ysso%XSIL_ZS)
113  NULLIFY(ysso%XMAX_ZS)
114  NULLIFY(ysso%XMIN_ZS)
115  NULLIFY(ysso%XAOSIP)
116  NULLIFY(ysso%XAOSIM)
117  NULLIFY(ysso%XAOSJP)
118  NULLIFY(ysso%XAOSJM)
119  NULLIFY(ysso%XHO2IP)
120  NULLIFY(ysso%XHO2IM)
121  NULLIFY(ysso%XHO2JP)
122  NULLIFY(ysso%XHO2JM)
123  NULLIFY(ysso%XZ0REL)
124 
125  NULLIFY(ysso%XZ0EFFIP)
126  NULLIFY(ysso%XZ0EFFIM)
127  NULLIFY(ysso%XZ0EFFJP)
128  NULLIFY(ysso%XZ0EFFJM)
129 
130 ysso%CROUGH=' '
131 ysso%XFRACZ0=2.
132 ysso%XCOEFBE=2.
133 IF (lhook) CALL dr_hook("MODD_SSO_N:SSO_INIT",1,zhook_handle)
134 END SUBROUTINE sso_init
135 !
136 SUBROUTINE sso_np_init(YSSO_NP,KPATCH)
137 TYPE(sso_np_t), INTENT(INOUT) :: YSSO_NP
138 INTEGER, INTENT(IN) :: KPATCH
139 INTEGER :: JP
140 REAL(KIND=JPRB) :: ZHOOK_HANDLE
141 IF (lhook) CALL dr_hook("MODD_SSO_N:SSO_NP_INIT",0,zhook_handle)
142 !
143 IF (ASSOCIATED(ysso_np%AL)) THEN
144  DO jp = 1,kpatch
145  CALL sso_init(ysso_np%AL(jp))
146  ENDDO
147  DEALLOCATE(ysso_np%AL)
148 ELSE
149  ALLOCATE(ysso_np%AL(kpatch))
150  DO jp = 1,kpatch
151  CALL sso_init(ysso_np%AL(jp))
152  ENDDO
153 ENDIF
154 !
155 IF (lhook) CALL dr_hook("MODD_SSO_N:SSO_NP_INIT",1,zhook_handle)
156 END SUBROUTINE sso_np_init
157 !
158 END MODULE modd_sso_n
subroutine sso_init(YSSO)
Definition: modd_sson.F90:103
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine sso_np_init(YSSO_NP, KPATCH)
Definition: modd_sson.F90:137