OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
fail_tsaihill_s.F File Reference
#include "implicit_f.inc"
#include "units_c.inc"
#include "comlock.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine fail_tsaihill_s (nel, nuvar, ip, ilay, npg, time, timestep, uparam, ngl, off, loff, noff, signxx, signyy, signzz, signxy, signyz, signzx, uvar, nuparam, dfmax, lf_dammx, tdele, dmg_scale)

Function/Subroutine Documentation

◆ fail_tsaihill_s()

subroutine fail_tsaihill_s ( integer, intent(in) nel,
integer, intent(in) nuvar,
integer, intent(in) ip,
integer, intent(in) ilay,
integer, intent(in) npg,
intent(in) time,
intent(in) timestep,
dimension(nuparam), intent(in) uparam,
integer, dimension(nel), intent(in) ngl,
dimension(nel), intent(inout) off,
dimension(nel), intent(inout) loff,
integer, dimension(nel), intent(inout) noff,
dimension(nel), intent(inout) signxx,
dimension(nel), intent(inout) signyy,
dimension(nel), intent(inout) signzz,
dimension(nel), intent(inout) signxy,
dimension(nel), intent(inout) signyz,
dimension(nel), intent(inout) signzx,
dimension(nel,nuvar), intent(inout) uvar,
integer, intent(in) nuparam,
intent(inout) dfmax,
integer, intent(in) lf_dammx,
dimension(nel), intent(inout) tdele,
dimension(nel), intent(inout) dmg_scale )

Definition at line 30 of file fail_tsaihill_s.F.

