SURFEX v8.1
General documentation of Surfex
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 (KYEAR, PDATA_VEGTYPE, &
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 USE modd_surf_par, ONLY : xundef, nundef
44 !
47 
48 !
49 
50 USE modd_data_cover_par, ONLY : nvt_irr, jpcover
51 !
52 USE modi_get_luout
53 USE modi_open_namelist
54 USE modi_close_namelist
55 USE modi_open_file
56 USE modi_close_file
57 !
58 USE mode_pos_surf
59 !
60 !
61 USE yomhook ,ONLY : lhook, dr_hook
62 USE parkind1 ,ONLY : jprb
63 !
64 USE modi_abor1_sfx
65 !
66 USE modi_ecoclimap2_lai
67 !
68 IMPLICIT NONE
69 !
70 !* 0.1 Declaration of arguments
71 ! ------------------------
72 !
73 !
74 INTEGER, INTENT(INOUT) :: KYEAR
75 REAL, DIMENSION(:,:), INTENt(IN) :: PDATA_VEGTYPE
76 !
77  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! Type of program
78 !
79 !
80 !* 0.2 Declaration of local variables
81 ! ------------------------------
82 !
83 INTEGER :: IGLB ! logical units
84 INTEGER :: ILUOUT ! output listing logical unit
85 INTEGER :: IERR ! return codes
86 INTEGER :: ILUNAM ! namelist file logical unit
87 LOGICAL :: GFOUND ! true if namelist is found
88 !
89 INTEGER :: JCOVER,JDEC,JVEGTYPE ! loop counters on covers and decades
90 !
91 INTEGER, DIMENSION(:), ALLOCATABLE :: IVALUE ! value of a record of data points
92 
93 !
94 !* 0.3 Declaration of namelists
95 ! ------------------------
96 !
97  CHARACTER(LEN=28) :: YIRRIG ! file name for irrigation
98 REAL(KIND=JPRB) :: ZHOOK_HANDLE
99 !
100 NAMELIST/nam_ecoclimap2/ yirrig, lclim_lai
101 !-------------------------------------------------------------------------------
102 
103 !-------------------------------------------------------------------------------
104 !-------------------------------------------------------------------------------
105 !-------------------------------------------------------------------------------
106 !
107 !* 1. Read namelist
108 ! -------------------------------------
109 !
110 !* Initializations
111 !
112 IF (lhook) CALL dr_hook('PGD_ECOCLIMAP2_DATA',0,zhook_handle)
113 yirrig = ' '
114 lclim_lai = .true.
115 kyear = nundef
116 !
117 !* Reading
118 !
119  CALL get_luout(hprogram,iluout)
120  CALL open_namelist(hprogram,ilunam)
121 !
122  CALL posnam(ilunam,'NAM_ECOCLIMAP2',gfound,iluout)
123 IF (gfound) READ(unit=ilunam,nml=nam_ecoclimap2)
124 !
125  CALL close_namelist(hprogram,ilunam)
126 !
127 !-------------------------------------------------------------------------------
128 !
129 !* 2. Verifications
130 ! ----------------
131 !
132  ldata_irrig=(len_trim(yirrig)>0)
133 !
134 !-------------------------------------------------------------------------------
135 !
136 !
137 !* 3. second version of ecoclimap (europe)
138 ! -----------------------------------
139 !
140 !
141 !* 3.1. read the irrigation data
142 ! ----------------------
143 !
144 ierr=0
145 
146 IF (len_trim(yirrig)>0) THEN
147 ALLOCATE(ivalue(7))
148 
149  CALL open_file(hprogram,iglb,yirrig,'FORMATTED',haction='READ')
150 
151 DO jcover=301,jpcover
152  READ(iglb,fmt='(7I4)') ivalue
153  IF (xdata_vegtype(jcover,nvt_irr).NE.0) THEN
154  tdata_seed(jcover,nvt_irr )%TDATE%MONTH = ivalue(2)
155  tdata_seed(jcover,nvt_irr )%TDATE%DAY = ivalue(3)
156  tdata_reap(jcover,nvt_irr )%TDATE%MONTH = ivalue(4)
157  tdata_reap(jcover,nvt_irr )%TDATE%DAY = ivalue(5)
158  xdata_watsup(jcover,nvt_irr) = ivalue(6)
159  xdata_irrig(jcover,nvt_irr) = ivalue(7)
160  ENDIF
161  !
162  IF (xdata_vegtype(jcover,nvt_irr).NE.0 .AND. &
163  (ivalue(2).EQ.0 .OR. ivalue(3).EQ.0 .OR. ivalue(4).EQ.0 .OR. &
164  ivalue(5).EQ.0 .OR. ivalue(6).EQ.0 .OR. ivalue(7).EQ.0)) THEN
165  WRITE(iluout,*)'**************************************************'
166  WRITE(iluout,*)'* error, missing data in ',yirrig,' for *'
167  WRITE(iluout,*)'* the class ',jcover,'. *'
168  WRITE(iluout,*)'**************************************************'
169  ierr=1
170  ENDIF
171  IF (xdata_vegtype(jcover,nvt_irr).EQ.0 .AND. &
172  (ivalue(2).NE.0 .OR. ivalue(3).NE.0 .OR. ivalue(4).NE.0 .OR. &
173  ivalue(5).NE.0 .OR. ivalue(6).NE.0 .OR. ivalue(7).NE.0)) THEN
174  WRITE(iluout,*)'**************************************************'
175  WRITE(iluout,*)'* error, too many data in ',yirrig,' for *'
176  WRITE(iluout,*)'* the class ',jcover,'. *'
177  WRITE(iluout,*)'**************************************************'
178  ierr=1
179  ENDIF
180 ENDDO
181 
182  CALL close_file(hprogram,iglb)
183 
184 IF (ierr.EQ.1) CALL abor1_sfx('PGD_ECOCLIMAP2_DATA (3)')
185 
186 DEALLOCATE(ivalue)
187 END IF
188 !
189 !-------------------------------------------------------------------------------
190 !
191 ! 4. Computes LAI evolution for the chosen year
192 ! ------------------------------------------
193 !
194  CALL ecoclimap2_lai(kyear)
195 !
196 IF (lhook) CALL dr_hook('PGD_ECOCLIMAP2_DATA',1,zhook_handle)
197 !
198 !-------------------------------------------------------------------------------
199 !
200 END SUBROUTINE pgd_ecoclimap2_data
real, dimension(:,:), allocatable xdata_irrig
subroutine open_file(HPROGRAM, KUNIT, HFILE, HFORM, HACTION, HACCESS, KR
Definition: open_file.F90:7
type(date_time), dimension(:,:), pointer tdata_seed
subroutine pgd_ecoclimap2_data(KYEAR, PDATA_VEGTYPE, HPROGRAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
real, dimension(:,:), allocatable xdata_vegtype
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
type(date_time), dimension(:,:), pointer tdata_reap
integer, parameter jprb
Definition: parkind1.F90:32
integer, parameter nundef
subroutine ecoclimap2_lai(KYEAR)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine close_file(HPROGRAM, KUNIT)
Definition: close_file.F90:7
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
real, dimension(:,:), allocatable xdata_watsup
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)