OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
usermat_solid.F File Reference
#include "implicit_f.inc"
#include "usrplas_c.inc"
#include "param_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "com01_c.inc"
#include "userlib.inc"
#include "impl1_c.inc"
#include "timeri_c.inc"
#include "scr18_c.inc"
#include "vectorize.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine usermat_solid (timers, lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, qold, vol, strain, sigl, gama, uvar, bufmat, tf, npf, stifn, mat, ngl, nuvar, dt2t, neltst, ityptst, offg, geo, pid, epsd, el_temp, wxx, wyy, wzz, jsph, mumax, ssp, aire, voln, vd2, deltax, vis, d1, d2, d3, d4, d5, d6, pnew, psh, q, ssp_eq, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ipla, sigy, defp, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, fbuf, nfail, npg, sigdd, dxy, dyx, dyz, dzy, dzx, dxz, fr_wav, isrot, v, varnl, w, ix, x, jthe, et, mssa, dmels, iptr, ipts, iptt, table, fvd2, fdeltax, fssp, fqvis, iparg1, igeo, sigv, al_imp, signor, istrain, ng, elbuf_tab, vbuf, ilay, vk, iparg, bufvois, vdx, vdy, vdz, ihet, conde, itask, iexpan, vol_avg, amu, epsth3, epsth, svisc, nel, etotsh, iselect, tstar, muold, amu2, dpdm, rhoref, rhosp, nloc_dmg, ity, jtur, mat_elem, idel7nok, svis, dt, glob_therm, damp_buf, idamp_freq_range)

Function/Subroutine Documentation

◆ usermat_solid()

subroutine usermat_solid ( type(timer_), intent(inout) timers,
integer lft,
integer llt,
integer nft,
integer mtn,
integer jcvt,
pm,
off,
sig,
eint,
rho,
qold,
vol,
strain,
sigl,
gama,
dimension(nuvar*llt) uvar,
target bufmat,
tf,
integer, dimension(*) npf,
stifn,
integer, dimension(mvsiz) mat,
integer, dimension(mvsiz) ngl,
integer nuvar,
dt2t,
integer neltst,
integer ityptst,
offg,
geo,
integer, dimension(mvsiz) pid,
epsd,
dimension(llt) el_temp,
wxx,
wyy,
wzz,
integer jsph,
mumax,
ssp,
aire,
voln,
vd2,
target deltax,
vis,
d1,
d2,
d3,
d4,
d5,
d6,
pnew,
psh,
q,
ssp_eq,
dvol,
sold1,
sold2,
sold3,
sold4,
sold5,
sold6,
rx,
ry,
rz,
sx,
sy,
sz,
tx,
ty,
tz,
integer ipla,
sigy,
target defp,
integer ismstr,
mfxx,
mfxy,
mfxz,
mfyx,
mfyy,
mfyz,
mfzx,
mfzy,
mfzz,
integer, dimension(npropmi,*), target ipm,
integer isorth,
type (buf_fail_), target fbuf,
integer nfail,
integer npg,
sigdd,
dxy,
dyx,
dyz,
dzy,
dzx,
dxz,
fr_wav,
integer isrot,
v,
target varnl,
w,
integer ix,
x,
integer jthe,
et,
mssa,
dmels,
integer iptr,
integer ipts,
integer iptt,
type (ttable), dimension(ntable) table,
fvd2,
fdeltax,
fssp,
fqvis,
integer, dimension(*) iparg1,
integer, dimension(npropgi,*) igeo,
sigv,
al_imp,
signor,
integer istrain,
integer ng,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
type (buf_visc_) vbuf,
integer ilay,
vk,
integer, dimension(nparg,*) iparg,
bufvois,
vdx,
vdy,
vdz,
integer ihet,
conde,
integer itask,
integer iexpan,
vol_avg,
amu,
epsth3,
epsth,
svisc,
integer nel,
etotsh,
integer iselect,
tstar,
muold,
amu2,
dpdm,
rhoref,
rhosp,
type (nlocal_str_) nloc_dmg,
integer, intent(in) ity,
integer, intent(in) jtur,
type (mat_elem_), intent(inout) mat_elem,
integer, intent(inout) idel7nok,
intent(inout) svis,
type (dt_), intent(in) dt,
type (glob_therm_), intent(inout) glob_therm,
type (buf_damp_range_), intent(in) damp_buf,
integer, intent(in) idamp_freq_range )

Definition at line 91 of file usermat_solid.F.

