OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
usermat_shell.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "usrplas_c.inc"
#include "units_c.inc"
#include "scr17_c.inc"
#include "scr19_c.inc"
#include "param_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "com20_c.inc"
#include "impl1_c.inc"
#include "userlib.inc"
#include "com_xfem1.inc"
#include "timeri_c.inc"
#include "vectorize.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine usermat_shell (timers, elbuf_str, mat_elem, jft, jlt, nel, pm, for, mom, gstr, thk, eint, off, dir_a, dir_b, mat, area, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, geo, thk_ly, pid, tf, npf, dt1c, dm, bufmat, ssp, rho, viscmx, ipla, iofc, indx, ngl, thkly, zcfac, ng, shf, sigy, thk0, epsd_pg, posly, igeo, ipm, failwave, fwave_el, ifailure, aldt, tempel, die, r11, r12, r13, r21, r22, r23, r31, r32, r33, table, ixfem, elcrkini, dir1_crk, dir2_crk, iparg, jhbe, ismstr, jthe, tensx, ir, is, nlay, npt, ixlay, ixel, f_def, itask, pm_stack, isubstack, stack, varnl, nloc_dmg, nlay_max, laynpt_max, dt, ssp_eq, ipart, ipartc)

Function/Subroutine Documentation

◆ usermat_shell()

subroutine usermat_shell ( type(timer_), intent(inout) timers,
type(elbuf_struct_), target elbuf_str,
type (mat_elem_), intent(inout), target mat_elem,
integer jft,
integer jlt,
integer nel,
pm,
for,
mom,
gstr,
thk,
eint,
off,
dir_a,
dir_b,
integer, dimension(*) mat,
area,
exx,
eyy,
exy,
exz,
eyz,
kxx,
kyy,
kxy,
geo,
thk_ly,
integer, dimension(*) pid,
tf,
integer, dimension(*) npf,
dt1c,
dm,
target bufmat,
ssp,
rho,
viscmx,
integer ipla,
integer iofc,
integer, dimension(mvsiz) indx,
integer, dimension(mvsiz) ngl,
target thkly,
zcfac,
integer ng,
shf,
sigy,
thk0,
dimension(mvsiz) epsd_pg,
target posly,
integer, dimension(npropgi,*) igeo,
integer, dimension(npropmi,*), target ipm,
type (failwave_str_), target failwave,
integer, dimension(nel) fwave_el,
integer ifailure,
target aldt,
target tempel,
die,
r11,
r12,
r13,
r21,
r22,
r23,
r31,
r32,
r33,
type(ttable), dimension(*) table,
integer ixfem,
integer, dimension(nxlaymax,*) elcrkini,
dir1_crk,
dir2_crk,
integer, dimension(*) iparg,
integer jhbe,
integer ismstr,
integer jthe,
tensx,
integer ir,
integer is,
integer nlay,
integer npt,
integer ixlay,
integer ixel,
f_def,
integer itask,
pm_stack,
integer isubstack,
type (stack_ply) stack,
target varnl,
type (nlocal_str_) nloc_dmg,
integer, intent(in) nlay_max,
integer, intent(in) laynpt_max,
type (dt_), intent(in) dt,
dimension(mvsiz) ssp_eq,
integer, dimension(lipart1,npart), intent(in) ipart,
integer, dimension(nel), intent(in) ipartc )

Definition at line 96 of file usermat_shell.F.

