SURFEX v8.1
General documentation of Surfex
init_write_bin.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_bin (HSELECT, KDIM_FULL, &
7  HREC,KPATCH,OWFL)
8 ! ######################
9 !
10 !!**** *INIT_WRITE_BIN_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 !
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  INTEGER, INTENT(IN) :: KDIM_FULL
48 !
49  CHARACTER(LEN=12), INTENT(IN) :: HREC
50 INTEGER, INTENT(IN) :: KPATCH
51 LOGICAL, INTENT(INOUT) :: OWFL
52 INTEGER :: IP, IVAR, IFIELD, JFIELD
53 INTEGER :: IRECLEN
54 !LOGICAL :: LMATCH
55 REAL(KIND=JPRB) :: ZHOOK_HANDLE
56 !
57 !------------------------------------------------------------------------------
58 IF (lhook) CALL dr_hook('INIT_WRITE_BIN',0,zhook_handle)
59 ireclen=kdim_full*kpatch*4
60 !
61 ivar=nunit0
62 DO ip=1, jpvar
63  IF (hrec==cvar(ip)) THEN
64  ivar=nvar(ip)
65  EXIT
66  ENDIF
67 ENDDO
68 !
69 !
70 IF (ivar.NE.nunit0) THEN
71 !
72  owfl=.true.
73 !
74 ELSE
75 !
76  IF (cvar(1).NE.' ') ivar=maxval(nvar(:))
77 !
78 !
79  IF (SIZE(hselect)==0) THEN
80 !
81  IF ( (hrec(1:2)/='D_' ) .AND. &
82  (hrec(1:2)/='DX' ) .AND. &
83  (hrec(1:2)/='DY' ) .AND. &
84  (hrec(1:4)/='CLAY' ) .AND. &
85  (hrec(1:4)/='SAND' ) .AND. &
86  (hrec(1:2)/='ZS' ) .AND. &
87  (hrec(1:4)/='SSO_' ) .AND. &
88  (hrec(1:4)/='Q2M_' ) .AND. &
89  (hrec(1:4)/='RESA' ) .AND. &
90  (hrec(1:3)/='RI_' ) .AND. &
91  (hrec(1:5)/='REG_L' ) .AND. &
92  (hrec(1:3)/='AOS' ) .AND. &
93  (hrec(1:3)/='HO2' ) .AND. &
94  (hrec(1:3)/='RGL' ) .AND. &
95  (hrec(1:3)/='SWD' ) .AND. &
96  (hrec(1:3)/='SWU' ) .AND. &
97  (hrec(1:3)/='LWD' ) .AND. &
98  (hrec(1:3)/='LWU' ) .AND. &
99  (hrec(1:3)/='ALB' ) .AND. &
100  (hrec(1:2)/='DG' ) .AND. &
101  (hrec(1:2)/='CV' ) .AND. &
102  (hrec(1:5)/='GAMMA' ) .AND. &
103  (hrec(1:5)/='RSMIN' ) .AND. &
104  (hrec(1:5)/='WRMAX' ) .AND. &
105  (hrec(1:5)/='Z0REL' ) .AND. &
106  (hrec(1:5)/='Z0SEA' ) .AND. &
107  (hrec(1:7)/='Z0WATER' ) .AND. &
108  (hrec(4:6)/='_ZS' ) .AND. &
109  (hrec(1:7)/='VEGTYPE' ) .AND. &
110  (hrec(1:5)/='COVER' ) .AND. &
111  (hrec(1:5)/='IRRIG' ) .AND. &
112  (hrec(1:4)/='TI_R' ) .AND. &
113  (hrec(1:3)/='CD_' ) .AND. &
114  (hrec(1:3)/='CE_' ) .AND. &
115  (hrec(1:3)/='CH_' ) .AND. &
116  (hrec(1:4)/='FMU_' ) .AND. &
117  (hrec(1:4)/='FMV_' ) .AND. &
118  (hrec(1:5)/='DRAIN' ) .AND. &
119  (hrec(1:4)/='EVAP' ) .AND. &
120  (hrec(1:6)/='GFLUXC' ) .AND. &
121  (hrec(1:6)/='GFLUX_' ) .AND. &
122  (hrec(1:6)/='HORTON' ) .AND. &
123  (hrec(1:6)/='RUNOFF' ) .AND. &
124  (hrec(1:6)/='SNMELT' ) .AND. &
125  (hrec(1:6)/='DRIVEG' ) .AND. &
126  (hrec(1:2)/='Z0' ) ) THEN
127 
128  ivar = ivar+1
129  IF (ivar-nunit0>jpvar) THEN
130  CALL abor1_sfx('TOO MANY FIELDS TO BE WRITTEN IN THE "BINARY" TYPE TIMESERIES')
131  END IF
132  cvar(ivar-nunit0) = hrec
133  nvar(ivar-nunit0) = ivar
134  OPEN(unit=ivar,file=trim(hrec)//'.BIN',form='UNFORMATTED',access='DIRECT',recl=ireclen)
135  owfl=.true.
136 
137  ELSE
138  owfl=.false.
139  ENDIF
140 !
141  ELSE
142 !
143  ifield=0
144  DO jfield=1,SIZE(hselect)
145  IF (hselect(jfield)== ' ') EXIT
146  ifield=ifield+1
147  ENDDO
148 
149  !CALL TEST_RECORD_LEN("ASCII ",HREC,HSELECT,LMATCH)
150 
151  !IF (.NOT. LMATCH ) THEN
152 
153  ivar = ivar+1
154  IF (ivar-nunit0>jpvar) THEN
155  CALL abor1_sfx('TOO MANY FIELDS TO BE WRITTEN IN THE "BINARY" TYPE TIMESERIES')
156  END IF
157  cvar(ivar-nunit0) = hrec
158  nvar(ivar-nunit0) = ivar
159  OPEN(unit=ivar,file=trim(hrec)//'.BIN',form='UNFORMATTED',access='DIRECT',recl=ireclen)
160  owfl=.true.
161 
162  !ELSE
163  ! OWFL=.FALSE.
164  !ENDIF
165 
166  ENDIF
167 ENDIF
168 
169 nind=ivar
170 IF (lhook) CALL dr_hook('INIT_WRITE_BIN',1,zhook_handle)
171 !
172 !------------------------------------------------------------------------------
173 !
174 END SUBROUTINE init_write_bin
character(len=12), dimension(jpvar) cvar
subroutine init_write_bin(HSELECT, KDIM_FULL, HREC, KPATCH, OWFL)
integer, parameter jpvar
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, dimension(jpvar) nvar
character(len=6) cmask
integer, dimension(:), pointer nmask