SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pgd_ecoclimap2_data.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 pgd_ecoclimap2_data (DTCO, &
7  hprogram)
8 ! #########################
9 !
10 !!**** *PGD_ECOCLIMAP2_DATA* initializes cover-field correspondance arrays
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 15/12/97
37 !! F.solmon 01/06/00 adaptation for patch approach
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 
43 !
45 !
46 USE modd_surf_par, ONLY : xundef, nundef
47 !
48 USE modd_data_cover, ONLY : tdata_seed, tdata_reap, xdata_watsup, xdata_irrig,&
49  ldata_irrig, xdata_vegtype, lclim_lai
50 
51 !
52 
53 USE modd_data_cover_par, ONLY : nvt_irr, jpcover
54 !
55 USE modi_get_luout
56 USE modi_open_namelist
57 USE modi_close_namelist
58 USE modi_open_file
59 USE modi_close_file
60 !
61 USE mode_pos_surf
62 !
63 !
64 USE yomhook ,ONLY : lhook, dr_hook
65 USE parkind1 ,ONLY : jprb
66 !
67 USE modi_abor1_sfx
68 !
69 USE modi_ecoclimap2_lai
70 !
71 IMPLICIT NONE
72 !
73 !* 0.1 Declaration of arguments
74 ! ------------------------
75 !
76 !
77 TYPE(data_cover_t), INTENT(INOUT) :: dtco
78 !
79  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! Type of program
80 !
81 !
82 !* 0.2 Declaration of local variables
83 ! ------------------------------
84 !
85 INTEGER :: iglb ! logical units
86 INTEGER :: iluout ! output listing logical unit
87 INTEGER :: ierr ! return codes
88 INTEGER :: ilunam ! namelist file logical unit
89 LOGICAL :: gfound ! true if namelist is found
90 !
91 INTEGER :: jcover,jdec,jvegtype ! loop counters on covers and decades
92 !
93 INTEGER, DIMENSION(:), ALLOCATABLE :: ivalue ! value of a record of data points
94 
95 !
96 !* 0.3 Declaration of namelists
97 ! ------------------------
98 !
99  CHARACTER(LEN=28) :: yirrig ! file name for irrigation
100 REAL(KIND=JPRB) :: zhook_handle
101 !
102 namelist/nam_ecoclimap2/ yirrig, lclim_lai
103 !-------------------------------------------------------------------------------
104 
105 !-------------------------------------------------------------------------------
106 !-------------------------------------------------------------------------------
107 !-------------------------------------------------------------------------------
108 !
109 !* 1. Read namelist
110 ! -------------------------------------
111 !
112 !* Initializations
113 !
114 IF (lhook) CALL dr_hook('PGD_ECOCLIMAP2_DATA',0,zhook_handle)
115 yirrig = ' '
116 lclim_lai = .true.
117 dtco%NYEAR = nundef
118 !
119 !* Reading
120 !
121  CALL get_luout(hprogram,iluout)
122  CALL open_namelist(hprogram,ilunam)
123 !
124  CALL posnam(ilunam,'NAM_ECOCLIMAP2',gfound,iluout)
125 IF (gfound) READ(unit=ilunam,nml=nam_ecoclimap2)
126 !
127  CALL close_namelist(hprogram,ilunam)
128 !
129 !-------------------------------------------------------------------------------
130 !
131 !* 2. Verifications
132 ! ----------------
133 !
134  ldata_irrig=(len_trim(yirrig)>0)
135 !
136 !-------------------------------------------------------------------------------
137 !
138 !
139 !* 3. second version of ecoclimap (europe)
140 ! -----------------------------------
141 !
142 !
143 !* 3.1. read the irrigation data
144 ! ----------------------
145 !
146 ierr=0
147 
148 IF (len_trim(yirrig)>0) THEN
149 ALLOCATE(ivalue(7))
150 
151  CALL open_file(hprogram,iglb,yirrig,'FORMATTED',haction='READ')
152 
153 DO jcover=301,jpcover
154  READ(iglb,fmt='(7I4)') ivalue
155  IF (xdata_vegtype(jcover,nvt_irr).NE.0) THEN
156  tdata_seed(jcover,nvt_irr )%TDATE%MONTH = ivalue(2)
157  tdata_seed(jcover,nvt_irr )%TDATE%DAY = ivalue(3)
158  tdata_reap(jcover,nvt_irr )%TDATE%MONTH = ivalue(4)
159  tdata_reap(jcover,nvt_irr )%TDATE%DAY = ivalue(5)
160  xdata_watsup(jcover,nvt_irr) = ivalue(6)
161  xdata_irrig(jcover,nvt_irr) = ivalue(7)
162  ENDIF
163  !
164  IF (xdata_vegtype(jcover,nvt_irr).NE.0 .AND. &
165  (ivalue(2).EQ.0 .OR. ivalue(3).EQ.0 .OR. ivalue(4).EQ.0 .OR. &
166  ivalue(5).EQ.0 .OR. ivalue(6).EQ.0 .OR. ivalue(7).EQ.0)) THEN
167  WRITE(iluout,*)'**************************************************'
168  WRITE(iluout,*)'* error, missing data in ',yirrig,' for *'
169  WRITE(iluout,*)'* the class ',jcover,'. *'
170  WRITE(iluout,*)'**************************************************'
171  ierr=1
172  ENDIF
173  IF (xdata_vegtype(jcover,nvt_irr).EQ.0 .AND. &
174  (ivalue(2).NE.0 .OR. ivalue(3).NE.0 .OR. ivalue(4).NE.0 .OR. &
175  ivalue(5).NE.0 .OR. ivalue(6).NE.0 .OR. ivalue(7).NE.0)) THEN
176  WRITE(iluout,*)'**************************************************'
177  WRITE(iluout,*)'* error, too many data in ',yirrig,' for *'
178  WRITE(iluout,*)'* the class ',jcover,'. *'
179  WRITE(iluout,*)'**************************************************'
180  ierr=1
181  ENDIF
182 ENDDO
183 
184  CALL close_file(hprogram,iglb)
185 
186 IF (ierr.EQ.1) CALL abor1_sfx('PGD_ECOCLIMAP2_DATA (3)')
187 
188 DEALLOCATE(ivalue)
189 END IF
190 !
191 !-------------------------------------------------------------------------------
192 !
193 ! 4. Computes LAI evolution for the chosen year
194 ! ------------------------------------------
195 !
196  CALL ecoclimap2_lai(dtco)
197 IF (lhook) CALL dr_hook('PGD_ECOCLIMAP2_DATA',1,zhook_handle)
198 !
199 !-------------------------------------------------------------------------------
200 !
201 END SUBROUTINE pgd_ecoclimap2_data
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine pgd_ecoclimap2_data(DTCO, HPROGRAM)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine close_file(HPROGRAM, KUNIT)
Definition: close_file.F90:6
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine ecoclimap2_lai(DTCO)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KRECL)
Definition: open_file.F90:6