SURFEX v8.1
General documentation of Surfex
init_write_txt.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 init_write_txt (HSELECT, HREC,OWFL)
7 ! ######################
8 !
9 !!**** *INIT_WRITE_TXT_n* Initialize array name to be written and associated
10 !! unit number
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !!
16 !!** IMPLICIT ARGUMENTS
17 !! ------------------
18 !! None
19 !!
20 !! REFERENCE
21 !! ---------
22 !!
23 !! AUTHOR
24 !! ------
25 !! A. LEMONSU *Meteo France*
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !!
30 !
31 !* 0. DECLARATIONS
32 ! ------------
33 !
34 !
37 !
38 USE modi_abor1_sfx
39 !USE MODI_TEST_RECORD_LEN
40 !
41 USE yomhook ,ONLY : lhook, dr_hook
42 USE parkind1 ,ONLY : jprb
43 !
44 IMPLICIT NONE
45 !
46  CHARACTER(LEN=*), DIMENSION(:), INTENT(IN) :: HSELECT
47 !
48 !
49  CHARACTER(LEN=12), INTENT(IN) :: HREC
50 LOGICAL, INTENT(INOUT) :: OWFL
51 INTEGER :: IP, IVAR, IFIELD, JFIELD
52 !LOGICAL :: LMATCH
53 REAL(KIND=JPRB) :: ZHOOK_HANDLE
54 !
55 !------------------------------------------------------------------------------
56 !
57 IF (lhook) CALL dr_hook('INIT_WRITE_TXT',0,zhook_handle)
58 !
59 ivar=nunit0
60 DO ip=1, jpvar
61  IF (hrec==cvar(ip)) THEN
62  ivar=nvar(ip)
63  EXIT
64  ELSEIF(hrec==cvarn(ip)) THEN
65  ivar=-1
66  EXIT
67  ENDIF
68 ENDDO
69 !
70 !
71 IF (ivar.LT.0) THEN
72 !
73  owfl=.false.
74 !
75 ELSEIF (ivar.NE.nunit0) THEN
76 !
77  owfl=.true.
78 !
79 ELSE
80 !
81  IF (cvar(1).NE.' ') ivar=maxval(nvar(:))
82 !
83 !
84  IF (SIZE(hselect)==0) THEN
85 !
86  IF ( (hrec(5:7)/='_OC' ) .AND. &
87  (hrec(4:6)/='_OC' ) .AND. &
88  (hrec(1:3)/='SEA' ) .AND. &
89  (hrec(1:2)/='DX' ) .AND. &
90  (hrec(1:2)/='DY' ) .AND. &
91  (hrec(1:4)/='CLAY' ) .AND. &
92  (hrec(1:4)/='SAND' ) .AND. &
93  (hrec(1:2)/='ZS' ) .AND. &
94  (hrec(1:4)/='SSO_' ) .AND. &
95  (hrec(1:4)/='Q2M_' ) .AND. &
96  (hrec(1:4)/='RESA' ) .AND. &
97  (hrec(1:3)/='RI_' ) .AND. &
98  (hrec(1:5)/='REG_L' ) .AND. &
99  (hrec(1:3)/='AOS' ) .AND. &
100  (hrec(1:3)/='HO2' ) .AND. &
101  (hrec(1:3)/='RGL' ) .AND. &
102  (hrec(1:3)/='SWD' ) .AND. &
103  (hrec(1:3)/='SWU' ) .AND. &
104  (hrec(1:3)/='LWD' ) .AND. &
105  (hrec(1:3)/='LWU' ) .AND. &
106  (hrec(1:3)/='ALB' ) .AND. &
107  (hrec(1:2)/='DG' ) .AND. &
108  (hrec(1:5)/='DROOT' ) .AND. &
109  (hrec(1:4)/='DTOT' ) .AND. &
110  (hrec(1:7)/='RUNOFFD' ) .AND. &
111  (hrec(1:8)/='ROOTFRAC' ) .AND. &
112  (hrec(1:4)/='WSAT' ) .AND. &
113  (hrec(1:3)/='WFC' ) .AND. &
114  (hrec(1:5)/='WWILT' ) .AND. &
115  (hrec(1:4)/='DICE' ) .AND. &
116  (hrec(1:2)/='CV' ) .AND. &
117  (hrec(1:5)/='GAMMA' ) .AND. &
118  (hrec(1:5)/='RSMIN' ) .AND. &
119  (hrec(1:5)/='WRMAX' ) .AND. &
120  (hrec(1:5)/='Z0REL' ) .AND. &
121  (hrec(1:5)/='Z0SEA' ) .AND. &
122  (hrec(1:7)/='Z0WATER' ) .AND. &
123  (hrec(4:6)/='_ZS' ) .AND. &
124  (hrec(1:7)/='VEGTYPE' ) .AND. &
125  (hrec(1:5)/='COVER' ) .AND. &
126  (hrec(1:5)/='IRRIG' ) .AND. &
127  (hrec(1:4)/='TI_R' ) .AND. &
128  (hrec(1:3)/='CD_' ) .AND. &
129  (hrec(1:3)/='CE_' ) .AND. &
130  (hrec(1:3)/='CH_' ) .AND. &
131  (hrec(1:4)/='FMU_' ) .AND. &
132  (hrec(1:4)/='FMV_' ) .AND. &
133  (hrec(1:6)/='DRIVEG' ) .AND. &
134  (hrec(1:5)/='RRVEG' ) .AND. &
135  (hrec(1:8)/='BLD_DESC' ) .AND. &
136  (hrec(1:2)/='Z0' ) ) THEN
137 
138  ivar = ivar+1
139  IF (ivar-nunit0>jpvar) THEN
140  CALL abor1_sfx('TOO MANY FIELDS TO BE WRITTEN IN THE "TEXTE" TYPE TIMESERIES')
141  END IF
142  cvar(ivar-nunit0) = hrec
143  nvar(ivar-nunit0) = ivar
144  OPEN(unit=ivar,file=trim(hrec)//'.TXT',form='FORMATTED')
145  owfl=.true.
146 
147  ELSE
148  ip = 1
149  DO WHILE (cvarn(ip).NE.' ')
150  ip=ip+1
151  ENDDO
152  cvarn(ip) = hrec
153  owfl=.false.
154  ENDIF
155 !
156  ELSE
157 !
158  ifield=0
159  DO jfield=1,SIZE(hselect)
160  IF (hselect(jfield)== ' ') EXIT
161  ifield=ifield+1
162  ENDDO
163 
164  !CALL TEST_RECORD_LEN("ASCII ",HREC,HSELECT,LMATCH)
165 
166  !IF (.NOT. LMATCH ) THEN
167 
168  ivar = ivar+1
169  IF (ivar-nunit0>jpvar) THEN
170  CALL abor1_sfx('TOO MANY FIELDS TO BE WRITTEN IN THE "TEXTE" TYPE TIMESERIES')
171  END IF
172  cvar(ivar-nunit0) = hrec
173  nvar(ivar-nunit0) = ivar
174  OPEN(unit=ivar,file=trim(hrec)//'.TXT',form='FORMATTED')
175  owfl=.true.
176 
177  !ELSE
178  ! OWFL=.FALSE.
179  !ENDIF
180 
181  ENDIF
182 ENDIF
183 
184 nind=ivar
185 IF (lhook) CALL dr_hook('INIT_WRITE_TXT',1,zhook_handle)
186 !
187 !------------------------------------------------------------------------------
188 !
189 END SUBROUTINE init_write_txt
subroutine init_write_txt(HSELECT, HREC, OWFL)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
integer, parameter jprb
Definition: parkind1.F90:32
integer, dimension(:), pointer nmask
integer, dimension(jpvar) nvar
logical lhook
Definition: yomhook.F90:15
character(len=6) cmask
integer, parameter jpvar
character(len=12), dimension(jpvar) cvarn
character(len=12), dimension(jpvar) cvar