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