OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_read.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "scr14_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine h3d_read (ikad, key0, kh3d, nslash, h3d_data, sensors)

Function/Subroutine Documentation

◆ h3d_read()

subroutine h3d_read ( integer, dimension(0:*) ikad,
character, dimension(*) key0,
integer kh3d,
integer, dimension(*) nslash,
type (h3d_database) h3d_data,
type (sensors_), intent(inout) sensors )

Definition at line 41 of file h3d_read.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE message_mod
46 USE stack_mod
47 USE h3d_mod
48 USE anim_mod
49 USE sensor_mod
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 INTEGER IKAD(0:*),KH3D,NSLASH(*)
59 CHARACTER KEY0(*)*5
60 TYPE (H3D_DATABASE) :: H3D_DATA
61 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
62C-----------------------------------------------
63C C o m m o n B l o c k s
64C-----------------------------------------------
65#include "units_c.inc"
66#include "scr14_c.inc"
67C-----------------------------------------------
68C E x t e r n a l F u n c t i o n s
69C-----------------------------------------------
70 INTEGER NVAR
71C-----------------------------------------------
72C L o c a l V a r i a b l e s
73C-----------------------------------------------
74 INTEGER I, NBC, L, KCUR, N1, N2, N3, ITYP,IADG, J,NTITLE,IUS,
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
86C
87 my_real x0,y0,z0,vnx,vny,vnz,v0
88C-----------------------------------------------
89C S o u r c e L i n e s
90C-----------------------------------------------=
91 kcur = kh3d
92 nh3d = nslash(kcur)
93c
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
101c
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')
118 CALL arret(0)
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
159c
160c ELSEIF(KEY2=='GENE')THEN
161c CALL CREATE_H3D_GENE(IKAD,KCUR,K,NBC,KEY0,KEY2,KEY3)
162c
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))
169 CALL arret(0)
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))
177 CALL arret(0)
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))
185 CALL arret(0)
186 ENDIF
187C----- TMIN automatically created /w TMAX (/H3D/?/TENS/STRESS/TMAX ;/H3D/NODA/GPS/TMAX
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)
236C---- add /VECT/PEXT
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
269C
270
271 RETURN
272C
273 9990 CONTINUE
274 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,
275 . C1=KEY0(KCUR),C2=LINE(1:35))
276 CALL ARRET(0)
#define my_real
Definition cppsort.cpp:32
subroutine fredec_8key_i(cart, key2, key3, key4, key5, key6, key7, key8, nbc)
integer, parameter ncharline100
integer, parameter ncharkey
integer function nvar(text)
Definition nvar.F:32
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)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87
subroutine wriusc2(irec, nbc, key0)
Definition wriusc2.F:60