OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps02c.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine sigeps02c (mat_param, nel, eint, thk, tempel, fheat, off, sigy, dt1, ipla, sigksi, vol, gs, thklyl, etse, g_imp, dpla, tstar, jthe, hardm, epchk, nptt, pla, off_old, loff, ioff_duct, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, signxx, signyy, signxy, signyz, signzx, depsxx, depsyy, depsxy, depsyz, depszx, epspxx, epspyy, epspxy, epsd_pg, epsd, asrate, sigbakxx, sigbakyy, sigbakxy, inloc, dplanl)

Function/Subroutine Documentation

◆ sigeps02c()

subroutine sigeps02c ( type (matparam_struct_), intent(in) mat_param,
integer, intent(in) nel,
eint,
dimension(nel) thk,
intent(inout) tempel,
intent(inout) fheat,
dimension(nel) off,
dimension(nel) sigy,
intent(in) dt1,
integer, intent(in) ipla,
sigksi,
dimension(nel) vol,
dimension(nel) gs,
dimension(nel) thklyl,
intent(inout) etse,
intent(inout) g_imp,
dimension(nel) dpla,
dimension(nel) tstar,
integer, intent(in) jthe,
intent(inout) hardm,
intent(inout) epchk,
integer, intent(in) nptt,
dimension(nel) pla,
intent(inout) off_old,
intent(in) loff,
integer, dimension(*) ioff_duct,
intent(in) sigoxx,
intent(in) sigoyy,
intent(in) sigoxy,
intent(in) sigoyz,
intent(in) sigozx,
intent(inout) signxx,
intent(inout) signyy,
intent(inout) signxy,
intent(inout) signyz,
intent(inout) signzx,
intent(in) depsxx,
intent(in) depsyy,
intent(in) depsxy,
intent(in) depsyz,
intent(in) depszx,
intent(in) epspxx,
intent(in) epspyy,
intent(in) epspxy,
intent(in) epsd_pg,
intent(inout) epsd,
intent(in) asrate,
intent(inout) sigbakxx,
intent(inout) sigbakyy,
intent(inout) sigbakxy,
integer, intent(in) inloc,
dimension(nel) dplanl )

Definition at line 32 of file sigeps02c.F.

