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