OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mmain8.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vect01_c.inc"
#include "com08_c.inc"
#include "scr19_c.inc"
#include "param_c.inc"
#include "impl1_c.inc"
#include "timeri_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine mmain8 (timers, output, pm, geo, elbuf_str, mat_elem, ix, iparg, v, tf, npf, bufmat, stifn, x, d1, d2, d3, d4, d5, d6, volgp, deltax, voln, dvol, vd2, rho0, mat, nc, ngl, fv, nel, wxx, wyy, wzz, pid, dt2t, neltst, ityptst, rx, ry, rz, sx, sy, sz, tx, ty, tz, off, ipm, gama, mssa, dmels, table, ssp, itask, svis, snpc, numgeo, sbufmat, stf, ntable)

Function/Subroutine Documentation

◆ mmain8()

subroutine mmain8 ( type(timer_), intent(inout) timers,
type(output_), intent(inout) output,
pm,
geo,
type (elbuf_struct_), target elbuf_str,
type (mat_elem_), intent(inout), target mat_elem,
integer, dimension(*) ix,
integer, dimension(*) iparg,
v,
tf,
integer, dimension(*) npf,
bufmat,
stifn,
x,
d1,
d2,
d3,
d4,
d5,
d6,
volgp,
deltax,
voln,
dvol,
vd2,
rho0,
integer, dimension(*) mat,
integer, dimension(*) nc,
integer, dimension(*) ngl,
fv,
integer nel,
wxx,
wyy,
wzz,
integer, dimension(mvsiz,*) pid,
dt2t,
integer neltst,
integer ityptst,
rx,
ry,
rz,
sx,
sy,
sz,
tx,
ty,
tz,
off,
integer, dimension(npropmi,*) ipm,
gama,
mssa,
dmels,
type(ttable), dimension(*) table,
ssp,
integer itask,
intent(inout) svis,
integer, intent(in) snpc,
integer, intent(in) numgeo,
integer, intent(in) sbufmat,
integer, intent(in) stf,
integer, intent(in) ntable )

Definition at line 56 of file mmain8.F.

