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