114C-----------------------------------------------
115C M o d u l e s
116C-----------------------------------------------
117 USE timer_mod
119 USE law_usersh
120 USE table_mod
121 USE mat_elem_mod
122 USE fail_param_mod
123 USE stack_mod
124 USE failwave_mod
125 USE message_mod
127 USE elbufdef_mod
128 USE dt_mod
129 USE fail_lemaitre_c_mod
130 USE fail_composite_c_mod
131C-----------------------------------------------
132C I m p l i c i t T y p e s
133C-----------------------------------------------
134#include "implicit_f.inc"
135#include "comlock.inc"
136C-----------------------------------------------
137C C o m m o n B l o c k s
138C-----------------------------------------------
139#include "usrplas_c.inc"
140#include "units_c.inc"
141#include "scr17_c.inc"
142#include "scr19_c.inc"
143#include "param_c.inc"
144#include "com01_c.inc"
145#include "com04_c.inc"
146#include "com08_c.inc"
147#include "com20_c.inc"
148#include "impl1_c.inc"
149#include "userlib.inc"
150#include "com_xfem1.inc"
151#include "timeri_c.inc"
152C-----------------------------------------------
153C D u m m y A r g u m e n t s
154C-----------------------------------------------
155 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
156 INTEGER IR,IS,IPT,JFT,JLT,NEL,NPT,IPLA,IOFC,NG,NLAY,
157 . ISMSTR,IXFEM,IFAILURE,JHBE,IXLAY,IXEL,JTHE,
158 . IREP,ISUBSTACK,ITASK,NUMTABL
159 INTEGER MAT(*),PID(*),NPF(*),NGL(MVSIZ),INDX(MVSIZ),
160 . IGEO(NPROPGI,*),IPM(NPROPMI,*),ELCRKINI(NXLAYMAX,*),
161 . IPARG(*),FWAVE_EL(NEL)
162 INTEGER, INTENT(IN) :: NLAY_MAX, LAYNPT_MAX
163 my_real dm
164 my_real, intent(in),dimension(mvsiz) :: epsd_pg !< global strain rate by Gauss pt
165 my_real, intent(inout),dimension(mvsiz) :: ssp_eq ! for time step compute
166 my_real for(nel,5),mom(nel,3),gstr(nel,8),thk(*),eint(jlt,2),off(*),
167 . dir_a(*),dir_b(*),viscmx(*),pm(npropm,*),thk_ly(nel,*),
168 . area(*),geo(npropg,*),tf(*),dt1c(*),thkly(*),aldt(*),
169 . exx(*), eyy(*), exy(*), exz(*), eyz(*),
170 . kxx(*), kyy(*), kxy(*),bufmat(*),ssp(*),rho(*),
171 . zcfac(mvsiz,2),shf(*),sigy(*),thk0(*),
172 . posly(mvsiz,*),tempel(mvsiz),die(*),varnl(nel,*),
173 . r11(mvsiz), r12(mvsiz), r13(mvsiz),
174 . r21(mvsiz), r22(mvsiz), r23(mvsiz),
175 . r31(mvsiz), r32(mvsiz), r33(mvsiz),
176 . dir1_crk(*),dir2_crk(*),tensx(nel,5),
177 . f_def(mvsiz,8),pm_stack(20,*)
178 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
179 TARGET :: aldt, ipm, varnl
180 TYPE (STACK_PLY) :: STACK
181 TYPE (FAILWAVE_STR_) ,TARGET :: FAILWAVE
182 TYPE (NLOCAL_STR_) :: NLOC_DMG
183 TYPE (MAT_ELEM_) ,INTENT(INOUT) ,TARGET :: MAT_ELEM
184 TYPE (DT_) ,INTENT(IN) :: DT
185 INTEGER, DIMENSION(LIPART1,NPART), INTENT(IN) :: IPART
186 integer, intent(in),dimension(NEL) :: IPARTC
187C-----------------------------------------------
188C L o c a l V a r i a b l e s
189C-----------------------------------------------
190 INTEGER I,II,JJ,J,JMLY,IPG,IT,IFL,ILAY,NPG,MPT,IMAT,
191 . IRUPT,NFAIL,IADBUF,IGTYP,NUVAR,NVARF,JDIR,
192 . NFUNC, JPOS, NINDX,NUPAR,NUPARAM,NFUNC_FAIL,NTABL_FAIL,IFAILWV,
193 . IUN,IBID,IBIDON1,IBIDON2,IBIDON3,IBIDON4,IBIDON5,
194 . FAC,ILAW_USER,IPTX,ILAYER,IROT,DMG_FLAG,
195 . IGMAT,IPGMAT,KK,NPTT,IPT_ALL,NPTTOT,NUVARV,ILAW,
196 . FAILNPT,JOFF,SIZNUL,PLY_ID,IJ(5),K,ISEQ,PROGRESSIVE_CRACK,
197 . ORTH_DAMAGE,L_DMG,IPRONY,ISRATE,NVARTMP,INLOC,IDRAPE,
198 . LF_DAMMX,NIPAR
199 INTEGER :: IJ1,IJ2,IJ3,IJ4,IJ5
200 INTEGER :: IFUNC(MAXFUNC),IFLAG(1),IOFF_DUCT(MVSIZ)
201 INTEGER :: MAT_ID
202c
203 my_real
204 . degmb(mvsiz) ,degfx(mvsiz) ,sigoff(mvsiz),
205 . thklyl(mvsiz),thkn(mvsiz) ,etse(mvsiz),
206 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
207 . depszx(mvsiz),epsxx(mvsiz) ,epsyy(mvsiz) ,epsxy(mvsiz),
208 . epsyz(mvsiz) ,epszx(mvsiz) ,epspxx(mvsiz),epspyy(mvsiz),
209 . epspxy(mvsiz),epspyz(mvsiz),epspzx(mvsiz),sigoxx(mvsiz),
210 . sigoyy(mvsiz),sigoxy(mvsiz),sigoyz(mvsiz),sigozx(mvsiz),
211 . signxx(mvsiz),signyy(mvsiz),signxy(mvsiz),signyz(mvsiz),
212 . signzx(mvsiz),sigvxx(mvsiz),sigvyy(mvsiz),sigvxy(mvsiz),
213 . sigvyz(mvsiz),sigvzx(mvsiz),tens(mvsiz,5),
214 . wmc(mvsiz), epspl(mvsiz), yld(mvsiz),dpla(mvsiz),
215 . vol0(mvsiz), coef(mvsiz),hardm(mvsiz),tstar(mvsiz),
216 . pla0(mvsiz),g_imp(mvsiz), sigksi(mvsiz,5),
217 . visc(mvsiz),off_old(mvsiz),epsp_loc(mvsiz),eint_loc(2,mvsiz),
218 . dmg_glob_scale(mvsiz),dmg_loc_scale(mvsiz),bid_arr(mvsiz)
219 my_real
220 . fpsxx(mvsiz),fpsyy(mvsiz),fpszz(mvsiz),fpsxy(mvsiz),fpsyx(mvsiz),
221 . epchk(mvsiz),epspdt(mvsiz)
222 my_real
223 . zt,dtinv,vol2,asrate,tref,tmelt,
224 . r1,r2,s1,s2,r12a,r22a,s12b,s22b,rs1,rs2,rs3,
225 . t1,t2,t3,fact,r3r3,s3s3,trelax,
226 . bidon1,bidon2,bidon3,bidon4,bidon5
227 my_real copy_pla(mvsiz)
228 my_real, DIMENSION(NEL,5) :: dmg_orth_scale
229 my_real scale1(nel)
230 my_real ,DIMENSION(NEL), TARGET :: le_max
231 my_real tt_local
232 my_real, DIMENSION(:) ,POINTER :: el_temp,crklen,crkdir,dadv,tfail,el_len,
233 . el_pla
234 TARGET :: tempel,bufmat,epsxx,epsyy,depsxx,depsyy,scale1,posly,thkly
235C
236 INTEGER , DIMENSION(MVSIZ) :: ADDITIONAL_INT_PARAMETERS
237 my_real , DIMENSION(MVSIZ) :: additional_flt_parameters
238c----
239 TYPE(TTABLE) TABLE(*)
240 TYPE(ULAWCINTBUF) :: USERBUF
241 TYPE(BUF_LAY_) ,POINTER :: BUFLY
242 TYPE(L_BUFEL_) ,POINTER :: LBUF
243 TYPE(G_BUFEL_) ,POINTER :: GBUF
244 TYPE(BUF_FAIL_),POINTER :: FBUF
245 TYPE(FAIL_PARAM_),POINTER :: FAIL_PARAM
246c----
247 INTEGER, DIMENSION(:) ,POINTER :: FLD_IDX,FOFF,OFFLY,ITABLE,IFUNC_FAIL,
248 . ITABL_FAIL,VARTMP,IPARAMF
249 my_real, DIMENSION(:) ,POINTER :: uvar,uvarf,uelr,uelr1,dam,
250 . dfmax,tdel ,offl,uvarv,uparam,uparamf,eps1,eps2,deps1,deps2,
251 . dirdmg,dir_orth,zz,thly,damini
252c----
253 LOGICAL :: LOGICAL_USERL_AVAIL
254 LOGICAL :: FLAG_EPS,FLAG_ZCFAC
255 LOGICAL, DIMENSION(NEL) :: PRINT_FAIL
256 CHARACTER*256 MDS_LIBNAME
257 INTEGER LENGTH
258!
259 CHARACTER OPTION*256
260 INTEGER SIZE
261 CHARACTER (LEN=NCHARLINE100):: IUSER_KEY
262C-----------------------------------------------
263C S o u r c e L i n e s
264C-----------------------------------------------
265 gbuf => elbuf_str%GBUF
266 ipg = (is-1)*elbuf_str%NPTR + ir ! current Gauss point
267 npg = elbuf_str%NPTR * elbuf_str%NPTS
268 igtyp = igeo(11,pid(1))
269 igmat = igeo(98,pid(1))
270 inloc = iparg(78) ! Flag for non-local regularization
271 idrape = elbuf_str%IDRAPE
272!
273 logical_userl_avail=.false.
274 IF (userl_avail > 0) logical_userl_avail=.true.
275 DO k=1,5
276 ij(k) = nel*(k-1)
277 ENDDO
278 ij1 = ij(1) + 1
279 ij2 = ij(2) + 1
280 ij3 = ij(3) + 1
281 ij4 = ij(4) + 1
282 ij5 = ij(5) + 1
283C
284 ipt_all = 0
285 npttot = 0
286!
287! Check visco elastic model
288!
289 iprony = 0
290 DO ilay=1,nlay
291 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
292 ilayer = ilay
293 IF (ixfem == 1 .AND. ixlay > 0) ilayer = ixlay ! xfem multilayer
294 ilaw = elbuf_str%BUFLY(ilayer)%ILAW
295 imat = elbuf_str%BUFLY(ilayer)%IMAT
296 IF (mat_elem%MAT_PARAM(imat)%IVISC > 0) iprony=1
297 ENDDO
298C
299! ZCFAC computation is only useful for CZFORC3 and CZFORC3_CRK routines
300 flag_zcfac=.false.
301 IF( (jhbe>=21.AND.jhbe<=29).OR.(impl_s>0)) flag_zcfac=.true.
302 scale1(1:nel) = one
303 iflag(1) = ipla
304 bidon1 = zero
305 bidon2 = zero
306 bidon3 = zero
307 bidon4 = zero
308 bidon5 = zero
309 ibidon1 = 0
310 ibidon2 = 0
311 ibidon3 = 0
312 ibidon4 = 0
313 ibidon5 = 0
314 ibid = 0
315 ilaw_user = ipm(217, mat(1))
316 iun=1
317c
318 dmg_flag = 0
319 trelax = zero
320c
321 degmb(jft:jlt) = for(jft:jlt,1)*exx(jft:jlt)+for(jft:jlt,2)*eyy(jft:jlt)
322 . + for(jft:jlt,3)*exy(jft:jlt)+for(jft:jlt,4)*eyz(jft:jlt)
323 . + for(jft:jlt,5)*exz(jft:jlt)
324 degfx(jft:jlt) = mom(jft:jlt,1)*kxx(jft:jlt)+mom(jft:jlt,2)*kyy(jft:jlt) +mom(jft:jlt,3)*kxy(jft:jlt)
325!
326 vol0(jft:jlt) = area(jft:jlt)*thk0(jft:jlt)
327 thkn(jft:jlt) = thk(jft:jlt)
328 for(jft:jlt,1) = zero
329 for(jft:jlt,2) = zero
330 for(jft:jlt,3) = zero
331 for(jft:jlt,4) = zero
332 for(jft:jlt,5) = zero
333 mom(jft:jlt,1) = zero
334 mom(jft:jlt,2) = zero
335 mom(jft:jlt,3) = zero
336 yld(jft:jlt) = zero
337 IF(flag_zcfac) zcfac(jft:jlt,2)= one
338 etse(jft:jlt) = one
339 coef(jft:jlt) = one
340 off_old(jft:jlt) = off(jft:jlt)
341 ioff_duct(jft:jlt) = 0
342 dmg_glob_scale(jft:jlt) = one
343 sigoff(1:nel) = one
344 epchk(1:mvsiz) = zero
345 viscmx(1:mvsiz) = zero
346!
347 dtinv = dt1 / max(dt1**2,em20) ! inverse of dt
348
349c-----------------------------------------------------------
350c---- intermediate buffer for GET_U_VAR function
351 IF (tt == zero) THEN
352 DO i=1,mvsiz
353 DO j=1,5000
354 uuvar(i,j) = zero
355 END DO
356 END DO
357 ENDIF
358
359 DO ilay=1,nlay
360 ilayer = ilay
361 IF (ixfem == 1 .AND. ixlay > 0) ilayer = ixlay ! xfem multilayer
362 imat = elbuf_str%BUFLY(ilayer)%IMAT
363 ilaw = elbuf_str%BUFLY(ilayer)%ILAW
364C
365 DO it = 1,elbuf_str%BUFLY(ilayer)%NPTT
366 uvar => elbuf_str%BUFLY(ilayer)%MAT(ir,is,it)%VAR
367 nuvar = elbuf_str%BUFLY(ilayer)%NVAR_MAT
368 DO j=1,nuvar
369 kk = ilayer
370 IF (nlay == 1) kk = it
371 jj = kk*j
372 ii = nel*(j-1)
373 IF (jj > 5000) EXIT
374 DO i=jft,jlt
375 uuvar(i,jj) = uvar(ii + i)
376 ENDDO
377 ENDDO
378 ENDDO ! IT = 1,NPTT
379 ENDDO ! DO ILAY =1,NLAY
380C-----------------------------------------------------------
381C LOOP OVER THICKNESS INTEGRATION POINTS (LAYERS)
382C-----------------------------------------------------------
383 DO ilay =1,nlay
384 IF (ixfem == 1 .AND. ixlay > 0) THEN ! multilayer xfem
385 ilayer = ixlay
386 ELSE
387 ilayer = ilay
388 ENDIF
389 progressive_crack = 0
390 orth_damage = 0
391 ply_id = 0
392 IF (igtyp == 52) THEN
393 ply_id = ply_info(1,stack%IGEO(2+ilay,isubstack)-numstack)
394 ELSEIF(igtyp == 17 .OR. igtyp == 51)THEN
395 ply_id = igeo(1,stack%IGEO(2+ilay,isubstack))
396 ENDIF
397 bufly => elbuf_str%BUFLY(ilayer)
398 nptt = bufly%NPTT
399 jmly = 1 + (ilayer-1)*jlt
400 jdir = 1 + (ilayer-1)*jlt*2
401c
402 nfail = bufly%NFAIL
403 imat = bufly%IMAT
404 ilaw = bufly%ILAW
405 nuvar = bufly%NVAR_MAT
406 nvartmp= bufly%NVARTMP
407 nuvarv = bufly%NVAR_VISC
408 iseq = bufly%L_SEQ
409 iadbuf = max(1,ipm(7,imat))
410 nuparam= ipm(9,imat)
411 nfunc = ipm(10,imat)
412 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
413 numtabl= ipm(226,imat)
414 itable => ipm(226+1:226+numtabl,imat)
415 mat_id = mat_elem%MAT_PARAM(imat)%MAT_ID
416c
417 DO i=1,nfunc
418 ifunc(i)=ipm(10+i,imat)
419 ENDDO
420
421 flag_eps = .true.
422
423! DEPSYZ/ZX and EPSYZ/ZX are IT independent
424! EPSXY is IT independent for IGTYP/=1
425 depsyz(jft:jlt)=eyz(jft:jlt)
426 depszx(jft:jlt)=exz(jft:jlt)
427 IF (flag_eps) THEN
428 IF (igtyp == 1) THEN
429 epsyz(jft:jlt)= gstr(jft:jlt,4)
430 epszx(jft:jlt)= gstr(jft:jlt,5)
431 ELSE
432 epsxy(jft:jlt) = zero
433 epsyz(jft:jlt) = zero
434 epszx(jft:jlt) = zero
435 ENDIF
436 ENDIF
437!
438 israte = ipm(3,imat)
439 if (israte > 0) then
440 asrate = min(one, pm(9,imat)*dt1)
441 else
442 asrate = one
443 end if
444!
445c----- Tstar : T* = (T-T0)/(TM-T0)----
446 IF (jthe > 0 .or. elbuf_str%bufly(ilayer)%l_temp > 0) THEN
447 tref = mat_elem%mat_param(imat)%therm%tref
448 tmelt = mat_elem%mat_param(imat)%therm%tmelt
449 tstar(1:nel) = max(zero, (tempel(1:nel) - tref) / max(tmelt-tref, em20))
450 ELSE
451 tstar(1:nel) = zero
452 ENDIF
453c----------------------------------------------------------------------
454!---
455 l_dmg = bufly%L_DMG
456!---
457 DO it=1,nptt
458 ipt = ipt_all + it ! count all NPTT through all layers
459 jpos = 1 + (ipt-1)*jlt
460c
461 lbuf => bufly%LBUF(ir,is,it)
462 uvar => bufly%MAT(ir,is,it)%VAR
463 uvarv => bufly%VISC(ir,is,it)%VAR
464 vartmp=> bufly%MAT(ir,is,it)%VARTMP
465 dirdmg => lbuf%DMG(1:l_dmg*nel)
466 IF(idrape > 0 ) jdir = 1 + (ipt - 1)*jlt*2
467c
468 ! -> Make sure the non-local increment is positive
469 IF (inloc > 0) THEN
470 DO i = jft,jlt
471 varnl(i,it) = max(varnl(i,it),zero)
472 lbuf%PLANL(i) = lbuf%PLANL(i) + varnl(i,it)
473 lbuf%EPSDNL(i) = varnl(i,it)/max(dt1,em20)
474 ENDDO
475 ENDIF
476c
477 IF (jthe == 0 .and. bufly%L_TEMP > 0) THEN
478 el_temp => lbuf%TEMP(1:nel)
479 ELSE
480 el_temp => tempel(1:nel)
481 ENDIF
482!----------------------------------------------------------------------
483 ! global strain rate for materials which still use it
484 ! it may be overloaded by local material law strain rate
485 ! the same value should be used in material and failure models
486 if (bufly%l_epsd > 0) then
487 do i=1,nel
488 epspl(i) = asrate*epsd_pg(i) + (one-asrate)*lbuf%epsd(i)
489 epspdt(i) = epspl(i)*dt1
490 end do
491 else
492 epspl(1:nel) = zero
493 end if
494C-----------------------------------------
495c COORDONNEES DU POINT D'INTEGRATION IPT
496C-----------------------------------------
497 zz => posly(1:nel,ipt)
498 thly => thkly(jpos:jpos+nel-1)
499 thklyl(1:nel) = thly(1:nel)*thk0(1:nel)
500C
501 IF (igtyp == 1 .or. igtyp == 9) THEN
502 wmc(1:nel) = wm(ipt,npt)
503 ELSE
504 wmc(1:nel) = zz(1:nel)*thly(1:nel)
505 ENDIF
506C-------------------------------
507C increment of deformations
508C-------------------------------
509 signxx(1:mvsiz) = zero
510 signyy(1:mvsiz) = zero
511 signxy(1:mvsiz) = zero
512 signyz(1:mvsiz) = zero
513 signzx(1:mvsiz) = zero
514 sigvxx(1:mvsiz) = zero
515 sigvyy(1:mvsiz) = zero
516 sigvxy(1:mvsiz) = zero
517 sigvyz(1:mvsiz) = zero
518 sigvzx(1:mvsiz) = zero
519 sigoxx(jft:jlt) = lbuf%SIG(ij(1)+jft:ij(1)+jlt)
520 sigoyy(jft:jlt) = lbuf%SIG(ij(2)+jft:ij(2)+jlt)
521 sigoxy(jft:jlt) = lbuf%SIG(ij(3)+jft:ij(3)+jlt)
522 sigoyz(jft:jlt) = lbuf%SIG(ij(4)+jft:ij(4)+jlt)
523 sigozx(jft:jlt) = lbuf%SIG(ij(5)+jft:ij(5)+jlt)
524c------
525 IF (igtyp == 1) THEN
526 DO i=jft,jlt
527 zt=zz(i)*thk0(i)
528 depsxx(i)=exx(i)+zt*kxx(i)
529 depsyy(i)=eyy(i)+zt*kyy(i)
530 depsxy(i)=exy(i)+zt*kxy(i)
531 ENDDO
532 IF (flag_eps) THEN
533 DO i=jft,jlt
534 zt=zz(i)*thk0(i)
535 epsxx(i)= gstr(i,1)+zt*gstr(i,6)
536 epsyy(i)= gstr(i,2)+zt*gstr(i,7)
537 epsxy(i)= gstr(i,3)+zt*gstr(i,8)
538 ENDDO
539 ENDIF
540! -------------------------------
541! IGTYP = 16
542! -------------------------------
543 ELSEIF (igtyp == 16) THEN
544 !
545 IF (ismstr == 11) THEN
546c total strain in fiber coord sys
547 DO i=jft,jlt
548 ii = jdir + i-1
549 r1 = dir_a(ii)
550 s1 = dir_a(ii+nel)
551 r2 = dir_b(ii)
552 s2 = dir_b(ii+nel)
553c total strain in element coord sys
554 zt = zz(i)*thk0(i)
555 t1 = gstr(i,1) + zt*gstr(i,6)
556 t2 = gstr(i,2) + zt*gstr(i,7)
557 t3 = half*(gstr(i,3) + zt*gstr(i,8))
558 depsxy(i) = (r1*r2 + s1*s2) / (r1*s2 - r2*s1) ! Tan(alpha_totale)
559 depsxx(i) = r1*r1*t1 + s1*s1*t2 + two*r1*s1*t3 ! eps_x dir1
560 depsyy(i) = r2*r2*t1 + s2*s2*t2 + two*r2*s2*t3 ! eps_y dir2
561 epsxx(i) = t1
562 epsyy(i) = t2
563 epsxy(i) = t3 * two
564 ENDDO
565 ELSE
566 DO i=jft,jlt
567 ii = jdir + i-1
568 r1 = dir_a(ii)
569 s1 = dir_a(ii+nel)
570 r2 = dir_b(ii)
571 s2 = dir_b(ii+nel)
572 zt = zz(i)*thk0(i)
573 t1 = exx(i) + zt*kxx(i)
574 t2 = eyy(i) + zt*kyy(i)
575 t3 = half*(exy(i) + zt*kxy(i))
576 depsxy(i) = (r1*r2 + s1*s2) / (r1*s2 - r2*s1) ! Tan(alpha_totale)
577 depsxx(i) = r1*r1*t1 + s1*s1*t2 + two*r1*s1*t3 ! delta_eps_x dir1
578 depsyy(i) = r2*r2*t1 + s2*s2*t2 + two*r2*s2*t3 ! delta_eps_y dir2
579c
580 ENDDO
581 ENDIF
582 IF (flag_eps) THEN
583 DO i=jft,jlt
584c total true strain in global coord sys
585 zt = zz(i)*thk0(i)
586 epsxx(i) = gstr(i,1) + zt*gstr(i,6)
587 epsyy(i) = gstr(i,2) + zt*gstr(i,7)
588 epsxy(i) = gstr(i,3) + zt*gstr(i,8)
589 ENDDO
590 ENDIF
591c------
592 ELSE ! Igtyp 9/10/11/17/51/52
593! -------------------------------
594 DO i=jft,jlt
595 zt = zz(i)*thk0(i)
596 tens(i,1)=exx(i)+zt*kxx(i)
597 tens(i,2)=eyy(i)+zt*kyy(i)
598 tens(i,3)=half*(exy(i)+zt*kxy(i))
599 tens(i,4)=half*eyz(i)
600 tens(i,5)=half*exz(i)
601 ENDDO
602C
603 CALL rotov(jft,jlt,tens,dir_a(jdir),nel)
604C
605 DO i=jft,jlt
606 depsxx(i)=tens(i,1)
607 depsyy(i)=tens(i,2)
608 depsxy(i)=two*tens(i,3)
609 depsyz(i)=two*tens(i,4)
610 depszx(i)=two*tens(i,5)
611 ENDDO
612!
613 DO i=jft,jlt
614 zt=zz(i)*thk0(i)
615 tens(i,1)= gstr(i,1)+zt*gstr(i,6)
616 tens(i,2)= gstr(i,2)+zt*gstr(i,7)
617 tens(i,3)= half*(gstr(i,3)+zt*gstr(i,8))
618 tens(i,4)= half*gstr(i,4)
619 tens(i,5)= half*gstr(i,5)
620 ENDDO
621C
622 CALL rotov(jft,jlt,tens,dir_a(jdir),nel)
623C
624 IF (flag_eps) THEN
625 DO i=jft,jlt
626 epsxx(i) = tens(i,1)
627 epsyy(i) = tens(i,2)
628 epsxy(i) = two*tens(i,3)
629 epsyz(i) = two*tens(i,4)
630 epszx(i) = two*tens(i,5)
631 ENDDO
632 ENDIF
633
634 ENDIF ! IF (IGTYP == 1)
635! -------------------------------
636! end of IGTYP
637! -------------------------------
638C---
639 DO i=jft,jlt
640 epspxx(i)=depsxx(i)*dtinv
641 epspyy(i)=depsyy(i)*dtinv
642 epspxy(i)=depsxy(i)*dtinv
643 epspyz(i)=depsyz(i)*dtinv
644 epspzx(i)=depszx(i)*dtinv
645 ENDDO
646 dpla(1:mvsiz) = zero
647 IF (ifailure == 1) THEN
648 IF (elbuf_str%BUFLY(ilayer)%L_PLA > 0) THEN
649 pla0(jft:jlt) = lbuf%PLA(jft:jlt)
650 ELSE
651 pla0(jft:jlt) = zero
652 ENDIF
653 ENDIF
654C------------------------------------------
655C CONTRAINTES ELASTIQUES +
656C CONTRAINTES PLASTIQUEMENT ADMISSIBLES
657C------------------------------------------
658 IF (ilaw == 29) THEN
659 DO i=jft,jlt
660 u_tagplas(i)=0
661 END DO
662! copie EINT (du buffer) en local (EINT_LOC)
663 DO i=jft,jlt
664 eint_loc(1,i) = eint(i,1)
665 eint_loc(2,i) = eint(i,2)
666 copy_pla(i) = lbuf%PLA(i)
667 ENDDO
668!
669 IF (logical_userl_avail) THEN
670 tt_local = tt
671 CALL eng_userlib_sigepsc(29,
672 1 jlt ,nuparam,nuvar ,nfunc ,ifunc ,
673 2 npf ,npt ,ipt ,iflag ,
674 2 tf ,tt_local,dt1c ,uparam ,rho,
675 3 area ,eint_loc,thklyl ,
676 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
677 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
678 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
679 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
680 8 signxx ,signyy ,signxy ,signyz ,signzx ,
681 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
682 a ssp ,viscmx ,thkn ,copy_pla ,uvar ,
683 b off ,ngl ,shf )
684 ELSE
685! CALL SIGEPS29C(
686! 1 JLT ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,
687! 2 NPF ,NPT ,IPT ,IFLAG ,
688! 2 TF ,TT ,DT1C ,UPARAM ,RHO,
689! 3 AREA ,EINT_LOC,THKLYL ,
690! 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
691! 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
692! 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
693! 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
694! 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
695! 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
696! A SSP ,VISCMX ,THKN ,COPY_PLA ,UVAR ,
697! B OFF ,NGL ,SHF )
698!
699!!!
700 ! ----------------
701 ! ERROR to be printed & exit
702 option='/MAT/LAW29 - SHELL '
703 size=len_trim(option)
704 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
705 CALL arret(2)
706 ! ----------------
707!!!
708 ENDIF
709! EINT_LOC REPOPY IN EINT (Buffer)
710 DO i=jft,jlt
711 eint(i,1) = eint_loc(1,i)
712 eint(i,2) = eint_loc(2,i)
713 lbuf%PLA(i) = copy_pla(i)
714 ENDDO
715!
716 DO i=jft,jlt
717 IF (u_tagplas(i) /= 0) THEN
718 sigy(i)=u_yeld(i)
719 etse(i)=u_etse(i)
720 ELSE
721 sigy(i)=ep30
722 etse(i)=one
723 END IF
724 END DO
725 ELSEIF (ilaw == 30) THEN
726 DO i=jft,jlt
727 u_tagplas(i)=0
728 END DO
729! copie EINT (du buffer) en local (EINT_LOC)
730 DO i=jft,jlt
731 eint_loc(1,i) = eint(i,1)
732 eint_loc(2,i) = eint(i,2)
733 copy_pla(i) = lbuf%PLA(i)
734 ENDDO
735!
736 IF (logical_userl_avail) THEN
737 tt_local = tt
738 CALL eng_userlib_sigepsc(30,
739 1 jlt ,nuparam,nuvar ,nfunc ,ifunc ,
740 2 npf ,npt ,ipt ,iflag ,
741 2 tf ,tt_local,dt1c ,uparam ,rho,
742 3 area ,eint_loc,thklyl ,
743 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
744 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
745 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
746 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
747 8 signxx ,signyy ,signxy ,signyz ,signzx ,
748 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
749 a ssp ,viscmx ,thkn ,copy_pla ,uvar ,
750 b off ,ngl ,shf )
751 ELSE
752! CALL SIGEPS30C(
753! 1 JLT ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,
754! 2 NPF ,NPT ,IPT ,IFLAG ,
755! 2 TF ,TT ,DT1C ,UPARAM ,RHO ,
756! 3 AREA ,EINT_LOC,THKLYL ,
757! 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
758! 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
759! 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
760! 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
761! 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
762! 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
763! A SSP ,VISCMX ,THKN ,COPY_PLA ,UVAR ,
764! B OFF ,NGL ,SHF )
765!!!
766 ! ----------------
767 ! ERROR to be printed & exit
768 option='/MAT/LAW30 - SHELL '
769 size=len_trim(option)
770 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
771 CALL arret(2)
772 ! ----------------
773!!!
774 ENDIF
775! EINT_LOC REPOPY IN EINT (Buffer)
776 DO i=jft,jlt
777 eint(i,1) = eint_loc(1,i)
778 eint(i,2) = eint_loc(2,i)
779 lbuf%PLA(i) = copy_pla(i)
780 ENDDO
781!
782 DO i=jft,jlt
783 IF (u_tagplas(i) /= 0) THEN
784 sigy(i)=u_yeld(i)
785 etse(i)=u_etse(i)
786 ELSE
787 sigy(i)=ep30
788 etse(i)=one
789 END IF
790 END DO
791 ELSEIF (ilaw == 31) THEN
792 DO i=jft,jlt
793 u_tagplas(i)=0
794 END DO
795! copie EINT (du buffer) en local (EINT_LOC)
796 DO i=jft,jlt
797 eint_loc(1,i) = eint(i,1)
798 eint_loc(2,i) = eint(i,2)
799 copy_pla(i) = lbuf%PLA(i)
800 ENDDO
801!
802 IF (logical_userl_avail) THEN
803 tt_local = tt
804 CALL eng_userlib_sigepsc(31,
805 1 jlt ,nuparam,nuvar ,nfunc ,ifunc ,
806 2 npf ,npt ,ipt ,iflag ,
807 2 tf ,tt_local,dt1c ,uparam ,rho ,
808 3 area ,eint_loc,thklyl ,
809 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
810 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
811 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
812 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
813 8 signxx ,signyy ,signxy ,signyz ,signzx ,
814 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
815 a ssp ,viscmx ,thkn ,copy_pla ,uvar ,
816 b off ,ngl ,shf )
817 ELSE
818! CALL SIGEPS31C(
819! 1 JLT ,NUPARAM,NUVAR ,NFUNC ,IFUNC ,
820! 2 NPF ,NPT ,IPT ,IFLAG ,
821! 2 TF ,TT ,DT1C ,UPARAM ,RHO ,
822! 3 AREA ,EINT_LOC,THKLYL ,
823! 4 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
824! 5 DEPSXX ,DEPSYY ,DEPSXY ,DEPSYZ ,DEPSZX ,
825! 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
826! 7 SIGOXX ,SIGOYY ,SIGOXY ,SIGOYZ ,SIGOZX ,
827! 8 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
828! 9 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
829! A SSP ,VISCMX ,THKN ,COPY_PLA ,UVAR ,
830! B OFF ,NGL ,SHF )
831!!!
832 ! ----------------
833 ! ERROR to be printed & exit
834 option='/MAT/LAW31 - SHELL '
835 size=len_trim(option)
836 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
837 CALL arret(2)
838 ! ----------------
839!!!
840 ENDIF
841! EINT_LOC REPOPY IN EINT (Buffer)
842 DO i=jft,jlt
843 eint(i,1) = eint_loc(1,i)
844 eint(i,2) = eint_loc(2,i)
845 lbuf%PLA(i) = copy_pla(i)
846 ENDDO
847!
848 DO i=jft,jlt
849 IF (u_tagplas(i) /= 0) THEN
850 sigy(i)=u_yeld(i)
851 etse(i)=u_etse(i)
852 ELSE
853 sigy(i)=ep30
854 etse(i)=one
855 END IF
856 END DO
857c---------------------------------
858 ELSEIF (ilaw == 99) THEN
859c---------------------------------
860C Load structure
861
862C
863! copie EINT (du buffer) en local (EINT_LOC) + COPY_PLA
864 DO i=jft,jlt
865 eint_loc(1,i) = eint(i,1)
866 eint_loc(2,i) = eint(i,2)
867 copy_pla(i) = lbuf%PLA(i)
868 ENDDO
869!
870 IF (logical_userl_avail) THEN
871
872 IF (ismstr == 10) THEN
873C
874 DO i=jft,jlt
875 zt=zz(i)*thk0(i)
876 fpsxx(i) = f_def(i,1)+zt*f_def(i,6) + one
877 fpsyy(i) = f_def(i,2)+zt*f_def(i,7) + one
878 fpsxy(i) = f_def(i,3)+zt*f_def(i,8)
879 fpsyx(i) = f_def(i,4)+zt*f_def(i,5)
880 fpszz(i) = thkn(i)/gbuf%THK_I(i)
881 END DO
882 IF (igtyp /= 1 .AND.igtyp /= 16) THEN
883 CALL rotos4(jft,jlt,fpsxx,fpsyy,fpsxy,fpsyx,dir_a(jdir),nel)
884 END IF
885 ELSE
886 DO i=jft,jlt
887 fpsxx(i) = zero
888 fpsyy(i) = zero
889 fpsxy(i) = zero
890 fpsyx(i) = zero
891 fpszz(i) = zero
892 END DO
893 END IF
894c FILL STRUCTURE IN DYNAMICAL LIBRARY
895 CALL eng_userlib_get_lawc_var(
896 * ncycle ,imat ,ipt ,npt ,iflag ,
897 * r11 ,r12 ,r13 ,r21 ,r22 ,
898 * r23 ,r31 ,r32 ,r33 ,sigoxx ,
899 * sigoyy ,sigoxy ,sigoyz ,sigozx ,epspxx ,
900 * epspyy ,epspxy ,epspyz ,epspzx ,epsxx ,
901 * epsyy ,epsxy ,epsyz ,epszx ,depsxx ,
902 * depsyy ,depsxy ,depsyz ,depszx ,thklyl ,
903 * thkn ,signxx ,signyy ,signxy ,signyz ,
904 * signzx ,sigvxx ,sigvyy ,sigvxy ,sigvyz ,
905 * sigvzx ,dpla )
906
907 IF (dlibtkvers >= 1301501260) THEN
908 siznul=0
909 CALL eng_userlib_get_lawc_var_2(
910 * fpsxx ,mvsiz ,fpsyy ,mvsiz,
911 * fpszz ,mvsiz ,fpsxy ,mvsiz ,fpsyx ,mvsiz ,el_temp ,mvsiz ,
912 * bid_arr,ipg ,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 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
929 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
930 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
931 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
932 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
933 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
934 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul)
935 ENDIF
936c CALL SIGEPS99C in Library
937 tt_local = tt
938 CALL eng_userlib_sigeps99c(
939 * jlt ,nuparam ,nuvar ,ilaw_user ,nfunc ,
940 * ifunc ,npf ,ngl ,tf ,tt_local,
941 * dt1c ,uparam ,rho ,area ,eint_loc,
942 * shf ,ssp ,viscmx ,copy_pla ,uvar ,
943 * off ,sigy )
944c Retrieve Results
945 CALL eng_userlib_set_lawc(
946 * signxx ,signyy ,signxy, signyz, signzx,
947 * sigvxx ,sigvyy ,sigvxy, sigvyz, sigvzx,
948 * dpla ,etse ,thkn )
949 IF (dlibtkvers >= 1301501260) THEN
950 siznul=0
951 CALL eng_userlib_set_lawc_var_2(el_temp,mvsiz,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 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
973 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
974 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
975 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul )
976 ENDIF
977
978 ELSE
979 userbuf%NCYCLE = ncycle
980 userbuf%ID = imat
981 userbuf%ILAYER = ipt
982 userbuf%NPTA = npt
983 userbuf%IFLAG = iflag(1)
984C
985 userbuf%R11 = r11
986 userbuf%R12 = r12
987 userbuf%R13 = r13
988C
989 userbuf%R21 = r21
990 userbuf%R22 = r22
991 userbuf%R23 = r23
992C
993 userbuf%R31 = r31
994 userbuf%R32 = r32
995 userbuf%R33 = r33
996C
997! USERBUF%DIR_A = DIR_A
998! USERBUF%DIR_B = DIR_B
999C
1000 userbuf%SIGOXX = sigoxx
1001 userbuf%SIGOYY = sigoyy
1002 userbuf%SIGOXY = sigoxy
1003 userbuf%SIGOYZ = sigoyz
1004 userbuf%SIGOZX = sigozx
1005C
1006 userbuf%EPSPXX = epspxx
1007 userbuf%EPSPYY = epspyy
1008 userbuf%EPSPXY = epspxy
1009 userbuf%EPSPYZ = epspyz
1010 userbuf%EPSPZX = epspzx
1011C
1012 userbuf%EPSXX = epsxx
1013 userbuf%EPSYY = epsyy
1014 userbuf%EPSXY = epsxy
1015 userbuf%EPSYZ = epsyz
1016 userbuf%EPSZX = epszx
1017 IF (ismstr == 10) THEN
1018C
1019 DO i=jft,jlt
1020 zt=zz(i)*thk0(i)
1021 userbuf%FPSXX(i) = f_def(i,1)+zt*f_def(i,6) + one
1022 userbuf%FPSYY(i) = f_def(i,2)+zt*f_def(i,7) + one
1023 userbuf%FPSXY(i) = f_def(i,3)+zt*f_def(i,8)
1024 userbuf%FPSYX(i) = f_def(i,4)+zt*f_def(i,5)
1025 userbuf%FPSZZ(i) = thkn(i)/gbuf%THK_I(i)
1026 END DO
1027 IF (igtyp /= 1 .AND.igtyp /= 16) THEN
1028 CALL rotos4(jft,jlt,userbuf%FPSXX,userbuf%FPSYY,
1029 + userbuf%FPSXY,userbuf%FPSYX,dir_a(jdir),nel)
1030 END IF
1031 ELSE
1032 userbuf%FPSXX = zero
1033 userbuf%FPSYY = zero
1034 userbuf%FPSXY = zero
1035 userbuf%FPSYX = zero
1036 userbuf%FPSZZ = zero
1037 END IF
1038C
1039 userbuf%DEPSXX = depsxx
1040 userbuf%DEPSYY = depsyy
1041 userbuf%DEPSXY = depsxy
1042 userbuf%DEPSYZ = depsyz
1043 userbuf%DEPSZX = depszx
1044C
1045 userbuf%THKLYL = thklyl
1046 userbuf%THKN = thkn
1047 userbuf%TEMP = el_temp
1048c
1049 userbuf%SIGNXX = signxx
1050 userbuf%SIGNYY = signyy
1051 userbuf%SIGNXY = signxy
1052 userbuf%SIGNYZ = signyz
1053 userbuf%SIGNZX = signzx
1054c
1055 userbuf%SIGVXX = sigvxx
1056 userbuf%SIGVYY = sigvyy
1057 userbuf%SIGVXY = sigvxy
1058 userbuf%SIGVYZ = sigvyz
1059 userbuf%SIGVZX = sigvzx
1060
1061 userbuf%DPLA = dpla
1062C
1063! CALL SIGEPS99C(
1064! 1 JLT ,NUPARAM ,NUVAR ,ILAW_USER ,NFUNC ,
1065! 2 ifunc ,npf ,ngl ,tf ,tt ,
1066! 3 DT1C ,UPARAM ,RHO ,AREA ,EINT_LOC,
1067! 4 SHF ,SSP ,VISCMX ,COPY_PLA ,UVAR ,
1068! 5 OFF ,SIGY ,USERBUF ,IUSER_KEY)
1069!!!
1070 ! ----------------
1071 ! ERROR to be printed & exit
1072 CALL nolib_usermat99(ilaw_user, iuser_key)
1073 option='/MAT/'//iuser_key//' - SHELL'
1074 size=len_trim(option)
1075 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1076 CALL arret(2)
1077 ! ----------------
1078!!!
1079C
1080 signxx = userbuf%SIGNXX
1081 signyy = userbuf%SIGNYY
1082 signxy = userbuf%SIGNXY
1083 signyz = userbuf%SIGNYZ
1084 signzx = userbuf%SIGNZX
1085C
1086 sigvxx = userbuf%SIGVXX
1087 sigvyy = userbuf%SIGVYY
1088 sigvxy = userbuf%SIGVXY
1089 sigvyz = userbuf%SIGVYZ
1090 sigvzx = userbuf%SIGVZX
1091 dpla = userbuf%DPLA
1092 etse = userbuf%ETSE
1093 thkn = userbuf%THKN
1094 IF (jthe == 0) el_temp = userbuf%TEMP ! otherwise it's read only in user law
1095 ENDIF
1096c
1097! EINT_LOC REPOPY IN EINT (Buffer)
1098 DO i=jft,jlt
1099 eint(i,1) = eint_loc(1,i)
1100 eint(i,2) = eint_loc(2,i)
1101 lbuf%PLA(i) = copy_pla(i)
1102 ENDDO
1103c--------------------------------
1104#ifdef DNC
1105 ELSEIF (ilaw == 200 ) THEN ! MDS
1106
1107c--------------------------------
1108 IF(mds_avail == 1) THEN
1109 DO i=jft,jlt
1110 eint_loc(1,i) = eint(i,1)
1111 eint_loc(2,i) = eint(i,2)
1112 copy_pla(i) = lbuf%PLA(i)
1113 ENDDO
1114
1115 IF (ismstr == 10) THEN
1116C
1117 DO i=jft,jlt
1118 zt=zz(i)*thk0(i)
1119 fpsxx(i) = f_def(i,1)+zt*f_def(i,6) + one
1120 fpsyy(i) = f_def(i,2)+zt*f_def(i,7) + one
1121 fpsxy(i) = f_def(i,3)+zt*f_def(i,8)
1122 fpsyx(i) = f_def(i,4)+zt*f_def(i,5)
1123 fpszz(i) = thkn(i)/gbuf%THK_I(i)
1124 END DO
1125 IF (igtyp /= 1 .AND.igtyp /= 16) THEN
1126 CALL rotos4(jft,jlt,fpsxx,fpsyy,fpsxy,fpsyx,dir_a(jdir),nel)
1127 END IF
1128 ELSE
1129 DO i=jft,jlt
1130 fpsxx(i) = zero
1131 fpsyy(i) = zero
1132 fpsxy(i) = zero
1133 fpsyx(i) = zero
1134 fpszz(i) = zero
1135 END DO
1136 END IF
1137
1138 CALL eng_mds_sigeps_c( ncycle , mat_id, ngl ,
1139 * nel , npt , it ,ilay, ipg , iflag,
1140 * uparam , nuparam , uvar , nuvar,
1141 * nfunc , ifunc , tf , npf ,
1142 * tt_local, dt1c , rho , area, eint_loc,
1143 * thkly , thk , shf , etse ,
1144 * epspxx , epspyy , epspxy , epspyz , epspzx ,
1145 * depsxx , depsyy , depsxy , depsyz , depszx ,
1146 * epsxx , epsyy , epsxy , epsyz , epszx ,
1147 * ssp , viscmx , copy_pla, off ,
1148 * el_temp , r11 , r12 , r13 , r21 ,
1149 * r22 , r23 , r31 , r32 , r33 ,
1150 * sigy , sigoxx , sigoyy , sigoxy , sigoyz ,
1151 * sigozx , signxx , signyy , signxy ,
1152 * signyz , signzx , sigvxx , sigvyy , sigvxy ,
1153 * sigvyz , sigvzx ,dpla,
1154 * additional_flt_parameters,additional_int_parameters)
1155!
1156 ! EINT_LOC REPOPY IN EINT (Buffer)
1157 DO i=jft,jlt
1158 eint(i,1) = eint_loc(1,i)
1159 eint(i,2) = eint_loc(2,i)
1160 lbuf%PLA(i) = copy_pla(i)
1161 ENDDO
1162 ELSE
1163 CALL mds_userlib_name_get(mds_libname,length)
1164 CALL ancmsg(msgid=287,anmode=aninfo,
1165 . c1=mds_libname(1:length))
1166 CALL arret(2)
1167 ENDIF ! MDS_AVAIL == 1
1168#endif
1169 ENDIF !ILAW
1170c-------------------------------------------
1171 DO i=jft,jlt
1172 viscmx(i) = max(dm,viscmx(i))
1173 ENDDO
1174c-------------------------------------------
1175c End of material laws
1176C-----------------------------------------------
1177C Failure models
1178C-----------------------------------------------
1179 IF (ifailure == 1) THEN
1180 IF ((itask==0).AND.(imon_mat==1))CALL startime(timers,121)
1181c
1182 IF (ixfem > 0) THEN
1183 DO i=jft,jlt
1184 tensx(i,1) = zero
1185 tensx(i,2) = zero
1186 tensx(i,3) = zero
1187 tensx(i,4) = zero
1188 tensx(i,5) = zero
1189 ENDDO
1190 ENDIF
1191C
1192 sigoff(1:nel) = one
1193 dmg_loc_scale(1:nel) = one
1194 dmg_orth_scale(1:nel,1:5) = one
1195c
1196 mpt = npttot * max(1,npg)
1197 fbuf => bufly%FAIL(ir,is,it)
1198c
1199 ! Length used for regularization (failure criterion parameters scaling)
1200 ! -> If non-local, criterion parameters are scaled with LE_MAX parameter
1201 IF (inloc > 0) THEN
1202 le_max(1:nel) = nloc_dmg%LE_MAX(mat(1))
1203 el_len => le_max(1:nel)
1204 ! -> If not, criterion parameters are scaled with the element characteristic length
1205 ELSE
1206 el_len => aldt(1:nel)
1207 ENDIF
1208c
1209C plastic strain increment for all plastic laws
1210 IF (bufly%L_PLA > 0) THEN
1211 ! Non-local material
1212 IF (inloc > 0) THEN
1213 DO i=jft,jlt
1214 dpla(i) = max(varnl(i,it),zero)
1215 epspl(i) = lbuf%EPSDNL(i)
1216 ENDDO
1217 el_pla => lbuf%PLANL(1:nel)
1218 ! Classical local material
1219 ELSE
1220 DO i=jft,jlt
1221 dpla(i) = lbuf%PLA(i) - pla0(i)
1222 ENDDO
1223 el_pla => lbuf%PLA(1:nel)
1224 ENDIF
1225 ENDIF
1226c
1227 IF (ixfem == 1) THEN
1228 uelr1 => elbuf_str%BUFLY(ilayer)%UELR1
1229 ELSE
1230 uelr1 => gbuf%UELR1
1231 ENDIF
1232 IF (ixlay == 0) THEN ! standard element
1233 uelr => gbuf%UELR
1234 ELSEIF (ixlay > 0) THEN ! xfem phantom element
1235 uelr => elbuf_str%BUFLY(ixlay)%UELR
1236 ENDIF
1237 dadv => gbuf%DMG
1238c---
1239 offl => lbuf%OFF
1240 offly=> bufly%OFF
1241 zt = zz(1)
1242c---
1243 DO ifl = 1, nfail ! loop over fail models in current layer
1244 uvarf => fbuf%FLOC(ifl)%VAR
1245 nvarf = fbuf%FLOC(ifl)%NVAR
1246 irupt = fbuf%FLOC(ifl)%ILAWF
1247 dam => fbuf%FLOC(ifl)%DAM
1248 dfmax => fbuf%FLOC(ifl)%DAMMX
1249 damini => fbuf%FLOC(ifl)%DAMINI
1250 tdel => fbuf%FLOC(ifl)%TDEL
1251 fld_idx=> fbuf%FLOC(ifl)%INDX
1252 foff => fbuf%FLOC(ifl)%OFF
1253 lf_dammx = fbuf%FLOC(ifl)%LF_DAMMX
1254 fail_param => mat_elem%MAT_PARAM(imat)%FAIL(ifl)
1255 nupar = mat_elem%MAT_PARAM(imat)%FAIL(ifl)%NUPARAM
1256 nipar = mat_elem%MAT_PARAM(imat)%FAIL(ifl)%NIPARAM
1257 nfunc_fail = mat_elem%MAT_PARAM(imat)%FAIL(ifl)%NFUNC
1258 ntabl_fail = mat_elem%MAT_PARAM(imat)%FAIL(ifl)%NTABLE
1259 uparamf => mat_elem%MAT_PARAM(imat)%FAIL(ifl)%UPARAM(1:nupar)
1260 iparamf => mat_elem%MAT_PARAM(imat)%FAIL(ifl)%IPARAM(1:nipar)
1261 ifunc_fail => mat_elem%MAT_PARAM(imat)%FAIL(ifl)%IFUNC(1:nfunc_fail)
1262 itabl_fail => mat_elem%MAT_PARAM(imat)%FAIL(ifl)%TABLE(1:ntabl_fail)
1263! IF (IXFEM == 0) PTHKF(ILAYER,IFL) = ZERO
1264c------------------------------------
1265 SELECT CASE (irupt)
1266c------------------------------------
1267 CASE (1) ! Johnson-Cook
1268 IF (ixfem == 0) THEN
1269 CALL fail_johnson_c(
1270 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1271 2 tt ,ngl ,ipg ,ilayer ,it ,
1272 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1273 4 dpla ,epspl ,tstar ,off ,foff ,
1274 5 dfmax ,tdel )
1275 ELSE
1276 CALL fail_johnson_xfem(
1277 1 nel ,nupar ,uparamf ,nvarf ,uvarf ,
1278 2 tt ,tensx ,dpla ,epspl ,tstar ,
1279 3 ngl ,ipt ,mpt ,nptt ,uelr1 ,
1280 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1281 5 off ,offl ,gbuf%NOFF,dfmax ,tdel ,
1282 6 elcrkini ,ixfem ,ixel ,ilayer ,it )
1283 ENDIF
1284c
1285 CASE (2) ! Tuler Butcher
1286 IF (ixfem == 0) THEN
1287 CALL fail_tbutcher_c(
1288 1 nel ,nuparam ,nvarf ,uparam ,uvarf ,
1289 2 tt ,dt1c ,ipg ,ilayer ,it ,
1290 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1291 4 ngl ,off ,foff ,dfmax ,tdel )
1292 ELSE
1293 CALL fail_tbutcher_xfem(
1294 1 nel ,nupar ,uparamf ,nvarf ,uvarf ,
1295 2 tt ,dt1c ,tensx ,dfmax ,tdel ,
1296 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1297 4 ngl ,ipt ,mpt ,
1298 5 gbuf%NOFF,off ,offl ,elcrkini ,ixfem ,
1299 6 ixel ,ilayer ,it ,nptt ,uelr1 )
1300 ENDIF
1301c
1302 CASE (3) ! Wilkins
1303 CALL fail_wilkins_c(
1304 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1305 2 tt ,ngl ,ipg ,ilayer ,it ,
1306 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1307 4 dpla ,foff ,dfmax ,tdel )
1308c
1309 CASE (4) ! User1
1310 DO i=jft,jlt
1311 copy_pla(i) = lbuf%PLA(i)
1312 ENDDO
1313 IF (logical_userl_avail)THEN
1314 tt_local = tt
1315 CALL eng_userlib_flawc(irupt,nel ,nupar,nvarf,nfunc_fail,ifunc_fail,npf,
1316 2 tf ,tt_local ,dt1c ,uparamf,ngl ,ipt,
1317 3 mpt ,ipg ,ibidon2,ibidon3 ,
1318 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1319 5 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
1320 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1321 7 copy_pla ,dpla ,epspl ,uvarf ,uelr ,
1322 8 off ,aldt ,area ,dfmax,bidon4,bidon5 )
1323 ELSE
1324! CALL F04LAWC(NEL ,NUPAR,NVARF,NFUNC_FAIL,IFUNC_FAIL,NPF,
1325! 2 TF ,TT ,DT1C ,UPARAMF,NGL ,IPT,
1326! 3 MPT ,IPG ,IBIDON2,IBIDON3 ,
1327! 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
1328! 5 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
1329! 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
1330! 7 COPY_PLA ,DPLA ,EPSPL ,UVARF ,UELR ,
1331! 8 OFF ,ALDT ,AREA ,DFMAX,BIDON4,BIDON5 )
1332!!!
1333 ! ----------------
1334 ! ERROR to be printed & exit
1335 option='/FAIL/USER1 - SHELL '
1336 size=len_trim(option)
1337 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1338 CALL arret(2)
1339 ! ----------------
1340!!!
1341 ENDIF
1342 DO i=jft,jlt
1343 lbuf%PLA(i) = copy_pla(i)
1344 ENDDO
1345
1346c
1347 CASE (5) ! User2
1348 DO i=jft,jlt
1349 copy_pla(i) = lbuf%PLA(i)
1350 ENDDO
1351 IF (logical_userl_avail)THEN
1352 tt_local = tt
1353 CALL eng_userlib_flawc(irupt,nel ,nupar,nvarf,nfunc_fail,ifunc_fail,npf,
1354 2 tf ,tt_local,dt1c ,uparamf,ngl ,ipt,
1355 3 mpt ,ipg ,ibidon2,ibidon3 ,
1356 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1357 5 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
1358 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1359 7 copy_pla ,dpla ,epspl ,uvarf ,uelr ,
1360 8 off ,aldt ,area ,dfmax,bidon4,bidon5 )
1361 ELSE
1362! CALL F05LAWC (NEL ,NUPAR,NVARF,NFUNC_FAIL,IFUNC_FAIL,NPF,
1363! 2 TF ,TT ,DT1C ,UPARAMF,NGL,IPT,
1364! 3 MPT ,IPG ,IBIDON2,IBIDON3 ,
1365! 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
1366! 5 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
1367! 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1368! 7 COPY_PLA ,DPLA ,EPSPL ,UVARF ,UELR ,
1369! 8 OFF ,ALDT ,AREA ,DFMAX,BIDON4,BIDON5 )
1370!!!
1371 ! ----------------
1372 ! ERROR to be printed & exit
1373 option='/FAIL/USER2 - SHELL '
1374 size=len_trim(option)
1375 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1376 CALL arret(2)
1377 ! ----------------
1378!!!
1379 ENDIF
1380 DO i=jft,jlt
1381 lbuf%PLA(i) = copy_pla(i)
1382 ENDDO
1383
1384c
1385 CASE (6) ! User3
1386 DO i=jft,jlt
1387 copy_pla(i) = lbuf%PLA(i)
1388 ENDDO
1389 IF (logical_userl_avail)THEN
1390 tt_local = tt
1391 CALL eng_userlib_flawc(irupt,nel ,nupar,nvarf,nfunc_fail,ifunc_fail,npf,
1392 2 tf ,tt_local ,dt1c ,uparamf,ngl ,ipt,
1393 3 mpt ,ipg ,ibidon2,ibidon3 ,
1394 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1395 5 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
1396 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1397 7 copy_pla ,dpla ,epspl ,uvarf ,uelr ,
1398 8 off ,aldt ,area ,dfmax,bidon4,bidon5 )
1399 ELSE
1400! CALL F06LAWC(NEL ,NUPAR,NVARF,NFUNC_FAIL,IFUNC_FAIL,NPF,
1401! 2 TF ,TT ,DT1C ,UPARAMF,NGL ,
1402! 3 IPT ,MPT ,IPG,IBIDON2,IBIDON3,
1403! 4 SIGNXX ,SIGNYY ,SIGNXY ,SIGNYZ ,SIGNZX ,
1404! 5 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
1405! 6 EPSXX ,EPSYY ,EPSXY ,EPSYZ ,EPSZX ,
1406! 7 COPY_PLA ,DPLA ,EPSPL ,UVARF ,UELR ,
1407! 8 OFF ,ALDT ,AREA ,DFMAX,BIDON4,BIDON5 )
1408!!!
1409 ! ----------------
1410 ! ERROR to be printed & exit
1411 option='/FAIL/USER3 - SHELL '
1412 size=len_trim(option)
1413 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1414 CALL arret(2)
1415 ! ----------------
1416!!!
1417 ENDIF
1418 DO i=jft,jlt
1419 lbuf%PLA(i) = copy_pla(i)
1420 ENDDO
1421c
1422 CASE (7) ! FLD
1423 DO i=jft,jlt
1424 zt=zz(i)*thk0(i)
1425 epsxx(i)= gstr(i,1)+zt*gstr(i,6)
1426 epsyy(i)= gstr(i,2)+zt*gstr(i,7)
1427 epsxy(i)= gstr(i,3)+zt*gstr(i,8)
1428 epsyz(i)= gstr(i,4)
1429 epszx(i)= gstr(i,5)
1430 ENDDO
1431 IF (ixfem == 0) THEN
1432 CALL fail_fld_c(
1433 1 nel ,nupar ,nfunc_fail,ifunc_fail ,
1434 2 npf ,tf ,tt ,uparamf ,
1435 3 ngl ,ipg ,ilayer ,it ,
1436 4 epsxx ,epsyy ,epsxy ,lf_dammx ,
1437 5 depsxx ,depsyy ,depsxy ,el_pla ,
1438 6 zt ,off ,foff ,tdel ,
1439 7 fld_idx ,dam ,dfmax ,dt1 ,
1440 8 nipar ,iparamf ,nvarf ,uvarf )
1441 ELSE
1442 CALL fail_fld_xfem(
1443 1 nel ,nupar ,nvarf ,nfunc_fail,ifunc_fail,
1444 2 npf ,tf ,tt ,uparamf ,
1445 3 ngl ,ipt ,mpt ,ssp ,tensx ,
1446 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1447 5 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1448 6 uvarf ,gbuf%NOFF ,off ,lf_dammx ,
1449 7 elcrkini ,ixfem ,ixel ,ilayer ,it ,
1450 8 offl ,nptt ,uelr1 ,dfmax ,tdel ,
1451 9 dam ,fld_idx ,nipar ,iparamf ,el_pla ,
1452 a depsxx ,depsyy ,depsxy ,dt1 )
1453 ENDIF
1454c
1455 CASE (9) ! Xue_wierzbicki
1456 CALL fail_wierzbicki_c(
1457 1 nel ,nupar ,uparamf ,nvarf ,uvarf ,
1458 2 tt ,ngl ,ipg ,ilayer ,it ,
1459 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1460 4 dpla ,off ,foff ,dfmax ,
1461 5 tdel )
1462c
1463 CASE (10) ! Tension Strain failure model
1464 CALL fail_tensstrain_c(
1465 1 nel ,nfunc_fail ,nupar ,nvarf ,ifunc_fail ,
1466 2 uparamf ,uvarf ,npf ,tf ,tt ,
1467 3 ngl ,ipg ,ilayer ,it ,epspl ,
1468 4 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1469 5 off ,foff ,dfmax ,tdel ,
1470 6 dmg_flag ,dmg_loc_scale ,aldt ,tstar ,ismstr )
1471c
1472 CASE (11) ! Energy failure model
1473 CALL fail_energy_c(
1474 1 nel ,nupar ,nvarf ,nfunc_fail ,ifunc_fail ,
1475 2 uparamf ,uvarf ,npf ,tf ,tt ,
1476 3 ngl ,ipg ,ilayer ,it ,epspl ,
1477 4 area ,thkn ,dmg_flag ,
1478 5 dmg_loc_scale ,off ,foff ,dfmax ,tdel ,
1479 6 signxx ,signyy ,signxy ,signyz ,signzx ,
1480 7 depsxx ,depsyy ,depsxy ,depsyz ,depszx )
1481c
1482 CASE (13) ! Chang-Chang failure model
1483 CALL fail_changchang_c(
1484 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1485 2 tt ,dt1c ,ipg ,ilayer ,it ,
1486 3 ngl ,dmg_flag ,dmg_loc_scale ,dfmax ,tdel ,
1487 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1488 5 off ,foff ,lf_dammx )
1489c
1490 CASE (14) ! Hashin failure model
1491! DO I=JFT,JLT
1492! EPSP(I) = MAX(ABS(EPSPXX(I)),ABS(EPSPYY(I)),
1493! . ABS(EPSPXY(I)),EM20)
1494! ENDDO
1495 CALL fail_hashin_c(
1496 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1497 2 tt ,dt1c ,ipg ,ilayer ,it ,
1498 3 ngl ,dmg_flag ,dmg_loc_scale ,dfmax ,tdel ,
1499 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1500 5 off ,foff ,ply_id ,
1501 6 epspl ,fwave_el ,dadv ,lf_dammx )
1502c
1503 CASE (16) ! Modified Puck failure model
1504 CALL fail_puck_c(
1505 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1506 2 tt ,ngl ,ipg ,ilayer ,it ,
1507 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1508 4 off ,foff ,dmg_flag ,dmg_loc_scale ,
1509 5 dfmax ,lf_dammx ,tdel ,dt1c )
1510c
1511 CASE (23) ! Tabulated failure model
1512 IF (ixfem == 0) THEN
1513 CALL fail_tab_c(
1514 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1515 2 nfunc_fail ,ifunc_fail ,table ,npf ,tf ,
1516 3 tt ,ngl ,ipg ,ilayer ,it ,
1517 4 signxx ,signyy ,signxy ,ntabl_fail,itabl_fail,
1518 5 dpla ,epspl ,thkn ,el_len ,tstar ,
1519 6 dmg_flag,dmg_loc_scale ,off ,foff ,
1520 7 dfmax ,tdel ,inloc )
1521 ELSE
1522 CALL fail_tab_xfem(
1523 1 nel ,nupar ,nvarf ,npf ,tf ,
1524 2 tt ,dt1c ,uparamf ,ngl ,ipt ,
1525 3 mpt ,nfunc_fail ,ifunc_fail ,table ,
1526 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1527 5 dpla ,epspl ,tstar ,tensx ,uvarf ,
1528 6 gbuf%NOFF,aldt ,off ,offl ,elcrkini ,
1529 7 ixfem ,ixel ,ilayer ,dfmax ,tdel ,
1530 8 dmg_flag ,ntabl_fail,itabl_fail)
1531 ENDIF
1532c
1533 CASE (24) ! Orthotropic strain failure model
1534 CALL fail_orthstrain_c(
1535 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1536 2 nfunc_fail,ifunc_fail,npf ,tf ,ngl ,
1537 3 tt ,dt1 ,ipg ,ilayer ,it ,
1538 4 epsxx ,epsyy ,epsxy ,dmg_flag ,dmg_loc_scale ,
1539 5 epspxx ,epspyy ,epspxy ,aldt ,ismstr ,
1540 6 signxx ,signyy ,signxy ,lf_dammx ,
1541 7 off ,offly ,foff ,dfmax ,tdel )
1542c
1543 CASE (25) ! NXT Failure
1544 CALL fail_nxt_c(
1545 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1546 2 tt ,npf ,tf ,nfunc_fail,ifunc_fail,
1547 3 ngl ,ipg ,ilayer ,it ,hardm ,
1548 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1549 5 off ,foff ,dfmax ,tdel ,lf_dammx )
1550c
1551 CASE (28) ! windshield failure (Christian Alter model)
1552 irot = elbuf_str%BUFLY(ilayer)%LY_DIRA
1553 crkdir => elbuf_str%BUFLY(ilayer)%CRKDIR
1554 ifailwv = failwave%WAVE_MOD
1555 progressive_crack = 1
1556 orth_damage = 1
1557c
1558 IF (ixfem > 0) THEN
1559 IF (ixel == 0) THEN
1560 crklen => elbuf_str%BUFLY(ilayer)%DMG(1:nel)
1561 ELSE
1562 crklen => aldt(1:nel)
1563 ENDIF
1564 CALL fail_wind_xfem(
1565 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1566 2 tt ,dt1 ,ssp ,aldt ,crklen ,
1567 3 elcrkini ,uelr1 ,off ,offly ,
1568 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1569 5 ngl ,ixel ,ilayer ,ipt ,nptt ,
1570 6 ixfem ,irot ,dir_a(jdir),dir1_crk ,dir2_crk ,
1571 7 crkdir )
1572c
1573 ELSEIF (ifailwv > 0) THEN
1574 CALL fail_wind_frwave(
1575 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1576 2 tt ,dt1 ,ssp ,aldt ,fwave_el ,
1577 3 uelr ,uelr1 ,off ,offly ,foff ,
1578 4 signxx ,signyy ,signxy ,dfmax ,ngl ,
1579 5 ilayer ,ipt ,nptt ,crkdir ,dadv ,
1580 6 dmg_flag ,trelax )
1581 ENDIF
1582c
1583 CASE (30) ! Biquadratic failure model
1584 CALL fail_biquad_c(
1585 1 jlt ,nvarf ,
1586 2 tt ,uparamf ,ngl ,ipt ,mpt ,
1587 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1588 4 dpla ,uvarf ,uelr1 ,
1589 5 off ,offl ,dfmax ,tdel ,nfunc_fail,
1590 6 ifunc_fail,npf ,tf ,el_len ,foff ,ipg ,
1591 7 dmg_flag ,dmg_loc_scale)
1592c
1593 CASE (31) ! Anisotropic fabric failure model
1594c
1595 IF (ismstr == 11) THEN
1596 deps1 => depsxx(1:nel)
1597 deps2 => depsyy(1:nel)
1598 eps1 => depsxx(1:nel)
1599 eps2 => depsyy(1:nel)
1600 ELSE
1601 ii = nel*3
1602 jj = nel + ii
1603 deps1 => depsxx(1:nel)
1604 deps2 => depsyy(1:nel)
1605 eps1 => uvar(ii:ii+nel)
1606 eps2 => uvar(jj:jj+nel)
1607 ENDIF
1608 CALL fail_fabric_c(
1609 1 nel ,ngl ,nupar ,nvarf ,nfunc_fail ,
1610 2 uparamf ,uvarf ,ifunc_fail ,tt ,dt1 ,
1611 3 npf ,tf ,deps1 ,deps2 ,eps1 ,
1612 4 eps2 ,signxx ,signyy ,dfmax ,tdel ,
1613 5 ipg ,ilayer ,it ,off ,foff )
1614c
1615 CASE (32) ! HC_DSSE failure model
1616 CALL fail_hc_dsse_c(
1617 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1618 2 tt ,ngl ,ipt ,ilayer ,it ,
1619 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1620 4 dpla ,off ,foff ,
1621 5 dfmax ,tdel ,uelr1 ,mpt ,
1622 6 fld_idx ,dam ,el_pla )
1623c
1624 CASE (34) ! Cockcroft-Latham failure model
1625 CALL fail_cockroft_c(
1626 1 jlt ,nvarf ,
1627 2 tt ,uparamf ,ngl ,ipt ,ilayer ,
1628 3 mpt ,it ,ipg ,
1629 4 signxx ,signyy ,signxy ,
1630 5 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1631 6 dpla ,uvarf ,uelr1 ,foff ,
1632 7 off ,dfmax ,tdel )
1633c
1634 CASE (36) ! Visual failure model
1635 CALL fail_visual_c(
1636 1 jlt ,nvarf ,tt ,dt1 ,uparamf ,ngl ,
1637 2 signxx ,signyy ,signxy ,epsxx ,epsyy ,epsxy ,
1638 3 uvarf ,off ,dfmax ,ismstr )
1639c
1640 CASE (37) ! old (obsolete) abulated failure model
1641 IF (ixfem == 0) THEN
1642 CALL fail_tab_old_c(
1643 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1644 2 nfunc_fail ,ifunc_fail ,npf ,tf ,
1645 3 tt ,ngl ,ipg ,ilayer ,it ,
1646 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1647 5 dpla ,epspl ,thkn ,el_len ,tstar ,
1648 6 off ,foff ,dfmax ,tdel )
1649 ELSE
1650 CALL fail_tab_old_xfem(
1651 1 nel ,nupar ,nvarf ,npf ,tf ,
1652 2 tt ,dt1c ,uparamf ,ngl ,ipt ,
1653 3 mpt ,nfunc_fail ,ifunc_fail ,dmg_flag ,
1654 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1655 5 dpla ,epspl ,tstar ,tensx ,uvarf ,
1656 6 gbuf%NOFF,aldt ,off ,offl ,elcrkini ,
1657 7 ixfem ,ixel ,ilayer ,dfmax ,tdel )
1658 ENDIF
1659c
1660 CASE (38) ! Orthotropic biquad
1661c
1662 CALL fail_orthbiquad_c(
1663 1 jlt ,nvarf ,
1664 2 tt ,uparamf ,ngl ,ipt ,mpt ,
1665 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1666 4 dpla ,epspl ,uvarf ,uelr1 ,
1667 5 off ,offl ,dfmax ,tdel ,nfunc_fail,
1668 6 ifunc_fail,npf ,tf ,el_len ,foff ,
1669 7 ipg )
1670c
1671 CASE (39) ! GENE1
1672c
1673 CALL fail_gene1_c(
1674 1 jlt ,nupar ,nvarf ,nfunc_fail ,ifunc_fail ,
1675 2 npf ,tf ,tt ,dt1c ,uparamf ,ipg ,
1676 3 ngl ,gbuf%DT ,epspl ,uvarf ,off ,
1677 4 epsxx ,epsyy ,epsxy ,area ,thkn ,
1678 5 signxx ,signyy ,signxy ,signyz ,signzx ,
1679 6 el_temp ,dfmax ,aldt ,table ,tdel ,
1680 7 thk0 ,ipt ,foff ,thklyl ,ntabl_fail,
1681 8 itabl_fail,lf_dammx,nipar ,iparamf ,dt)
1682c
1683 CASE (40) ! RTCL
1684c
1685 CALL fail_rtcl_c(
1686 1 jlt ,nupar ,nvarf ,tt ,dt1c ,uparamf ,
1687 2 signxx ,signyy ,signxy ,signyz ,signzx ,mpt ,
1688 3 ngl ,dpla ,uvarf ,off ,dfmax ,tdel ,
1689 4 area ,foff ,igtyp ,offl ,ipt ,thk0 )
1690c
1691 CASE (41) ! TAB2
1692c
1693 CALL fail_tab2_c(
1694 1 jlt ,nupar ,nvarf ,nfunc_fail,ifunc_fail,
1695 2 npf ,table ,tf ,tt ,uparamf ,
1696 3 ngl ,el_len ,dpla ,epspl ,uvarf ,
1697 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1698 5 el_temp ,foff ,dfmax ,tdel ,ipt ,
1699 6 ipg ,dmg_flag ,dmg_loc_scale,ntabl_fail,itabl_fail)
1700c
1701 CASE (42) ! INIEVO
1702c
1703 CALL fail_inievo_c(
1704 1 jlt ,nupar ,nvarf ,
1705 2 table ,ntabl_fail,itabl_fail ,tt ,uparamf ,
1706 3 ngl ,el_len ,dpla ,epspl ,uvarf ,
1707 4 signxx ,signyy ,signxy ,signyz ,signzx ,
1708 5 el_pla ,el_temp ,sigy ,foff ,dfmax ,
1709 6 tdel ,ipt ,ipg ,dmg_flag ,dmg_loc_scale,
1710 7 damini ,area ,inloc ,npg )
1711c
1712 CASE (43) ! Syazwan failure model
1713c
1714 CALL fail_syazwan_c(
1715 1 jlt ,uparamf ,nupar ,uvarf ,nvarf ,
1716 2 tt ,ngl ,ipt ,dpla ,el_pla ,
1717 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1718 4 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1719 5 dfmax ,nfunc_fail ,ifunc_fail ,el_len ,foff ,
1720 6 ipg ,dmg_flag ,dmg_loc_scale,npf ,tf )
1721c
1722 CASE (44) ! Tsai-Wu failure model
1723c
1724 CALL fail_tsaiwu_c(
1725 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1726 2 tt ,ngl ,ipg ,ilayer ,it ,
1727 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1728 4 off ,foff ,dmg_flag ,dmg_loc_scale ,
1729 5 dfmax ,lf_dammx ,tdel ,dt1c )
1730c
1731 CASE (45) ! Tsai-Hill failure model
1732c
1733 CALL fail_tsaihill_c(
1734 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1735 2 tt ,ngl ,ipg ,ilayer ,it ,
1736 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1737 4 off ,foff ,dmg_flag ,dmg_loc_scale ,
1738 5 dfmax ,lf_dammx ,tdel ,dt1c )
1739c
1740 CASE (46) ! Hoffman failure model
1741c
1742 CALL fail_hoffman_c(
1743 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1744 2 tt ,ngl ,ipg ,ilayer ,it ,
1745 3 signxx ,signyy ,signxy ,signyz ,signzx ,
1746 4 off ,foff ,dmg_flag ,dmg_loc_scale ,
1747 5 dfmax ,lf_dammx ,tdel ,dt1c )
1748c
1749 CASE (47) ! Maximum Strain failure model
1750c
1751 CALL fail_maxstrain_c(
1752 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1753 2 tt ,ngl ,ipg ,ilayer ,it ,
1754 3 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
1755 4 off ,foff ,dmg_flag ,dmg_loc_scale ,
1756 5 dfmax ,lf_dammx ,tdel ,dt1c )
1757c
1758 CASE (48) ! Orthotropic energy failure model
1759c
1760 CALL fail_orthenerg_c(
1761 1 nel ,nupar ,nvarf ,uparamf ,uvarf ,
1762 2 ngl ,tt ,ipg ,ilayer ,it ,
1763 3 depsxx ,depsyy ,depsxy ,dmg_flag ,dmg_orth_scale,
1764 4 aldt ,foff ,dfmax ,tdel ,
1765 5 signxx ,signyy ,signxy ,igtyp ,ply_id )
1766c
1767 CASE (50) ! Lemaitre continuum damage model
1768c
1769 CALL fail_lemaitre_c(
1770 1 nel ,nupar ,uparamf ,mat_elem%MAT_PARAM(imat),
1771 2 signxx ,signyy ,signxy ,dpla ,el_pla ,
1772 3 foff ,off ,dfmax ,tdel ,dmg_flag ,
1773 4 dmg_loc_scale,ipg ,ply_id ,ilayer ,it ,
1774 5 ngl ,tt ,igtyp )
1775c
1776 CASE (51) ! Composite failure model
1777c
1778 CALL fail_composite_c(
1779 1 nel ,fail_param,nvarf ,uvarf ,tt ,
1780 2 ngl ,ipg ,ilayer ,it ,ply_id ,
1781 3 igtyp ,tdel ,signxx ,signyy ,signxy ,
1782 4 foff ,dmg_flag ,dmg_loc_scale,lf_dammx,dfmax )
1783c
1784c-------------
1785 END SELECT
1786c-------------
1787 IF (orth_damage == 0) THEN
1788 DO i=1,nel
1789 IF (foff(i) == 0) THEN
1790 offl(i) = zero
1791c SIGOFF(I) = OFFL(I)
1792 sigoff(i) = zero
1793 ENDIF
1794 ENDDO
1795 ELSE
1796 DO i=1,nel
1797 IF (off(i) == zero) THEN
1798 sigoff(i) = zero
1799 ENDIF
1800 ENDDO
1801 ENDIF
1802c-------------
1803 ENDDO ! NFAIL
1804 IF ((itask==0).AND.(imon_mat==1)) CALL stoptime(timers,121)
1805 ENDIF ! IF (IFAILURE == 1)
1806c-----------------------------------
1807c END of FAILURE MODELS
1808c-----------------------------------
1809#include "vectorize.inc"
1810 DO i=jft,jlt
1811 lbuf%SIG(ij(1)+i) = signxx(i) * sigoff(i)
1812 lbuf%SIG(ij(2)+i) = signyy(i) * sigoff(i)
1813 lbuf%SIG(ij(3)+i) = signxy(i) * sigoff(i)
1814 lbuf%SIG(ij(4)+i) = signyz(i) * sigoff(i)
1815 lbuf%SIG(ij(5)+i) = signzx(i) * sigoff(i)
1816 ENDDO
1817C
1818 IF (igtyp /= 1) THEN
1819 SELECT CASE (dmg_flag)
1820 CASE (0)
1821 tens(jft:jlt,1) = signxx(jft:jlt)+sigvxx(jft:jlt)
1822 tens(jft:jlt,2) = signyy(jft:jlt)+sigvyy(jft:jlt)
1823 tens(jft:jlt,3) = signxy(jft:jlt)+sigvxy(jft:jlt)
1824 tens(jft:jlt,4) = signyz(jft:jlt)+sigvyz(jft:jlt)
1825 tens(jft:jlt,5) = signzx(jft:jlt)+sigvzx(jft:jlt)
1826 CASE (1)
1827 tens(jft:jlt,1) = (signxx(jft:jlt)+sigvxx(jft:jlt))*dmg_loc_scale(jft:jlt)
1828 tens(jft:jlt,2) = (signyy(jft:jlt)+sigvyy(jft:jlt))*dmg_loc_scale(jft:jlt)
1829 tens(jft:jlt,3) = (signxy(jft:jlt)+sigvxy(jft:jlt))*dmg_loc_scale(jft:jlt)
1830 tens(jft:jlt,4) = (signyz(jft:jlt)+sigvyz(jft:jlt))*dmg_loc_scale(jft:jlt)
1831 tens(jft:jlt,5) = (signzx(jft:jlt)+sigvzx(jft:jlt))*dmg_loc_scale(jft:jlt)
1832 CASE (2)
1833 tens(jft:jlt,1) = (signxx(jft:jlt)+sigvxx(jft:jlt))*dmg_orth_scale(jft:jlt,1)
1834 tens(jft:jlt,2) = (signyy(jft:jlt)+sigvyy(jft:jlt))*dmg_orth_scale(jft:jlt,2)
1835 tens(jft:jlt,3) = (signxy(jft:jlt)+sigvxy(jft:jlt))*dmg_orth_scale(jft:jlt,3)
1836 tens(jft:jlt,4) = (signyz(jft:jlt)+sigvyz(jft:jlt))*dmg_orth_scale(jft:jlt,4)
1837 tens(jft:jlt,5) = (signzx(jft:jlt)+sigvzx(jft:jlt))*dmg_orth_scale(jft:jlt,5)
1838 END SELECT
1839c
1840 IF (igtyp == 16) THEN
1841 DO i=jft,jlt
1842 ii = jdir + i-1
1843 r1 = dir_a(ii)
1844 s1 = dir_a(ii+nel)
1845 r2 = dir_b(ii)
1846 s2 = dir_b(ii+nel)
1847
1848 rs1= r1*s1
1849 rs2= r2*s2
1850 r12a = r1*r1
1851 r22a = r2*r2
1852 s12b = s1*s1
1853 s22b = s2*s2
1854
1855 rs3 = s1*s2-r1*r2
1856 r3r3= one+s1*r2+r1*s2
1857 r3r3= half*r3r3
1858 s3s3= one-s1*r2-r1*s2
1859 s3s3= half*s3s3
1860 t1 = tens(i,1)
1861 t2 = tens(i,2)
1862 t3 = tens(i,3)
1863 tens(i,1) = r12a*t1 + r22a*t2 - rs3*t3
1864 tens(i,2) = s12b*t1 + s22b*t2 + rs3*t3
1865 tens(i,3) = rs1*t1 + rs2*t2 + (r3r3 - s3s3)*t3
1866 tens(i,4) = signyz(i)
1867 tens(i,5) = signzx(i)
1868 ENDDO
1869c
1870 ELSE
1871 CALL urotov(jft,jlt,tens,dir_a(jdir),nel)
1872 ENDIF
1873C----------------------
1874C FORCES AND MOMENTS WHEN IGTYP /= 1
1875C----------------------
1876#include "vectorize.inc"
1877 DO i=jft,jlt
1878 for(i,1) = for(i,1) + thly(i)*tens(i,1)
1879 for(i,2) = for(i,2) + thly(i)*tens(i,2)
1880 for(i,3) = for(i,3) + thly(i)*tens(i,3)
1881 for(i,4) = for(i,4) + thly(i)*tens(i,4)
1882 for(i,5) = for(i,5) + thly(i)*tens(i,5)
1883 mom(i,1) = mom(i,1) + wmc(i)*tens(i,1)
1884 mom(i,2) = mom(i,2) + wmc(i)*tens(i,2)
1885 mom(i,3) = mom(i,3) + wmc(i)*tens(i,3)
1886 ENDDO
1887c
1888 ELSE ! IGTYP = 1
1889 SELECT CASE (dmg_flag)
1890 CASE (0)
1891 for(1:nel,1) = for(1:nel,1) + thly(1:nel)*(signxx(1:nel)+sigvxx(1:nel))
1892 for(1:nel,2) = for(1:nel,2) + thly(1:nel)*(signyy(1:nel)+sigvyy(1:nel))
1893 for(1:nel,3) = for(1:nel,3) + thly(1:nel)*(signxy(1:nel)+sigvxy(1:nel))
1894 for(1:nel,4) = for(1:nel,4) + thly(1:nel)*(signyz(1:nel)+sigvyz(1:nel))
1895 for(1:nel,5) = for(1:nel,5) + thly(1:nel)*(signzx(1:nel)+sigvzx(1:nel))
1896 mom(1:nel,1) = mom(1:nel,1) + wmc(1:nel)*(signxx(1:nel)+sigvxx(1:nel))
1897 mom(1:nel,2) = mom(1:nel,2) + wmc(1:nel)*(signyy(1:nel)+sigvyy(1:nel))
1898 mom(1:nel,3) = mom(1:nel,3) + wmc(1:nel)*(signxy(1:nel)+sigvxy(1:nel))
1899 CASE (1) ! softening with DMG_LOC_SCALE from failure model
1900 for(1:nel,1) = for(1:nel,1) + thly(1:nel)*(signxx(1:nel)+sigvxx(1:nel))*dmg_loc_scale(1:nel)
1901 for(1:nel,2) = for(1:nel,2) + thly(1:nel)*(signyy(1:nel)+sigvyy(1:nel))*dmg_loc_scale(1:nel)
1902 for(1:nel,3) = for(1:nel,3) + thly(1:nel)*(signxy(1:nel)+sigvxy(1:nel))*dmg_loc_scale(1:nel)
1903 for(1:nel,4) = for(1:nel,4) + thly(1:nel)*(signyz(1:nel)+sigvyz(1:nel))*dmg_loc_scale(1:nel)
1904 for(1:nel,5) = for(1:nel,5) + thly(1:nel)*(signzx(1:nel)+sigvzx(1:nel))*dmg_loc_scale(1:nel)
1905 mom(1:nel,1) = mom(1:nel,1) + wmc(1:nel) *(signxx(1:nel)+sigvxx(1:nel))*dmg_loc_scale(1:nel)
1906 mom(1:nel,2) = mom(1:nel,2) + wmc(1:nel) *(signyy(1:nel)+sigvyy(1:nel))*dmg_loc_scale(1:nel)
1907 mom(1:nel,3) = mom(1:nel,3) + wmc(1:nel) *(signxy(1:nel)+sigvxy(1:nel))*dmg_loc_scale(1:nel)
1908 CASE (3) ! orthotropic softening with DMG_ORTH_SCALE from failure model
1909 for(1:nel,1) = for(1:nel,1) + thly(1:nel)*(signxx(1:nel)+sigvxx(1:nel))*dmg_orth_scale(1:nel,1)
1910 for(1:nel,2) = for(1:nel,2) + thly(1:nel)*(signyy(1:nel)+sigvyy(1:nel))*dmg_orth_scale(1:nel,2)
1911 for(1:nel,3) = for(1:nel,3) + thly(1:nel)*(signxy(1:nel)+sigvxy(1:nel))*dmg_orth_scale(1:nel,3)
1912 for(1:nel,4) = for(1:nel,4) + thly(1:nel)*(signyz(1:nel)+sigvyz(1:nel))*dmg_orth_scale(1:nel,4)
1913 for(1:nel,5) = for(1:nel,5) + thly(1:nel)*(signzx(1:nel)+sigvzx(1:nel))*dmg_orth_scale(1:nel,5)
1914 mom(1:nel,1) = mom(1:nel,1) + wmc(1:nel) *(signxx(1:nel)+sigvxx(1:nel))*dmg_orth_scale(1:nel,1)
1915 mom(1:nel,2) = mom(1:nel,2) + wmc(1:nel) *(signyy(1:nel)+sigvyy(1:nel))*dmg_orth_scale(1:nel,2)
1916 mom(1:nel,3) = mom(1:nel,3) + wmc(1:nel) *(signxy(1:nel)+sigvxy(1:nel))*dmg_orth_scale(1:nel,3)
1917 END SELECT
1918c
1919 ENDIF ! IGTYP
1920C-----------------------------------------------
1921C FACTORS FOR B.L. SHELLS (Zeng&Combescure)
1922C-----------------------------------------------
1923 IF(flag_zcfac) THEN
1924 zcfac(jft:jlt,1) = zcfac(jft:jlt,1) + etse(jft:jlt) * thly(jft:jlt)
1925 zcfac(jft:jlt,2) = min(etse(jft:jlt),zcfac(jft:jlt,2))
1926 ENDIF
1927 yld(jft:jlt) = yld(jft:jlt) + sigy(jft:jlt)*thly(jft:jlt)
1928 ssp_eq(jft:jlt) = ssp_eq(jft:jlt) + ssp(jft:jlt)*thly(jft:jlt)
1929c-----------------------------------------------
1930 IF (impl_s > 0) THEN
1931 CALL putsignorc3(jft ,jlt ,iun,ng,ipt,g_imp ,sigksi)
1932 END IF
1933c-----------------------------------------------
1934 IF (ixel == 0 .and. progressive_crack == 0) THEN ! original element
1935 dir_orth => bufly%DIRA
1936 irot = elbuf_str%BUFLY(ilayer)%LY_DIRA
1937 IF (ixfem == 1) THEN ! multilayer
1938 CALL xfem_crk_dir(
1939 . jlt ,ilayer ,ixfem ,elcrkini,
1940 . dir_orth,tensx ,dir1_crk ,dir2_crk ,irot )
1941 ELSEIF (ixfem == 2) THEN ! monolayer
1942 iptx = 1
1943 CALL xfem_crk_dir(
1944 . jlt ,iptx ,ixfem ,elcrkini,
1945 . dir_orth ,tensx ,dir1_crk,dir2_crk,irot )
1946 ENDIF
1947 ENDIF
1948C------------------------------------------------------------
1949C Variable to regularize with Non-local
1950C------------------------------------------------------------
1951 IF (bufly%L_PLA > 0) THEN
1952 ! Non-local material
1953 IF (inloc > 0) THEN
1954 DO i=jft,jlt
1955 IF (off(i) == one) THEN
1956 varnl(i,it) = lbuf%PLA(i)
1957 ELSE
1958 varnl(i,it) = zero
1959 ENDIF
1960 ENDDO
1961 ENDIF
1962 ENDIF
1963C-------------------------------------
1964 ENDDO ! IT=1,NPTT
1965 ipt_all = ipt_all + nptt
1966 ENDDO ! DO ILAY =1,NLAY
1967c--------------------------------------------------
1968c end of loop on integration points (layers)
1969c--------------------------------------------------
1970c TEST OF ELEMENT FAILURE
1971c--------------------------------------------------
1972 ! Flag for printing element deletion message
1973 print_fail(1:nel) = .true.
1974 ! Check element deletion from failure criterion
1975 IF (ifailure == 1 .and. ixfem == 0) THEN
1976 IF (orth_damage == 1) THEN ! /fail/alter + front_wave only
1977 tfail => gbuf%DMG(1+nel:nel*2) ! only for /FAIL/ALTER
1979 . elbuf_str,mat_elem ,geo ,pid(1) ,
1980 . ngl ,nel ,ir ,is ,
1981 . nlay ,npttot ,thk_ly ,thkly ,
1982 . off ,npg ,stack ,isubstack,
1983 . igtyp ,failwave ,fwave_el ,dmg_flag ,
1984 . tt ,trelax ,tfail ,dmg_glob_scale)
1985 ELSEIF (npg == 1) THEN
1986 CALL fail_setoff_c(elbuf_str,mat_elem ,geo ,pid(1) ,
1987 . ngl ,nel ,nlay ,npttot ,
1988 . thk_ly ,thkly ,off ,stack ,
1989 . isubstack,igtyp ,failwave ,fwave_el ,
1990 . nlay_max ,laynpt_max,numgeo ,numstack ,
1991 . igeo ,print_fail,
1992 . ipart ,lipart1 ,ipartc ,npart)
1993 ELSE
1994 CALL fail_setoff_npg_c(
1995 . elbuf_str,mat_elem ,geo ,pid(1) ,
1996 . ngl ,nel ,ir ,is ,
1997 . nlay ,npttot ,thk_ly ,thkly ,
1998 . off ,npg ,stack ,isubstack,
1999 . igtyp ,failwave ,fwave_el ,nlay_max ,
2000 . laynpt_max,numgeo ,ipg ,numstack ,
2001 . igeo ,print_fail,
2002 . ipart ,lipart1 ,ipartc ,npart)
2003 ENDIF
2004 ENDIF
2005c---
2006 ! Checking element deletion and printing element deletion messages (if needed)
2007 nindx = 0
2008 IF (ixfem == 0) THEN
2009 DO i=jft,jlt
2010 IF (off(i) == four_over_5 .and. ioff_duct(i) == 0 .or. ! rupture /fail
2011 . off(i) > zero .and. off_old(i) < em01 .or. ! progressive rupture Law 2,22,25
2012 . off(i) > zero .and. off(i) < one .and. dmg_flag == 1 .and.
2013 . dmg_glob_scale(i) < em02) THEN
2014 off(i) = zero
2015 ! Printing message not always mandatory
2016 IF (print_fail(i)) THEN
2017 nindx = nindx + 1
2018 indx(nindx) = i
2019 ENDIF
2020 ENDIF
2021 ENDDO
2022 ENDIF
2023c--------------------------------------------------------
2024c SHOOTING NODES ALGORITHM ACTIVATION
2025c--------------------------------------------------------
2026 DO i = 1,nel
2027 IF ((off_old(i) > zero) .AND. (off(i) == zero)) THEN
2028 idel7nok = 1
2029 ENDIF
2030 ENDDO
2031c------------------------------------------------------------------
2032C membrane viscosity
2033C---------------------------
2034 IF (igtyp == 11 .AND. igmat > 0) THEN
2035 ipgmat = 700
2036 DO i=jft,jlt
2037 rho(i) = geo(ipgmat+1,pid(1))
2038 ssp(i) = geo(ipgmat+9,pid(1))
2039 ENDDO
2040 ssp_eq(jft:jlt) = ssp(jft:jlt)
2041 ELSEIF (igtyp == 52 .OR.
2042 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0)) THEN
2043 DO i=jft,jlt
2044 ssp(i) = pm_stack(9,isubstack)
2045 rho(i) = pm_stack(1,isubstack)
2046 ENDDO
2047 ssp_eq(jft:jlt) = ssp(jft:jlt)
2048 ENDIF
2049c
2050 thk(jft:jlt) = max(thkn(jft:jlt),em30)
2051c
2052 fact = onep414*dm
2053 visc(jft:jlt) = fact*ssp(jft:jlt)*sqrt(area(jft:jlt))*dtinv*rho(jft:jlt)
2054c
2055 for(jft:jlt,1)=for(jft:jlt,1)+visc(jft:jlt)*(exx(jft:jlt)+half*eyy(jft:jlt))
2056 for(jft:jlt,2)=for(jft:jlt,2)+visc(jft:jlt)*(eyy(jft:jlt)+half*exx(jft:jlt))
2057 for(jft:jlt,3)=for(jft:jlt,3)+visc(jft:jlt)* exy(jft:jlt) *third
2058c
2059 for(jft:jlt,1)=for(jft:jlt,1)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2060 for(jft:jlt,2)=for(jft:jlt,2)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2061 for(jft:jlt,3)=for(jft:jlt,3)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2062 for(jft:jlt,4)=for(jft:jlt,4)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2063 for(jft:jlt,5)=for(jft:jlt,5)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2064 mom(jft:jlt,1)=mom(jft:jlt,1)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2065 mom(jft:jlt,2)=mom(jft:jlt,2)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2066 mom(jft:jlt,3)=mom(jft:jlt,3)*off(jft:jlt)*dmg_glob_scale(jft:jlt)
2067c
2068 degmb(jft:jlt) = degmb(jft:jlt)+ for(jft:jlt,1)*exx(jft:jlt)+for(jft:jlt,2)*eyy(jft:jlt)
2069 . + for(jft:jlt,3)*exy(jft:jlt)+for(jft:jlt,4)*eyz(jft:jlt)
2070 . + for(jft:jlt,5)*exz(jft:jlt)
2071 degfx(jft:jlt) = degfx(jft:jlt)+ mom(jft:jlt,1)*kxx(jft:jlt)+mom(jft:jlt,2)*kyy(jft:jlt)
2072 . + mom(jft:jlt,3)*kxy(jft:jlt)
2073!---
2074 DO i=jft,jlt
2075 vol2 = half*vol0(i)
2076 eint(i,1) = eint(i,1) + degmb(i)*vol2
2077 eint(i,2) = eint(i,2) + degfx(i)*thk0(i)*vol2
2078 ENDDO
2079!
2080 IF (jthe > 0) die(jft:jlt) = die(jft:jlt) +
2081 . coef(jft:jlt)*( degmb(jft:jlt)*half*vol0(jft:jlt) +
2082 . degfx(jft:jlt)*thk0(jft:jlt)*half*vol0(jft:jlt) )
2083c---------------------------------------------------
2084c check element failure with xfem
2085 IF (ixfem > 0) THEN
2086 DO i=jft,jlt
2087 IF (off(i) == four_over_5) THEN
2088 off(i) = zero
2089 nindx = nindx + 1
2090 indx(nindx) = i
2091 ENDIF
2092 ENDDO
2093 ENDIF
2094
2095c--- Shell rupture print out
2096c
2097 iofc = nindx ! INDX used before in IELOF - check if still useful
2098 IF (nindx > 0 .and. ixel == 0) THEN
2099 IF (imconv == 1) THEN
2100 DO ii = 1,nindx
2101 i = indx(ii)
2102#include "lockon.inc"
2103 WRITE(iout, 1000) ngl(i)
2104 WRITE(istdo,1100) ngl(i),tt
2105#include "lockoff.inc"
2106 ENDDO
2107 ENDIF
2108 ENDIF
2109c---------------------------------------------------
2110 1000 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
2111 1100 FORMAT(1x,'-- RUPTURE OF SHELL ELEMENT :',i10,' AT TIME :',g11.4)
2112c---------------------------------------------------
2113 RETURN
subroutine putsignorc3(jft, jlt, ir, is, it, g_imp, signor)
Definition cmatc3.F:524
#define my_real
Definition cppsort.cpp:32
subroutine fail_biquad_c(nel, nuvar, time, uparam, ngl, ipt, nptot, signxx, signyy, signxy, signyz, signzx, dpla, uvar, uel1, off, offl, dfmax, tdel, nfunc, ifunc, npf, tf, aldt, foff, ipg, dmg_flag, dmgscl)
subroutine fail_changchang_c(nel, nuparam, nuvar, uparam, uvar, time, timestep, ipg, ilay, ipt, ngl, dmg_flag, dmg_scale, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, off, foff, lf_dammx)
subroutine fail_cockroft_c(nel, nuvar, time, uparam, ngl, ipt, ilay, npt0, iptt, ipg, signxx, signyy, signxy, epsxx, epsyy, epsxy, epsyz, epszx, dpla, uvar, uel, foff, off, dfmax, tdel)
subroutine fail_energy_c(nel, nuparam, nuvar, nfunc, ifunc, uparam, uvar, npf, tf, time, ngl, ipg, ilay, ipt, epsp, area, thk, dmg_flag, dmg_scale, off, foff, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx)
subroutine fail_fabric_c(nel, ngl, nuparam, nuvar, nfunc, uparam, uvar, ifunc, time, timestep, npf, tf, deps1, deps2, eps1, eps2, sig1, sig2, dfmax, tdel, ipg, ilay, ipt, off, foff)
subroutine fail_fld_c(nel, nuparam, nfunc, ifunc, npf, tf, time, uparam, ngl, ipg, ilay, iptt, epsxx, epsyy, epsxy, lf_dammx, depsxx, depsyy, depsxy, pla, zt, off, foff, tdel, fld_idx, dam, dfmax, dt1, niparam, iparam, nuvar, uvar)
Definition fail_fld_c.F:42
subroutine fail_fld_xfem(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, uparam, ngl, ipt, nptot, ssp, tens, signxx, signyy, signxy, signyz, signzx, epsxx, epsyy, epsxy, epsyz, epszx, uvar, noff, off, lf_dammx, elcrkini, ixfem, ixel, ilay, iptt, offl, nptt, npttf, dfmax, tdel, dam, fld_idx, niparam, iparam, pla, depsxx, depsyy, depsxy, dt1)
subroutine fail_gene1_c(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, ipg, ngl, gbuf_dt, epsp, uvar, off, epsxx, epsyy, epsxy, area, thkn, signxx, signyy, signxy, signyz, signzx, temp, dfmax, aldt, table, tdele, thk0, ipt, foff, thklyl, ntablf, itablf, lf_dammx, niparam, iparam, dt)
subroutine fail_hashin_c(nel, nuparam, nuvar, uparam, uvar, time, timestep, ipg, ilay, ipt, ngl, dmg_flag, dmg_scale, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, off, foff, ply_id, epsp, fwave_el, dadv, lf_dammx)
subroutine fail_hc_dsse_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipt, ilay, iptt, signxx, signyy, signxy, signyz, signzx, dpla, off, foff, dfmax, tdel, uel, nptot, fld_idx, dam, pla)
subroutine fail_hoffman_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)
subroutine fail_inievo_c(nel, nuparam, nuvar, table, ntablf, itablf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signxy, signyz, signzx, pla, temp, sigy, foff, dfmax, tdele, ipt, ipg, dmg_flag, dmg_scale, damini, area, inloc, npg)
subroutine fail_johnson_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, iptt, signxx, signyy, signxy, signyz, signzx, dpla, epsp, tstar, off, foff, dfmax, tdel)
subroutine fail_johnson_xfem(nel, nuparam, uparam, nuvar, uvar, time, tens, dpla, epsp, tstar, ngl, ipt, nptot, nptt, npttf, signxx, signyy, signxy, signyz, signzx, off, offl, noff, dfmax, tdel, elcrkini, ixfem, ixel, ilay, iptt)
subroutine fail_maxstrain_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, epsxx, epsyy, epsxy, epsyz, epszx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)
subroutine fail_nxt_c(nel, nuparam, nuvar, uparam, uvar, time, npf, tf, nfunc, ifunc, ngl, ipg, ilay, ipt, hardm, signxx, signyy, signxy, signyz, signzx, off, foff, dfmax, tdel, lf_dammx)
Definition fail_nxt_c.F:37
subroutine fail_orthbiquad_c(nel, nuvar, time, uparam, ngl, ipt, nptot, signxx, signyy, signxy, signyz, signzx, dpla, epsp, uvar, uel1, off, offl, dfmax, tdel, nfunc, ifunc, npf, tf, aldt, foff, ipg)
subroutine fail_orthenerg_c(nel, nuparam, nuvar, uparam, uvar, ngl, time, ipg, ilay, ipt, depsxx, depsyy, depsxy, dmg_flag, dmg_scale, aldt, foff, dfmax, tdel, signxx, signyy, signxy, igtyp, ply_id)
subroutine fail_orthstrain_c(nel, nuparam, nuvar, uparam, uvar, nfunc, ifunc, npf, tf, ngl, time, timestep, ipg, ilay, ipt, epsxx, epsyy, epsxy, dmg_flag, dmg_scale, epspxx, epspyy, epspxy, aldt, ismstr, signxx, signyy, signxy, lf_dammx, off, offly, foff, dfmax, tdel)
subroutine fail_puck_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)
Definition fail_puck_c.F:36
subroutine fail_rtcl_c(nel, nuparam, nuvar, time, timestep, uparam, signxx, signyy, signxy, signyz, signzx, nptot, ngl, dpla, uvar, off, dfmax, tdele, area, foff, igtyp, offl, ipt, thk0)
Definition fail_rtcl_c.F:34
subroutine fail_setoff_c(elbuf_str, mat_elem, geo, pid, ngl, nel, nlay, npttot, thk_ly, thkly, off, stack, isubstack, igtyp, failwave, fwave_el, nlay_max, laynpt_max, numgeo, numstack, igeo, print_fail, ipart, lipart1, ipartc, npart)
subroutine fail_setoff_npg_c(elbuf_str, mat_elem, geo, pid, ngl, nel, ir, is, nlay, npttot, thk_ly, thkly, off, npg, stack, isubstack, igtyp, failwave, fwave_el, nlay_max, laynpt_max, numgeo, ipg, numstack, igeo, print_fail, ipart, lipart1, ipartc, npart)
subroutine fail_setoff_wind_frwave(elbuf_str, mat_elem, geo, pid, ngl, nel, ir, is, nlay, npttot, thk_ly, thkly, off, npg, stack, isubstack, igtyp, failwave, fwave_el, dmg_flag, time, trelax, tfail, dmg_scale)
subroutine fail_syazwan_c(nel, uparam, nuparam, uvar, nuvar, time, ngl, ipt, dpla, pla, signxx, signyy, signxy, signyz, signzx, epsxx, epsyy, epsxy, epsyz, epszx, dfmax, nfunc, ifunc, aldt, foff, ipg, dmg_flag, dmg_scale, npf, tf)
subroutine fail_tab2_c(nel, nuparam, nuvar, nfunc, ifunc, npf, table, tf, time, uparam, ngl, aldt, dpla, epsp, uvar, signxx, signyy, signxy, signyz, signzx, temp, foff, dfmax, tdele, ipt, ipg, dmg_flag, dmg_scale, ntablf, itablf)
Definition fail_tab2_c.F:43
subroutine fail_tab_c(nel, nuparam, nuvar, uparam, uvar, nfunc, ifunc, table, npf, tf, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, ntablf, itablf, dpla, epsp, thk, aldt, temp, dmg_flag, dmg_scale, off, foff, dfmax, tdel, inloc)
Definition fail_tab_c.F:46
subroutine fail_tab_old_c(nel, nuparam, nuvar, uparam, uvar, nfunc, ifunc, npf, tf, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, dpla, epsp, thk, aldt, temp, off, foff, dfmax, tdel)
subroutine fail_tab_old_xfem(nel, nparam, nuvar, npf, tf, time, timestep, uparam, ngl, ipt, nptot, nfunc, ifunc, dmg_flag, signxx, signyy, signxy, signyz, signzx, dpla, epsp, tstar, tens, uvar, noff, aldt, off, offl, elcrkini, ixfem, ixel, ilay, dfmax, tdel)
subroutine fail_tab_xfem(nel, nparam, nuvar, npf, tf, time, timestep, uparam, ngl, ipt, nptot, nfunc, ifunc, table, signxx, signyy, signxy, signyz, signzx, dpla, epsp, tstar, tens, uvar, noff, aldt, off, offl, elcrkini, ixfem, ixel, ilay, dfmax, tdel, dmg_flag, ntablf, itablf)
subroutine fail_tbutcher_c(nel, nuparam, nuvar, uparam, uvar, time, timestep, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, ngl, off, foff, dfmax, tdel)
subroutine fail_tbutcher_xfem(nel, nuparam, uparam, nuvar, uvar, time, timestep, tens, dfmax, tdel, signxx, signyy, signxy, signyz, signzx, ngl, ipt, nptot, noff, off, offl, elcrkini, ixfem, ixel, ilay, iptt, nptt, npttf)
subroutine fail_tensstrain_c(nel, nfunc, nuparam, nuvar, ifunc, uparam, uvar, npf, tf, time, ngl, ipg, ilay, ipt, epsp, epsxx, epsyy, epsxy, epsyz, epszx, off, foff, dfmax, tdel, dmg_flag, dmg_scale, aldt, tstar, ismstr)
subroutine fail_tsaihill_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)
subroutine fail_tsaiwu_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, off, foff, dmg_flag, dmg_scale, dfmax, lf_dammx, tdel, timestep)
subroutine fail_visual_c(nel, nuvar, time, timestep, uparam, ngl, signxx, signyy, signxy, epsxx, epsyy, epsxy, uvar, off, dfmax, ismstr)
subroutine fail_wierzbicki_c(nel, nuparam, uparam, nuvar, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, dpla, off, foff, dfmax, tdel)
subroutine fail_wilkins_c(nel, nuparam, nuvar, uparam, uvar, time, ngl, ipg, ilay, ipt, signxx, signyy, signxy, signyz, signzx, dpla, foff, dfmax, tdel)
subroutine fail_wind_frwave(nel, nuparam, nuvar, uparam, uvar, time, timestep, ssp, aldt, fwave_el, tdel1, tdel2, off, offly, foff, signxx, signyy, signxy, dfmax, ngl, ilay, ipt, npt, crkdir, dadv, dmg_flag, trelax)
subroutine fail_wind_xfem(nel, nuparam, nuvar, uparam, uvar, time, timestep, ssp, aldt, crklen, elcrkini, tdel, off, offly, signxx, signyy, signxy, signyz, signzx, ngl, ixel, ilay, ipt, npt, ixfem, iorth, dir_a, dir1_crk, dir2_crk, crkdir)
subroutine area(d1, x, x2, y, y2, eint, stif0)
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
for(i8=*sizetab-1;i8 >=0;i8--)
integer, parameter ncharline100
integer, dimension(:,:), allocatable ply_info
Definition stack_mod.F:133
subroutine nolib_usermat99(ilaw_user, iuser_key)
subroutine rotov(jft, jlt, sig, dir, nel)
Definition roto.F:77
subroutine rotos4(jft, jlt, sigxx, sigyy, sigxy, sigyx, dir, nel)
Definition rotos4.F:29
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:895
subroutine arret(nn)
Definition arret.F:86
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 urotov(jft, jlt, sig, dir, nel)
Definition uroto.F:79
subroutine xfem_crk_dir(nel, ilay, ixfem, elcrkini, dir_a, tens, dir1_crk, dir2_crk, irot)