69C-----------------------------------------------
70C M o d u l e s
71C-----------------------------------------------
72 USE timer_mod
73 USE output_mod, ONLY : output_
74 USE table_mod
75 USE mat_elem_mod
76 USE mulaw8_mod
77 USE elbufdef_mod
78 USE fail_spalling_s_mod
79C-----------------------------------------------
80C I m p l i c i t T y p e s
81C-----------------------------------------------
82#include "implicit_f.inc"
83C-----------------------------------------------
84C G l o b a l P a r a m e t e r s
85C-----------------------------------------------
86#include "mvsiz_p.inc"
87C-----------------------------------------------
88C C o m m o n B l o c k s
89C-----------------------------------------------
90#include "vect01_c.inc"
91#include "com08_c.inc"
92#include "scr19_c.inc"
93#include "param_c.inc"
94#include "impl1_c.inc"
95#include "timeri_c.inc"
96C-----------------------------------------------
97C D u m m y A r g u m e n t s
98C-----------------------------------------------
99 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
100 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
101 INTEGER, INTENT(IN) :: SNPC
102 INTEGER, INTENT(IN) :: NUMGEO
103 INTEGER, INTENT(IN) :: SBUFMAT
104 INTEGER, INTENT(IN) :: STF
105 INTEGER, INTENT(IN) :: NTABLE
106 INTEGER IX(*), IPARG(*), NPF(*),MAT(*),NC(*),NGL(*),
107 . NEL, NELTST, ITYPTST, PID(MVSIZ,*),IPM(NPROPMI,*),
108 . ITASK
109 my_real
110 . pm(npropm,*), geo(*), fv(*), v(*), tf(*),
111 . bufmat(*), stifn(*), x(3,*),wxx(*),wyy(*),wzz(*),
112 . d1(mvsiz,*),d2(mvsiz,*),d3(mvsiz,*),
113 . d4(mvsiz,*),d5(mvsiz,*),d6(mvsiz,*),volgp(mvsiz,*),
114 . voln(mvsiz),dvol(mvsiz),vd2(mvsiz),rho0(mvsiz),deltax(mvsiz),
115 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,
116 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
117 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,off(mvsiz) ,
118 . gama(mvsiz,6),dt2t, mssa(*) ,dmels(*) ,ssp(mvsiz)
119 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
120 TYPE(TTABLE) TABLE(*)
121 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
122 TYPE (MAT_ELEM_) ,TARGET ,INTENT(INOUT) :: MAT_ELEM
123C-----------------------------------------------
124C L o c a l V a r i a b l e s
125C-----------------------------------------------
126 INTEGER I,J,JJ(6),J1,J2,IR,NFUNC,NUVAR,NUPARAM,NUVARR,
127 . NVARF,IRUPT,NUMBER_FAILURE,IADBUF,IMAT,NTABL_FAIL,
128 . NIPARAM
129 INTEGER IFUNC(MAXFUNC), LF_DAMMX
130 INTEGER, DIMENSION(:), POINTER :: ITABL_FAIL, IPARAMF
131 my_real
132 . qnew(mvsiz),vis(mvsiz),epsd(mvsiz),et(mvsiz),
133 . dpla(8*mvsiz), epsp(8*mvsiz),tstar(mvsiz),sxx(mvsiz),
134 . syy(mvsiz),szz(mvsiz),sxy(mvsiz),syz(mvsiz),szx(mvsiz)
135 my_real,
136 . DIMENSION(:) ,POINTER :: uvarf,uparamf,dfmax,tdele
137 TYPE(G_BUFEL_) ,POINTER :: GBUF
138 TYPE(L_BUFEL_) ,POINTER :: LBUF
139 TYPE (BUF_LAY_),POINTER :: BUFLY
140C=======================================================================
141 gbuf => elbuf_str%GBUF
142 bufly => elbuf_str%BUFLY(1)
143!
144 DO i=1,6
145 jj(i) = nel*(i-1)
146 ENDDO
147!
148C tangent module
149 DO i=1,nel
150 et(i)=zero
151 ENDDO
152C
153 DO i=1,nel
154 vis(i) = zero
155 svis(i,1)= zero
156 svis(i,2)= zero
157 svis(i,3)= zero
158 svis(i,4)= zero
159 svis(i,5)= zero
160 svis(i,6)= zero
161 tstar(i) = zero
162 ENDDO
163C-----------------------------------------------------------------
164 IF (mtn == 1) THEN
165 CALL m1law8(
166 1 pm, off, gbuf%SIG, gbuf%EINT,
167 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
168 3 nel, d1, d2, d3,
169 4 d4, d5, d6, voln,
170 5 volgp, deltax, rho0, dvol,
171 6 vd2, vis, mat, nc,
172 7 ngl, geo, pid, dt2t,
173 8 neltst, ityptst, gbuf%OFF, mssa,
174 9 dmels, bufly, ssp, ity,
175 a npt, jtur, jthe, jsms)
176 ELSEIF (mtn == 2) THEN
177 CALL m2law8(
178 1 pm, off, gbuf%SIG, gbuf%EINT,
179 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
180 3 nel, d1, d2, d3,
181 4 d4, d5, d6, voln,
182 5 volgp, deltax, rho0, dvol,
183 6 vd2, vis, mat, nc,
184 7 ngl, geo, pid, gbuf%PLA,
185 8 dt2t, neltst, ityptst, jplasol,
186 9 gbuf%OFF, dpla, epsp, tstar,
187 a et, mssa, dmels, bufly,
188 b ssp, ity, npt, jtur,
189 c jthe, jsms)
190
191 ELSEIF (mtn == 3) THEN
192 CALL m3law8(
193 1 pm, off, gbuf%SIG, gbuf%PLA,
194 2 gbuf%EINT,gbuf%RHO, d1, d2,
195 3 d3, d4, d5, d6,
196 4 voln, volgp, dvol, mat,
197 5 ngl, jplasol, dpla, epsp,
198 6 tstar, bufly, nel, npt)
199 CALL meos8(
200 1 pm, off, gbuf%SIG, gbuf%EINT,
201 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, gbuf%PLA,
202 3 gbuf%TEMP,gbuf%RE, stifn, nel,
203 4 d1, d2, d3, voln,
204 5 deltax, rho0, dvol, vd2,
205 6 vis, mat, nc, ngl,
206 7 geo, pid, dt2t, neltst,
207 8 ityptst, gbuf%OFF, mssa, dmels,
208 9 bufly, ssp, ity, npt,
209 a jtur, jthe, jsms)
210 ELSEIF (mtn == 41) THEN
211 ELSEIF (mtn>=28) THEN
212c user-type laws
213 nuvar = 0
214 DO i=1,nel
215 nuvar = max(nuvar,ipm(8,mat(i)))
216 ENDDO
217c
218 CALL mulaw8(timers,output,
219 1 1, nel, mtn,
220 2 npt, d1, d2, d3,
221 3 d4, d5, d6, pm,
222 4 off, gbuf%SIG, gbuf%EINT,gbuf%RHO,
223 5 gbuf%QVIS,gbuf%VOL, gama, bufly,
224 6 bufmat, tf, npf, stifn,
225 7 voln, volgp, deltax, rho0,
226 8 dvol, vd2, vis, gbuf%EPSD,
227 9 mat, nc, ngl, wxx,
228 a wyy, wzz, geo, pid,
229 b dt2t, neltst, ityptst, jplasol,
230 c rx, ry, rz, sx,
231 d sy, sz, tx, ty,
232 e tz, ismstr, ipm, gbuf%OFF,
233 f isorth, et, mssa, dmels,
234 g table, ihet, ssp, itask,
235 h nel, ity, jsms, jsph,
236 i jthe, jtur, mat_elem%NUMMAT,
237 j mat_elem%MAT_PARAM, svis, snpc,
238 k dt1, tt, maxfunc, npropmi,
239 l npropg, npropm, imon_mat, numgeo,
240 m sbufmat, stf, ntable)
241C-----
242 ENDIF
243C---------------------------
244C Failure Model
245C --------------------------
246 IF ((itask==0).AND.((imon_mat==1)))CALL startime(timers,121)
247 IF (ifailure == 1)THEN
248 IF (mtn < 28) THEN
249 imat = mat(1)
250 number_failure = mat_elem%MAT_PARAM(imat)%NFAIL
251c
252 DO ir = 1,number_failure
253 nuparam = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NUPARAM
254 niparam = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NIPARAM
255 uparamf =>mat_elem%MAT_PARAM(imat)%FAIL(ir)%UPARAM(1:nuparam)
256 iparamf =>mat_elem%MAT_PARAM(imat)%FAIL(ir)%IPARAM(1:niparam)
257 nfunc = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NFUNC
258 irupt = mat_elem%MAT_PARAM(imat)%FAIL(ir)%IRUPT
259 ifunc(1:nfunc) = mat_elem%MAT_PARAM(imat)%FAIL(ir)%IFUNC(1:nfunc)
260 ntabl_fail = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NTABLE
261 itabl_fail => mat_elem%MAT_PARAM(imat)%FAIL(ir)%TABLE(1:ntabl_fail)
262C----
263 DO j=1,npt
264 lbuf => bufly%LBUF(1,1,j)
265 uvarf => bufly%FAIL(1,1,j)%FLOC(ir)%VAR
266 nvarf = bufly%FAIL(1,1,j)%FLOC(ir)%NVAR
267 dfmax => bufly%FAIL(1,1,j)%FLOC(ir)%DAMMX
268 tdele => bufly%FAIL(1,1,j)%FLOC(ir)%TDEL
269 lf_dammx = bufly%FAIL(1,1,j)%FLOC(ir)%LF_DAMMX
270
271 j1 = 1 + nel*(j-1)
272 DO i=1,nel
273 sxx(i) = lbuf%SIG(jj(1)+i)
274 syy(i) = lbuf%SIG(jj(2)+i)
275 szz(i) = lbuf%SIG(jj(3)+i)
276 sxy(i) = lbuf%SIG(jj(4)+i)
277 syz(i) = lbuf%SIG(jj(5)+i)
278 szx(i) = lbuf%SIG(jj(6)+i)
279 ENDDO
280c----------
281 IF (irupt == 1)THEN
282C --- Johnson cook
283 CALL fail_johnson(nel ,nuparam,nvarf,
284 2 tt ,dt1 ,uparamf,ngl ,
285 4 sxx ,syy ,szz ,sxy ,syz ,szx,
286 5 dpla(j1),epsp(j1),tstar,uvarf,off,
287 6 dfmax ,tdele)
288 ELSEIF(irupt == 2)THEN
289C -------- Tuler butcher
290 CALL fail_tbutcher_s(nel ,nuparam,nvarf,
291 2 tt ,dt1 ,uparamf,ngl ,
292 4 sxx ,syy ,szz ,sxy ,syz ,szx,
293 5 uvarf,off ,dfmax ,tdele )
294 ELSEIF(irupt == 3)THEN
295C -----------wilkins
296 CALL fail_wilkins_s(nel ,nuparam,nvarf,
297 2 tt ,dt1 ,uparamf,ngl ,
298 4 sxx ,syy ,szz ,sxy ,syz ,szx,
299 5 dpla(j1),uvarf,off,dfmax,tdele)
300 ELSEIF(irupt == 8)THEN
301C---- JC + spalling
302 CALL fail_spalling_s(nel ,nuparam,
303 2 tt ,uparamf,ngl ,
304 4 sxx ,syy ,szz ,sxy ,syz ,szx,
305 5 dpla(j1),epsp(j1),tstar,off,
306 6 lf_dammx,dfmax ,tdele,gbuf%OFF,
307 7 niparam ,iparamf, mvsiz)
308 ELSEIF(irupt == 9)THEN
309C---- wierzbicki
310 CALL fail_wierzbicki_s(nel ,nuparam,nvarf,
311 2 tt ,dt1 ,uparamf,ngl ,
312 4 sxx ,syy ,szz ,sxy ,syz ,szx,
313 5 dpla(j1),lbuf%PLA,uvarf ,off ,
314 6 dfmax ,tdele)
315C tabulated failure model
316 ELSEIF (irupt == 23) THEN
317 CALL fail_tab_s(
318 1 nel ,nvarf ,npf ,tf ,tt ,
319 2 uparamf ,ngl ,deltax ,
320 3 sxx ,syy ,szz ,sxy ,syz ,szx,
321 4 dpla(j1) ,epsp(j1) ,tstar,uvarf ,ntabl_fail,itabl_fail,
322 5 off ,table ,dfmax,tdele ,nfunc ,ifunc )
323c --- extended mohr coulomb failure model
324 ELSEIF (irupt == 27) THEN
325 CALL fail_emc(
326 1 nel ,nvarf ,tt ,
327 2 dt1 ,uparamf ,ngl ,
328 3 sxx ,syy ,szz ,sxy ,syz ,szx,
329 4 lbuf%PLA ,dpla(j1) ,epsp(j1) ,uvarf,
330 5 off ,dfmax ,tdele)
331c --- Biquadratic failure
332 ELSEIF (irupt == 30) THEN
333 CALL fail_biquad_s(
334 1 nel ,nuparam ,nvarf ,nfunc ,ifunc ,deltax ,
335 2 npf ,tf ,tt ,bufmat ,tdele ,
336 3 ngl ,dpla(j1) ,uvarf ,off ,dfmax ,lbuf%DMGSCL,
337 4 sxx ,syy ,szz ,sxy ,syz ,szx )
338c
339 ELSEIF (irupt == 37) THEN
340c --- tabulated failure model (old, obsolete version)
341 CALL fail_tab_old_s(
342 1 nel ,nvarf ,npf ,tf ,tt ,
343 2 uparamf ,ngl ,deltax ,
344 3 sxx ,syy ,szz ,sxy ,syz ,szx,
345 4 lbuf%PLA ,dpla(j1) ,epsp(j1) ,tstar,uvarf,
346 5 off ,dfmax,tdele ,
347 6 nfunc ,ifunc )
348c
349c --- Orthotropic biquadratic failure
350 ELSEIF (irupt == 38) THEN
352 1 nel ,nuparam ,nvarf ,nfunc ,ifunc ,
353 2 npf ,tf ,tt ,dt1 ,uparamf,
354 3 ngl ,dpla(j1) ,epsp(j1) ,uvarf ,off ,
355 4 sxx ,syy ,szz ,sxy ,syz ,szx ,
356 5 dfmax ,tdele ,deltax )
357c
358c --- RTCL failure model
359 ELSEIF (irupt == 40) THEN
360 CALL fail_rtcl_s(
361 1 nel ,nuparam ,nvarf ,tt ,dt1 ,uparamf,
362 2 sxx ,syy ,szz ,sxy ,syz ,szx ,
363 3 ngl ,dpla(j1) ,uvarf ,off ,dfmax ,tdele )
364 ENDIF
365c
366 DO i=1,nel
367 lbuf%SIG(jj(1)+i) = sxx(i)
368 lbuf%SIG(jj(2)+i) = syy(i)
369 lbuf%SIG(jj(3)+i) = szz(i)
370 lbuf%SIG(jj(4)+i) = sxy(i)
371 lbuf%SIG(jj(5)+i) = syz(i)
372 lbuf%SIG(jj(6)+i) = szx(i)
373 ENDDO
374
375 enddo!J=1,NPT
376 ENDDO ! IR = 1,NUMBER_FAILURE
377 ENDIF
378 ENDIF
379
380 IF ((itask==0).AND.((imon_mat==1)))CALL stoptime(timers,121)
381 IF (impl_s>0) CALL put_etfac(nel ,et ,mtn )
382
383 IF(bufly%L_SSP /=0 )THEN
384 bufly%LBUF(1,1,1)%SSP(1:nel) = ssp(1:nel)
385 ENDIF
386C-----------
387 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine fail_biquad_s(nel, nuparam, nuvar, mfunc, kfunc, aldt, npf, tf, time, uparam, tdele, ngl, dpla, uvar, off, dfmax, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx)
subroutine fail_emc(nel, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, uvar, off, dfmax, tdele)
Definition fail_emc.F:38
subroutine fail_johnson(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, off, dfmax, tdele)
subroutine fail_orthbiquad_s(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, ngl, dpla, epsp, uvar, off, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, tdele, aldt)
subroutine fail_rtcl_s(nel, nuparam, nuvar, time, timestep, uparam, signxx, signyy, signzz, signxy, signyz, signzx, ngl, dpla, uvar, off, dfmax, tdele)
Definition fail_rtcl_s.F:36
subroutine fail_tab_old_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, tstar, uvar, off, dfmax, tdele, nfunc, ifunc)
subroutine fail_tab_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, ntablf, itablf, off, table, dfmax, tdele, nfunc, ifunc)
Definition fail_tab_s.F:44
subroutine fail_tbutcher_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, dfmax, tdele)
subroutine fail_wierzbicki_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, pla, uvar, off, dfmax, tdele)
subroutine fail_wilkins_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, uvar, off, dfmax, tdele)
subroutine m1law8(pm, off, sig, eint, rho, qold, vol, stifn, nel, d1, d2, d3, d4, d5, d6, vnew, volgp, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, dt2t, neltst, ityptst, offg, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
Definition m1law8.F:45
subroutine m2law8(pm, off, sig, eint, rho, qold, vol, stifn, nel, d1, d2, d3, d4, d5, d6, vnew, volgp, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, epseq, dt2t, neltst, ityptst, ipla, offg, dpla, epsp, tstar, etse, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
Definition m2law8.F:45
subroutine m3law8(pm, off, sig, epseq, eint, rho, d1, d2, d3, d4, d5, d6, vnew, volgp, dvol, mat, ngl, ipla, dpla, epd, tstar, bufly, nel, npt)
Definition m3law8.F:37
#define max(a, b)
Definition macros.h:21
subroutine meos8(pm, off, sig, eint, rho, qold, vol, rk, t, re, stifn, nel, d1, d2, d3, vnew, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, dt2t, neltst, ityptst, offg, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
Definition meos8.F:43
subroutine put_etfac(nel, et, mtn)
Definition put_etfac.F:36
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135