131C-----------------------------------------------
132C M o d u l e s
133C-----------------------------------------------
135 USE law_userso
136 USE table_mod
137 USE mat_elem_mod
138 USE matparam_def_mod
139 USE fail_param_mod
140 USE message_mod
142 USE elbufdef_mod
143 USE dt_mod
144 use glob_therm_mod
145 USE timer_mod
146 USE fail_lemaitre_s_mod
147 USE fail_spalling_s_mod
148 USE fail_composite_s_mod
149C-----------------------------------------------
150C I m p l i c i t T y p e s
151C-----------------------------------------------
152#include "implicit_f.inc"
153C-----------------------------------------------
154C C o m m o n B l o c k s
155C-----------------------------------------------
156#include "usrplas_c.inc"
157#include "param_c.inc"
158#include "com04_c.inc"
159#include "com08_c.inc"
160#include "com01_c.inc"
161#include "userlib.inc"
162#include "impl1_c.inc"
163#include "timeri_c.inc"
164#include "scr18_c.inc"
165C-----------------------------------------------
166C D u m m y A r g u m e n t s
167C-----------------------------------------------
168 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
169 INTEGER, INTENT(IN) :: ITY
170 INTEGER, INTENT(IN) :: JTUR
171 INTEGER, INTENT(INOUT) :: IDEL7NOK
172 INTEGER LFT ,LLT ,NFT ,MTN, NUVAR,JCVT,ISORTH,NFAIL,NPG,
173 . J, JSPH, IPLA,ISMSTR,NELTST, ITYPTST, NUVARR,NG,ILAY,
174 . IX, JTHE, ISROT,ISTRAIN,IPTR, IPTS, IPTT,IHET,IEXPAN,NEL
175 INTEGER NPF(*),MAT(MVSIZ),NGL(MVSIZ),PID(MVSIZ),IPM(NPROPMI,*),
176 . IPARG1(*),IPARG(NPARG,*),IGEO(NPROPGI,*),ITASK,ISELECT
177 INTEGER, INTENT(IN) :: IDAMP_FREQ_RANGE
178 TARGET :: ipm
179C
180 my_real
181 . dt2t, bufvois(*)
182 my_real
183 . pm(npropm,*), gama(*),pnew(nel),varnl(nel),
184 . off(*), sig(nel,6), sigl(nel,6), strain(nel,6), eint(*),
185 . rho(*),qold(*), vol(*), bufmat(*), tf(*),vk(*),
186 . offg(*),stifn(*),geo(npropg,*),epsd(*),
187 . wxx(*), wyy(*), wzz(*), mumax(*), ssp(*),
188 . aire(*) ,voln(*) ,vd2(*) ,deltax(*),vis(*) ,
189 . sold1(mvsiz) ,sold2(mvsiz) ,sold3(mvsiz) ,
190 . sold4(mvsiz) ,sold5(mvsiz) ,sold6(mvsiz),
191 . d1(*) ,d2(*),d3(*),d4(*),d5(*),d6(*) ,psh(nel),
192 . q(*),ssp_eq(*),dvol(*),
193 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz),
194 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
195 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) , v(*), w(*),
196 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,mfyz(*) ,
197 . mfzx(*) ,mfzy(*) ,mfzz(*), fqvis(*),fssp(*),
198 . sigv(nel,6), sigy(*),defp(nel),
199 . dxy(*) ,dyx(*) ,dyz(*) ,dzy(*) ,dzx(*) ,dxz(*), sigdd(nel,6),
200 . fr_wav(*),x(*),et(*), mssa(*), dmels(*),fvd2(*),fdeltax(*),
201 . al_imp(mvsiz),signor(mvsiz,6),vdx(*),vdy(*),vdz(*),
202 . svisc(nel,6),amu(mvsiz),amu2(mvsiz),dpdm(mvsiz),vol_avg(mvsiz),epsth(nel),epsth3(mvsiz),
203 . etotsh(nel,6),tstar(mvsiz),muold(nel),conde(*), rhoref(*), rhosp(*)
204 TARGET :: bufmat,deltax,varnl,defp
205 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
206 my_real, DIMENSION(LLT) :: el_temp
207 my_real, TARGET, DIMENSION(NUVAR*LLT):: uvar
208 my_real, TARGET, DIMENSION(LLT):: scale1,initvarf
209 TYPE (BUF_FAIL_), TARGET :: FBUF
210 TYPE (BUF_VISC_) :: VBUF
211 TYPE (TTABLE), DIMENSION(NTABLE) :: TABLE
212 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
213 TYPE (NLOCAL_STR_) :: NLOC_DMG
214 TYPE (MAT_ELEM_) ,INTENT(INOUT) :: MAT_ELEM
215 TYPE (DT_), INTENT(IN) :: DT
216 TYPE (GLOB_THERM_) ,INTENT(INOUT) :: GLOB_THERM
217 TYPE (BUF_DAMP_RANGE_) ,INTENT(IN):: DAMP_BUF
218C-----------------------------------------------
219C L o c a l V a r i a b l e s
220C-----------------------------------------------
221 INTEGER NV46, NUMEL, INLOC, JSMS
222 INTEGER I,NPAR,IADBUF,NFUNC,NUMTABL,NTABL_FAIL,ISRATE,SIZNUL,MX,IPG,NPTR,NPTS,
223 . IBID,IBIDON1,IBIDON2,IBIDON3,IBIDON4 ,N48,NIX,ILAW_USER,IGTYP,
224 . NVARF,NVARVIS,IR,IRUPT,IMAT,ISVIS,IVISC,NUVARV,ISEQ,IADRUPBUF,IDEV,VISCTYPE
225 my_real
226 .e1,e2,e3,e4,e5,e6,bid1,bid3,q1,q2,q3,ss1,ss2,ss3,ss4,ss5,
227 .ss6,wxxf,wyyf,wzzf,p2,epsp,dav,asrate,c1(mvsiz),
228 . ep1(mvsiz),ep2(mvsiz),ep3(mvsiz),e7(mvsiz),
229 . ep4(2*mvsiz),ep5(2*mvsiz),ep6(2*mvsiz),einc,
230 . s1(mvsiz) ,s2(mvsiz) ,s3(mvsiz) ,
231 . s4(2*mvsiz) ,s5(2*mvsiz) ,s6(2*mvsiz),
232 . de1(mvsiz),de2(mvsiz),de3(mvsiz),
233 . de4(2*mvsiz),de5(2*mvsiz),de6(2*mvsiz),
234 . so1(mvsiz),so2(mvsiz),so3(mvsiz),
235 . so4(2*mvsiz),so5(2*mvsiz),so6(2*mvsiz),
236 .es1(mvsiz),es2(mvsiz),es3(mvsiz),es4(mvsiz),es5(mvsiz),es6(mvsiz),
237 .sv1(mvsiz),sv2(mvsiz),sv3(mvsiz),sv4(mvsiz),sv5(mvsiz),sv6(mvsiz),
238 .svo1(mvsiz),svo2(mvsiz),svo3(mvsiz),svo4(mvsiz),svo5(mvsiz),svo6(mvsiz),
239 .r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),r23(mvsiz),
240 .r31(mvsiz),r32(mvsiz),r33(mvsiz),epsp1(mvsiz),dpla(mvsiz),
241 .pair(mvsiz),es7(mvsiz),es8(mvsiz),es9(mvsiz),defp0(mvsiz)
242 my_real facq0
243
244 my_real fpsxx(mvsiz),fpsyy(mvsiz),fpszz(mvsiz),fpsxy(mvsiz),
245 * fpsyz(mvsiz),fpszx(mvsiz),fpsyx(mvsiz),fpszy(mvsiz),
246 * fpsxz(mvsiz),bid_arr(mvsiz),
247 * upsxx(mvsiz),upsyy(mvsiz),upszz(mvsiz),upsxy(mvsiz),
248 * upsyz(mvsiz),upsxz(mvsiz)
249 my_real
250 . rho0(mvsiz),bidon1,bidon2,bidon3,bidon4,bidon5,pold
251 my_real tt_local
252 my_real, DIMENSION(NEL), TARGET :: le_max
253C----
254 my_real, DIMENSION(:), POINTER :: uparam,uparamf,uvarf,dfmax,tdel,
255 . yldfac,dam,el_len,el_pla,damini
256 my_real, DIMENSION(MVSIZ) :: el_bfrac,el_tb
257 INTEGER :: SIZBFRAC,SIZTB
258 TYPE(ULAWINTBUF) :: USERBUF
259 TYPE(L_BUFEL_) ,POINTER :: LBUF, LBUF1, LBUF2
260 TYPE(G_BUFEL_) ,POINTER :: GBUF
261 TYPE (FAIL_PARAM_), POINTER :: FAILPARAM
262 LOGICAL :: LOGICAL_USERL_AVAIL
263 my_real user_uelr(mvsiz)
264 INTEGER, DIMENSION(:) ,POINTER :: ITABL_FAIL,IPARAMF
265 INTEGER, DIMENSION(:) ,POINTER :: FLD_IDX,FOFF,IFUNC,ITABLE
266 INTEGER :: DMG_FLAG,LF_DAMMX,NIPAR
267 my_real, DIMENSION(:,:) , ALLOCATABLE :: ismstr10_fp
268 my_real additional_flt_parameters(mvsiz)
269 INTEGER ADDITIONAL_INT_PARAMETERS(MVSIZ),LENGTH
270 CHARACTER*256 MDS_LIBNAME
271!
272 CHARACTER OPTION*256
273 INTEGER SIZE
274 CHARACTER(LEN=NCHARLINE100)::IUSER_KEY
275 my_real, DIMENSION(NEL) :: off_old
276C=======================================================================
277 gbuf => elbuf_tab(ng)%GBUF
278 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
279 logical_userl_avail=.false.
280 IF(userl_avail>0) logical_userl_avail=.true.
281 nptr = elbuf_tab(ng)%NPTR
282 npts = elbuf_tab(ng)%NPTS
283 ipg = iptr + ((ipts-1) + (iptt-1)*npts)*nptr
284 igtyp = iparg(38,ng)
285 IF ((igtyp == 20).OR.(igtyp == 21).OR.(igtyp == 22)) THEN
286 ipg = iptr + ((ipts-1) + (ilay-1)*npts)*nptr
287 ENDIF
288 iseq = elbuf_tab(ng)%BUFLY(ilay)%L_SEQ
289 inloc = iparg(78,ng)
290 dmg_flag = elbuf_tab(ng)%BUFLY(ilay)%L_DMGSCL
291 nvarvis = elbuf_tab(ng)%BUFLY(ilay)%NVAR_VISC
292 ! Make sure that the non-local variable increment is positive
293 IF (inloc > 0) THEN
294 DO i = lft,llt
295 varnl(i) = max(varnl(i),zero)
296 lbuf%PLANL(i) = lbuf%PLANL(i) + varnl(i)
297 lbuf%EPSDNL(i) = varnl(i)/max(dt1,em20)
298 ENDDO
299 ENDIF
300 ! needed in mqviscb
301 facq0 = one
302 mx = mat(1)
303 npar = ipm(9,mx)
304 iadbuf = ipm(7,mx)
305 nfunc = ipm(10,mx)
306 numtabl= ipm(226,mx)
307 uparam => bufmat(iadbuf:iadbuf+npar)
308 ifunc => ipm(10+1:10+nfunc,mx)
309 itable => ipm(226+1:226+numtabl,mx)
310c
311 !C
312
313 !c (utilisateurs pour la rupture
314 bidon1 = zero
315 bidon2 = zero
316 bidon3 = zero
317 bidon4 = zero
318 bidon5 = zero
319 bid1 = zero
320 bid3 = zero
321
322 ! (utilisateurs pour la rupture
323 ibid = 0
324 ibidon1 = 0
325 ibidon2 = 0
326 ibidon3 = 0
327 ibidon4 = 0
328 ilaw_user = ipm(217, mx)
329 imat = ipm(1, mx)
330 isvis = igeo(35,pid(1))
331 IF(impl_s >0.AND.idyna == 0) isvis = 0
332c
333 dpla(lft:llt) = zero
334
335 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
336 defp0(lft:llt) = lbuf%PLA(lft:llt)
337 ELSE
338 defp0(lft:llt) = zero
339 ENDIF
340
341!
342 ! Save old value of OFF flag
343 off_old(1:nel) = off(1:nel)
344
345 IF (gbuf%G_BFRAC > 0) THEN
346 el_bfrac(1:nel) = elbuf_tab(ng)%GBUF%BFRAC(1:nel) ! burn fraction for high explosive
347 sizbfrac = nel
348 ELSE
349 el_bfrac(1:nel) = zero
350 sizbfrac = 0
351 ENDIF
352
353 IF (gbuf%G_TB > 0) THEN
354 el_tb(1:nel) = elbuf_tab(ng)%GBUF%TB(1:nel) ! burning time for high explosive
355 siztb = nel
356 ELSE
357 el_tb(1:nel) = zero
358 siztb = 0
359 ENDIF
360
361 !initial scale factor for yield stress defined per IPG,NPI
362 scale1(lft:llt) = one
363 yldfac => scale1(lft:llt)
364 IF ( elbuf_tab(ng)%BUFLY(ilay)%L_FAC_YLD > 0) THEN
365 yldfac => lbuf%FAC_YLD(1:nel)
366 ENDIF
367c
368 c1(1:mvsiz) = pm(32,mx)
369 rho0(1:mvsiz)= pm( 1,mx)
370 vis(1:mvsiz) = zero
371 ep1(1:mvsiz) = d1(1:mvsiz)*off(1:mvsiz)
372 ep2(1:mvsiz) = d2(1:mvsiz)*off(1:mvsiz)
373 ep3(1:mvsiz) = d3(1:mvsiz)*off(1:mvsiz)
374 ep4(1:mvsiz) = d4(1:mvsiz)*off(1:mvsiz)
375 ep5(1:mvsiz) = d5(1:mvsiz)*off(1:mvsiz)
376 ep6(1:mvsiz) = d6(1:mvsiz)*off(1:mvsiz)
377 sv1(1:mvsiz) = zero
378 sv2(1:mvsiz) = zero
379 sv3(1:mvsiz) = zero
380 sv4(1:mvsiz) = zero
381 sv5(1:mvsiz) = zero
382 sv6(1:mvsiz) = zero
383 e7(1:mvsiz) = zero
384 s1(1:mvsiz) = zero
385 s2(1:mvsiz) = zero
386 s3(1:mvsiz) = zero
387 s4(1:mvsiz) = zero
388 s5(1:mvsiz) = zero
389 s6(1:mvsiz) = zero
390 svo1(1:mvsiz) = zero
391 svo2(1:mvsiz) = zero
392 svo3(1:mvsiz) = zero
393 svo4(1:mvsiz) = zero
394 svo5(1:mvsiz) = zero
395 svo6(1:mvsiz) = zero
396
397 ssp(1:mvsiz)=zero
398
399 if (mat_elem%MAT_PARAM(mat(1))%IVISC == 3) then
400 DO i=1,nel
401 svo1(i) = svisc(i,1)
402 svo2(i) = svisc(i,2)
403 svo3(i) = svisc(i,3)
404 svo4(i) = svisc(i,4)
405 svo5(i) = svisc(i,5)
406 svo6(i) = svisc(i,6)
407 ENDDO
408 ENDIF
409
410 IF (jcvt > 0) THEN
411C---------------------------
412C ISOTROPE ET ORTHOTROPE CONVECTE
413C---------------------------
414 DO i=lft,llt
415 de1(i) = ep1(i)*dt1
416 de2(i) = ep2(i)*dt1
417 de3(i) = ep3(i)*dt1
418 de4(i) = ep4(i)*dt1
419 de5(i) = ep5(i)*dt1
420 de6(i) = ep6(i)*dt1
421 so1(i) = sig(i,1)
422 so2(i) = sig(i,2)
423 so3(i) = sig(i,3)
424 so4(i) = sig(i,4)
425 so5(i) = sig(i,5)
426 so6(i) = sig(i,6)
427 wxx(i)=zero
428 wyy(i)=zero
429 wzz(i)=zero
430 ENDDO
431C
432 ELSEIF (isorth /= 0) THEN
433C---------------------------
434C ORTHOTROPE GLOBAL
435C---------------------------
436 CALL mreploc(
437 1 gama, r11, r12, r13,
438 2 r21, r22, r23, r31,
439 3 r32, r33, rx, ry,
440 4 rz, sx, sy, sz,
441 5 tx, ty, tz, nel,
442 6 jsph)
443 DO i=lft,llt
444 ep4(i) = half*ep4(i)
445 ep5(i) = half*ep5(i)
446 ep6(i) = half*ep6(i)
447 ENDDO
448 CALL mrotens(lft,llt,ep1,ep2,ep3,ep4,ep5,ep6,
449 . r11,r12,r13,
450 . r21,r22,r23,
451 . r31,r32,r33)
452#include "vectorize.inc"
453 DO i=lft,llt
454 ep4(i) = two*ep4(i)
455 ep5(i) = two*ep5(i)
456 ep6(i) = two*ep6(i)
457 de1(i)= ep1(i)*dt1
458 de2(i)= ep2(i)*dt1
459 de3(i)= ep3(i)*dt1
460 de4(i)= ep4(i)*dt1
461 de5(i)= ep5(i)*dt1
462 de6(i)= ep6(i)*dt1
463 so1(i) = sigl(i,1)
464 so2(i) = sigl(i,2)
465 so3(i) = sigl(i,3)
466 so4(i) = sigl(i,4)
467 so5(i) = sigl(i,5)
468 so6(i) = sigl(i,6)
469 wxx(i)=zero
470 wyy(i)=zero
471 wzz(i)=zero
472 ENDDO
473 IF (mat_elem%MAT_PARAM(mat(1))%IVISC == 3) THEN
474 CALL mrotens(lft,llt,svo1,svo2,svo3,svo4,svo5,svo6,
475 . r11,r12,r13,
476 . r21,r22,r23,
477 . r31,r32,r33)
478 ENDIF
479 ELSE
480C---------------------------
481C ISOTROPE GLOBAL
482C---------------------------
483#include "vectorize.inc"
484 DO i=lft,llt
485 de1(i) = ep1(i)*dt1
486 de2(i) = ep2(i)*dt1
487 de3(i) = ep3(i)*dt1
488 de4(i) = ep4(i)*dt1
489 de5(i) = ep5(i)*dt1
490 de6(i) = ep6(i)*dt1
491 so1(i) = sig(i,1)
492 so2(i) = sig(i,2)
493 so3(i) = sig(i,3)
494 so4(i) = sig(i,4)
495 so5(i) = sig(i,5)
496 so6(i) = sig(i,6)
497 ENDDO
498C
499#include "vectorize.inc"
500 DO i=lft,llt
501 wxxf=wxx(i)*off(i)
502 wyyf=wyy(i)*off(i)
503 wzzf=wzz(i)*off(i)
504 q1=strain(i,4)*wzzf
505 q2=strain(i,6)*wyyf
506 q3=strain(i,5)*wxxf
507 ss1=strain(i,1)-q1+q2
508 ss2=strain(i,2)+q1-q3
509 ss3=strain(i,3)-q2+q3
510 ss4=strain(i,4)+2.*wzzf*(strain(i,1)-strain(i,2))+
511 . wyyf*strain(i,5)-wxxf*strain(i,6)
512 ss5=strain(i,5)+2.*wxxf*(strain(i,2)-strain(i,3))+
513 . wzzf*strain(i,6)-wyyf*strain(i,4)
514 ss6=strain(i,6)+2.*wyyf*(strain(i,3)-strain(i,1))+
515 . wxxf*strain(i,4)-wzzf*strain(i,5)
516 strain(i,1)= ss1
517 strain(i,2)= ss2
518 strain(i,3)= ss3
519 strain(i,4)= ss4
520 strain(i,5)= ss5
521 strain(i,6)= ss6
522 ENDDO
523 ENDIF
524c--------------------------
525 IF (istrain > 0) THEN
526 DO i=lft,llt
527 strain(i,1)= strain(i,1) + de1(i)
528 strain(i,2)= strain(i,2) + de2(i)
529 strain(i,3)= strain(i,3) + de3(i)
530 strain(i,4)= strain(i,4) + de4(i)
531 strain(i,5)= strain(i,5) + de5(i)
532 strain(i,6)= strain(i,6) + de6(i)
533 es1(i) = strain(i,1)
534 es2(i) = strain(i,2)
535 es3(i) = strain(i,3)
536 es4(i) = strain(i,4)
537 es5(i) = strain(i,5)
538 es6(i) = strain(i,6)
539 ENDDO
540 ELSE
541 DO i=lft,llt
542 es1(i) = zero
543 es2(i) = zero
544 es3(i) = zero
545 es4(i) = zero
546 es5(i) = zero
547 es6(i) = zero
548 ENDDO
549 ENDIF
550c-------------------------------------------------------------------------
551c TOTAL STRAIN
552c-------------------------------------------------------------------------
553 IF (ismstr == 10.OR.ismstr == 12) THEN
554c [F] = [M_F]+[1]
555c only [B] is used for ISMSTR=10,12 now
556c------ Use uniform [ES] (instead of [MF]) as other laws
557 IF (iselect > 0) THEN
558 DO i=lft,llt
559 es1(i)=etotsh(i,1)*off(i)
560 es2(i)=etotsh(i,2)*off(i)
561 es3(i)=etotsh(i,3)*off(i)
562 es4(i)=etotsh(i,4)*off(i)
563 es6(i)=etotsh(i,6)*off(i)
564 es5(i)=etotsh(i,5)*off(i)
565 END DO
566 ELSE
567 DO i=lft,llt
568 mfxx(i) = off(i)*mfxx(i)
569 mfyy(i) = off(i)*mfyy(i)
570 mfzz(i) = off(i)*mfzz(i)
571 mfxy(i) = off(i)*mfxy(i)
572 mfyx(i) = off(i)*mfyx(i)
573 mfzx(i) = off(i)*mfzx(i)
574 mfxz(i) = off(i)*mfxz(i)
575 mfyz(i) = off(i)*mfyz(i)
576 mfzy(i) = off(i)*mfzy(i)
577 ENDDO
578c Is like 42 ...etc we compute [B]=[F][F]^t - I strain----- e.g. 62,92,88,90
579 DO i=lft,llt
580 es1(i)=mfxx(i)*(two+mfxx(i))+
581 . mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
582 es2(i)=mfyy(i)*(two+mfyy(i))+
583 . mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
584 es3(i)=mfzz(i)*(two+mfzz(i))+
585 . mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
586 es4(i)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+
587 . mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
588 es6(i)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+
589 . mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
590 es5(i)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+
591 . mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
592 ENDDO
593 END IF !(ISELECT>0) THEN
594c
595 IF(idtmin(1)==3.AND.ismstr == 12)THEN
596 DO i=lft,llt
597 IF (offg(i) <=one) cycle
598 es1(i)=mfxx(i)
599 es2(i)=mfyy(i)
600 es3(i)=mfzz(i)
601 es4(i)=half*(mfxy(i)+mfyx(i))
602 es6(i)=half*(mfxz(i)+mfzx(i))
603 es5(i)=half*(mfzy(i)+mfyz(i))
604 ENDDO
605 END IF
606C---------------------------
607C ORTHOTROPE GLOBAL
608C---------------------------
609 IF (jcvt <= 0 .AND. isorth /= 0) THEN
610c
611 CALL mreploc(
612 1 gama, r11, r12, r13,
613 2 r21, r22, r23, r31,
614 3 r32, r33, rx, ry,
615 4 rz, sx, sy, sz,
616 5 tx, ty, tz, nel,
617 6 jsph)
618 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
619 . r11,r12,r13,
620 . r21,r22,r23,
621 . r31,r32,r33)
622 ENDIF
623 DO i=lft,llt
624 es4(i) = two*es4(i)
625 es5(i) = two*es5(i)
626 es6(i) = two*es6(i)
627 ENDDO
628c-------------------------------
629 ELSEIF (ismstr==11) THEN
630c-------------------------------
631 DO i=lft,llt
632 es1(i)=mfxx(i)
633 es2(i)=mfyy(i)
634 es3(i)=mfzz(i)
635 es4(i)=mfxy(i)+mfyx(i)
636 es6(i)=mfxz(i)+mfzx(i)
637 es5(i)=mfzy(i)+mfyz(i)
638 ENDDO
639 IF (jcvt == 0 .AND. isorth /= 0) THEN
640C---------------------------
641C ORTHOTROPE GLOBAL
642C---------------------------
643 DO i=lft,llt
644 es4(i) = half*es4(i)
645 es5(i) = half*es5(i)
646 es6(i) = half*es6(i)
647 ENDDO
648 CALL mreploc(
649 1 gama, r11, r12, r13,
650 2 r21, r22, r23, r31,
651 3 r32, r33, rx, ry,
652 4 rz, sx, sy, sz,
653 5 tx, ty, tz, nel,
654 6 jsph)
655 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
656 . r11,r12,r13,
657 . r21,r22,r23,
658 . r31,r32,r33)
659 DO i=lft,llt
660 es4(i) = two*es4(i)
661 es5(i) = two*es5(i)
662 es6(i) = two*es6(i)
663 ENDDO
664 ENDIF
665C---------------------------
666 DO i=lft,llt
667 strain(i,1)= es1(i)
668 strain(i,2)= es2(i)
669 strain(i,3)= es3(i)
670 strain(i,4)= es4(i)
671 strain(i,5)= es5(i)
672 strain(i,6)= es6(i)
673 ENDDO
674c THERM STRESS COMPUTATION-----
675 IF (iexpan > 0) THEN
676 DO i=lft,llt
677 strain(i,1)= strain(i,1)-epsth(i)
678 strain(i,2)= strain(i,2)-epsth(i)
679 strain(i,3)= strain(i,3)-epsth(i)
680 ENDDO
681 ENDIF
682 ENDIF ! ismstr = 10,11,12
683
684c---------------------------------------------------------
685c Strain rate filtering coefficient
686c---------------------------------------------------------
687 israte = ipm(3,mx)
688 IF (israte > 0) THEN
689 asrate = min(one, pm(9,mx)*dt1)
690 ENDIF
691c--------------------------------------------------------
692c END TOTAL STRAIN
693c---------------------------------------------------------
694c
695c--------------------------------------------------------
696c COMPUTE UNDAMAGED EFFECTIVE STRESSES
697c---------------------------------------------------------
698 ! -> Isotropic stress softening
699 IF (dmg_flag == 1) THEN
700 DO i = 1,nel
701 so1(i) = so1(i)/max(lbuf%DMGSCL(i),em20)
702 so2(i) = so2(i)/max(lbuf%DMGSCL(i),em20)
703 so3(i) = so3(i)/max(lbuf%DMGSCL(i),em20)
704 so4(i) = so4(i)/max(lbuf%DMGSCL(i),em20)
705 so5(i) = so5(i)/max(lbuf%DMGSCL(i),em20)
706 so6(i) = so6(i)/max(lbuf%DMGSCL(i),em20)
707 ENDDO
708 ! -> Orthotropic stress softening
709 ELSEIF (dmg_flag == 6) THEN
710 DO i = 1,nel
711 so1(i) = so1(i)/max(lbuf%DMGSCL(i+nel*(1-1)),em20)
712 so2(i) = so2(i)/max(lbuf%DMGSCL(i+nel*(2-1)),em20)
713 so3(i) = so3(i)/max(lbuf%DMGSCL(i+nel*(3-1)),em20)
714 so4(i) = so4(i)/max(lbuf%DMGSCL(i+nel*(4-1)),em20)
715 so5(i) = so5(i)/max(lbuf%DMGSCL(i+nel*(5-1)),em20)
716 so6(i) = so6(i)/max(lbuf%DMGSCL(i+nel*(6-1)),em20)
717 ENDDO
718 ENDIF
719c
720c---------------------------------------------------------
721c SELECT MATERIAL LAW
722c---------------------------------------------------------
723 IF (mtn == 29) THEN
724 u_tagplas(1:nel) = 0
725 IF (logical_userl_avail)THEN
726 tt_local = tt
727 CALL eng_userlib_sigeps( mtn,
728 . llt ,npar,nuvar,nfunc,ifunc,
729 . npf ,tf ,tt_local,dt1,uparam,
730 . rho0,rho ,voln,eint,
731 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
732 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
733 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
734 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
735 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
736 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
737 . ssp ,vis ,uvar,off )
738
739 ELSE
740 ! ----------------
741 ! ERROR to be printed & exit
742 option='/MAT/LAW29 - SOLID '
743 size=len_trim(option)
744 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
745 CALL arret(2)
746 ! ----------------
747!!!
748 ENDIF
749 DO i=lft,llt
750 IF(u_tagplas(i)/=0)THEN
751 sigy(i)=u_yeld(i)
752 defp(i)=u_defp(i)
753 ELSE
754 sigy(i)=ep30
755 defp(i)=zero
756 END IF
757 END DO
758 ELSEIF(mtn == 30)THEN
759 u_tagplas(1:nel) = 0
760 IF (logical_userl_avail)THEN
761 tt_local = tt
762 CALL eng_userlib_sigeps( mtn,
763 . llt ,npar,nuvar,nfunc,ifunc,
764 . npf ,tf ,tt_local,dt1,uparam,
765 . rho0,rho ,voln,eint,
766 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
767 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
768 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
769 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
770 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
771 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
772 . ssp ,vis ,uvar,off )
773
774 ELSE
775 ! ----------------
776 ! ERROR to be printed & exit
777 option='/MAT/LAW30 - SOLID '
778 size=len_trim(option)
779 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
780 CALL arret(2)
781 ! ----------------
782!!!
783 ENDIF
784 DO i=lft,llt
785 IF(u_tagplas(i)/=0)THEN
786 sigy(i)=u_yeld(i)
787 defp(i)=u_defp(i)
788 ELSE
789 sigy(i)=ep30
790 defp(i)=zero
791 END IF
792 END DO
793 ELSEIF(mtn == 31)THEN
794 u_tagplas(1:nel) = 0
795 IF (logical_userl_avail)THEN
796 tt_local = tt
797 CALL eng_userlib_sigeps( mtn,
798 . llt ,npar,nuvar,nfunc,ifunc,
799 . npf ,tf ,tt_local,dt1,uparam,
800 . rho0,rho ,voln,eint,
801 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
802 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
803 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
804 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
805 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
806 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
807 . ssp ,vis ,uvar,off )
808
809 ELSE
810 ! ----------------
811 ! ERROR to be printed & exit
812 option='/MAT/LAW31 - SOLID '
813 size=len_trim(option)
814 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
815 CALL arret(2)
816 ! ----------------
817 ENDIF
818!
819 DO i=lft,llt
820 IF(u_tagplas(i)/=0)THEN
821 sigy(i)=u_yeld(i)
822 defp(i)=u_defp(i)
823 ELSE
824 sigy(i)=ep30
825 defp(i)=zero
826 END IF
827 END DO
828c----------------------------------------
829 ELSEIF(mtn == 99) THEN
830
831 IF(logical_userl_avail)THEN
832
833 IF (ismstr == 10) THEN
834 DO i=lft,llt
835 fpsxx(i) = one+mfxx(i)
836 fpsyy(i) = one+mfyy(i)
837 fpszz(i) = one+mfzz(i)
838 END DO
839 fpsxy = mfxy(1:mvsiz)
840 fpsyz = mfyz(1:mvsiz)
841 fpsxz = mfxz(1:mvsiz)
842 fpsyx = mfyx(1:mvsiz)
843 fpszy = mfzy(1:mvsiz)
844 fpszx = mfzx(1:mvsiz)
845 !------------
846 ! ORTHOTROPE
847 !------------
848 IF (isorth /= 0) THEN
849 CALL mreploc(
850 1 gama, r11, r12, r13,
851 2 r21, r22, r23, r31,
852 3 r32, r33, rx, ry,
853 4 rz, sx, sy, sz,
854 5 tx, ty, tz, nel,
855 6 jsph)
856 CALL mrotensns(lft,llt,
857 . fpsxx,fpsxy,fpsxz,
858 . fpsyx,fpsyy,fpsyz,
859 . fpszx,fpszy,fpszz,
860 . r11,r12,r13,
861 . r21,r22,r23,
862 . r31,r32,r33)
863 END IF ! ISORTH
864
865 CALL epsf2u(
866 1 llt ,fpsxx , fpsxy , fpsxz , fpsyx ,
867 2 fpsyy ,fpsyz , fpszx , fpszy , fpszz ,
868 3 upsxx ,upsyy , upszz , upsxy , upsyz ,
869 4 upsxz )
870
871 ELSE ! ISMSTR /= 10
872 fpsxx(1:mvsiz) = zero
873 fpsyy(1:mvsiz) = zero
874 fpszz(1:mvsiz) = zero
875 fpsxy(1:mvsiz) = zero
876 fpsyz(1:mvsiz) = zero
877 fpsxz(1:mvsiz) = zero
878 fpsyx(1:mvsiz) = zero
879 fpszy(1:mvsiz) = zero
880 fpszx(1:mvsiz) = zero
881 upsxx(1:mvsiz) = zero
882 upsyy(1:mvsiz) = zero
883 upszz(1:mvsiz) = zero
884 upsxy(1:mvsiz) = zero
885 upsyz(1:mvsiz) = zero
886 upsxz(1:mvsiz) = zero
887 END IF ! ISMSTR
888
889 ! Fill Structure in dynamical library
890 CALL eng_userlib_get_law_var(
891 * ncycle, imat,iptr, ipts,iptt,
892 * r11, r12, r13, r21, r22, r23, r31,
893 * r32, r33, so1, so2, so3, so4, so5,
894 * so6, ep1, ep2, ep3, ep4, ep5, ep6,
895 * es1, es2, es3, es4, es5, es6, de1,
896 * de2, de3, de4, de5, de6, rho0, s1,
897 * s2, s3, s4, s5, s6, sv1, sv2,
898 * sv3, sv4, sv5, sv6 )
899
900 IF (dlibtkvers >= 1301501260)THEN
901 siznul=0
902 CALL eng_userlib_get_law_var_2(
903 * fpsxx ,mvsiz ,fpsyy ,mvsiz ,
904 * fpszz ,mvsiz ,fpsxy ,mvsiz ,fpsyz ,mvsiz ,fpszx ,mvsiz,
905 * fpsyx ,mvsiz ,fpszy ,mvsiz ,fpsxz ,mvsiz ,upsxx ,mvsiz,
906 * upsyy ,mvsiz ,upszz ,mvsiz ,upsxy ,mvsiz ,upsyz ,mvsiz,
907 * upsxz ,mvsiz ,el_temp,nel ,dvol ,mvsiz ,el_bfrac,sizbfrac,
908 * el_tb ,siztb ,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
909 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
910 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
911 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
912 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
913 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
914 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
915 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
916 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
917 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
918 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
919 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
920 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
921 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
922 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
923 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
924 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
925 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
926 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
927 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul)
928 ENDIF
929
930 ! Call SIGEPS99 in dynamical user library
931 tt_local = tt
932 CALL eng_userlib_sigeps99(
933 * llt ,npar ,nuvar ,ilaw_user ,nfunc,
934 * ifunc ,npf ,tf ,tt_local ,dt1,
935 * uparam ,rho ,voln ,eint ,ngl ,
936 * ssp ,vis ,uvar ,off ,sigy ,
937 * defp )
938
939 ! Get back results from structure in user library
940 CALL eng_userlib_set_law_var(
941 * s1, s2, s3, s4, s5, s6,
942 * sv1, sv2, sv3,sv4, sv5, sv6,
943 * dpla )
944
945 IF(dlibtkvers >= 1301501260)THEN
946 siznul=0
947 CALL eng_userlib_set_law_var_2(el_temp,nel,el_bfrac,sizbfrac,
948 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
949 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
950 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
951 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
952 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
953 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
954 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
955 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
956 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
957 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
958 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
959 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
960 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
961 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
962 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
963 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
964 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
965 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
966 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
967 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
968 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
969 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
970 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
971 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul )
972
973 IF (sizbfrac > 0) THEN
974 ! set in element buffer the updated burn fraction for high explosive
975 elbuf_tab(ng)%GBUF%BFRAC(1:nel) = el_bfrac(1:nel)
976 ENDIF
977
978 ENDIF
979!
980 ELSE ! USERL_AVAIL = 0
981!
982 ! ----------------
983 ! ERROR to be printed & exit
984 CALL nolib_usermat99(ilaw_user, iuser_key)
985 option='/MAT/'//iuser_key//' - SOLID'
986 size=len_trim(option)
987 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
988 CALL arret(2)
989 ! ----------------
990 ENDIF ! USERL_AVAIL
991c
992#ifdef DNC
993 ELSE IF (mtn == 200) THEN ! MDS MATERIAL LAW INTERFACE (in construction)
994
995 IF(mds_avail == 1 )THEN
996 ALLOCATE(ismstr10_fp(15,nel))
997
998 CALL sreploc3(
999 1 rx, ry, rz, sx,
1000 2 sy, sz, tx, ty,
1001 3 tz, r11, r21, r31,
1002 4 r12, r22, r32, r13,
1003 5 r23, r33, llt)
1004
1005
1006 IF (ismstr == 10) THEN
1007 DO i=lft,llt
1008 fpsxx(i) = one+mfxx(i)
1009 fpsyy(i) = one+mfyy(i)
1010 fpszz(i) = one+mfzz(i)
1011 END DO
1012 fpsxy = mfxy(1:mvsiz)
1013 fpsyz = mfyz(1:mvsiz)
1014 fpsxz = mfxz(1:mvsiz)
1015 fpsyx = mfyx(1:mvsiz)
1016 fpszy = mfzy(1:mvsiz)
1017 fpszx = mfzx(1:mvsiz)
1018C---------------------------
1019C ORTHOTROPE
1020C---------------------------
1021
1022! ISMSTR10_FP( 1,1) = FPSXX(1:MVSIZ)
1023! ISMSTR10_FP( 2,1) = FPSYY(1:MVSIZ)
1024! ISMSTR10_FP( 3,1) = FPSZZ(1:MVSIZ)
1025! ISMSTR10_FP( 4,1) = FPSXY(1:MVSIZ)
1026! ISMSTR10_FP( 5,1) = FPSYZ(1:MVSIZ)
1027! ISMSTR10_FP( 6,1) = FPSXZ(1:MVSIZ)
1028! ISMSTR10_FP( 7,1) = FPSYX(1:MVSIZ)
1029! ISMSTR10_FP( 8,1) = FPSZY(1:MVSIZ)
1030! ISMSTR10_FP( 9,1) = FPSZX(1:MVSIZ)
1031! ISMSTR10_FP(10,1) = UPSXX(1:MVSIZ)
1032! ISMSTR10_FP(11,1) = UPSYY(1:MVSIZ)
1033! ISMSTR10_FP(12,1) = UPSZZ(1:MVSIZ)
1034! ISMSTR10_FP(13,1) = UPSXY(1:MVSIZ)
1035! ISMSTR10_FP(14,1) = UPSYZ(1:MVSIZ)
1036! ISMSTR10_FP(15,1) = UPSXZ(1:MVSIZ)
1037
1038 IF (isorth /= 0) THEN
1039 CALL mreploc(
1040 1 gama, r11, r12, r13,
1041 2 r21, r22, r23, r31,
1042 3 r32, r33, rx, ry,
1043 4 rz, sx, sy, sz,
1044 5 tx, ty, tz, nel,
1045 6 jsph)
1046 CALL mrotensns(lft,llt,
1047 . ismstr10_fp(1,1),ismstr10_fp(2,1),ismstr10_fp(3,1),
1048 . ismstr10_fp(4,1),ismstr10_fp(5,1),ismstr10_fp(6,1),
1049 . ismstr10_fp(7,1),ismstr10_fp(8,1),ismstr10_fp(9,1),
1050 . r11,r12,r13,
1051 . r21,r22,r23,
1052 . r31,r32,r33)
1053 END IF !(ISORTH /= 0) THEN
1054 CALL epsf2u(
1055 1 llt ,
1056 * ismstr10_fp( 1,1), ismstr10_fp( 4,1), ismstr10_fp( 6,1), ismstr10_fp( 7,1),
1057 * ismstr10_fp( 2,1), ismstr10_fp( 5,1), ismstr10_fp( 9,1), ismstr10_fp( 8,1),ismstr10_fp( 3,1),
1058 * ismstr10_fp(10,1), ismstr10_fp(11,1), ismstr10_fp(12,1), ismstr10_fp(13,1),ismstr10_fp(14,1),
1059 * ismstr10_fp(15,1) )
1060
1061 ELSE ! (ISMSTR == 10)
1062 ismstr10_fp( 1,1) = zero
1063 ismstr10_fp( 2,1) = zero
1064 ismstr10_fp( 3,1) = zero
1065 ismstr10_fp( 4,1) = zero
1066 ismstr10_fp( 5,1) = zero
1067 ismstr10_fp( 6,1) = zero
1068 ismstr10_fp( 7,1) = zero
1069 ismstr10_fp( 8,1) = zero
1070 ismstr10_fp( 9,1) = zero
1071 ismstr10_fp(10,1) = zero
1072 ismstr10_fp(11,1) = zero
1073 ismstr10_fp(12,1) = zero
1074 ismstr10_fp(13,1) = zero
1075 ismstr10_fp(14,1) = zero
1076 ismstr10_fp(15,1) = zero
1077 END if! (ismstr == 10)
1078
1079
1080 CALL eng_mds_sigeps_s( ncycle ,imat, ngl,nel ,
1081 * iptr , ipts , iptt , npar ,nuvar ,nfunc ,ifunc ,
1082 * npf , tf , tt , dt1 , uparam , uvar ,
1083 * rho0 , rho , voln , eint , el_temp , amu ,
1084 * ep1 , ep2 , ep3 , ep4 , ep5 , ep6 ,
1085 * de1 , de2 , de3 , de4 , de5 , de6 ,
1086 * es1 , es2 , es3 , es4 , es5 , es6 ,
1087 * so1 , so2 , so3 , so4 , so5 , so6 ,
1088 * s1 , s2 , s3 , s4 , s5 , s6 ,
1089 * sv1 , sv2 , sv3 , sv4 , sv5 , sv6 ,
1090 * ssp , vis , off , r11 , r12 , r13 ,
1091 * r21 , r22 , r23 , r31 , r32 , r33 ,
1092 * ismstr , ismstr10_fp ,defp , dpla , sigy ,
1093 * additional_flt_parameters, additional_int_parameters )
1094C
1095 ELSE
1096 CALL mds_userlib_name_get(mds_libname,length)
1097 CALL ancmsg(msgid=287,anmode=aninfo,
1098 . c1=mds_libname(1:length))
1099 CALL arret(2)
1100 ENDIF
1101#endif
1102 ENDIF ! MTN
1103C=======================================================================
1104C FAILURE MODEL
1105C=======================================================================
1106 IF ((itask==0).AND.(imon_mat==1))CALL startime(timers,121)
1107 IF (nfail > 0) THEN
1108c
1109 ! Failure criterion parameters scaling
1110 IF (inloc > 0) THEN
1111 ! -> Length used for failure criterion parameters scaling is LE_MAX
1112 le_max(1:nel) = nloc_dmg%LE_MAX(mat(1))
1113 el_len => le_max(1:nel)
1114 ELSE
1115 ! -> Length used for failure criterion parameters scaling is LE_MAX
1116 el_len => deltax(1:nel)
1117 ENDIF
1118c
1119 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1120C for non-local plastic law
1121 IF (inloc > 0) THEN
1122 DO i=lft,llt
1123 dpla(i) = max(varnl(i),zero)
1124 ENDDO
1125 el_pla => lbuf%PLANL(1:nel)
1126 ELSE
1127C for all plastic law
1128 DO i=lft,llt
1129 dpla(i) = defp(i) - defp0(i)
1130 ENDDO
1131 el_pla => defp(1:nel)
1132 ENDIF
1133 ELSE
1134 DO i=lft,llt
1135 dpla(i) = zero
1136 ENDDO
1137 ENDIF
1138c
1139 DO ir = 1,nfail
1140C------
1141 DO i=lft,llt
1142 dav = (ep1(i)+ep2(i)+ep3(i))*third
1143 e1 = ep1(i) - dav
1144 e2 = ep2(i) - dav
1145 e3 = ep3(i) - dav
1146 e4 = half*ep4(i)
1147 e5 = half*ep5(i)
1148 e6 = half*ep6(i)
1149 epsp1(i) =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
1150 epsp1(i) = sqrt(three*epsp1(i))*two_third
1151 ENDDO
1152C------------------------------------------------------------
1153C Recovering non-local plastic strain-rate
1154C------------------------------------------------------------
1155 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1156 IF (inloc > 0) THEN
1157 DO i = lft,llt
1158 epsp1(i) = lbuf%EPSDNL(i)
1159 ENDDO
1160 ENDIF
1161 ENDIF
1162c----
1163 uvarf => fbuf%FLOC(ir)%VAR
1164 irupt = fbuf%FLOC(ir)%ILAWF
1165 nvarf = fbuf%FLOC(ir)%NVAR
1166 dfmax => fbuf%FLOC(ir)%DAMMX
1167 damini => fbuf%FLOC(ir)%DAMINI
1168 tdel => fbuf%FLOC(ir)%TDEL
1169 fld_idx => fbuf%FLOC(ir)%INDX
1170 foff => fbuf%FLOC(ir)%OFF
1171 dam => fbuf%FLOC(ir)%DAM
1172 lf_dammx = fbuf%FLOC(ir)%LF_DAMMX
1173c
1174 failparam => mat_elem%MAT_PARAM(mx)%FAIL(ir)
1175 npar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NUPARAM
1176 nipar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NIPARAM
1177 uparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%UPARAM(1:npar)
1178 iparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IPARAM(1:nipar)
1179 nfunc = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NFUNC
1180 ifunc => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IFUNC(1:nfunc)
1181 ntabl_fail = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NTABLE
1182 itabl_fail => mat_elem%MAT_PARAM(mx)%FAIL(ir)%TABLE(1:ntabl_fail)
1183c----
1184 IF (irupt == 1)THEN
1185C---- Johnson cook
1186 CALL fail_johnson(llt ,npar,nvarf,
1187 2 tt ,dt1 ,uparamf,ngl ,
1188 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1189 5 dpla,epsp1,tstar,uvarf,off,
1190 6 dfmax,tdel )
1191 ELSEIF (irupt == 2) THEN
1192C Tuler Butcher
1193 CALL fail_tbutcher_s(llt ,npar,nvarf,
1194 2 tt ,dt1 ,uparamf,ngl ,
1195 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1196 5 uvarf,off ,dfmax,tdel )
1197 ELSEIF (irupt == 3) THEN
1198C wilkins
1199 CALL fail_wilkins_s(llt ,npar,nuvarr,
1200 2 tt ,dt1 ,uparamf,ngl ,
1201 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1202 5 dpla,uvarf,off,dfmax,tdel )
1203 ELSEIF (irupt == 4)THEN
1204C user1
1205 IF (logical_userl_avail)THEN
1206 user_uelr(1:llt)=gbuf%UELR(1:llt)
1207
1208 tt_local = tt
1209 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1210 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1211 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1212 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1213 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1214 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1215 7 defp ,dpla,epsp1,uvarf,off ,
1216 8 deltax,voln,user_uelr,dfmax,bidon5)
1217 gbuf%UELR(1:llt) = user_uelr(1:llt)
1218 ELSE
1219! CALL f04law(llt ,npar,nuvarr,nfunc,ifunc,
1220! 2 NPF ,TF ,TT ,DT1 ,UPARAMF,
1221! 3 NGL ,IBIDON1,IBIDON2,IBIDON3 ,IBIDON4,
1222! 4 EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1223! 5 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1224! 6 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1225! 7 DEFP ,DPLA,EPSP1,UVARF,OFF ,
1226! 8 DELTAX,VOLN,GBUF%UELR,DFMAX,BIDON5)
1227!!!
1228 ! ----------------
1229 ! ERROR to be printed & exit
1230 option='/FAIL/USER1 - SOLID '
1231 size=len_trim(option)
1232 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1233 CALL arret(2)
1234 ! ----------------
1235!!!
1236 ENDIF
1237 ELSEIF (irupt == 5)THEN
1238C user2
1239 IF (logical_userl_avail)THEN
1240 tt_local = tt
1241 user_uelr(1:llt)=gbuf%UELR(1:llt)
1242 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1243 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1244 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1245 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1246 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1247 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1248 7 defp ,dpla,epsp1,uvarf,off ,
1249 8 deltax,voln,user_uelr,dfmax,bidon5)
1250 gbuf%UELR(1:llt) = user_uelr(1:llt)
1251 ELSE
1252! CALL F05LAW(LLT ,NPAR,NUVARR,NFUNC,IFUNC,
1253! 2 NPF ,TF ,TT ,DT1 ,UPARAMF,
1254! 3 NGL ,IBIDON1,IBIDON2,IBIDON3 ,IBIDON4,
1255! 4 EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1256! 5 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1257! 6 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1258! 7 DEFP ,DPLA,EPSP1,UVARF,OFF ,
1259! 8 DELTAX ,VOLN,GBUF%UELR,DFMAX,BIDON5)
1260!!!
1261 ! ----------------
1262 ! ERROR to be printed & exit
1263 option='/FAIL/USER2 - SOLID '
1264 size=len_trim(option)
1265 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1266 CALL arret(2)
1267 ! ----------------
1268!!!
1269 ENDIF
1270 ELSEIF (irupt == 6)THEN
1271C user3
1272 IF (logical_userl_avail)THEN
1273 tt_local = tt
1274 user_uelr(1:llt)=gbuf%UELR(1:llt)
1275 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1276 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1277 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1278 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1279 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1280 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1281 7 defp ,dpla,epsp1,uvarf,off ,
1282 8 deltax,voln,user_uelr,dfmax,bidon5)
1283 gbuf%UELR(1:llt) = user_uelr(1:llt)
1284 ELSE
1285! CALL F06LAW(LLT ,NPAR,NUVARR,NFUNC,IFUNC,
1286! 2 NPF ,TF ,TT ,DT1 ,UPARAMF,
1287! 3 NGL ,IBIDON1,IBIDON2,IBIDON3 ,IBIDON4,
1288! 4 EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1289! 5 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1290! 6 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1291! 7 DEFP ,DPLA,EPSP1,UVARF,OFF ,
1292! 8 DELTAX,VOLN,GBUF%UELR,DFMAX,BIDON5)
1293!!!
1294 ! ----------------
1295 ! ERROR to be printed & exit
1296 option='/FAIL/USER3 - SOLID '
1297 size=len_trim(option)
1298 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1299 CALL arret(2)
1300 ! ----------------
1301!!!
1302 ENDIF
1303 ELSEIF (irupt == 7)THEN
1304 ELSEIF (irupt == 8)THEN
1305C---- Johnson cook + spalling
1306 CALL fail_spalling_s(llt ,npar,
1307 2 tt ,uparamf,ngl ,
1308 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1309 5 dpla,epsp1,tstar,off ,
1310 6 lf_dammx ,dfmax,tdel ,offg ,
1311 7 nipar ,iparamf,mvsiz)
1312 ELSEIF (irupt == 9)THEN
1313C---- wierzbicki
1314 CALL fail_wierzbicki_s(llt ,npar,nuvarr,
1315 2 tt ,dt1 ,uparamf,ngl ,
1316 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1317 5 dpla,defp,uvarf,off ,dfmax,
1318 6 tdel )
1319 ELSEIF (irupt == 10)THEN
1320C---- strain tension
1321 CALL fail_tensstrain_s(llt ,npar,nvarf,nfunc,ifunc ,
1322 2 npf ,tf ,tt ,dt1 ,uparamf,
1323 3 ngl ,deltax ,tstar ,ismstr,
1324 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1325 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1326 6 epsp1,uvarf,off ,dfmax,tdel ,
1327 7 mfxx ,mfxy ,mfxz ,mfyx ,mfyy ,mfyz ,
1328 8 mfzx ,mfzy ,mfzz ,lbuf%DMGSCL)
1329 ELSEIF (irupt == 11)THEN
1330C---- energy failure
1331 CALL fail_energy_s(
1332 1 nel ,npar ,nvarf ,nfunc ,ifunc ,npf ,
1333 2 tf ,tt ,dt1 ,uparamf ,ngl ,epsp1 ,
1334 3 uvarf ,off ,dfmax ,tdel ,lbuf%DMGSCL,
1335 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1336 5 de1 ,de2 ,de3 ,de4 ,de5 ,de6 )
1337 ELSEIF (irupt == 13) THEN
1338C---- chang - chang
1339 CALL fail_changchang_s(
1340 1 nel ,npar ,nvarf ,uparamf ,uvarf ,
1341 2 tt ,ipg ,ilay ,npg ,ngl ,
1342 3 lbuf%DMGSCL,dfmax ,off ,lbuf%OFF ,gbuf%NOFF,
1343 4 s1 ,s2 ,s3 ,s4 ,s6 ,
1344 5 tdel ,lf_dammx )
1345 ELSEIF(irupt == 14)THEN
1346c --- Hashin failure model
1347 DO i=1,nel
1348 epsp1(i) = max(abs(ep1(i)),abs(ep2(i)),abs(ep3(i)),em20)
1349 ENDDO
1350 CALL fail_hashin_s(
1351 1 nel ,nvarf ,ilay ,npg ,tt ,
1352 2 dt1 ,uparamf ,ngl ,off ,gbuf%NOFF,
1353 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1354 4 uvarf ,npar ,dfmax ,tdel ,epsp1 ,lf_dammx )
1355 ELSEIF(irupt == 16)THEN
1356c --- modified Puck failure model
1357 CALL fail_puck_s(
1358 1 nel ,nvarf ,ilay ,npg ,tt ,
1359 2 dt1 ,uparamf ,ngl ,off ,gbuf%NOFF,
1360 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1361 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel )
1362 ELSEIF (irupt == 23) THEN
1363C---- tabulated failure model
1364 CALL fail_tab_s(
1365 1 llt ,nvarf ,npf ,tf ,tt ,
1366 2 uparamf ,ngl ,el_len ,
1367 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1368 4 dpla ,epsp1 ,tstar ,uvarf ,ntabl_fail,itabl_fail,
1369 5 off ,table ,dfmax ,tdel ,nfunc ,ifunc )
1370 ELSEIF (irupt == 24) THEN
1371c --- Orthotropic strain failure
1372 CALL fail_orthstrain(
1373 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1374 2 npf ,tf ,tt ,dt1 ,uparamf ,ismstr ,
1375 3 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1376 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1377 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1378 6 uvarf ,off ,ipg ,ngl ,dfmax ,tdel ,
1379 7 gbuf%UELR,npg ,deltax ,lf_dammx )
1380 ELSEIF (irupt == 27) THEN
1381c --- extended mohr coulomb failure model
1382 CALL fail_emc(
1383 1 llt ,nvarf ,tt ,
1384 2 dt1 ,uparamf ,ngl ,
1385 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1386 4 defp ,dpla ,epsp1 ,uvarf ,
1387 5 off ,dfmax ,tdel )
1388 ELSEIF (irupt == 29) THEN
1389c --- MIT Wierzbicki Sahraei electric battery failure
1390 CALL fail_sahraei_s(
1391 1 llt ,nfunc ,ifunc ,npf ,tf ,
1392 2 tt ,ngl ,uparamf ,
1393 3 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1394 4 off ,dfmax ,tdel ,deltax ,
1395 5 nvarf ,uvarf )
1396 ELSEIF (irupt == 30) THEN
1397c --- Biquadratic failure model
1398 CALL fail_biquad_s(
1399 1 llt ,npar ,nvarf ,nfunc ,ifunc ,el_len ,
1400 2 npf ,tf ,tt ,uparamf ,tdel ,
1401 3 ngl ,dpla ,uvarf ,off ,dfmax ,lbuf%DMGSCL,
1402 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 )
1403 ELSEIF (irupt == 33) THEN
1404c --- Mullins Ogden-Roxburgh damage model
1405 CALL fail_mullins_or_s(
1406 1 llt ,npar ,nvarf ,
1407 2 tt ,dt1 ,uparamf ,ngl ,
1408 3 s1 ,s2 ,s3 ,s4 ,
1409 4 s5 ,s6 ,uvarf ,off ,
1410 5 dfmax ,lbuf%EPSA)
1411 ELSEIF (irupt == 34) THEN
1412C --- Cockroft-Latham failure model
1413 CALL fail_cockroft_s(llt ,npar ,nvarf,
1414 1 tt ,dt1 ,uparamf ,ngl ,
1415 3 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1416 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1417 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1418 6 defp ,dpla ,epsp ,uvarf ,off ,
1419 7 dfmax ,tdel )
1420 ELSEIF (irupt == 36) THEN
1421C --- VISUAL failure model
1422 CALL fail_visual_s(
1423 . llt ,npar ,nvarf ,tt ,dt1 ,uparamf,
1424 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1425 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1426 . uvarf ,off ,ngl ,dfmax ,ismstr )
1427c
1428 ELSEIF (irupt == 37) THEN
1429c --- tabulated failure model (old, obsolete version)
1430 CALL fail_tab_old_s(
1431 1 llt ,nvarf ,npf ,tf ,tt ,
1432 2 uparamf ,ngl ,el_len ,
1433 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1434 4 defp ,dpla ,epsp1 ,tstar ,uvarf ,
1435 5 off ,dfmax ,tdel ,
1436 6 nfunc ,ifunc )
1437c
1438 ELSEIF (irupt == 38) THEN
1439c --- Orthotropic biquadratic failure model
1440 CALL fail_orthbiquad_s(
1441 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1442 2 npf ,tf ,tt ,dt1 ,uparamf ,
1443 3 ngl ,dpla ,epsp1 ,uvarf ,off ,
1444 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1445 5 dfmax ,tdel ,el_len )
1446c
1447 ELSEIF (irupt == 39) THEN
1448c --- GENE1 failure model
1449 CALL fail_gene1_s(
1450 1 llt ,npar ,nvarf ,nfunc ,ifunc ,lbuf%OFF ,
1451 2 npf ,tf ,tt ,dt1 ,uparamf ,ipg ,
1452 3 ngl ,gbuf%DT ,epsp1 ,uvarf ,off ,npg ,
1453 4 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1454 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1455 6 el_temp ,voln ,dfmax ,tdel ,deltax ,table ,
1456 7 ir ,elbuf_tab(ng),ilay ,ntabl_fail,itabl_fail,lf_dammx,
1457 8 nipar ,iparamf )
1458c
1459 ELSEIF (irupt == 40) THEN
1460c --- RTCL failure model
1461 CALL fail_rtcl_s(
1462 1 llt ,npar ,nvarf ,tt ,dt1 ,uparamf ,
1463 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1464 3 ngl ,dpla ,uvarf ,off ,dfmax ,tdel )
1465c
1466 ELSEIF (irupt == 41) THEN
1467C---- Tabulated failure model version 2
1468 CALL fail_tab2_s(
1469 1 llt ,npar ,nvarf ,nfunc ,ifunc ,
1470 2 npf ,table ,tf ,tt ,uparamf ,
1471 3 ngl ,el_len ,dpla ,epsp1 ,uvarf ,
1472 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1473 6 el_temp ,off ,dfmax ,tdel ,lbuf%DMGSCL,
1474 7 gbuf%UELR,ipg ,npg ,lbuf%OFF ,ntabl_fail,itabl_fail,
1475 8 gbuf%NOFF,voln )
1476c
1477 ELSEIF (irupt == 42) THEN
1478C---- Inievo failure model
1479 CALL fail_inievo_s(
1480 1 nel ,npar ,nvarf ,
1481 2 table ,ntabl_fail,itabl_fail,tt ,uparamf ,
1482 3 ngl ,el_len ,dpla ,epsp1 ,uvarf ,
1483 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1484 6 el_pla ,el_temp ,sigy ,off ,dfmax ,
1485 7 tdel ,lbuf%DMGSCL,gbuf%UELR,ipg ,npg ,
1486 8 lbuf%OFF ,damini ,gbuf%VOL ,inloc )
1487c
1488 ELSEIF (irupt == 43) THEN
1489c --- Syazwan failure model
1490 CALL fail_syazwan_s(
1491 1 nel ,uparamf ,npar ,uvarf ,nvarf ,
1492 2 tt ,ngl ,ipg ,dpla ,tdel ,
1493 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1494 4 dfmax ,nfunc ,ifunc ,el_len ,off ,
1495 5 npf ,tf ,gbuf%UELR,npg ,lbuf%OFF)
1496 ELSEIF (irupt == 44) THEN
1497C---- Tsai-Wu failure model
1498 CALL fail_tsaiwu_s(
1499 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1500 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1501 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1502 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1503c
1504 ELSEIF (irupt == 45) THEN
1505C---- Tsai-Hill failure model
1506 CALL fail_tsaihill_s(
1507 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1508 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1509 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1510 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1511c
1512 ELSEIF (irupt == 46) THEN
1513C---- Hoffman failure model
1514 CALL fail_hoffman_s(
1515 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1516 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1517 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1518 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1519c
1520 ELSEIF (irupt == 47) THEN
1521C---- Maximum strain failure model
1522 CALL fail_maxstrain_s(
1523 1 nel ,nvarf ,ipg ,ilay ,npg ,tt ,
1524 2 dt1 ,uparamf ,ngl ,off ,lbuf%OFF ,gbuf%NOFF,
1525 3 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1526 4 uvarf ,npar ,dfmax ,lf_dammx ,tdel ,lbuf%DMGSCL)
1527c
1528 ELSEIF (irupt == 48) THEN
1529c---- Orthotropic energy failure
1530 CALL fail_orthenerg_s(
1531 1 nel ,npar ,nvarf ,uparamf ,uvarf ,ngl ,
1532 2 npg ,ipg ,ilay ,off ,lbuf%OFF ,gbuf%NOFF,
1533 3 de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
1534 5 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1535 6 tt ,tdel ,dfmax ,deltax ,lbuf%DMGSCL)
1536c
1537 ELSEIF (irupt == 50) THEN
1538c---- Lemaitre damage model
1539 CALL fail_lemaitre_s(
1540 1 nel ,npar ,uparamf ,tt,ngl,mat_elem%MAT_PARAM(mx),
1541 2 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1542 3 dpla ,el_pla ,lbuf%OFF ,off ,dfmax ,tdel ,
1543 4 nipar ,iparamf ,lbuf%DMGSCL,gbuf%NOFF,npg )
1544c
1545 ELSEIF (irupt == 51) THEN
1546c---- Composite failure model
1547 CALL fail_composite_s(
1548 1 nel ,failparam,nvarf ,uvarf ,tt ,ngl ,
1549 2 ipg ,ilay ,npg ,tdel ,off ,lbuf%OFF ,
1550 3 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1551 4 lbuf%DMGSCL,lf_dammx,dfmax ,gbuf%NOFF)
1552c
1553 ENDIF
1554 ENDDO ! IR = 1,NFAIL
1555 ENDIF ! NFAIL
1556 IF ((itask==0).AND.(imon_mat==1))CALL stoptime(timers,121)
1557C-----------------------------------------------------------------------
1558C viscous stress (/VISC models + Damping frequency range)
1559C-----------------------------------------------------------------------
1560 IF ((mat_elem%MAT_PARAM(mat(1))%IVISC > 0).OR.(idamp_freq_range > 0)) THEN
1561 CALL viscmain(mat_elem%MAT_PARAM(mat(1))%VISC ,nel ,
1562 . nvarvis ,vbuf%VAR,rho0 ,vis ,ssp ,dt1 ,
1563 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1564 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
1565 . svo1 ,svo2 ,svo3 ,svo4 ,svo5 ,svo6 ,
1566 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
1567 . mfxx ,mfxy ,mfxz ,mfyx ,mfyy ,mfyz ,
1568 . mfzx ,mfzy ,mfzz ,
1569 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1570 . damp_buf,idamp_freq_range,mvsiz,et,mat_elem%MAT_PARAM(imat)%YOUNG,
1571 . mat_elem%MAT_PARAM(imat)%SHEAR,mat_elem%MAT_PARAM(mat(1))%IVISC)
1572 ENDIF
1573C---------------------------
1574C
1575C calcul of viscosity ( Navier-Stokes)
1576C
1577 IF (isvis > 0) THEN
1578 CALL nsvisul(llt ,off ,rho ,geo ,
1579 2 pid ,ssp ,aire ,voln ,ep1 ,
1580 3 ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1581 4 sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,
1582 5 sv6 ,s3 ,es3 ,rho0 ,rhoref )
1583 ENDIF
1584c--------------------------------------------------------
1585c Shooting nodes algorithm activation
1586c--------------------------------------------------------
1587 DO i = 1,nel
1588 IF ((off_old(i) > zero) .AND. (off(i) == zero)) THEN
1589 idel7nok = 1
1590 ENDIF
1591 ENDDO
1592c--------------------------------------------------------
1593c DAMAGED STRESSES
1594c---------------------------------------------------------
1595 ! -> Isotropic stress softening
1596 IF (dmg_flag == 1) THEN
1597 DO i = 1,nel
1598 s1(i) = s1(i)*lbuf%DMGSCL(i)
1599 s2(i) = s2(i)*lbuf%DMGSCL(i)
1600 s3(i) = s3(i)*lbuf%DMGSCL(i)
1601 s4(i) = s4(i)*lbuf%DMGSCL(i)
1602 s5(i) = s5(i)*lbuf%DMGSCL(i)
1603 s6(i) = s6(i)*lbuf%DMGSCL(i)
1604 ENDDO
1605 ! -> Orthotropic stress softening
1606 ELSEIF (dmg_flag == 6) THEN
1607 DO i = 1,nel
1608 s1(i) = s1(i)*lbuf%DMGSCL(i+nel*(1-1))
1609 s2(i) = s2(i)*lbuf%DMGSCL(i+nel*(2-1))
1610 s3(i) = s3(i)*lbuf%DMGSCL(i+nel*(3-1))
1611 s4(i) = s4(i)*lbuf%DMGSCL(i+nel*(4-1))
1612 s5(i) = s5(i)*lbuf%DMGSCL(i+nel*(5-1))
1613 s6(i) = s6(i)*lbuf%DMGSCL(i+nel*(6-1))
1614 ENDDO
1615 ENDIF
1616c---------------------------------------------------------
1617 IF (isorth /= 0) THEN
1618 if (jcvt == 0) then
1619 DO i=1,nel
1620 sigl(i,1) = s1(i)*off(i)
1621 sigl(i,2) = s2(i)*off(i)
1622 sigl(i,3) = s3(i)*off(i)
1623 sigl(i,4) = s4(i)*off(i)
1624 sigl(i,5) = s5(i)*off(i)
1625 sigl(i,6) = s6(i)*off(i)
1626 sv1(i) = sv1(i)*off(i)
1627 sv2(i) = sv2(i)*off(i)
1628 sv3(i) = sv3(i)*off(i)
1629 sv4(i) = sv4(i)*off(i)
1630 sv5(i) = sv5(i)*off(i)
1631 sv6(i) = sv6(i)*off(i)
1632 ENDDO
1633!
1634 call mrotens(1,nel,
1635 & s1 ,s2 ,s3 , s4 ,s5 ,s6 ,
1636 & r11,r21,r31,
1637 & r12,r22,r32,
1638 & r13,r23,r33)
1639 call mrotens(1,nel,
1640 & sv1 ,sv2 ,sv3 , sv4 ,sv5 ,sv6 ,
1641 & r11,r21,r31,
1642 & r12,r22,r32,
1643 & r13,r23,r33)
1644 else ! jcvt > 0
1645 DO i=1,nel
1646 sv1(i) = sv1(i)*off(i)
1647 sv2(i) = sv2(i)*off(i)
1648 sv3(i) = sv3(i)*off(i)
1649 sv4(i) = sv4(i)*off(i)
1650 sv5(i) = sv5(i)*off(i)
1651 sv6(i) = sv6(i)*off(i)
1652 ENDDO
1653 end if
1654 END IF
1655!
1656 DO i=1,nel
1657 sig(i,1) = s1(i)*off(i)
1658 sig(i,2) = s2(i)*off(i)
1659 sig(i,3) = s3(i)*off(i)
1660 sig(i,4) = s4(i)*off(i)
1661 sig(i,5) = s5(i)*off(i)
1662 sig(i,6) = s6(i)*off(i)
1663 svis(i,1) = sv1(i)*off(i)
1664 svis(i,2) = sv2(i)*off(i)
1665 svis(i,3) = sv3(i)*off(i)
1666 svis(i,4) = sv4(i)*off(i)
1667 svis(i,5) = sv5(i)*off(i)
1668 svis(i,6) = sv6(i)*off(i)
1669 ENDDO
1670C
1671C isvis for outp
1672C
1673 visctype = mat_elem%MAT_PARAM(mat(1))%IVISC
1674 IF (isvis > 0 .OR. visctype == 1 .OR. visctype == 3) THEN
1675 DO i=1,nel
1676 sigv(i,1) = svis(i,1)
1677 sigv(i,2) = svis(i,2)
1678 sigv(i,3) = svis(i,3)
1679 sigv(i,4) = svis(i,4)
1680 sigv(i,5) = svis(i,5)
1681 sigv(i,6) = svis(i,6)
1682 ENDDO
1683 ENDIF
1684 IF (mat_elem%MAT_PARAM(mat(1))%IVISC > 0) THEN
1685 DO i=1,nel
1686 svisc(i,1) = svis(i,1)
1687 svisc(i,2) = svis(i,2)
1688 svisc(i,3) = svis(i,3)
1689 svisc(i,4) = svis(i,4)
1690 svisc(i,5) = svis(i,5)
1691 svisc(i,6) = svis(i,6)
1692 ENDDO
1693 ENDIF
1694C------------------------------------------------------------
1695C Variable to regularize with Non-local
1696C------------------------------------------------------------
1697 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0) THEN
1698 IF (inloc > 0) THEN
1699 DO i=lft,llt
1700 IF (off(i) == one) THEN
1701 varnl(i) = defp(i)
1702 ELSE
1703 varnl(i) = zero
1704 ENDIF
1705 ENDDO
1706 ENDIF
1707 ENDIF
1708C------------------------------------------------------------
1709C DEFINE SOUND SPEED (IN ALL CASE)
1710C DEFINE DYNAMIC VISCOSITY (FOR VISCOUS LAW)
1711C-----------------------
1712 DO i=lft,llt
1713 IF (ssp(i) == zero) ssp(i)=sqrt(c1(i)/rho0(i))
1714 ENDDO
1715C-------------------------------------------
1716C BULK VISCOSITY AND TIME STEP COMPUTATION
1717C THIS SUBROUTINE RETURN THE NEW BULK VISCOSITY Q
1718C-----------------------
1719 IF (jsph == 0)THEN
1720 jsms = iparg(52,ng)
1721 CALL mqviscb(
1722 1 pm, off, rho, bid1,
1723 2 el_temp, ssp, bid3, stifn,
1724 3 dt2t, neltst, ityptst, aire,
1725 4 offg, geo, pid, voln,
1726 5 vd2, deltax, vis, d1,
1727 6 d2, d3, pnew, psh,
1728 7 mat, ngl, q, ssp_eq,
1729 8 vol, mssa, dmels, igeo,
1730 9 facq0, conde, gbuf%DT, gbuf%G_DT,
1731 a ipm, rhoref, rhosp, nel,
1732 b ity, ismstr, jtur, jthe,
1733 c jsms, npg , glob_therm)
1734!------------------------------------------------
1735 ELSE
1736 CALL mdtsph(
1737 1 pm, off, rho, bid1,
1738 2 el_temp, bid3, stifn, dt2t,
1739 3 neltst, ityptst, offg, geo,
1740 4 pid, mumax, ssp, voln,
1741 5 vd2, deltax, vis, d1,
1742 6 d2, d3, pnew, psh,
1743 7 mat, ngl, q, ssp_eq,
1744 8 gbuf%G_DT,gbuf%DT, nel, ity,
1745 9 jtur, jthe)
1746 ENDIF
1747C-----------
1748 DO i=lft,llt
1749 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))* third
1750 e1 = d1(i)*(sold1(i)+sig(i,1) + p2+two*svis(i,1))
1751 e2 = d2(i)*(sold2(i)+sig(i,2) + p2+two*svis(i,2))
1752 e3 = d3(i)*(sold3(i)+sig(i,3) + p2+two*svis(i,3))
1753 e4 = d4(i)*(sold4(i)+sig(i,4) + two*svis(i,4))
1754 e5 = d5(i)*(sold5(i)+sig(i,5) + two*svis(i,5))
1755 e6 = d6(i)*(sold6(i)+sig(i,6) + two*svis(i,6))
1756 einc = vol_avg(i)*dt1 * (e1+e2+e3+e4+e5+e6+e7(i))
1757 . - dvol(i)*(q(i) + qold(i) + p2)
1758 eint(i) = eint(i) + off(i)*einc*half
1759 END DO
1760 qold(lft:llt) = q(lft:llt)
1761
1762C------------------------------------------
1763 RETURN
#define my_real
Definition cppsort.cpp:32
if(complex_arithmetic) id
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_changchang_s(nel, nuparam, nuvar, uparam, uvar, time, ip, ilay, npg, ngl, dmg_scale, dfmax, off, loff, noff, signxx, signyy, signzz, signxy, signzx, tdele, lf_dammx)
subroutine fail_cockroft_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, pla, dpla, epsp, uvar, off, dfmax, tdele)
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_energy_s(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ngl, epsp, uvar, off, dfmax, tdele, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx)
subroutine fail_gene1_s(nel, nuparam, nuvar, nfunc, ifunc, loff, npf, tf, time, timestep, uparam, ipg, ngl, dt, epsp, uvar, off, npg, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, temp, voln, dfmax, tdele, aldt, table, irupt, elbuf_tab, ilay1, ntablf, itablf, lf_dammx, niparam, iparam)
subroutine fail_hashin_s(nel, nuvar, ilay, npt0, time, timestep, uparam, ngl, off, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, tdele, epsp, lf_dammx)
subroutine fail_hoffman_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_inievo_s(nel, nuparam, nuvar, table, ntablf, itablf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signzz, signxy, signyz, signzx, pla, temp, sigy, off, dfmax, tdele, dmg_scale, uelr, ipg, npg, loff, damini, vol, inloc)
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_maxstrain_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, epsxx, epsyy, epszz, epsxy, epsyz, epszx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_mullins_or_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, dfmax, ww)
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_orthenerg_s(nel, nuparam, nuvar, uparam, uvar, ngl, npg, ipg, ilay, off, loff, noff, depsxx, depsyy, depszz, depsxy, depsyz, depszx, signxx, signyy, signzz, signxy, signyz, signzx, time, tdel, dfmax, aldt, dmg_scale)
subroutine fail_orthstrain(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ismstr, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, ipt, ngl, dfmax, tdel, uelr, npt, deltax, lf_dammx)
subroutine fail_puck_s(nel, nuvar, ilay, npt0, time, timestep, uparam, ngl, off, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele)
Definition fail_puck_s.F:37
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_sahraei_s(nel, nfunc, ifunc, npf, tf, time, ngl, uparam, epsxx, epsyy, epszz, epsxy, epsyz, epszx, off, dfmax, tdele, deltax, nuvar, uvar)
subroutine fail_syazwan_s(nel, uparam, nuparam, uvar, nuvar, time, ngl, ipg, dpla, tdele, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, nfunc, ifunc, aldt, off, npf, tf, uelr, npg, loff)
subroutine fail_tab2_s(nel, nuparam, nuvar, nfunc, ifunc, npf, table, tf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signzz, signxy, signyz, signzx, temp, off, dfmax, tdele, dmg_scale, uelr, ipg, npg, loff, ntablf, itablf, noff, voln)
Definition fail_tab2_s.F:45
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_tensstrain_s(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ngl, aldt, tstar, ismstr, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, epsp, uvar, off, dfmax, tdele, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, dmg_scale)
subroutine fail_tsaihill_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_tsaiwu_s(nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)
subroutine fail_visual_s(nel, nuparam, nuvar, time, timestep, uparam, epsxx, epsyy, epszz, epsxy, epsyz, epszx, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, ngl, dfmax, ismstr)
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)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine mdtsph(pm, off, rho, rk, t, re, sti, dt2t, neltst, ityptst, offg, geo, pid, mumax, ssp, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, g_dt, dtsph, nel, ity, jtur, jthe)
Definition mdtsph.F:47
subroutine mqviscb(pm, off, rho, rk, temp, ssp, re, sti, dt2t, neltst, ityptst, aire, offg, geo, pid, vol, vd2, deltax, vis, d1, d2, d3, pnew, psh, mat, ngl, qvis, ssp_eq, vol0, mssa, dmels, igeo, facq0, conde, dtel, g_dt, ipm, rhoref, rhosp, nel, ity, ismstr, jtur, jthe, jsms, npg, glob_therm)
Definition mqviscb.F:56
subroutine mreploc(ang, r11, r12, r13, r21, r22, r23, r31, r32, r33, rx, ry, rz, sx, sy, sz, tx, ty, tz, nel, jsph)
Definition mreploc.F:39
subroutine mrotensns(lft, llt, dxx, dxy, dxz, dyx, dyy, dyz, dzx, dzy, dzz, r11, r12, r13, r21, r22, r23, r31, r32, r33)
Definition mrotens.F:96
subroutine mrotens(lft, llt, e1, e2, e3, e4, dyz, e6, r11, r12, r13, r21, r22, r23, r31, r32, r33)
Definition mrotens.F:36
integer, parameter ncharline100
subroutine nolib_usermat99(ilaw_user, iuser_key)
subroutine nsvisul(nel, off, rho, geo, pid, ssp, aire, vol, d1, d2, d3, d4, d5, d6, sv1, sv2, sv3, sv4, sv5, sv6, s3, e3, rho0, rhoref)
Definition nsvisul.F:34
subroutine epsf2u(nel, fxx, fxy, fxz, fyx, fyy, fyz, fzx, fzy, fzz, uxx, uyy, uzz, uxy, uyz, uxz)
Definition sigeps33.F:1448
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
Definition sreploc3.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 bidon2(fac_l)
Definition machine.F:58
subroutine bidon1(ibid)
Definition machine.F:48
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135
subroutine viscmain(visc, nel, nvarvis, uvarvis, rho, viscmax, soundsp, timestep, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, svo1, svo2, svo3, svo4, svo5, svo6, sv1, sv2, sv3, sv4, sv5, sv6, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, s1, s2, s3, s4, s5, s6, damp_buf, idamp_freq_range, mvsiz, et, young, shear_modulus, ivisc)
Definition viscmain.F:51