40 SUBROUTINE frestat(IKAD,KEY0,KSTATF,SENSORS,OUTPUT)
52#include "implicit_f.inc"
59 TYPE (SENSORS_),
INTENT(INOUT) :: SENSORS
60 TYPE(output_),
INTENT(INOUT) :: OUTPUT
75 INTEGER I, NBC, K, IKEY, IV2(10), J
76 CHARACTER(LEN=NCHARKEY)::KEY2
77 CHARACTER(LEN=NCHARKEY)::KEY3
78 CHARACTER(LEN=NCHARKEY)::KEY4
79 CHARACTER(LEN=NCHARKEY)::KEY5
80 CHARACTER(LEN=NCHARKEY)::KEY6
81 CHARACTER(LEN=NCHARKEY)::KEY7
82 CHARACTER(LEN=NCHARKEY)::KEY8
83 CHARACTER(LEN=NCHARLINE100)::CARTE
84 CHARACTER(LEN=LINE120) :: LINE
85 LOGICAL BOOL,IS_STAT_LSENS
92 CALL state_init(output%STATE,mx_stat)
96 is_stat_shell = .false.
97 is_stat_brick = .false.
98 is_stat_spring = .false.
99 is_stat_beam = .false.
100 is_stat_truss = .false.
101 is_stat_inimap1d = .false.
102 is_stat_inimap2d = .false.
103 is_stat_strf = .false.
104 is_stat_node = .false.
105 is_stat_lsens = .false.
106 is_stat_no_de = .false.
133 IF (ikad(ikey) /= ikad(ikey+1))
THEN
135 1175
READ(iusc1,rec=ikad(ikey)+k,fmt=
'(A)')line
136 CALL fredec_8key_i(line,key2,key3,key4,key5,key6,key7,key8,nbc)
139 IF (key2(1:5) ==
'DT ')
THEN
141 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
142 READ(iusc2,*)tstat0,dtstat0
144 IF (key3(1:3) ==
'ALL')
THEN
148 CALL ancmsg(msgid=73,anmode=aninfo,
149 . c1=key0(ikey),c2=line(1:35))
154 READ(iusc1,rec=ikad(ikey)+k,fmt=
'(A)',err=9990)carte
155 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
157 READ(iusc2,*,err=9990,
END=9990)(IV2(J),J=1,NVAR(CARTE))
159 WRITE(iin,
'(I10)')iv2(j)
163 IF(nstatprt == 0)
THEN
164 CALL ancmsg(msgid=289,anmode=aninfo)
168 ELSEIF (key2(1:5) ==
'STR_F')
THEN
169 is_stat_strf = .true.
170 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
171 READ(iusc2,*,err=9990,
END=9990)izipstrs
172 izipstrs = izipstrs + 1
174 IF (key2(1:4) ==
'NODE')
THEN
175 is_stat_node = .true.
176 IF (key3(1:4) ==
'TEMP')
THEN
178 ELSEIF (key3(1:3) ==
'BCS')
THEN
180 ELSEIF (key3(1:3) ==
'VEL')
THEN
185 ELSEIF (key2(1:5) ==
'SHELL')
THEN
186 is_stat_shell = .true.
189 ELSEIF (key3(1:5) ==
'THICK')
THEN
191 ELSEIF (key3(1:5) ==
'EPSP ')
THEN
192 IF (key4(1:5) ==
'FULL ')
THEN
197 ELSEIF (key3(1:5) ==
'STRES')
THEN
198 IF (key4(1:5) ==
'FULL ')
THEN
200 ELSEIF (key4(1:5) ==
'GLOBF')
THEN
205 ELSEIF (key3(1:5) ==
'STRAI')
THEN
206 IF (key4(1:5) ==
'FULL ')
THEN
208 ELSEIF (key4(1:5) ==
'GLOBF')
THEN
213 ELSEIF (key3(1:3) ==
'AUX')
THEN
214 IF (key4(1:5) ==
'FULL ')
THEN
219 ELSEIF (key3(1:5) ==
'ORTHL')
THEN
221 ELSEIF (key3(1:4) ==
'FAIL')
THEN
226 ELSEIF (key2(1:5) ==
'BRICK')
THEN
227 is_stat_brick = .true.
228 IF (key3(1:5) ==
'STRES')
THEN
229 IF (key4(1:5) ==
'FULL ')
THEN
231 ELSEIF (key4(1:5) ==
'GLOBF')
THEN
236 ELSEIF (key3(1:5) ==
'STRAI')
THEN
237 IF (key4(1:5) ==
'FULL ')
THEN
239 ELSEIF (key4(1:5) ==
'GLOBF')
THEN
244 ELSEIF (key3(1:3) ==
'AUX')
THEN
245 IF (key4(1:5) ==
'FULL ')
THEN
250 ELSEIF (key3(1:5) ==
'ORTHO')
THEN
251 IF (key4(1:5) ==
'GLOBF ')
THEN
256 ELSEIF (key3(1:4) ==
'FAIL')
THEN
258 ELSEIF (key3(1:4) ==
'EREF')
THEN
263 ELSEIF (key2(1:6) ==
'SPHCEL')
THEN
264 output%STATE%IS_STAT_SPH = .true.
265 IF (key3(1:4) ==
'FULL')
THEN
266 output%STATE%STAT_SPH(3) = 1
268 CALL ancmsg(msgid=73,anmode=aninfo,
269 . c1=key0(ikey),c2=line(1:35))
271 ELSEIF (key2(1:5) ==
'LSENS')
THEN
272 is_stat_lsens = .true.
274 READ(iusc1
'(A)',err=9990)carte
275 CALL wriusc2(ikad(ikey)+k,1,key0(ikey))
277 READ(iusc2,*,err=9990,
END=9990)
278 . (sensors%STAT_TMP(j),j=1,
nvar(carte))
279 sensors%NSTAT = sensors%NSTAT +
nvar(carte)
281 ELSEIF (key2(1:5) ==
'NO_DE')
THEN
282 is_stat_no_de = .true.
288 output%STATE%STAT_SPH(2) = 1
289 ELSEIF (key2(1:5) ==
'SPRIN')
THEN
290 is_stat_spring = .true.
291 IF (key3(1:4) ==
'FULL')
THEN
296 ELSEIF (key2(1:4) ==
'BEAM')
THEN
297 is_stat_beam = .true.
298 IF (key3(1:4) ==
'FULL')
THEN
300 ELSEIF (key3(1:3) ==
'AUX')
THEN
305 ELSEIF (key2(1:5) ==
'TRUSS')
THEN
306 is_stat_truss = .true.
307 IF (key3(1:4) ==
'FULL')
THEN
312 ELSEIF (key2(1:8) ==
'INIMAP1D')
THEN
313 is_stat_inimap1d=.true.
314 state_inimap_call_number = 0
316 IF(key3(1:5) ==
'FILE ')
THEN
318 is_stat_inimap_file = .true.
319 ELSEIF(key3(1:2) == 'vp
')THEN
320 IS_STAT_INIMAP_VP = .TRUE.
321 ELSEIF(KEY3(1:2) == 've
')THEN
322 IS_STAT_INIMAP_VE = .TRUE.
324 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,C1=KEY0(IKEY),C2=LINE(1:35))
327 ELSEIF (KEY2(1:8) == 'inimap2d
') THEN
328 IS_STAT_INIMAP2D=.TRUE.
329 STATE_INIMAP_CALL_NUMBER = 0
331 IF(KEY3(1:5) == 'file
')THEN
333 IS_STAT_INIMAP_FILE = .TRUE.
334 ELSEIF(KEY3(1:2) == 'vp
')THEN
335 IS_STAT_INIMAP_VP = .TRUE.
336 ELSEIF(KEY3(1:2) == 've
')THEN
337 IS_STAT_INIMAP_VE = .TRUE.
339 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,C1=KEY0(IKEY),C2=LINE(1:35))
345 IF (IKAD(IKEY)+K /= IKAD(IKEY+1)) GOTO 1175
348 IF(IS_STAT_SHELL)BOOL=.TRUE.
349 IF(IS_STAT_BRICK)BOOL=.TRUE.
350 IF(IS_STAT_SPRING)BOOL=.TRUE.
351 IF(IS_STAT_BEAM)BOOL=.TRUE.
352 IF(IS_STAT_TRUSS)BOOL=.TRUE.
353 IF(IS_STAT_STRF)BOOL=.TRUE.
354 IF(IS_STAT_NODE)BOOL=.TRUE.
355 IF(IS_STAT_LSENS)BOOL=.TRUE.
356 IF(IS_STAT_NO_DE)BOOL=.TRUE.
357 IF(OUTPUT%STATE%IS_STAT_SPH)BOOL=.TRUE.
359 !do not export STATE FILE IF /STATE/INIMAP IS USED AS A SINGLE /STATE OPTION
360.AND..OR.
IF(BOOL (IS_STAT_INIMAP2D IS_STAT_INIMAP1D))THEN
361 ! /STATE/INIMAP used with another /STATE/ option (SHELL,BRICK,..)
362 ! state file must be written
363 IS_STAT_INIMAP_SINGLE=.FALSE.
364.AND..NOT..AND..NOT.
ELSEIF(IS_STAT_DT IS_STAT_INIMAP2D IS_STAT_INIMAP1D)THEN
365 ! /STATE/INIMAP not used but STATE/DT requires also to output .sta file
366 IS_STAT_INIMAP_SINGLE=.FALSE.
369 ENDIF ! IF (IKAD(IKEY) /= IKAD(IKEY+1))
373 NC_STAT = NC_STAT + STAT_C(I)
379 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
380 . C1=KEY0(IKEY),C2=LINE(1:35))
subroutine fredec_8key_i(cart, key2, key3, key4, key5, key6, key7, key8, nbc)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)