41 SUBROUTINE h3d_read(IKAD,KEY0,KH3D,NSLASH,H3D_DATA,SENSORS)
54#include "implicit_f.inc"
58 INTEGER IKAD(0:*),KH3D,NSLASH(*)
60 TYPE (H3D_DATABASE) :: H3D_DATA
61 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
74 INTEGER I, NBC, L, KCUR, J,
76 CHARACTER TITLE*72, TITLE2*80, LINE*120
77 CHARACTER(LEN=NCHARKEY)::KEY2
78 CHARACTER(LEN=NCHARKEY)::KEY3
79 CHARACTER(LEN=NCHARKEY)::KEY4
80 CHARACTER(LEN=NCHARKEY)::KEY5
81 CHARACTER(LEN=NCHARKEY)::KEY6
82 CHARACTER(LEN=NCHARKEY)::KEY7
83 CHARACTER(LEN=NCHARKEY)::KEY8
84 CHARACTER(LEN=NCHARKEY)::KEYTMP
85 CHARACTER(LEN=NCHARLINE100)::CARTE
95 h3d_data%DTH3D0 = zero
96 h3d_data%TH3D_STOP0 = ep30
97 h3d_data%PERCENTAGE_ERROR = zero
98 h3d_data%COMP_LEVEL = 7
99 h3d_data%N_SENS_H3D = 0
101 h3d_data%NB_H3D_FRAME = 0
102 h3d_data%DTH3D_FCT_ID = 0
106 READ(iusc1,rec=irec,fmt=
'(A)')line
112 CALL wriusc2(irec,1,key0(kcur))
113 READ(iusc2,*,err=310,
END=320)H3D_DATA%TH3D0,H3D_DATA%DTH3D0,H3D_DATA%TH3D_STOP0,H3D_DATA%NB_H3D_FRAME,H3D_DATA%dth3d_fct_id
115 310
READ(iusc2,*,err=320,
END=320)H3D_DATA%th3d0
129 IF (h3d_data%TH3D_STOP0 < zero)
THEN
130 CALL ancmsg(msgid=304,anmode=aninfo,c1=
'H3D',c2=
'H3D')
132 ELSEIF (h3d_data%TH3D_STOP0 == zero)
THEN
133 h3d_data%TH3D_STOP0 = ep20
135 h3d_data%TH3D_STOP0 =
max(h3d_data%TH3D_STOP0,
max(zero,h3d_data%TH3D0))
138 IF (h3d_data%DTH3D0 <= zero.AND.h3d_data%DTH3D_FCT_ID==0.AND.h3d_data%NB_H3D_FRAME==0 )
THEN
139 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'H3D',c2=
'H3D')
143 ELSEIF(key2==
'SENSO')
THEN
144 CALL wriusc2(irec,1,key0(kcur))
145 READ(iusc2,*,err=9990) sensors%ANIM_ID,sensors%ANIM_DT
147 ELSEIF(key2==
'LSENSOR')
THEN
149 READ(iusc1,rec=irec+i-1,fmt=
'(A)',err=9990)carte
150 h3d_data%N_SENS_H3D = h3d_data%N_SENS_H3D +
nvar(carte)
152 ALLOCATE(h3d_data%LSENS_H3D(h3d_data%N_SENS_H3D))
155 READ(iusc1,rec=irec+i-1,fmt=
'(A)',err=9990)carte
156 CALL wriusc2(irec+i-1,1,key0(kcur))
157 READ(iusc2,*,err=9990,
END=9990)
158 . (h3d_data%LSENS_H3D(j+nbsens),j=1,
nvar(carte))
159 nbsens = nbsens +
nvar(carte)
162 ELSEIF(key2==
'COMPRESS')
THEN
163 CALL wriusc2(irec,1,key0(kcur))
164 READ(iusc2,*,err=9990)h3d_data%PERCENTAGE_ERROR
166 ELSEIF(key2==
'LIGHT')
THEN
169 ELSEIF(key2==
'COMP_LEVEL')
THEN
170 CALL wriusc2(irec,1,key0(kcur))
171 READ(iusc2,*,err=9990)h3d_data%COMP_LEVEL
172 ELSEIF(key2==
'TITLE')
THEN
173 h3d_data%N_TITLE = nbc
174 ALLOCATE(h3d_data%ITITLE(nbc))
175 ALLOCATE(h3d_data%TITLE(nbc))
177 READ(iusc1,rec=irec+i-1,fmt=
'(A)',err=9990)carte
178 CALL wriusc2(irec+i-1,1,key0(kcur))
179 READ(iusc2,*,err=9990)h3d_data%ITITLE(i),h3d_data%TITLE(i)
185 ELSEIF(key2==
'RBODY')
THEN
186 IF(key3 ==
'SINGLE_PART')
THEN
187 h3d_data%RBODY_SINGLE = 1
189 CALL ancmsg(msgid=73,anmode=aninfo,
190 . c1=key0(kcur),c2=line(1:35))
193 ELSEIF(key2==
'RBE2')
THEN
194 IF(key3 ==
'SINGLE_PART')
THEN
195 h3d_data%RBE2_SINGLE = 1
197 CALL ancmsg(msgid=73,anmode=aninfo,
198 . c1=key0(kcur),c2=line(1:35))
201 ELSEIF(key2==
'RBE3')
THEN
202 IF(key3 ==
'SINGLE_PART')
THEN
203 h3d_data%RBE3_SINGLE = 1
205 CALL ancmsg(msgid=73,anmode=aninfo,
206 . c1=key0(kcur),c2=line(1:35))
210 ELSEIF(key5==
'TMAX'.AND.(key4==
'STRESS'.OR.key4==
'STRAIN').AND.key2/=
'BEAM')
THEN
211 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
213 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
214 ELSEIF(key4==
'TMAX'.AND.(key3==
'GPS'.OR.key3==
'GPSTRAIN'))
THEN
215 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
217 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
218 ELSEIF(key4==
'TMAX'.AND.key3==
'PCONT2')
THEN
221 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
223 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
225 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
227 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
228 ELSEIF(key2 ==
'ELEM'.AND.(key3==
'THICK' .OR. key3==
'THIN'))
THEN
230 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
232 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
233 ELSEIF(key3 ==
'FAILURE' .OR. key3 ==
'DAMG')
THEN
234 IF (key4 ==
'MEMB') key4 =
'NPT=MEMB'
235 IF (key5 ==
'MEMB') key5 =
'NPT=MEMB'
236 IF (key6 ==
'MEMB') key6 =
'NPT=MEMB'
237 IF (key7 ==
'MEMB') key7 =
'NPT=MEMB'
238 IF (key8 ==
'MEMB') key8 =
'NPT=MEMB'
239 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
240 IF (key5 ==
'MODE=ALL')
THEN
245 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
247 ELSEIF(key2 ==
'ELEM'.AND.(key3==
'VECT' .AND. key4==
'PEXT'))
THEN
249 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
251 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
252 ELSEIF(key3==
'PEXT')
THEN
253 IF(key2 ==
'ELEM')
THEN
255 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
257 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
262 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
264 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
265 ELSEIF(key2 ==
'SHELL'.OR.key2 ==
'SOLID')
THEN
266 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6
269 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
271 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
273 ELSEIF(key2==
'SHELL'.AND.key3==
'TENS'.AND.key4==
'STRESS')
THEN
274 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
275 IF(key5 ==
'NPT=ALL')
THEN
277 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
279 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
280 ELSEIF(key6 ==
'NPT=ALL')
THEN
282 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7
284 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
287 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
296 CALL ancmsg(msgid=73,anmode=aninfo,
297 . c1=key0(kcur),c2=line(1:35))