OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
matini.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!|| matini ../starter/source/materials/mat_share/matini.F
25!||--- called by ------------------------------------------------------
26!|| binit2 ../starter/source/ale/bimat/binit2.F
27!|| ig3dinit3 ../starter/source/elements/ige3d/ig3dinit3.F
28!|| multifluid_init2 ../starter/source/multifluid/multifluid_init2.F
29!|| multifluid_init2t ../starter/source/multifluid/multifluid_init2t.F
30!|| multifluid_init3 ../starter/source/multifluid/multifluid_init3.F
31!|| multifluid_init3t ../starter/source/multifluid/multifluid_init3t.F
32!|| q4init2 ../starter/source/elements/solid_2d/quad4/q4init2.F
33!|| qinit2 ../starter/source/elements/solid_2d/quad/qinit2.F
34!|| s10init3 ../starter/source/elements/solid/solide10/s10init3.F
35!|| s16init3 ../starter/source/elements/thickshell/solide16/s16init3.F
36!|| s20init3 ../starter/source/elements/solid/solide20/s20init3.F
37!|| s4init3 ../starter/source/elements/solid/solide4/s4init3.F
38!|| s6cinit3 ../starter/source/elements/thickshell/solide6c/s6cinit3.f
39!|| s8cinit3 ../starter/source/elements/thickshell/solide8c/s8cinit3.F
40!|| s8zinit3 ../starter/source/elements/solid/solide8z/s8zinit3.F
41!|| scinit3 ../starter/source/elements/thickshell/solidec/scinit3.F
42!|| sinit3 ../starter/source/elements/solid/solide/sinit3.F
43!|| spinit3 ../starter/source/elements/sph/spinit3.F
44!|| suinit3 ../starter/source/elements/elbuf_init/suinit3.F
45!||--- calls -----------------------------------------------------
46!|| agrad2 ../starter/source/ale/ale2d/agrad2.F
47!|| agrad3 ../starter/source/ale/ale3d/agrad3.F
48!|| ancmsg ../starter/source/output/message/message.F
49!|| arret ../starter/source/system/arret.F
50!|| athlen ../starter/source/ale/athlen.F
51!|| fretitl2 ../starter/source/starter/freform.F
52!|| m105init ../starter/source/materials/mat/mat105/m105init.F
53!|| m24in2 ../starter/source/materials/mat/mat024/m24in2.F
54!|| m24in3 ../starter/source/materials/mat/mat024/m24in3.F
55!|| m24insph ../starter/source/elements/sph/m24insph.F
56!|| m37init ../starter/source/materials/mat/mat037/m37init.F
57!|| m38init ../starter/source/materials/mat/mat038/m38init.F
58!|| m51init ../starter/source/materials/mat/mat051/m51init.F
59!|| m5in2 ../starter/source/initial_conditions/detonation/m5in2.F
60!|| m5in3 ../starter/source/initial_conditions/detonation/m5in3.F
61!|| m6in ../starter/source/materials/mat/mat006/m6in.F
62!|| m70init ../starter/source/materials/mat/mat070/m70init.F
63!|| m75init ../starter/source/materials/mat/mat075/m75init.F
64!|| m77init ../starter/source/materials/mat/mat077/m77init.F
65!|| m95init ../starter/source/materials/mat/mat095/m95init.F
66!|| m97init ../starter/source/materials/mat/mat097/m97init.F
67!|| mat11check ../starter/source/materials/mat/mat011/mat11check.F
68!|| mating ../starter/source/materials/mat_share/mating.F
69!||--- uses -----------------------------------------------------
70!|| detonators_mod ../starter/share/modules1/detonators_mod.F
71!|| message_mod ../starter/share/message_module/message_mod.F
72!||====================================================================
73 SUBROUTINE matini(PM ,IX ,NIX ,X ,
74 . GEO ,ALE_CONNECTIVITY ,DETONATORS ,IPARG ,
75 . SIGI ,NEL ,SKEW ,IGEO ,
76 . IPART ,IPARTEL ,
77 . MAT ,IPM ,NSIG ,NUMS ,PT ,
78 . IPT ,NGL ,NPF ,TF ,BUFMAT ,
79 . GBUF ,LBUF ,MBUF ,ELBUF_STR ,ILOADP ,
80 . FACLOAD ,DDELTAX ,TEMPEL )
81C-----------------------------------------------
82C M o d u l e s
83C-----------------------------------------------
84 USE message_mod
85 USE elbufdef_mod
89C-----------------------------------------------
90C I m p l i c i t T y p e s
91C-----------------------------------------------
92#include "implicit_f.inc"
93C-----------------------------------------------
94C G l o b a l P a r a m e t e r s
95C-----------------------------------------------
96#include "mvsiz_p.inc"
97C-----------------------------------------------
98C C o m m o n B l o c k s
99C-----------------------------------------------
100#include "com01_c.inc"
101#include "com04_c.inc"
102#include "param_c.inc"
103#include "scr19_c.inc"
104#include "units_c.inc"
105#include "vect01_c.inc"
106#include "scr17_c.inc"
107C-----------------------------------------------
108C D u m m y A r g u m e n t s
109C-----------------------------------------------
110 INTEGER NIX,NEL,NSIG,NUMS,IPT,JALE_FROM_PROP,JALE_FROM_MAT,JALE_MAX
111 INTEGER IX(NIX,*), IPARG(*),IPART(LIPART1,*),IPARTEL(*),MAT(*),IPM(NPROPMI,*),PT(*), NGL(*),NPF(*)
112 INTEGER,INTENT(IN) :: IGEO(NPROPGI,NUMGEO)
113 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
114 my_real X(*), GEO(*), PM(NPROPM,*),SIGI(NSIG,*),SKEW(LSKEW,*),BUFMAT(*),TF(*)
115 my_real,INTENT(IN) :: FACLOAD(LFACLOAD,*)
116 my_real, INTENT(IN) :: DDELTAX(*)
117 my_real, INTENT(IN) :: tempel(nel)
118 TYPE(g_bufel_), TARGET :: GBUF
119 TYPE(l_bufel_), TARGET :: LBUF
120 TYPE(buf_mat_) :: MBUF
121 TYPE(elbuf_struct_), TARGET :: ELBUF_STR
122 TYPE(detonators_struct_)::DETONATORS
123 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
124 TARGET :: bufmat
125C-----------------------------------------------
126C L o c a l V a r i a b l e s
127C-----------------------------------------------
128 CHARACTER(LEN=NCHARTITLE)::TITR
129 INTEGER I,IADBUF,NPAR,NFUNC,NUVAR,IFORM,NUMEL
130 INTEGER IFUNC(MAXFUNC)
131 INTEGER ID
132 my_real RHO0(MVSIZ)
133 my_real ,DIMENSION(MVSIZ) ,TARGET :: TMP,EPL,FILLO
134 my_real ,DIMENSION(:) ,POINTER ::
135 . off,sig,eint,rho,vol,epsd,deltax,tb,ang,sf,vk,rob,uvar,eplas,fill,dtel,uparam,temp
136C=======================================================================
137 tmp(1:nel)=zero
138 epl(1:nel)=zero
139
140 IF (ipt == 0) THEN
141 off => gbuf%OFF(1:nel)
142 sig => gbuf%SIG(1:nel*6)
143 eint => gbuf%EINT(1:nel)
144 epsd => gbuf%EPSD(1:nel)
145 rho => gbuf%RHO(1:nel)
146 vol => gbuf%VOL(1:nel)
147 IF(SIZE(gbuf%DELTAX)>0) deltax=> gbuf%DELTAX(1:nel)
148 IF(SIZE(gbuf%TB)>0) tb => gbuf%TB(1:nel)
149 dtel => gbuf%DT(1:nel)
150 IF (gbuf%G_TEMP > 0) THEN
151 temp => gbuf%TEMP(1:nel)
152 ELSE
153 temp => tmp(1:nel)
154 ENDIF
155 IF (gbuf%G_PLA > 0) THEN
156 eplas => gbuf%PLA(1:nel)
157 ELSE
158 eplas => epl(1:nel)
159 ENDIF
160 ELSE
161 off => lbuf%OFF(1:nel)
162 sig => lbuf%SIG(1:nel*6)
163 eint => lbuf%EINT(1:nel)
164 epsd => lbuf%EPSD(1:nel)
165 rho => lbuf%RHO(1:nel)
166 vol => lbuf%VOL(1:nel)
167 IF(SIZE(lbuf%DELTAX)>0) deltax=> lbuf%DELTAX(1:nel)
168 IF(SIZE(lbuf%TB)>0) tb => lbuf%TB(1:nel)
169 IF (elbuf_str%BUFLY(1)%L_TEMP > 0) THEN
170 temp => lbuf%TEMP(1:nel)
171 ELSE
172 temp => tmp(1:nel)
173 ENDIF
174 IF (elbuf_str%BUFLY(1)%L_PLA > 0) THEN
175 eplas => lbuf%PLA(1:nel)
176 ELSE
177 eplas => epl(1:nel)
178 ENDIF
179 ENDIF
180
181 IF(jsph==0)THEN
182 fill => gbuf%FILL(1:nel)
183 ELSE
184 fillo(1:nel)=one
185 fill => fillo(1:nel)
186 END IF
187
188 CALL mating(pm ,vol ,off ,eint ,rho ,
189 . sig ,ix ,nix ,sigi ,eplas ,
190 . nsig ,mat ,nums ,pt ,nel ,
191 . fill ,temp ,tempel )
192
193!--------------------
194 IF(jmult <= 1)THEN !reset only once
195 iparg(15)=0 ! FLAG REZONE SIG
196 iparg(16)=0 ! FLAG REZONE EPS PLAST.
197 iparg(63)=0 ! FLAG FOR FLUID MATERIAL
198 iparg(64)=0 ! FLAG FOR NON REFLECTING BOUNDARY
199 ENDIF
200!---------------------------
201 IF (mtn == 1) THEN
202 iparg(15)=1
203 ELSEIF (mtn == 2.OR.mtn == 3.OR.mtn == 4) THEN
204 iparg(15)=1
205 iparg(16)=1
206 ELSEIF (mtn == 5) THEN
207 iparg(16)=1 ! FLAG REZONE EPS PLAST. (BURNING TIME)
208 IF(n2d == 0)THEN
209 CALL m5in3 (pm,mat,0,detonators,tb,iparg,x,ix,nix)
210 ELSE
211 CALL m5in2 (pm,mat,0,detonators,tb,x,ix,nix)
212 ENDIF
213 iparg(63)=1 !Loi fluide
214 ELSEIF (mtn == 6) THEN
215 IF(isgifl > 0) THEN
216 CALL m6in(pm,mat,sig,rho,nel)
217 ENDIF
218 iparg(15)=0
219 iparg(63)=1 !Loi fluide
220 ELSEIF (mtn == 10) THEN
221 iparg(15)=1
222 iparg(16)=1
223 ELSEIF (mtn == 11) THEN
224 iparg(63)=1 !Loi fluide
225 iparg(64)=1 !Loi frontiere
226 IF(n2d == 0)THEN
227 numel=numels
228 ELSE
229 numel=numelq+numeltg
230 ENDIF
231 jale_from_prop = igeo(62,iabs(ix(nix-1,1))) !ALE/EULER from /PROP/TYPE14(SOLID)
232 jale_from_mat = iparg(7)+iparg(11) !ALE/EULER from /ALE/MAT or /EULER/MAT
233 jale_max = max(jale_from_prop, jale_from_mat)
234 id = ipm(1,mat(1))
235 CALL mat11check(pm,nix,ix,ale_connectivity,numel,jale_max,nel,nft,id,nummat,npropm)
236 ELSEIF (mtn == 12) THEN
237 iparg(15)=1
238 iparg(16)=1
239 IF (n2d /= 0)THEN
240 WRITE(iout,'(A)') ' LAW 12 IS NOT AVAILABLE IN 2D ANALYSIS'
241 CALL arret(2)
242 ENDIF
243 ELSEIF (mtn == 14) THEN
244 iparg(15)=1
245 iparg(16)=1
246 IF (n2d /= 0)THEN
247 WRITE(iout,'(A)') ' LAW 14 IS NOT AVAILABLE IN 2D ANALYSIS'
248 CALL arret(2)
249 ENDIF
250 ELSEIF (mtn == 16) THEN
251 iparg(15)=1
252 iparg(16)=1
253 ELSEIF (mtn == 17) THEN
254 IF(isgifl > 0) THEN
255 CALL m6in(pm,mat,sig,rho,nel)
256 ENDIF
257 iparg(15)=0
258 iparg(63)=1 !Loi fluide
259 ELSEIF (mtn == 18) THEN
260 CALL athlen(deltax, ddeltax)
261 IF(jsph == 0)THEN
262 IF(n2d == 0)THEN
263 CALL agrad3(ix,x,ale_connectivity,sig,nel)
264 ELSE
265 CALL agrad2(ix,x,ale_connectivity,sig,nel)
266 ENDIF
267 ENDIF
268 ELSEIF (mtn == 20) THEN
269 IF(iparg(5)/=2)THEN
270 CALL ancmsg(msgid=129,msgtype=msgerror,anmode=aninfo)
271 CALL arret(2)
272 ENDIF
273 ELSEIF (mtn == 21 .OR. mtn == 22 .OR. mtn == 23) THEN
274 iparg(15)=1
275 iparg(16)=1
276 ELSEIF (mtn == 24) THEN
277 iparg(15)=1
278 iparg(16)=1
279 ang => lbuf%ANG(1:nel*6)
280 sf => lbuf%SF(1:nel*3)
281 vk => lbuf%VK(1:nel)
282 rob => lbuf%ROB(1:nel)
283 IF (jsph == 0) THEN
284 IF (n2d == 0) THEN
285 CALL m24in3(pm ,ix ,ang ,sf ,vk ,rob, nel)
286 ELSE
287 CALL m24in2(pm ,ix ,ang ,sf ,vk ,rob, nel)
288 ENDIF
289 ELSE
290 CALL m24insph(pm ,ang ,sf ,vk ,rob ,
291 . ipart ,ipartel ,nel )
292 ENDIF
293 ELSEIF (mtn == 26) THEN
294 iparg(15)=1
295 iparg(16)=1
296 ELSEIF (mtn == 46.OR.mtn == 47) THEN
297 iparg(63)=1 !Loi fluide
298 ELSEIF (mtn == 49) THEN
299 iparg(15)=1
300 iparg(16)=1
301 ELSEIF (mtn >= 28) THEN
302! User-type laws
303 IF(mtn /= 67)THEN
304 iparg(15)=1
305 iparg(16)=1
306 END IF
307
308 nuvar = ipm(8,mat(1))
309 npar = ipm(9,mat(1))
310 iadbuf = ipm(7,mat(1))
311 iadbuf = max(1,iadbuf)
312 uparam => bufmat(iadbuf:iadbuf+npar)
313
314 DO i=lft,llt
315 rho0(i)= pm( 1,mat(i))
316 END DO
317 ! law36
318 nfunc = ipm(10,mat(1))
319 DO i=1,nfunc
320 ifunc(i) = ipm(10+i,mat(1))
321 ENDDO
322
323 IF (mtn == 37) THEN
324 iparg(63) = 1 !Loi fluide
325 CALL m37init(ipm ,pm ,
326 . ngl ,nuvar ,mbuf%VAR ,uparam ,x ,
327 . mat ,iparg ,iform ,ix ,nix ,
328 . iloadp ,facload ,gbuf ,nel)
329 ELSEIF (mtn == 38) THEN
330 CALL m38init(
331 1 nel ,npar ,nuvar ,nfunc ,ifunc ,
332 2 npf ,tf ,bufmat(iadbuf),rho0 ,vol ,
333 3 eint ,mbuf%VAR )
334 ELSEIF (mtn == 51) THEN
335 CALL m51init(ipm ,detonators ,pm ,tb ,
336 . nuvar ,mbuf%VAR ,uparam ,x ,
337 . mat ,iparg ,iform ,ix ,nix ,
338 . ale_connectivity ,bufmat ,rho0 ,
339 . gbuf ,nel ,sig)
340 ELSEIF (mtn == 70) THEN
341 CALL m70init(nel ,npar ,nuvar ,uparam ,mbuf%VAR)
342
343 ELSEIF (mtn == 75) THEN
344 id=ipm(1,mat(1))
345 CALL fretitl2(titr,ipm(npropmi-ltitr+1,mat(1)),ltitr)
346 CALL m75init(
347 1 nel ,npar ,nuvar ,nfunc ,ifunc ,
348 2 npf ,tf ,uparam ,rho0 ,vol ,
349 3 eint ,mbuf%VAR,pm ,id ,titr )
350 ELSEIF (mtn == 77) THEN
351 CALL m77init(
352 1 nel ,npar ,nuvar ,nfunc ,ifunc ,
353 2 npf ,tf ,uparam ,rho0 ,vol ,
354 3 eint ,mbuf%VAR)
355
356 ELSEIF (mtn == 95) THEN
357 CALL m95init(nel ,nuvar ,mbuf%VAR)
358 ELSEIF (mtn == 97)THEN
359 iparg(16)=1 ! FLAG REZONE (BURNING TIME same index for EPS PLAST.)
360 iparg(63)=1 ! FLAG FOR FLUID MATERIAL
361 CALL m97init(
362 . ipm ,detonators,pm ,
363 . nuvar ,mbuf%VAR ,bufmat(iadbuf) ,x ,
364 . mat ,iparg ,iform ,ix ,nix ,
365 . bufmat ,rho0 ,tb)
366 ELSEIF (mtn == 102) THEN
367 iparg(15)=1
368 iparg(16)=1
369 ELSEIF (mtn == 105)THEN
370 iparg(16)=1 ! FLAG REZONE (BURNING TIME same index for EPS PLAST.)
371 iparg(63)=1 ! FLAG FOR FLUID MATERIAL
372 CALL m105init(
373 . ipm ,detonators,pm ,
374 . nuvar ,mbuf%VAR ,bufmat(iadbuf) ,x ,
375 . mat ,iparg ,iform ,ix ,nix ,
376 . bufmat ,rho0 ,tb)
377
378 ENDIF
379 ENDIF
380
381 !must be set, once m51init() was called
382 IF(elbuf_str%BUFLY(1)%L_SSP /= 0)THEN
383 DO i=1,nel
384 lbuf%SSP(i)=pm(27,mat(i))
385 ENDDO
386 ENDIF
387
388C------------
389 RETURN
390 END
subroutine athlen(delt, deltax)
Definition athlen.F:29
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
Definition dtel.F:46
subroutine m105init(ipm, detonators, pm, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, bufmat, rho0, tb)
Definition m105init.F:38
subroutine m24in2(pm, ix, ang, sf, vk0, rob, nel)
Definition m24in2.F:30
subroutine m24in3(pm, ix, ang, sf, vk0, rob, nel)
Definition m24in3.F:30
subroutine m24insph(pm, ang, sf, vk0, rob, ipart, ipartsp, nel)
Definition m24insph.F:31
subroutine m37init(ipm, pm, ngl, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, iloadp, facload, gbuf, nel)
Definition m37init.F:34
subroutine m38init(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, uparam, rho0, volume, eint, uvar)
Definition m38init.F:34
subroutine m51init(ipm, detonators, pm, tb, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, ale_connectivity, bufmat, rho0, gbuf, nel, sig)
Definition m51init.F:40
subroutine m5in2(pm, mat, m151_id, detonators, tb, x, ix, nix)
Definition m5in2.F:40
subroutine m5in3(pm, mat, m151_id, detonators, tb, iparg, x, ix, nix)
Definition m5in3.F:39
subroutine m6in(pm, mat, sig, rho, nel)
Definition m6in.F:29
subroutine m70init(nel, nuparam, nuvar, uparam, uvar)
Definition m70init.F:30
subroutine m75init(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, uparam, rho0, volume, eint, uvar, pm, id, titr)
Definition m75init.F:37
subroutine m77init(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, uparam, rho0, volume, eint, uvar)
Definition m77init.F:33
subroutine m95init(nel, nuvar, uvar)
Definition m95init.F:29
subroutine m97init(ipm, detonators, pm, nuvar, uvar, uparam, x, mat, iparg, iform, ix, nix, bufmat, rho0, tb)
Definition m97init.F:38
#define max(a, b)
Definition macros.h:21
subroutine mat11check(pm, nix, ix, ale_connectivity, numel, jale_from_prop, nel, nft, mat_id, nummat, npropm)
Definition mat11check.F:33
subroutine mating(pm, vol, off, eint, rho, sig, ix, nix, sigi, epsp, nsig, mat, nums, pt, nel, fill, temp, tempel)
Definition mating.F:32
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 s6cinit3(elbuf_str, mas, ixs, pm, x, detonators, geo, veul, ale_connectivity, iparg, dtelem, sigi, nel, skew, igeo, stifn, partsav, v, iparts, mss, ipart, glob_therm, sigsp, nsigi, ipm, iuser, nsigs, volnod, bvolnod, vns, bns, ptsol, bufmat, mcp, mcps, mcpsx, temp, npf, tf, strsglob, straglob, mssa, orthoglob, fail_ini, iloadp, facload, rnoise, perturb, mat_param, defaults_solid)
Definition s6cinit3.F:60
subroutine agrad2(ixq, x, ale_connectivity, grad, nel)
Definition agrad2.F:30
subroutine agrad3(ixs, x, ale_connectivity, grad, nel)
Definition agrad3.F:30
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 fretitl2(titr, iasc, l)
Definition freform.F:804
subroutine arret(nn)
Definition arret.F:87
program starter
Definition starter.F:39