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

Go to the source code of this file.

Functions/Subroutines

subroutine fail_tab_old_s (nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, tstar, uvar, off, dfmax, tdele, nfunc, ifunc)

Function/Subroutine Documentation

◆ fail_tab_old_s()

subroutine fail_tab_old_s ( integer nel,
integer nuvar,
integer, dimension(*) npf,
tf,
time,
uparam,
integer, dimension(nel) ngl,
aldt,
signxx,
signyy,
signzz,
signxy,
signyz,
signzx,
plas,
dpla,
epsp,
tstar,
uvar,
off,
dfmax,
tdele,
integer, intent(in) nfunc,
integer, dimension(nfunc), intent(in) ifunc )

Definition at line 34 of file fail_tab_old_s.F.

41C---------+---------+---+---+--------------------------------------------
42C /FAIL/TAB - tabulated rupture criteria for solids (old, obsolete version)
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C G l o b a l P a r a m e t e r s
49C-----------------------------------------------
50#include "units_c.inc"
51#include "param_c.inc"
52#include "scr17_c.inc"
53#include "impl1_c.inc"
54#include "comlock.inc"
55C-----------------------------------------------
56C I N P U T A r g u m e n t s
57C-----------------------------------------------
58 INTEGER NEL,NUVAR
59 INTEGER NGL(NEL)
60 INTEGER, INTENT(IN) :: NFUNC
61 INTEGER, DIMENSION(NFUNC), INTENT(IN) :: IFUNC
62c
63 my_real time,timestep,uparam(*),aldt(nel),
64 . signxx(nel),signyy(nel),signzz(nel),
65 . signxy(nel),signyz(nel),signzx(nel),
66 . plas(nel),dpla(nel),epsp(nel),tstar(nel)
67C-----------------------------------------------
68C I N P U T O U T P U T A r g u m e n t s
69C-----------------------------------------------
70 my_real :: uvar(nel,nuvar), off(nel), dfmax(nel),tdele(nel)
71C-----------------------------------------------
72C VARIABLES FOR FUNCTION INTERPOLATION
73C-----------------------------------------------
74 INTEGER NPF(*)
75 my_real finter ,tf(*)
76 EXTERNAL finter
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER I,J,K,J1,J2,IDEL,IDEV,IADBUF,NINDX,NRATE,IFUN_EL,IFUN_TEMP,SFLAG
81 INTEGER, DIMENSION(NEL) :: INDX
82C
83 my_real :: dcrit,dd,dn,sc_temp,sc_el,el_ref,dp,p,sigm,svm,
84 . sxx,syy,szz,ef1,ef2,df,fac,lambda,eta,yy
85 my_real, DIMENSION(NEL) :: epsf
86 my_real, DIMENSION(NFUNC) :: yfac,rate
87C=======================================================================
88C INITIALIZATIONS
89C-----------------------------------------------
90 sflag = int(uparam(1))
91 dcrit = uparam(4)
92 dd = uparam(5)
93 dn = uparam(6)
94 sc_temp= uparam(7)
95 sc_el = uparam(8)
96 el_ref = uparam(9)
97c---
98 idel = 0
99 idev = 0
100 indx = 0
101 IF (sflag == 1) THEN
102 idel=1
103 ELSEIF (sflag == 2) THEN
104 idev =1
105 ELSEIF (sflag == 3) THEN
106 idev = 2
107 ENDIF
108 nrate = nfunc - 2
109 yfac(1:nrate) = uparam(11+1 :11+nrate)
110 rate(1:nrate) = uparam(11+nrate:11+nrate*2)
111C-------------------------------------------------------------------
112c Failure strain value - function interpolation
113C-------------------------------------------------------------------
114
115 DO i=1,nel
116C--- failure strain interpolation
117 p = third*(signxx(i) + signyy(i) + signzz(i))
118 sxx = signxx(i) - p
119 syy = signyy(i) - p
120 szz = signzz(i) - p
121 svm = half*(sxx**2 + syy**2 + szz**2)
122 . + signxy(i)**2+ signzx(i)**2 + signyz(i)**2
123 svm = sqrt(three*svm)
124 sigm = p / max(em20,svm)
125c----
126 j1 = 1
127 IF (nrate > 1) THEN
128 j2 = j1+1
129 ef1 = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
130 ef2 = yfac(j2)*finter(ifunc(j2),sigm,npf,tf,df)
131 fac = (epsp(i) - rate(j1)) / (rate(j2) - rate(j1))
132 epsf(i) = max(ef1 + fac*(ef2 - ef1), em20)
133 ELSE
134 epsf(i) = yfac(j1)*finter(ifunc(j1),sigm,npf,tf,df)
135 ENDIF
136 ENDDO
137c
138c---- Scale functions
139 DO i=1,nel
140 ifun_el = ifunc(2)
141 ifun_temp = ifunc(3)
142c---- element length scale function
143 IF (ifun_el > 0) THEN
144 lambda = aldt(i) / el_ref
145 fac = sc_el*finter(ifun_el,lambda,npf,tf,df)
146 epsf(i) = epsf(i)* fac
147 ENDIF
148c---- temperature scale function
149 IF (ifun_temp > 0) THEN
150 fac = sc_temp*finter(ifun_temp,tstar(i),npf,tf,df)
151 epsf(i) = epsf(i)* fac
152 ENDIF
153 ENDDO
154c-------------------------------------------------------------------
155c---- element will be deleted
156 IF (idel == 1) THEN
157 DO i=1,nel
158 IF (off(i) < 0.1) off(i)=zero
159 IF (off(i) < one) off(i)=off(i)*four_over_5
160 ENDDO
161 ENDIF
162C
163 IF (idel == 1)THEN
164 nindx = 0
165 DO i=1,nel
166 IF (sflag==1 .AND. off(i)==one) THEN
167 dp = dn*dd**(one-one/dn)
168 IF (epsf(i) > zero) uvar(i,1)=uvar(i,1) + dp*dpla(i)/epsf(i)
169 IF (uvar(i,1) >= dcrit) THEN
170 off(i)=four_over_5
171 nindx=nindx+1
172 indx(nindx)=i
173 tdele(i) = time
174 ENDIF
175 ENDIF
176 ENDDO
177 IF (nindx > 0 .AND. imconv == 1)THEN
178 DO j=1,nindx
179#include "lockon.inc"
180 WRITE(iout, 1000) ngl(indx(j))
181 WRITE(istdo,1100) ngl(indx(j)),time
182#include "lockoff.inc"
183 ENDDO
184 ENDIF
185 ENDIF
186C----
187 IF (idev > 0) THEN ! element deleted when rupture in all integration points
188 nindx = 0
189 DO i=1,nel
190c---
191 IF (off(i) == one .AND. (sflag==2 .OR. sflag==3)) THEN
192 IF (uvar(i,1) < dcrit)THEN
193 dp = dn*dd**(one-one/dn)
194 IF (epsf(i) > zero) uvar(i,1)=uvar(i,1)+dp*dpla(i)/epsf(i)
195 IF (uvar(i,1) >= dcrit) THEN
196 nindx=nindx+1
197 indx(nindx)=i
198 p = third*(signxx(i) + signyy(i) + signzz(i))
199 IF (sflag == 2) THEN
200 signxx(i) = p
201 signyy(i) = p
202 signzz(i) = p
203 ENDIF
204 ENDIF
205 ELSEIF (sflag == 2) THEN ! UVAR > DCRIT
206 p = third*(signxx(i) + signyy(i) + signzz(i))
207 signxx(i) = p
208 signyy(i) = p
209 signzz(i) = p
210 ENDIF
211 ENDIF
212c---
213 ENDDO
214 IF (nindx > 0.AND.imconv == 1) THEN
215 DO j=1,nindx
216 i = indx(j)
217#include "lockon.inc"
218 WRITE(iout, 2000) ngl(i)
219 WRITE(istdo,2100) ngl(i),time
220#include "lockoff.inc"
221 END DO
222 ENDIF
223 ENDIF
224C-------------Maximum Damage storing for output : 0 < DFMAX < 1--------------
225 DO i=1,nel
226 dfmax(i)= min(one,max(dfmax(i),uvar(i,1)/dcrit))
227 ENDDO
228C-----------------------------------------------
229 1000 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10)
230 1100 FORMAT(1x,'DELETE SOLID ELEMENT NUMBER ',i10,
231 . ' AT TIME :',1pe12.4)
232C
233 2000 FORMAT(1x,' DEVIATORIC STRESS SET TO ZERO',i10)
234 2100 FORMAT(1x,' DEVIATORIC STRESS SET TO ZERO',i10,
235 . ' AT TIME :',1pe12.4)
236c-----------
237 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21