OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ig3dinit3.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| ig3dinit3 ../starter/source/elements/ige3d/ig3dinit3.F
25!||--- called by ------------------------------------------------------
26!|| initia ../starter/source/elements/initia/initia.F
27!||--- calls -----------------------------------------------------
28!|| bulkige3 ../starter/source/elements/ige3d/bulkigeo3.F
29!|| dtmain ../starter/source/materials/time_step/dtmain.F
30!|| ig3dmass3 ../starter/source/elements/ige3d/ig3dmass3.f
31!|| ig3donederiv ../starter/source/elements/ige3d/ig3donederiv.F
32!|| matini ../starter/source/materials/mat_share/matini.F
33!|| sczero3 ../starter/source/elements/thickshell/solidec/scinit3.F
34!|| svalue0 ../starter/source/elements/thickshell/solidec/scinit3.F
35!||--- uses -----------------------------------------------------
36!|| detonators_mod ../starter/share/modules1/detonators_mod.F
37!|| message_mod ../starter/share/message_module/message_mod.f
38!||====================================================================
39 SUBROUTINE ig3dinit3(ELBUF_STR,MS ,KXIG3D ,IXIG3D ,PM ,X,
40 . DETONATORS,GEO ,VEUL ,ALE_CONNECTIVITY ,IPARG ,
41 . DTELEM ,SIGI ,NEL ,SKEW ,IGEO ,
42 . STIFN ,PARTSAV ,V ,IPARTIG3D,MSS ,
43 . IPART ,SIGSP ,
44 . NSIGI ,IN ,VR ,IPM ,NSIGS ,
45 . VNIGE ,BNIGE ,PTSOL ,
46 . BUFMAT ,NPF ,TF ,FAIL_INI,NCTRL,
47 . MSIG3D ,KNOT ,NCTRLMAX,WIGE ,PX,PY,PZ,
48 . KNOTLOCPC,KNOTLOCEL)
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE elbufdef_mod
53 USE message_mod
57C-----------------------------------------------
58C I m p l i c i t T y p e s
59C-----------------------------------------------
60#include "implicit_f.inc"
61C-----------------------------------------------
62C G l o b a l P a r a m e t e r s
63C-----------------------------------------------
64#include "mvsiz_p.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "com04_c.inc"
69#include "param_c.inc"
70#include "scr12_c.inc"
71#include "scr17_c.inc"
72#include "scry_c.inc"
73#include "vect01_c.inc"
74#include "ige3d_c.inc"
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C-----------------------------------------------
78 INTEGER IXIG3D(*), IPARG(*),
79 . NEL, IPART(LIPART1,*),
80 . IGEO(NPROPGI,*), IPM(NPROPMI,*), PTSOL(*), NSIGI, NSIGS,
81 . NPF(*),FAIL_INI(*),KXIG3D(NIXIG3D,*),NCTRL,NCTRLMAX,
82 . IPARTIG3D(*),PX,PY,PZ
83 my_real
84 . MS(*), X(3,*), GEO(NPROPG,*),PM(NPROPM,*),
85 . VEUL(LVEUL,*), DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
86 . PARTSAV(20,*), V(3,*), MSS(8,*), KNOTLOCPC(DEG_MAX,3,*),
87 . knotlocel(2,3,*), sigsp(nsigi,*) , in(*), vr(3,*),
88 . vnige(nctrlmax,*), bnige(nctrlmax,*),bufmat(*), tf(*),
89 . msig3d(numelig3d,nctrlmax),knot(*),wige(*)
90 TYPE(elbuf_struct_), TARGET :: ELBUF_STR
91 TYPE(DETONATORS_STRUCT_)::DETONATORS
92 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
93C-----------------------------------------------
94C L o c a l V a r i a b l e s
95C-----------------------------------------------
96 INTEGER I,J,K,N,NF1,IBID,JHBE,IGTYP,IREP,NCC,NUVAR,IP,NREFSTA,
97 . IPID,NPTR,NPTS,NPTT,NLAY,ITEL
98 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
99 . iprop(mvsiz) ,imat(mvsiz) ,iad_knot,
100 . el_id(mvsiz),n1,n2,n3,nknot1,nknot2,nknot3,
101 . idx(mvsiz),idy(mvsiz),idz(mvsiz),
102 . idx2(mvsiz),idy2(mvsiz),idz2(mvsiz)
103 CHARACTER(LEN=NCHARTITLE)::TITR1
104 my_real
105 . bid, fv, v8loc(51,mvsiz), volu(mvsiz), dtx(mvsiz),dtx0(mvsiz),
106 . mass(nctrl,nel),inn(mvsiz,8),xx(nctrl,mvsiz),
107 . yy(nctrl,mvsiz),zz(nctrl,mvsiz),ww(nctrl,mvsiz),
108 . vx(nctrl,mvsiz),vy(nctrl,mvsiz), vz(nctrl,mvsiz),vrx(mvsiz,8),
109 . vry(mvsiz,8),vrz(mvsiz,8),sti(mvsiz),stir(mvsiz),viscm(mvsiz),
110 . viscr(mvsiz),
111 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
112 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
113 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
114 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
115 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
116 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
117 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
118 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
119 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
120 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz),
121 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
122 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
123 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
124 . kx ,ky ,kz, zr, zs, zt
125
126 my_real
127 . volo(mvsiz),dte(mvsiz),pgauss,detjac
128 my_real
129 . r(nctrl),drdxi(3,nctrl),knotlocx(px+1,nctrl,mvsiz),
130 . knotlocy(py+1,nctrl,mvsiz),knotlocz(pz+1,nctrl,mvsiz),
131 . knotlocelx(2,mvsiz),
132 . knotlocely(2,mvsiz),knotlocelz(2,mvsiz)
133 my_real
134 . tbid(mvsiz), tbid2(8,mvsiz) ! SUREMENT A CHANGER LA FORME ET LE NOM
135C-----------------------------------------------
136 TYPE(g_bufel_) ,POINTER :: GBUF
137 TYPE(l_bufel_) ,POINTER :: LBUF
138 TYPE(BUF_MAT_) ,POINTER :: MBUF
139C-----------------------------------------------
140 DOUBLE PRECISION
141 . W_GAUSS(9,9),A_GAUSS(9,9)
142 DATA w_gauss /
143 1 2.d0 ,0.d0 ,0.d0 ,
144 1 0.d0 ,0.d0 ,0.d0 ,
145 1 0.d0 ,0.d0 ,0.d0 ,
146 2 1.d0 ,1.d0 ,0.d0 ,
147 2 0.d0 ,0.d0 ,0.d0 ,
148 2 0.d0 ,0.d0 ,0.d0 ,
149 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
150 3 0.d0 ,0.d0 ,0.d0 ,
151 3 0.d0 ,0.d0 ,0.d0 ,
152 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
153 4 0.347854845137454d0,0.d0 ,0.d0 ,
154 4 0.d0 ,0.d0 ,0.d0 ,
155 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0,
156 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
157 5 0.d0 ,0.d0 ,0.d0 ,
158 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
159 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
160 6 0.d0 ,0.d0 ,0.d0 ,
161 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
162 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
163 7 0.129484966168870d0,0.d0 ,0.d0 ,
164 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
165 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
166 8 0.222381034453374d0,0.101228536290376d0,0.d0 ,
167 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
168 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
169 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
170 DATA a_gauss /
171 1 0.d0 ,0.d0 ,0.d0 ,
172 1 0.d0 ,0.d0 ,0.d0 ,
173 1 0.d0 ,0.d0 ,0.d0 ,
174 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
175 2 0.d0 ,0.d0 ,0.d0 ,
176 2 0.d0 ,0.d0 ,0.d0 ,
177 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
178 3 0.d0 ,0.d0 ,0.d0 ,
179 3 0.d0 ,0.d0 ,0.d0 ,
180 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
181 4 0.861136311594053d0,0.d0 ,0.d0 ,
182 4 0.d0 ,0.d0 ,0.d0 ,
183 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
184 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
185 5 0.d0 ,0.d0 ,0.d0 ,
186 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0,
187 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
188 6 0.d0 ,0.d0 ,0.d0 ,
189 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
190 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
191 7 0.949107912342759d0,0.d0 ,0.d0 ,
192 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
193 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
194 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
195 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
196 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
197 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
198C
199C=======================================================================
200C S o u r c e L i n e s
201C=======================================================================
202C
203 gbuf => elbuf_str%GBUF
204 bid = zero
205 ibid = 0
206 igtyp = iparg(38)
207 mass = zero
208 knotlocx = zero
209 knotlocy = zero
210 knotlocz = zero
211 knotlocelx = zero
212 knotlocely = zero
213 knotlocelz = zero
214 DO i=lft,llt
215 tbid(i)=zero
216 DO j=1,nctrl
217 mass(j,i) = zero
218 ENDDO
219 DO j=1,8
220 tbid2(j,i)=zero
221 ENDDO
222 ENDDO
223C
224 nf1=nft+1
225C-----------------------------------------------
226 DO i=lft,llt
227 DO j=1,nctrl ! IXI ... certainement en dehors de numnod
228 xx(j,i)=x(1,ixig3d(kxig3d(4,i+nft)+j-1))
229 yy(j,i)=x(2,ixig3d(kxig3d(4,i+nft)+j-1))
230 zz(j,i)=x(3,ixig3d(kxig3d(4,i+nft)+j-1))
231 vx(j,i)=v(1,ixig3d(kxig3d(4,i+nft)+j-1))
232 vy(j,i)=v(2,ixig3d(kxig3d(4,i+nft)+j-1))
233 vz(j,i)=v(3,ixig3d(kxig3d(4,i+nft)+j-1))
234 ww(j,i)=1!WIGE(IXIG3D(KXIG3D(4,I+NFT)+J-1))
235 DO k=1,px+1
236 knotlocx(k,j,i)=knotlocpc(k,1,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
237 ENDDO
238 DO k=1,py+1
239 knotlocy(k,j,i)=knotlocpc(k,2,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
240 ENDDO
241 DO k=1,pz+1
242 knotlocz(k,j,i)=knotlocpc(k,3,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
243 ENDDO
244 ENDDO
245 el_id(i)=kxig3d(5,i+nft)
246 idx(i) = kxig3d(6,i+nft)
247 idy(i) = kxig3d(7,i+nft)
248 idz(i) = kxig3d(8,i+nft)
249 idx2(i) = kxig3d(9,i+nft)
250 idy2(i) = kxig3d(10,i+nft)
251 idz2(i) = kxig3d(11,i+nft)
252 knotlocelx(1,i) = knotlocel(1,1,i+nft)
253 knotlocely(1,i) = knotlocel(1,2,i+nft)
254 knotlocelz(1,i) = knotlocel(1,3,i+nft)
255 knotlocelx(2,i) = knotlocel(2,1,i+nft)
256 knotlocely(2,i) = knotlocel(2,2,i+nft)
257 knotlocelz(2,i) = knotlocel(2,3,i+nft)
258 ENDDO
259 ipid = iparg(62)
260 iad_knot = igeo(40,ipid)
261 n1 = igeo(44,ipid)
262 n2 = igeo(45,ipid)
263 n3 = igeo(46,ipid)
264 nknot1 = n1+px
265 nknot2 = n2+py
266 nknot3 = n3+pz
267C-----------------------------------------------
268 DO i=lft,llt
269 iprop(i)=kxig3d(2,i+nft)
270 imat(i) =kxig3d(1,i+nft)
271 ENDDO
272C----------------------------------------
273C INITIALISATION
274C----------------------------------------
275 IF(igtyp == 47) THEN
276
277 DO itel=lft,llt
278 gbuf%VOL(itel)=zero
279 ENDDO
280
281 CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
282
283 n=0
284
285 DO i=1,px
286 DO j=1,py
287 DO k=1,pz
288
289 lbuf => elbuf_str%BUFLY(1)%LBUF(i,j,k)
290 mbuf => elbuf_str%BUFLY(1)%MAT(i,j,k)
291 n=n+1
292
293 DO itel=lft,llt
294
295 lbuf%RHO(itel) = pm(89,imat(itel))
296 zr = a_gauss(i,px)
297 zs = a_gauss(j,py)
298 zt = a_gauss(k,pz)
299 pgauss=w_gauss(i,px)*w_gauss(j,py)*w_gauss(k,pz)
300
301c CALL IG3DDERIV(
302c 1 ITEL ,N ,XX(:,ITEL) ,YY(:,ITEL),
303c 2 ZZ(:,ITEL),WW(:,ITEL) ,IDX(ITEL) ,IDY(ITEL) ,
304c 3 IDZ(ITEL) ,DRDXI ,R ,DETJAC ,
305c 4 NCTRL ,ZR ,ZS ,ZT ,
306c 5 KNOT(IAD_KNOT+1),KNOT(IAD_KNOT+NKNOT1+1),KNOT(IAD_KNOT+NKNOT1+NKNOT2+1),PX-1,
307c 6 PY-1 ,PZ-1 ,1)
308
309 CALL ig3donederiv(
310 1 itel ,n ,xx(:,itel) ,yy(:,itel),
311 2 zz(:,itel),ww(:,itel) ,idx(itel) ,idy(itel) ,
312 3 idz(itel) ,knotlocx(:,:,itel) ,knotlocy(:,:,itel),knotlocz(:,:,itel) ,
313 4 drdxi ,r ,detjac ,nctrl ,
314 5 zr ,zs ,zt ,knot(iad_knot+1),
315 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
316 7 py-1 ,pz-1 ,1 ,
317 8 idx2(itel),idy2(itel) ,idz2(itel) ,
318 9 knotlocelx(:,itel),knotlocely(:,itel),knotlocelz(:,itel))
319
320 lbuf%VOL(itel)= pgauss*detjac
321
322 IF (px*py*pz/=1) THEN
323 gbuf%VOL(itel)=gbuf%VOL(itel) + lbuf%VOL(itel)
324 ENDIF
325
326C----------------------------------------
327C INITIALISATION DES MASSES
328C----------------------------------------
329
330 CALL ig3dmass3(
331 1 lbuf%RHO,ms ,partsav ,xx ,yy ,
332 2 zz ,vx ,vy ,vz ,ipartig3d(nf1),
333 3 msig3d ,lbuf%VOL,tbid ,tbid2 ,bid ,
334 4 bid ,bid ,tbid ,tbid ,tbid ,
335 5 tbid2 ,tbid ,bid ,bid ,nctrl ,
336 6 kxig3d ,ixig3d ,r ,detjac ,pgauss ,
337 7 itel)
338
339 ENDDO
340
341 CALL matini(pm ,ixig3d ,sixig3d ,x ,
342 1 geo ,ale_connectivity ,detonators,iparg ,
343 2 sigi ,nel ,skew ,igeo ,
344 3 ipart ,ipartig3d ,
345 4 imat ,ipm ,nsigs ,numsol ,ptsol ,
346 5 ibid ,ngl ,npf ,tf ,bufmat ,
347 6 gbuf ,lbuf ,mbuf ,elbuf_str,ibid ,
348 7 tbid ,tbid ,tbid )
349
350C------------------------------------------
351C CALCUL DES DT ELEMENTAIRES
352C------------------------------------------
353 CALL dtmain(geo ,pm ,ipm ,iprop ,imat ,fv ,
354 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat,
355 . tbid ,tbid ,tbid ,tbid ,igeo ,igtyp)
356
357 ENDDO
358 ENDDO
359 ENDDO
360
361 IF (px*py*pz/=1) THEN
362
363 DO i=1,px
364 DO j=1,py
365 DO k=1,pz
366
367 lbuf => elbuf_str%BUFLY(1)%LBUF(i,j,k)
368
369 CALL svalue0(
370 1 lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx ,
371 2 gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
372 3 nel )
373
374 ENDDO
375 ENDDO
376 ENDDO
377 ENDIF
378
379C------------------------------------------
380C assemblage des Volumes nodaux et Modules nodaux
381C (pour rigidites d'interface)
382C------------------------------------------
383 IF(i7stifs/=0)THEN
384 CALL bulkige3(gbuf%VOL ,nctrl ,imat ,pm ,
385 2 vnige(1,nf1),bnige(1,nf1),px ,
386 3 py ,pz ,nctrlmax )
387 ENDIF
388
389 ENDIF
390
391C------------------------------------------
392
393 RETURN
394 END
395C
396
subroutine bulkige3(volu, nctrl, mat, pm, vnige, bnige, px, py, pz, nctrlmax)
Definition bulkigeo3.F:31
subroutine dtmain(geo, pm, ipm, pid, mat, fv, eint, temp, deltax, rk, re, bufmat, ddeltax, aire, vol, dtx, igeo, igtyp)
Definition dtmain.F:67
subroutine ig3dinit3(elbuf_str, ms, kxig3d, ixig3d, pm, x, detonators, geo, veul, ale_connectivity, iparg, dtelem, sigi, nel, skew, igeo, stifn, partsav, v, ipartig3d, mss, ipart, sigsp, nsigi, in, vr, ipm, nsigs, vnige, bnige, ptsol, bufmat, npf, tf, fail_ini, nctrl, msig3d, knot, nctrlmax, wige, px, py, pz, knotlocpc, knotlocel)
Definition ig3dinit3.F:49
subroutine ig3dmass3(rho, ms, partsav, x, y, z, vx, vy, vz, ipart, msig3d, volu, msnf, mssf, in, vr, ins, wma, rhocp, mcp, mcps, mssa, rhof, frac, nctrl, kxig3d, ixig3d, r, detjac, pgauss, i)
Definition ig3dmass3.F:37
subroutine matini(pm, ix, nix, x, geo, ale_connectivity, detonators, iparg, sigi, nel, skew, igeo, ipart, ipartel, mat, ipm, nsig, nums, pt, ipt, ngl, npf, tf, bufmat, gbuf, lbuf, mbuf, elbuf_str, iloadp, facload, ddeltax, tempel)
Definition matini.F:81
integer, parameter nchartitle
subroutine sczero3(rhog, sigg, eintg, nel)
Definition scinit3.F:532
subroutine svalue0(rho, vol, off, sig, eint, dtx, rhog, volg, offg, sigg, eintg, dtxg, nel)
Definition scinit3.F:487
subroutine ig3donederiv(itel, n, xxi, yyi, zzi, wwi, idx, idy, idz, knotlocx, knotlocy, knotlocz, drdx, r, detjac, nctrl, gaussx, gaussy, gaussz, kx, ky, kz, px, py, pz, boolg, idx2, idy2, idz2, knotlocelx, knotlocely, knotlocelz)
program starter
Definition starter.F:39