35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40#include "units_c.inc"
41#include "comlock.inc"
42C-----------------------------------------------
43C I N P U T A r g u m e n t s
44C-----------------------------------------------
45 INTEGER, INTENT(IN) :: NEL,NUPARAM,NUVAR,
46 . ILAY,IP,NPG,NGL(NEL),LF_DAMMX
47 my_real, INTENT(IN) ::
48 . time,timestep,uparam(nuparam)
49 my_real, INTENT(INOUT) ::
50 . signxx(nel),signyy(nel),signzz(nel),
51 . signxy(nel),signyz(nel),signzx(nel)
52C-----------------------------------------------
53C I N P U T O U T P U T A r g u m e n t s
54C-----------------------------------------------
55 INTEGER, INTENT(INOUT) :: NOFF(NEL)
56 my_real, INTENT(INOUT) ::
57 . uvar(nel,nuvar),off(nel),
58 . tdele(nel),dmg_scale(nel),loff(nel)
59 my_real ,DIMENSION(NEL,LF_DAMMX),INTENT(INOUT) :: dfmax
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER
64 . I,J,INDX(NEL),NINDX,INDX0(NEL),NINDX0,
65 . IFAIL_SO
66 my_real
67 . x11,x22,s12,tmax,fcut
69 . asrate,sxx(nel),syy(nel),szz(nel),
70 . sxy(nel),syz(nel),szx(nel),findex,rfactr
71C--------------------------------------------------------------
72 !=======================================================================
73 ! - INITIALISATION OF COMPUTATION ON TIME STEP
74 !=======================================================================
75 ! Recovering model parameters
76 x11 = uparam(1)
77 x22 = uparam(2)
78 s12 = uparam(3)
79 tmax = uparam(4)
80 fcut = uparam(5)
81 ifail_so = int(uparam(7))
82c
83 ! Stress tensor filtering
84 IF (fcut > zero) THEN
85 DO i = 1,nel
86 asrate = two*pi*fcut*timestep
87 asrate = asrate/(one+asrate)
88 sxx(i) = asrate*signxx(i) + (one - asrate)*uvar(i,2)
89 syy(i) = asrate*signyy(i) + (one - asrate)*uvar(i,3)
90 szz(i) = asrate*signzz(i) + (one - asrate)*uvar(i,4)
91 sxy(i) = asrate*signxy(i) + (one - asrate)*uvar(i,5)
92 syz(i) = asrate*signyz(i) + (one - asrate)*uvar(i,6)
93 szx(i) = asrate*signzx(i) + (one - asrate)*uvar(i,7)
94 uvar(i,2) = sxx(i)
95 uvar(i,3) = syy(i)
96 uvar(i,4) = szz(i)
97 uvar(i,5) = sxy(i)
98 uvar(i,6) = syz(i)
99 uvar(i,7) = szx(i)
100 ENDDO
101 ELSE
102 DO i = 1,nel
103 sxx(i) = signxx(i)
104 syy(i) = signyy(i)
105 szz(i) = signzz(i)
106 sxy(i) = signxy(i)
107 syz(i) = signyz(i)
108 szx(i) = signzx(i)
109 ENDDO
110 ENDIF
111c
112 !====================================================================
113 ! - COMPUTATION OF THE DAMAGE VARIABLE EVOLUTION
114 !====================================================================
115 ! Initialization of element failure index
116 nindx = 0
117 nindx0 = 0
118 indx = 0
119 indx0 = 0
120c
121 ! Loop over the elements
122 DO i=1,nel
123c
124 ! If damage has not been reached yet
125 IF (dfmax(i,1)<one) THEN
126c
127 ! Compute failure index and reserve factor
128 findex = (sxx(i)/x11)**2 - ((sxx(i)*syy(i))/(x11**2)) +
129 . (syy(i)/x22)**2 + (sxy(i)/s12)**2 -
130 . ((sxx(i)*szz(i))/(x11**2)) + (szz(i)/x22)**2 +
131 . (szx(i)/s12)**2
132 findex = max(zero,findex)
133c
134 ! Compute reserve factor
135 dfmax(i,2) = one/max(sqrt(findex),em20)
136c
137 ! Damage variable update
138 dfmax(i,1) = min(one ,max(findex,dfmax(i,1)))
139 IF (dfmax(i,1) >= one) THEN
140 nindx = nindx+1
141 indx(nindx) = i
142 IF (ifail_so > 0) THEN
143 uvar(i,1) = time
144 ENDIF
145 ENDIF
146 ENDIF
147c
148 ! Stress relaxation in case of damage reached
149 IF ((uvar(i,1) > zero).AND.(loff(i) /= zero).AND.
150 . (ifail_so > 0).AND.(off(i) /= zero)) THEN
151 dmg_scale(i) = exp(-(time - uvar(i,1))/tmax)
152 IF (dmg_scale(i) < em02) THEN
153 loff(i) = zero
154 tdele(i) = time
155 dmg_scale(i) = zero
156 IF (ifail_so == 1) THEN
157 off(i) = zero
158 nindx0 = nindx0 + 1
159 indx0(nindx0) = i
160 ELSEIF (ifail_so == 2) THEN
161 noff(i) = noff(i) + 1
162 IF (int(noff(i)) >= npg) THEN
163 off(i) = zero
164 nindx0 = nindx0 + 1
165 indx0(nindx0) = i
166 ENDIF
167 ENDIF
168 ENDIF
169 ENDIF
170 ENDDO
171c
172 !====================================================================
173 ! - PRINTOUT DATA ABOUT FAILED ELEMENTS
174 !====================================================================
175 IF(nindx > 0)THEN
176 DO j=1,nindx
177 i = indx(j)
178#include "lockon.inc"
179 WRITE(iout, 1000) ngl(i),ip,ilay
180 WRITE(istdo,1100) ngl(i),ip,ilay,time
181#include "lockoff.inc"
182 END DO
183 ENDIF
184C
185 IF(nindx0 > 0)THEN
186 DO j=1,nindx0
187 i = indx0(j)
188#include "lockon.inc"
189 WRITE(iout, 1200) ngl(i),time
190 WRITE(istdo,1200) ngl(i),time
191#include "lockoff.inc"
192 END DO
193 ENDIF
194C--------------------------------------------
195 1000 FORMAT(1x,'failure(tsaihill) of solid element ',I10,1X,
196 .',gauss pt',I5,1X,',layer',I5)
197 1100 FORMAT(1X,'failure(tsaihill) of solid element ',I10,1X,
198 .',gauss pt',I5,1X,',layer',I5,1X,'at time :',1PE20.13)
199 1200 FORMAT(1X,'-- rupture of solid element : ',I10,1X,
200 .'at time :',1PE20.13)
201C--------------------------------------------
202 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21