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!|| s6zinit3 ../starter/source/elements/solid/solide6z/s6zinit3.F90
40!|| s8cinit3 ../starter/source/elements/thickshell/solide8c/s8cinit3.F
41!|| s8zinit3 ../starter/source/elements/solid/solide8z/s8zinit3.F
42!|| scinit3 ../starter/source/elements/thickshell/solidec/scinit3.F
43!|| sinit3 ../starter/source/elements/solid/solide/sinit3.f
44!|| spinit3 ../starter/source/elements/sph/spinit3.F
45!|| suinit3 ../starter/source/elements/elbuf_init/suinit3.F
46!||--- calls -----------------------------------------------------
47!|| agrad2 ../starter/source/ale/ale2d/agrad2.F
48!|| agrad3 ../starter/source/ale/ale3d/agrad3.F
49!|| ancmsg ../starter/source/output/message/message.F
50!|| arret ../starter/source/system/arret.F
51!|| athlen ../starter/source/ale/athlen.f
52!|| fretitl2 ../starter/source/starter/freform.F
53!|| m105init ../starter/source/materials/mat/mat105/m105init.f
54!|| m24in2 ../starter/source/materials/mat/mat024/m24in2.F
55!|| m24in3 ../starter/source/materials/mat/mat024/m24in3.F
56!|| m24insph ../starter/source/elements/sph/m24insph.F
57!|| m36init ../starter/source/materials/mat/mat036/m36init.F90
58!|| m37init ../starter/source/materials/mat/mat037/m37init.F
59!|| m38init ../starter/source/materials/mat/mat038/m38init.F
60!|| m51init ../starter/source/materials/mat/mat051/m51init.F
61!|| m5in2 ../starter/source/initial_conditions/detonation/m5in2.f
62!|| m5in3 ../starter/source/initial_conditions/detonation/m5in3.F
63!|| m70init ../starter/source/materials/mat/mat070/m70init.F
64!|| m75init ../starter/source/materials/mat/mat075/m75init.F
65!|| m77init ../starter/source/materials/mat/mat077/m77init.F
66!|| m95init ../starter/source/materials/mat/mat095/m95init.F
67!|| m97init ../starter/source/materials/mat/mat097/m97init.F
68!|| mat11check ../starter/source/materials/mat/mat011/mat11check.F
69!|| mating ../starter/source/materials/mat_share/mating.F
70!||--- uses -----------------------------------------------------
71!|| detonators_mod ../starter/share/modules1/detonators_mod.F
72!|| m36init_mod ../starter/source/materials/mat/mat036/m36init.F90
73!|| message_mod ../starter/share/message_module/message_mod.F
74!||====================================================================
75 SUBROUTINE matini(PM ,IX ,NIX ,X ,
76 . GEO ,ALE_CONNECTIVITY ,DETONATORS ,IPARG ,
77 . SIGI ,NEL ,SKEW ,IGEO ,
78 . IPART ,IPARTEL ,
79 . MAT ,IPM ,NSIG ,NUMS ,PT ,
80 . IPT ,NGL ,NPF ,TF ,BUFMAT ,
81 . GBUF ,LBUF ,MBUF ,ELBUF_STR ,ILOADP ,
82 . FACLOAD ,DDELTAX ,TEMPEL ,MAT_PARAM)
83C-----------------------------------------------
84C M o d u l e s
85C-----------------------------------------------
86 USE message_mod
87 USE elbufdef_mod
91 USE m36init_mod
92 USE matparam_def_mod , ONLY : matparam_struct_
93C-----------------------------------------------
94C I m p l i c i t T y p e s
95C-----------------------------------------------
96#include "implicit_f.inc"
97C-----------------------------------------------
98C G l o b a l P a r a m e t e r s
99C-----------------------------------------------
100#include "mvsiz_p.inc"
101C-----------------------------------------------
102C C o m m o n B l o c k s
103C-----------------------------------------------
104#include "com01_c.inc"
105#include "com04_c.inc"
106#include "param_c.inc"
107#include "scr19_c.inc"
108#include "units_c.inc"
109#include "vect01_c.inc"
110#include "scr17_c.inc"
111#include "tabsiz_c.inc"
112C-----------------------------------------------
113C D u m m y A r g u m e n t s
114C-----------------------------------------------
115 INTEGER NIX,NEL,NSIG,NUMS,IPT,JALE_FROM_PROP,JALE_FROM_MAT,JALE_MAX
116 INTEGER IX(NIX,*), IPARG(*),IPART(LIPART1,*),IPARTEL(*),MAT(*),IPM(NPROPMI,*),PT(*), NGL(*),NPF(*)
117 INTEGER,INTENT(IN) :: IGEO(NPROPGI,NUMGEO)
118 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
119 my_real X(*), GEO(*), PM(NPROPM,*),SIGI(NSIG,*),SKEW(LSKEW,*),BUFMAT(*),TF(*)
120 my_real,INTENT(IN) :: FACLOAD(LFACLOAD,*)
121 my_real, INTENT(IN) :: DDELTAX(*)
122 my_real, INTENT(IN) :: tempel(nel)
123 TYPE(g_bufel_), TARGET :: GBUF
124 TYPE(l_bufel_), TARGET :: LBUF
125 TYPE(buf_mat_) :: MBUF
126 TYPE(elbuf_struct_), TARGET :: ELBUF_STR
127 TYPE(detonators_struct_)::DETONATORS
128 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
129 TARGET :: bufmat
130 TYPE (MATPARAM_STRUCT_),DIMENSION(NUMMAT), INTENT(IN) :: MAT_PARAM
131C-----------------------------------------------
132C L o c a l V a r i a b l e s
133C-----------------------------------------------
134 CHARACTER(LEN=NCHARTITLE)::TITR
135 INTEGER I,IADBUF,NPAR,NFUNC,NUVAR,IFORM,NUMEL
136 INTEGER IFUNC(MAXFUNC)
137 INTEGER ID
138 my_real, DIMENSION(MVSIZ) :: RHO0,YLDFAC
139 my_real, DIMENSION(MVSIZ) ,TARGET :: TMP,EPL,FILLO
140 my_real, DIMENSION(:) ,POINTER ::
141 . off,sig,eint,rho,vol,epsd,deltax,tb,ang,sf,vk,rob,eplas,fill,dtel,uparam,temp
142C=======================================================================
143 tmp(1:nel)=zero
144 epl(1:nel)=zero
145
146 IF (ipt == 0) THEN
147 off => gbuf%OFF(1:nel)
148 sig => gbuf%SIG(1:nel*6)
149 eint => gbuf%EINT(1:nel)
150 epsd => gbuf%EPSD(1:nel)
151 rho => gbuf%RHO(1:nel)
152 vol => gbuf%VOL(1:nel)
153 IF(SIZE(gbuf%DELTAX)>0) deltax=> gbuf%DELTAX(1:nel)
154 IF(SIZE(gbuf%TB)>0) tb => gbuf%TB(1:nel)
155 dtel => gbuf%DT(1:nel)
156 IF (gbuf%G_TEMP > 0) THEN
157 temp => gbuf%TEMP(1:nel)
158 ELSE
159 temp => tmp(1:nel)
160 ENDIF
161 IF (gbuf%G_PLA > 0) THEN
162 eplas => gbuf%PLA(1:nel)
163 ELSE
164 eplas => epl(1:nel)
165 ENDIF
166 ELSE
167 off => lbuf%OFF(1:nel)
168 sig => lbuf%SIG(1:nel*6)
169 eint => lbuf%EINT(1:nel)
170 epsd => lbuf%EPSD(1:nel)
171 rho => lbuf%RHO(1:nel)
172 vol => lbuf%VOL(1:nel)
173 IF(SIZE(lbuf%DELTAX)>0) deltax=> lbuf%DELTAX(1:nel)
174 IF(SIZE(lbuf%TB)>0) tb => lbuf%TB(1:nel)
175 IF (elbuf_str%BUFLY(1)%L_TEMP > 0) THEN
176 temp => lbuf%TEMP(1:nel)
177 ELSE
178 temp => tmp(1:nel)
179 ENDIF
180 IF (elbuf_str%BUFLY(1)%L_PLA > 0) THEN
181 eplas => lbuf%PLA(1:nel)
182 ELSE
183 eplas => epl(1:nel)
184 ENDIF
185 ENDIF
186
187 IF(jsph==0)THEN
188 fill => gbuf%FILL(1:nel)
189 ELSE
190 fillo(1:nel)=one
191 fill => fillo(1:nel)
192 END IF
193
194 CALL mating(pm ,vol ,off ,eint ,rho ,
195 . sig ,ix ,nix ,sigi ,eplas ,
196 . nsig ,mat ,nums ,pt ,nel ,
197 . fill ,temp ,tempel )
198
199!--------------------
200 IF(jmult <= 1)THEN !reset only once
201 iparg(15)=0 ! FLAG REZONE SIG
202 iparg(16)=0 ! FLAG REZONE EPS PLAST.
203 iparg(63)=0 ! FLAG FOR FLUID MATERIAL
204 iparg(64)=0 ! FLAG FOR NON REFLECTING BOUNDARY
205 ENDIF
206!---------------------------
207 IF (mtn == 1) THEN
208 iparg(15)=1
209 ELSEIF (mtn == 2.OR.mtn == 3.OR.mtn == 4) THEN
210 iparg(15)=1
211 iparg(16)=1
212 ELSEIF (mtn == 5) THEN
213 iparg(16)=1 ! FLAG REZONE EPS PLAST. (BURNING TIME)
214 IF(n2d == 0)THEN
215 CALL m5in3 (pm,mat,0,detonators,tb,iparg,x,ix,nix)
216 ELSE
217 CALL m5in2 (pm,mat,0,detonators,tb,x,ix,nix)
218 ENDIF
219 iparg(63)=1 !Loi fluide
220 ELSEIF (mtn == 6) THEN
221 iparg(15)=0
222 iparg(63)=1 !Loi fluide
223 ELSEIF (mtn == 10) THEN
224 iparg(15)=1
225 iparg(16)=1
226 ELSEIF (mtn == 11) THEN
227 iparg(63)=1 !Loi fluide
228 iparg(64)=1 !Loi frontiere
229 IF(n2d == 0)THEN
230 numel=numels
231 ELSE
232 numel=numelq+numeltg
233 ENDIF
234 jale_from_prop = igeo(62,iabs(ix(nix-1,1))) !ALE/EULER from /PROP/TYPE14(SOLID)
235 jale_from_mat = iparg(7)+iparg(11) !ALE/EULER from /ALE/MAT or /EULER/MAT
236 jale_max = max(jale_from_prop, jale_from_mat)
237 id = ipm(1,mat(1))
238 CALL mat11check(pm,nix,ix,ale_connectivity,numel,jale_max,nel,nft,id,nummat,npropm)
239 ELSEIF (mtn == 12) THEN
240 iparg(15)=1
241 iparg(16)=1
242 IF (n2d /= 0)THEN
243 WRITE(iout,'(A)') ' LAW 12 IS NOT AVAILABLE IN 2D ANALYSIS'
244 CALL arret(2)
245 ENDIF
246 ELSEIF (mtn == 14) THEN
247 iparg(15)=1
248 iparg(16)=1
249 IF (n2d /= 0)THEN
250 WRITE(iout,'(A)') ' law 14 is not available in 2d analysis'
251 CALL ARRET(2)
252 ENDIF
253 ELSEIF (MTN == 16) THEN
254 IPARG(15)=1
255 IPARG(16)=1
256 ELSEIF (MTN == 17) THEN
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.OR..OR. ELSEIF (MTN == 21 MTN == 22 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.OR. ELSEIF (MTN == 46MTN == 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-1)
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 == 36) THEN
324 if (elbuf_str%bufly(1)%l_fac_yld > 0) then
325 yldfac(1:nel) = lbuf%fac_yld(1:nel)
326 else
327 yldfac(1:nel) = one
328 end if
329
330 CALL M36INIT(NEL ,NPAR ,NUVAR ,NFUNC ,IFUNC ,YLDFAC ,
331 . SNPC ,STF ,NPF ,TF ,UPARAM ,MBUF%VAR)
332
333 ELSEIF (MTN == 37) THEN
334 IPARG(63) = 1 !Loi fluide
335 CALL M37INIT(IPM ,PM ,
336 . NGL ,NUVAR ,MBUF%VAR ,UPARAM ,X ,
337 . MAT ,IPARG ,IFORM ,IX ,NIX ,
338 . ILOADP ,FACLOAD ,GBUF ,NEL)
339 ELSEIF (MTN == 38) THEN
340 CALL M38INIT(
341 1 NEL ,NPAR ,NUVAR ,NFUNC ,IFUNC ,
342 2 NPF ,TF ,BUFMAT(IADBUF),RHO0 ,VOL ,
343 3 EINT ,MBUF%VAR )
344 ELSEIF (MTN == 51) THEN
345 CALL M51INIT(IPM ,DETONATORS ,PM ,TB ,
346 . NUVAR ,MBUF%VAR ,UPARAM ,X ,
347 . MAT ,IPARG ,IFORM ,IX ,NIX ,
348 . ALE_CONNECTIVITY ,BUFMAT ,RHO0 ,
349 . GBUF ,NEL ,SIG ,MAT_PARAM , NPF, TF )
350 ELSEIF (MTN == 70) THEN
351 CALL M70INIT(NEL ,NPAR ,NUVAR ,UPARAM ,MBUF%VAR)
352
353 ELSEIF (MTN == 75) THEN
354 ID=IPM(1,MAT(1))
355 CALL FRETITL2(TITR,IPM(NPROPMI-LTITR+1,MAT(1)),LTITR)
356 CALL M75INIT(
357 1 NEL ,NPAR ,NUVAR ,NFUNC ,IFUNC ,
358 2 NPF ,TF ,UPARAM ,RHO0 ,VOL ,
359 3 EINT ,MBUF%VAR,PM ,ID ,TITR )
360 ELSEIF (MTN == 77) THEN
361 CALL M77INIT(
362 1 NEL ,NPAR ,NUVAR ,NFUNC ,IFUNC ,
363 2 NPF ,TF ,UPARAM ,RHO0 ,VOL ,
364 3 EINT ,MBUF%VAR)
365
366 ELSEIF (MTN == 95) THEN
367 CALL M95INIT(NEL ,NUVAR ,MBUF%VAR)
368 ELSEIF (MTN == 97)THEN
369 IPARG(16)=1 ! FLAG REZONE (BURNING TIME same index for EPS PLAST.)
370 IPARG(63)=1 ! FLAG FOR FLUID MATERIAL
371 CALL M97INIT(
372 . IPM ,DETONATORS,PM ,
373 . NUVAR ,MBUF%VAR ,BUFMAT(IADBUF) ,X ,
374 . MAT ,IPARG ,IFORM ,IX ,NIX ,
375 . BUFMAT ,RHO0 ,TB)
376 ELSEIF (MTN == 102) THEN
377 IPARG(15)=1
378 IPARG(16)=1
379 ELSEIF (MTN == 105)THEN
380 IPARG(16)=1 ! FLAG REZONE (BURNING TIME same index for EPS PLAST.)
381 IPARG(63)=1 ! FLAG FOR FLUID MATERIAL
382 CALL M105INIT(
383 . IPM ,DETONATORS,PM ,
384 . NUVAR ,MBUF%VAR ,BUFMAT(IADBUF) ,X ,
385 . MAT ,IPARG ,IFORM ,IX ,NIX ,
386 . BUFMAT ,RHO0 ,TB)
387
388 ENDIF
389 ENDIF
390
391 !must be set, once m51init() was called
392 IF(ELBUF_STR%BUFLY(1)%L_SSP /= 0)THEN
393 DO I=1,NEL
394 LBUF%SSP(I)=PM(27,MAT(I))
395 ENDDO
396 ENDIF
397
398C------------
399 RETURN
400 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 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
#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, mat_param)
Definition matini.F:83
integer, parameter nchartitle
subroutine sinit3(elbuf_str, mas, ixs, pm, x, detonators, geo, veul, ale_connectivity, iparg_gr, dtelem, sigi, nel, skew, igeo, stifn, partsav, v, iparts, mss, ipart, sigsp, ng, iparg, nsigi, msnf, nvc, mssf, ipm, iuser, nsigs, volnod, bvolnod, vns, bns, in, vr, ins, wma, ptsol, bufmat, mcp, mcps, temp, xrefs, npf, tf, mssa, strsglob, straglob, fail_ini, spbuf, kxsp, ipartsp, nod2sp, sol2sph, irst, iloadp, facload, rnoise, perturb, mat_param, glob_therm)
Definition sinit3.F:75
subroutine arret(nn)
Definition arret.F:86
program starter
Definition starter.F:39