SURFEX v8.1
General documentation of Surfex
read_pgd_teb_irrign.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  SUBROUTINE read_pgd_teb_irrig_n (G, TIR, HPROGRAM)
7 ! ################################################
8 !
9 !!**** *READ_PGD_TEB_IRRIG_n* - reads ISBA physiographic fields
10 !!
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! V. Masson *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 05/2005
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 !
42 !
43 !
44 !
45 !
46 USE modd_sfx_grid_n, ONLY : grid_t
47 USE modd_teb_irrig_n, ONLY : teb_irrig_t
48 !
50 USE modi_get_luout
51 USE modi_abor1_sfx
52 !
53 USE yomhook ,ONLY : lhook, dr_hook
54 USE parkind1 ,ONLY : jprb
55 !
56 IMPLICIT NONE
57 !
58 !* 0.1 Declarations of arguments
59 ! -------------------------
60 !
61 !
62 !
63 !
64 TYPE(grid_t), INTENT(INOUT) :: G
65 TYPE(teb_irrig_t), INTENT(INOUT) :: TIR
66 !
67  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
68 !
69 !* 0.2 Declarations of local variables
70 ! -------------------------------
71 !
72 INTEGER :: ILUOUT ! output listing logical unit
73 INTEGER :: IRESP ! IRESP : return-code if a problem appears
74  CHARACTER(LEN=12) :: YRECFM ! Name of the article to be read
75  CHARACTER(LEN=80) :: YCOMMENT ! Comment of the article to be read
76 INTEGER :: JLAYER ! loop index
77 !
78 INTEGER :: IVERSION ! surface version
79 INTEGER :: IBUGFIX ! surface bugfix version
80 REAL, DIMENSION(G%NDIM) :: ZWORK ! work array
81 REAL(KIND=JPRB) :: ZHOOK_HANDLE
82 !
83 !-------------------------------------------------------------------------------
84 IF (lhook) CALL dr_hook('READ_PGD_TEB_IRRIG_N',0,zhook_handle)
85 !
86  CALL get_luout(hprogram,iluout)
87 !
88 yrecfm='VERSION'
89  CALL read_surf(hprogram,yrecfm,iversion,iresp)
90 yrecfm='BUG'
91  CALL read_surf(hprogram,yrecfm,ibugfix,iresp)
92 !
93 IF (iversion<7 .OR. (iversion==7 .AND. ibugfix<=3)) THEN
94  !
95  tir%LPAR_GD_IRRIG = .false.
96  tir%LPAR_GR_IRRIG = .false.
97  tir%LPAR_RD_IRRIG = .false.
98  !
99 ELSE
100  !
101  yrecfm='L_PAR_GD_IRR'
102  CALL read_surf(hprogram,yrecfm,tir%LPAR_GD_IRRIG,iresp)
103  yrecfm='L_PAR_GR_IRR'
104  CALL read_surf(hprogram,yrecfm,tir%LPAR_GR_IRRIG,iresp)
105  yrecfm='L_PAR_RD_IRR'
106  CALL read_surf(hprogram,yrecfm,tir%LPAR_RD_IRRIG,iresp)
107  !
108 ENDIF
109 !
110 !* read garden irrigation
111 !
112 IF (tir%LPAR_GD_IRRIG) THEN
113  ALLOCATE(tir%XGD_START_MONTH(g%NDIM))
114  yrecfm='D_GD_SM_IRR'
115  CALL read_surf(hprogram,yrecfm,tir%XGD_START_MONTH(:),iresp,hcomment=ycomment)
116  !
117  ALLOCATE(tir%XGD_END_MONTH (g%NDIM))
118  yrecfm='D_GD_EM_IRR'
119  CALL read_surf(hprogram,yrecfm,tir%XGD_END_MONTH (:),iresp,hcomment=ycomment)
120  !
121  ALLOCATE(tir%XGD_START_HOUR (g%NDIM))
122  yrecfm='D_GD_SH_IRR'
123  CALL read_surf(hprogram,yrecfm,tir%XGD_START_HOUR (:),iresp,hcomment=ycomment)
124  !
125  ALLOCATE(tir%XGD_END_HOUR (g%NDIM))
126  yrecfm='D_GD_EH_IRR'
127  CALL read_surf(hprogram,yrecfm,tir%XGD_END_HOUR (:),iresp,hcomment=ycomment)
128  !
129  ALLOCATE(tir%XGD_24H_IRRIG (g%NDIM))
130  yrecfm='D_GD_IRRIG'
131  CALL read_surf(hprogram,yrecfm,tir%XGD_24H_IRRIG (:),iresp,hcomment=ycomment)
132 ELSE
133  ALLOCATE(tir%XGD_START_MONTH(0))
134  ALLOCATE(tir%XGD_END_MONTH (0))
135  ALLOCATE(tir%XGD_START_HOUR (0))
136  ALLOCATE(tir%XGD_END_HOUR (0))
137  ALLOCATE(tir%XGD_24H_IRRIG (0))
138 END IF
139 !
140 !* read greenroof irrigation
141 !
142 IF (tir%LPAR_GR_IRRIG) THEN
143  ALLOCATE(tir%XGR_START_MONTH(g%NDIM))
144  yrecfm='D_GR_SM_IRR'
145  CALL read_surf(hprogram,yrecfm,tir%XGR_START_MONTH(:),iresp,hcomment=ycomment)
146  !
147  ALLOCATE(tir%XGR_END_MONTH (g%NDIM))
148  yrecfm='D_GR_EM_IRR'
149  CALL read_surf(hprogram,yrecfm,tir%XGR_END_MONTH (:),iresp,hcomment=ycomment)
150  !
151  ALLOCATE(tir%XGR_START_HOUR (g%NDIM))
152  yrecfm='D_GR_SH_IRR'
153  CALL read_surf(hprogram,yrecfm,tir%XGR_START_HOUR (:),iresp,hcomment=ycomment)
154  !
155  ALLOCATE(tir%XGR_END_HOUR (g%NDIM))
156  yrecfm='D_GR_EH_IRR'
157  CALL read_surf(hprogram,yrecfm,tir%XGR_END_HOUR (:),iresp,hcomment=ycomment)
158  !
159  ALLOCATE(tir%XGR_24H_IRRIG (g%NDIM))
160  yrecfm='D_GR_IRRIG'
161  CALL read_surf(hprogram,yrecfm,tir%XGR_24H_IRRIG (:),iresp,hcomment=ycomment)
162 ELSE
163  ALLOCATE(tir%XGR_START_MONTH(0))
164  ALLOCATE(tir%XGR_END_MONTH (0))
165  ALLOCATE(tir%XGR_START_HOUR (0))
166  ALLOCATE(tir%XGR_END_HOUR (0))
167  ALLOCATE(tir%XGR_24H_IRRIG (0))
168 END IF
169 !
170 !* read road watering
171 !
172 IF (tir%LPAR_RD_IRRIG) THEN
173  ALLOCATE(tir%XRD_START_MONTH(g%NDIM))
174  yrecfm='D_RD_SM_IRR'
175  CALL read_surf(hprogram,yrecfm,tir%XRD_START_MONTH(:),iresp,hcomment=ycomment)
176  !
177  ALLOCATE(tir%XRD_END_MONTH (g%NDIM))
178  yrecfm='D_RD_EM_IRR'
179  CALL read_surf(hprogram,yrecfm,tir%XRD_END_MONTH (:),iresp,hcomment=ycomment)
180  !
181  ALLOCATE(tir%XRD_START_HOUR (g%NDIM))
182  yrecfm='D_RD_SH_IRR'
183  CALL read_surf(hprogram,yrecfm,tir%XRD_START_HOUR (:),iresp,hcomment=ycomment)
184  !
185  ALLOCATE(tir%XRD_END_HOUR (g%NDIM))
186  yrecfm='D_RD_EH_IRR'
187  CALL read_surf(hprogram,yrecfm,tir%XRD_END_HOUR (:),iresp,hcomment=ycomment)
188  !
189  ALLOCATE(tir%XRD_24H_IRRIG (g%NDIM))
190  yrecfm='D_RD_IRRIG'
191  CALL read_surf(hprogram,yrecfm,tir%XRD_24H_IRRIG (:),iresp,hcomment=ycomment)
192 ELSE
193  ALLOCATE(tir%XRD_START_MONTH(0))
194  ALLOCATE(tir%XRD_END_MONTH (0))
195  ALLOCATE(tir%XRD_START_HOUR (0))
196  ALLOCATE(tir%XRD_END_HOUR (0))
197  ALLOCATE(tir%XRD_24H_IRRIG (0))
198 END IF
199 
200 !
201 IF (lhook) CALL dr_hook('READ_PGD_TEB_IRRIG_N',1,zhook_handle)
202 !
203 !-------------------------------------------------------------------------------
204 !
205 END SUBROUTINE read_pgd_teb_irrig_n
integer, parameter jprb
Definition: parkind1.F90:32
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine read_pgd_teb_irrig_n(G, TIR, HPROGRAM)