44!-----------------------------------------------
45! m o d u l e s
46!-----------------------------------------------
47 use matparam_def_mod
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52C-----------------------------------------------
53C G l o b a l P a r a m e t e r s
54C-----------------------------------------------
55#include "mvsiz_p.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER ,INTENT(IN) :: NEL,IPLA,JTHE,NPTT,INLOC
60 INTEGER IOFF_DUCT(*)
61 my_real ,INTENT(IN) :: asrate
62 my_real ,INTENT(IN) :: dt1
63 my_real ,DIMENSION(NEL) ,INTENT(IN) :: loff
64 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epsd_pg
65 my_real ,DIMENSION(NEL) ,INTENT(IN) :: epspxx,epspyy,epspxy
66 my_real ,DIMENSION(NEL) :: off,sigy,vol,gs,thk,tstar,dpla,pla,thklyl,dplanl
67 my_real :: eint(nel,2),sigksi(mvsiz,5)
68 my_real, DIMENSION(MVSIZ) ,INTENT(IN) :: depsxx,depsyy,depsxy,depsyz,depszx
69 my_real, DIMENSION(MVSIZ) ,INTENT(INOUT) :: hardm,g_imp,epchk,off_old,etse
70 my_real, DIMENSION(NEL) ,INTENT(IN) :: sigoxx,sigoyy,sigoxy,sigoyz,sigozx
71 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: sigbakxx,sigbakyy,sigbakxy
72 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: signxx,signyy,signxy,signyz,signzx
73 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: tempel
74 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: fheat
75 my_real, DIMENSION(NEL) ,INTENT(INOUT) :: epsd
76 type (matparam_struct_) ,intent(in) :: mat_param
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER :: I,ICC,IFORM,ISRATE,VP
81 my_real :: epmx,ca,cb,cn,cc,m_exp,young,g,a11,a12,nu,rhocp,tref,tmelt
82 my_real :: dav,deve1,deve2,deve3,deve4,z3,z4,fisokin,epdr,ymax
83 my_real :: yld(mvsiz),epsdot(mvsiz),ezz(mvsiz)
84!=======================================================================
85 ! Variable initialization
86 ezz(1:mvsiz) = zero
87!---
88 ! Recover material law parameters
89!---
90 iform = mat_param%iparam(1)
91 icc = mat_param%iparam(2)
92 vp = mat_param%iparam(3)
93 israte = mat_param%iparam(4)
94!
95 young = mat_param%young
96 g = mat_param%shear
97 nu = mat_param%nu
98 a11 = young / (one - nu**2)
99 a12 = a11 *nu
100!
101 ca = mat_param%uparam(1) ! pm(38)
102 cb = mat_param%uparam(2) ! pm(39)
103 cn = mat_param%uparam(3) ! pm(40)
104 epmx = mat_param%uparam(4) ! pm(41)
105 ymax = mat_param%uparam(5) ! pm(41)
106 cc = mat_param%uparam(6) ! pm(43)
107 epdr = mat_param%uparam(7) ! pm(44)
108 epdr = max(epdr*dt1, em20)
109 fisokin= mat_param%uparam(8) ! pm(55)
110
111 tref = mat_param%therm%tref
112 tmelt = mat_param%therm%tmelt
113 rhocp = mat_param%therm%rhocp
114!
115 IF (iform == 1) THEN ! Zerilli
116 z3 = mat_param%uparam(10)
117 z4 = mat_param%uparam(11)
118 m_exp = one
119 ELSE ! Johnson-Cook
120 z3 = zero
121 z4 = zero
122 m_exp = mat_param%uparam(10)
123 DO i=1,nel
124 tstar(i) = max( zero, (tempel(i)-tref)/(tmelt-tref) )
125 ENDDO
126 END IF
127!
128 ! Specific strain rate computation
129 ! -> Plastic strain rate
130 ! Old filtered value already stored in EPSD
131!
132 IF (vp == 1) THEN
133 DO i=1,nel
134 epsdot(i) = epsd(i)*dt1
135 ENDDO
136 ! -> Total strain rate
137 ELSEIF (vp == 2) THEN
138 DO i=1,nel
139 epsd(i) = asrate*epsd_pg(i) + (one-asrate)*epsd(i)
140 epsdot(i) = epsd(i) * dt1
141! EPSDOT(I) = EPSPDT(I)
142! EPSD(I) = EPSPDT(I)/MAX(DT1,EM20)
143 ENDDO
144 ! -> Deviatoric strain rate
145 ELSEIF (vp == 3) THEN
146 DO i=1,nel
147 dav = (epspxx(i)+epspyy(i))*third
148 deve1 = epspxx(i) - dav
149 deve2 = epspyy(i) - dav
150 deve3 = - dav
151 deve4 = half*epspxy(i)
152 epsdot(i) = half*(deve1**2 + deve2**2 + deve3**2) + deve4**2
153 epsdot(i) = sqrt(three*epsdot(i))/three_half
154 IF (israte > 0) THEN
155 epsdot(i) = asrate*epsdot(i) + (one - asrate)*epsd(i)
156 ENDIF
157 epsd(i) = epsdot(i)
158 epsdot(i) = epsdot(i)*dt1
159 ENDDO
160 ENDIF
161!----------------------------
162! CONTRAINTES PLASTIQUEMENT ADMISSIBLES
163!----------------------------
164 CALL m2cplr(nel ,ezz ,off_old ,pla ,
165 2 ipla ,tempel ,z3 ,z4 ,m_exp ,
166 3 iform ,etse ,gs ,epsdot ,vp ,
167 4 israte ,yld ,g ,a11 ,a12 ,
168 5 nu ,ca ,cb ,cn ,ymax ,
169 6 epchk ,young ,cc ,epdr ,icc ,
170 7 dpla ,tstar ,fisokin ,g_imp ,sigksi ,
171 8 hardm ,depsxx ,depsyy ,depsxy ,
172 9 depsyz ,depszx ,signxx ,signyy ,signxy ,
173 a signyz ,signzx ,sigbakxx,sigbakyy,sigbakxy,
174 b sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx )
175!
176!--------------------------------------------
177! UPDATE AND FILTER PLASTIC STRAIN RATE
178!--------------------------------------------
179 IF (vp == 1) THEN
180 DO i=1,nel
181 epsdot(i) = dpla(i)/max(em20,dt1)
182 epsd(i) = asrate*epsdot(i) + (one - asrate)*epsd(i)
183 ENDDO
184 ENDIF
185!--------------------------------------------
186 DO i=1,nel
187 sigy(i) = sigy(i) + yld(i)/nptt
188 ENDDO
189!----------------------------
190! Ductile rupture test
191!----------------------------
192 DO i=1,nel
193 IF (off(i) == off_old(i) .and. off(i) > zero) THEN
194 IF (off(i) == one .and. epchk(i) >= epmx) THEN
195 off(i)= four_over_5
196 ioff_duct(i) = 1 ! start of progressive rupture
197 ELSE IF (off(i) < one ) THEN
198 off(i) = off(i)*four_over_5
199 ENDIF
200 ENDIF
201 ENDDO
202c------------------------------------
203! thickness update:
204c------------------------------------
205 DO i=1,nel
206 IF (inloc > 0) THEN
207 IF (loff(i) == one) THEN
208 ezz(i) = -nu*(signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young
209 ezz(i) = ezz(i) - max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/yld(i)
210 ENDIF
211 ELSE
212 ezz(i) = -(depsxx(i)+depsyy(i))*nu-(one - two*nu)*ezz(i)
213 ezz(i) = ezz(i)/(one-nu)
214 ENDIF
215 thk(i) = thk(i) + ezz(i) * thklyl(i)*off(i)
216 ENDDO
217C-----------------
218C TEMPERATURE
219C-----------------
220 IF (jthe /= 0) THEN
221 ! heat increment due to plastic work for /heat/mat
222 DO i=1,nel
223 fheat(i) = fheat(i) + sigy(i)*dpla(i)*vol(i) * mat_param%THERM%EFRAC
224 ENDDO
225 ELSEIF (rhocp > zero) THEN ! adiabatic conditions => temp is updated locally
226 DO i=1,nel
227 tempel(i) = tempel(i) + sigy(i)*dpla(i) / rhocp
228 ! internal energy incremented later in parent subroutine (mmain)
229 ! with total energy deformation which already includes plastic work
230 ENDDO
231 END IF
232c-----------
233 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:274
subroutine m2cplr(nel, ezz, off, pla, ipla, temp, c3, c4, m_exp, iform, etse, gs, epsp, vp, israte, yld, g, a1, a2, nu, ca0, cb0, cn, ymax0, epchk, young, cc, epdr, icc, dpla, tstar, fisokin, gama_imp, signor, hardm, depsxx, depsyy, depsxy, depsyz, depszx, signxx, signyy, signxy, signyz, signzx, sigbakxx, sigbakyy, sigbakxy, sigoxx, sigoyy, sigoxy, sigoyz, sigozx)
Definition m2cplr.F:39
#define max(a, b)
Definition macros.h:21