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, N1, N2, N3, ITYP,IADG, J,NTITLE,IUS,
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
104 READ(iusc1,rec=irec,fmt=
'(A)')line
105 CALL fredec_8key_i(line,key2,key3,key4,key5,key6,key7,key8,nbc)
110 CALL wriusc2(irec,1,key0(kcur))
111 READ(iusc2,*,err=310,
END=320)H3D_DATA%TH3D0,H3D_DATA%DTH3D0,H3D_DATA%th3d_stop0
113 310
READ(iusc2,*,err=320,
END=320)H3D_DATA%th3d0
116 IF (h3d_data%DTH3D0 <= zero)
THEN
117 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'H3D',c2=
'H3D')
121 ELSEIF(key2==
'SENSO')
THEN
122 CALL wriusc2(irec,1,key0(kcur))
123 READ(iusc2,*,err=9990) sensors%ANIM_ID,sensors%ANIM_DT
125 ELSEIF(key2==
'LSENSOR')
THEN
127 READ(iusc1,rec=irec+i-1,fmt=
'(A)',err=9990)carte
128 h3d_data%N_SENS_H3D = h3d_data%N_SENS_H3D +
nvar(carte)
130 ALLOCATE(h3d_data%LSENS_H3D(h3d_data%N_SENS_H3D))
133 READ(iusc1,rec=irec+i-1,fmt='(a)
',ERR=9990)CARTE
134 CALL WRIUSC2(IREC+I-1,1,KEY0(KCUR))
135 READ(IUSC2,*,ERR=9990,END=9990)
136 . (H3D_DATA%LSENS_H3D(J+NBSENS),J=1,NVAR(CARTE))
137 NBSENS = NBSENS + NVAR(CARTE)
140 ELSEIF(KEY2=='compress
')THEN
141 CALL WRIUSC2(IREC,1,KEY0(KCUR))
142 READ(IUSC2,*,ERR=9990)H3D_DATA%PERCENTAGE_ERROR
144 ELSEIF(KEY2=='light
') THEN
147 ELSEIF(KEY2=='comp_level
')THEN
148 CALL WRIUSC2(IREC,1,KEY0(KCUR))
149 READ(IUSC2,*,ERR=9990)H3D_DATA%COMP_LEVEL
150 ELSEIF(KEY2=='title
')THEN
151 H3D_DATA%N_TITLE = NBC
152 ALLOCATE(H3D_DATA%ITITLE(NBC))
153 ALLOCATE(H3D_DATA%TITLE(NBC))
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)H3D_DATA%ITITLE(I),H3D_DATA%TITLE(I)
163 ELSEIF(KEY2=='rbody
')THEN
164 IF(KEY3 == 'single_part
') THEN
165 H3D_DATA%RBODY_SINGLE = 1
167 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
168 . C1=KEY0(KCUR),C2=LINE(1:35))
171 ELSEIF(KEY2=='rbe2
')THEN
172 IF(KEY3 == 'single_part
') THEN
173 H3D_DATA%RBE2_SINGLE = 1
175 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
176 . C1=KEY0(KCUR),C2=LINE(1:35))
179 ELSEIF(KEY2=='rbe3
')THEN
180 IF(KEY3 == 'single_part
') THEN
181 H3D_DATA%RBE3_SINGLE = 1
183 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
184 . C1=KEY0(KCUR),C2=LINE(1:35))
188 ELSEIF(KEY5=='tmax.AND.
'(KEY4=='stress.OR.
'KEY4=='strain.AND.
')KEY2/='beam
')THEN
189 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
191 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
192 ELSEIF(KEY4=='tmax.AND.
'(KEY3=='gps.OR.
'KEY3=='gpstrain
'))THEN
193 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
195 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
196 ELSEIF(KEY4=='tmax'.AND.key3==
'PCONT2')
THEN
199 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
201 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
203 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
205 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
206 ELSEIF(key2 ==
'ELEM'.AND.(key3==
'THICK' .OR. key3==
'THIN'))
THEN
208 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
210 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
211 ELSEIF(key3 ==
'FAILURE' .OR. key3 ==
'DAMG')
THEN
212 IF (key4 ==
'MEMB') key4 =
'NPT=MEMB'
213 IF (key5 ==
'MEMB') key5 =
'NPT=MEMB'
214 IF (key6 ==
'MEMB') key6 =
'NPT=MEMB'
215 IF (key7 ==
'MEMB') key7 =
'NPT=MEMB'
216 IF (key8 ==
'MEMB') key8 =
'NPT=MEMB'
217 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
218 IF (key5 ==
'MODE=ALL')
THEN
223 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
225 ELSEIF(key2 ==
'ELEM'.AND.(key3==
'VECT' .AND. key4==
'PEXT'))
THEN
227 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
229 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
230 ELSEIF(key3==
'PEXT')
THEN
231 IF(key2 ==
'ELEM')
THEN
233 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
235 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
240 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
242 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,keytmp,key3,key4,key5,key6,key7,key8)
243 ELSEIF(key2 ==
'SHELL'.OR.key2 ==
'SOLID')
THEN
244 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
247 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
249 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
251 ELSEIF(key2==
'SHELL'.AND.key3==
'TENS'.AND.key4==
'STRESS')
THEN
252 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
253 IF(key5 ==
'NPT=ALL')
THEN
255 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
257 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
258 ELSEIF(key6 ==
'NPT=ALL')
THEN
260 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
262 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
265 CALL create_h3d_input(h3d_data,ikad,kcur,irec,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
274 CALL ancmsg(msgid=73,anmode=aninfo,
275 . c1=key0(kcur),c2=line(1:35))
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)