42
43
44
49 USE sensor_mod
51
52
53
54#include "implicit_f.inc"
55
56
57
58 INTEGER IKAD(0:*),KH3D,NSLASH(*)
59 CHARACTER KEY0(*)*5
60 TYPE (H3D_DATABASE) :: H3D_DATA
61 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
62
63
64
65#include "units_c.inc"
66#include "scr14_c.inc"
67
68
69
70 INTEGER NVAR
71
72
73
74 INTEGER I, NBC, L, KCUR, N1, N2, N3, ITYP,IADG, J,NTITLE,,
75 . NH3D,IREC,NBSENS
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
86
88
89
90
91 kcur = kh3d
92 nh3d = nslash(kcur)
93
94 h3d_data%TH3D0 = zero
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
100 h3d_data%LIGHT = 0
101
102 irec = ikad(kcur)
103 DO l=1,nh3d
104 READ(iusc1,rec=irec,fmt='(A)')line
105 CALL fredec_8key_i(line,key2,key3,key4,key5,key6,key7,key8,nbc)
106
107 irec=irec+1
108 IF(key2=='DT ')THEN
109 h3d_data%TH3D = zero
110 CALL wriusc2(irec,1,key0(kcur))
111 READ(iusc2,*,err=310,END=320)H3D_DATA%TH3D0,H3D_DATA%DTH3D0,H3D_DATA%th3d_stop0
112 GOTO 320
113 310 READ(iusc2,*,err=320,END=320)H3D_DATA%th3d0
114 320 CONTINUE
115
116 IF (h3d_data%DTH3D0 <= zero) THEN
117 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'H3D',c2=
'H3D')
119 ENDIF
120
121 ELSEIF(key2=='SENSO')THEN
122 CALL wriusc2(irec,1,key0(kcur))
123 READ(iusc2,*,err=9990) sensors%ANIM_ID,sensors%ANIM_DT
124
125 ELSEIF(key2=='LSENSOR')THEN
126 DO i=1,nbc
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)
129 ENDDO
130 ALLOCATE(h3d_data%LSENS_H3D(h3d_data%N_SENS_H3D))
131 nbsens = 0
132 DO i=1,nbc
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)
138 ENDDO
139
140 ELSEIF(key2=='COMPRESS')THEN
141 CALL wriusc2(irec,1,key0(kcur))
142 READ(iusc2,*,err=9990)h3d_data%PERCENTAGE_ERROR
143
144 ELSEIF(key2=='LIGHT') THEN
145 h3d_data%LIGHT = 1
146
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))
154 DO i=1,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)
158 ENDDO
159
160
161
162
163 ELSEIF(key2=='RBODY')THEN
164 IF(key3 == 'SINGLE_PART') THEN
165 h3d_data%RBODY_SINGLE = 1
166 ELSE
167 CALL ancmsg(msgid=73,anmode=aninfo,
168 . c1=key0(kcur),c2=line(1:35))
170 ENDIF
171 ELSEIF(key2=='RBE2')THEN
172 IF(key3 == 'SINGLE_PART') THEN
173 h3d_data%RBE2_SINGLE = 1
174 ELSE
175 CALL ancmsg(msgid=73,anmode=aninfo,
176 . c1=key0(kcur),c2=line(1:35))
178 ENDIF
179 ELSEIF(key2=='RBE3')THEN
180 IF(key3 == 'SINGLE_PART') THEN
181 h3d_data%RBE3_SINGLE = 1
182 ELSE
183 CALL ancmsg(msgid=73,anmode=aninfo,
184 . c1=key0(kcur),c2=line(1:35))
186 ENDIF
187
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)
190 KEY5 = 'tmin'
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)
194 KEY4 = 'tmin'
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
197 KEY3 = 'maxpcont2'
198 KEY4 = 'normal'
199 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
200 KEY4 = 'tangent'
201 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
202 KEY3 = 'minpcont2'
203 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
204 KEY4 = 'normal'
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
207 KEYTMP = 'solid'
208 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEYTMP,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
209 KEYTMP = 'shell'
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
219 KEY5 = KEY6
220 KEY6 = KEY7
221 KEY7 = KEY8
222 KEY8 = ''
223 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
224 ENDIF
225 ELSEIF(KEY2 == 'elem.AND.'(KEY3=='vect.AND.' KEY4=='pext')) THEN
226 KEYTMP = 'solid'
227 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEYTMP,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
228 KEYTMP = 'shell'
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
232 KEYTMP = 'solid'
233 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEYTMP,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
234 KEYTMP = 'shell'
235 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEYTMP,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
236
237 KEY3 = 'vect'
238 KEY4 = 'pext'
239 KEYTMP = 'solid'
240 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEYTMP,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
241 KEYTMP = 'shell'
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)
245 KEY3 = 'vect'
246 KEY4 = 'pext'
247 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
248 ELSE
249 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
250 END IF
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
254 KEY5 = 'npt=lower'
255 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
256 KEY5 = 'npt=upper'
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
259 KEY6 = 'npt=lower'
260 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
261 KEY6 = 'npt=upper'
262 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
263 END IF
264 ELSE
265 CALL CREATE_H3D_INPUT(H3D_DATA,IKAD,KCUR,IREC,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
266 ENDIF
267 IREC=IREC+NBC
268 ENDDO
269
270
271 RETURN
272
273 9990 CONTINUE
274 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
275 . C1=KEY0(KCUR),C2=LINE(1:35))
276 CALL ARRET(0)
subroutine fredec_8key_i(cart, key2, key3, key4, key5, key6, key7, key8, nbc)
integer, parameter ncharline100
integer, parameter ncharkey
integer function nvar(text)
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)
subroutine wriusc2(irec, nbc, key0)