SURFEX v8.1
General documentation of Surfex
mode_teb_veg.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.
6 !
7 USE yomhook ,ONLY : lhook, dr_hook
8 USE parkind1 ,ONLY : jprb
9 !
12 !
13 IMPLICIT NONE
14 !
15 CONTAINS
16 !
17 SUBROUTINE init_if_dif(KGROUND_LAYER, PMASK, P)
18 !
19 INTEGER, INTENT(IN) :: KGROUND_LAYER
20 REAL, DIMENSION(:), INTENT(IN) :: PMASK
21 TYPE(isba_p_t), INTENT(INOUT) :: P
22 !
23 INTEGER :: JI, JL
24 REAL(KIND=JPRB) :: ZHOOK_HANDLE
25 !
26 IF (lhook) CALL dr_hook('MODE_TEB_VEG:INIT_IF_DIF',0,zhook_handle)
27 !
28 WHERE(pmask(:)/=0.)
29  p%NWG_LAYER(:)=kground_layer
30  p%XDG2 (:)=0.0
31  p%XDROOT(:)=0.0
32 ENDWHERE
33 DO jl=kground_layer,1,-1
34  DO ji=1,SIZE(pmask)
35  IF(pmask(ji)/=0..AND.p%XROOTFRAC(ji,jl)>=1.0)THEN
36  p%XDG2 (ji)=p%XDG(ji,jl)
37  p%XDROOT(ji)=p%XDG(ji,jl)
38  ENDIF
39  ENDDO
40 ENDDO
41 !
42 IF (lhook) CALL dr_hook('MODE_TEB_VEG:INIT_IF_DIF',1,zhook_handle)
43 !
44 END SUBROUTINE init_if_dif
45 !
46 SUBROUTINE init_if_noveg(PMASK, IO, S, P, PEK)
47 !
48 REAL, DIMENSION(:), INTENT(IN) :: PMASK
49 TYPE(isba_options_t), INTENT(IN) :: IO
50 TYPE(isba_s_t), INTENT(INOUT) :: S
51 TYPE(isba_p_t), INTENT(INOUT) :: P
52 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
53 !
54 INTEGER :: JL, JV
55 REAL(KIND=JPRB) :: ZHOOK_HANDLE
56 !
57 IF (lhook) CALL dr_hook('MODE_TEB_VEG:INIT_IF_NOVEG',0,zhook_handle)
58 !
59 WHERE (pmask(:)==0.)
60  pek%XVEG(:)=0.
61  pek%XLAI(:)=0.
62  pek%XRSMIN(:)=40.
63  pek%XGAMMA(:)=0.
64  pek%XWRMAX_CF(:)=0.2
65  pek%XRGL(:)=100.
66  pek%XCV(:)=2.e-5
67  pek%XZ0(:)=0.013
68  p%XZ0_O_Z0H(:)=10.
69  pek%XALBNIR_VEG(:)=0.30
70  pek%XALBVIS_VEG(:)=0.30
71  pek%XALBUV_VEG(:)=0.06
72  pek%XEMIS(:)=0.94
73 ENDWHERE
74 IF (io%CPHOTO/='NON') THEN
75  WHERE (pmask(:)==0.)
76  pek%XGMES(:)=0.020
77  pek%XBSLAI(:)=0.36
78  pek%XLAIMIN(:)=0.3
79  pek%XSEFOLD(:)=90*86400.
80  p%XH_TREE(:)=0.
81  p%XRE25(:)=3.6e-7
82  pek%XGC(:)=0.00025
83  END WHERE
84  WHERE (pmask(:)==0.)
85  p%XDMAX(:)=0.1
86  pek%XF2I(:)=0.3
87  END WHERE
88  IF (io%CPHOTO=='NIT' .OR. io%CPHOTO=='NCB') THEN
89  WHERE (pmask(:)==0.)
90  pek%XCE_NITRO(:)=7.68
91  pek%XCF_NITRO(:)=-4.33
92  pek%XCNA_NITRO(:)=1.3
93  END WHERE
94  ENDIF
95 ENDIF
96 IF(io%CISBA/='DIF')THEN
97  DO jl=1,io%NGROUND_LAYER
98  WHERE (pmask(:)==0.)
99  p%XDG(:,jl)=0.2*jl
100  END WHERE
101  ENDDO
102 ELSE
103  WHERE (pmask(:)==0.)
104  p%XDG(:,1)=0.01
105  p%XDG(:,2)=0.04
106  p%XROOTFRAC(:,1)=0.
107  p%XROOTFRAC(:,2)=0.
108  END WHERE
109  DO jl=3,io%NGROUND_LAYER
110  WHERE (pmask(:)==0.)
111  p%XDG(:,jl)=0.1*(jl-2)
112  p%XROOTFRAC(:,jl)=0.
113  END WHERE
114  ENDDO
115  WHERE (pmask(:)==0.)
116  p%NWG_LAYER(:)=io%NGROUND_LAYER
117  p%XDROOT (:)=0.0
118  p%XDG2 (:)=p%XDG(:,io%NGROUND_LAYER-1)
119  ENDWHERE
120 ENDIF
121 WHERE (pmask(:)==0.)
122  p%XD_ICE(:)=0.8*p%XDG(:,2)
123 END WHERE
124 !
125 IF (lhook) CALL dr_hook('MODE_TEB_VEG:INIT_IF_NOVEG',1,zhook_handle)
126 !
127 END SUBROUTINE init_if_noveg
128 !
129 END MODULE mode_teb_veg
subroutine init_if_noveg(PMASK, IO, S, P, PEK)
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine init_if_dif(KGROUND_LAYER, PMASK, P)