OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sigeps102.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!|| sigeps102 ../engine/source/materials/mat/mat102/sigeps102.F
25!||--- called by ------------------------------------------------------
26!|| mulaw ../engine/source/materials/mat_share/mulaw.f90
27!||====================================================================
28 SUBROUTINE sigeps102(
29 1 NEL , NUPARAM, UPARAM , RHO0 , RHO ,
30 2 DEPSXX , DEPSYY , DEPSZZ , DEPSXY , DEPSYZ , DEPSZX ,
31 3 SIGOXX , SIGOYY , SIGOZZ , SIGOXY , SIGOYZ , SIGOZX ,
32 4 SIGNXX , SIGNYY , SIGNZZ , SIGNXY , SIGNYZ , SIGNZX ,
33 5 OFF ,
34 6 PSH , PNEW , DPDM , SSP , PLA , PMIN)
35C-----------------------------------------------
36C I M P L I C I T T Y P E S
37C-----------------------------------------------
38#include "implicit_f.inc"
39C----------------------------------------------------------------
40C I N P U T A R G U M E N T S
41C----------------------------------------------------------------
42 INTEGER,INTENT(IN) :: NEL,NUPARAM
43 my_real,INTENT(IN) :: UPARAM(NUPARAM)
44 my_real,INTENT(IN),DIMENSION(NEL) :: RHO, RHO0
45 my_real,INTENT(IN),DIMENSION(NEL) :: DEPSXX, DEPSYY, DEPSZZ, DEPSXY, DEPSYZ, DEPSZX
46 my_real,INTENT(IN),DIMENSION(NEL) :: SIGOXX, SIGOYY, SIGOZZ, SIGOXY, SIGOYZ, SIGOZX
47 my_real,INTENT(INOUT),DIMENSION(NEL) :: SIGNXX, SIGNYY, SIGNZZ, SIGNXY, SIGNYZ, SIGNZX
48 my_real,INTENT(IN),DIMENSION(NEL) :: pnew, psh
49 my_real,INTENT(IN),DIMENSION(NEL) :: off
50 my_real,INTENT(IN) :: pmin
51 my_real,INTENT(INOUT),DIMENSION(NEL) :: ssp, dpdm, pla
52C----------------------------------------------------------------
53C L O C A L V A R I B L E S
54C----------------------------------------------------------------
55 my_real :: a0,a1,a2,amax
56 my_real :: pold(nel)
57 my_real :: t1(nel),t2(nel),t3(nel),t4(nel),t5(nel),t6(nel)
58 my_real :: ptot,g0(nel),ratio(nel),yield2(nel)
59 my_real :: pstar,g,gg,scrt(nel),aj2(nel),dpla(nel)
60 my_real :: i3(nel),cos3t(nel),sqrt_j2,theta,c,phi,k
61 my_real :: mu(nel),mu2(nel)
62 integer :: I,IFORM
63C----------------------------------------------------------------
64C S o u r c e L i n e s
65C----------------------------------------------------------------
66 c = uparam(1)
67 phi = uparam(2)
68 pstar = uparam(3)
69 a0 = uparam(4)
70 a1 = uparam(5)
71 a2 = uparam(6)
72 amax = uparam(7)
73 g = uparam(8)
74 gg = two*g
75 iform = nint(uparam(9))
76 !----------------------------------------------------------------!
77 ! INIT. !
78 !----------------------------------------------------------------!
79 DO i=1,nel
80 pold(i) = -(sigoxx(i)+sigoyy(i)+sigozz(i))*third
81 scrt(i) = (depsxx(i)+depsyy(i)+depszz(i))*third
82 mu(i) = rho(i)/rho0(i) - one
83 mu2(i) = mu(i) * max(zero,mu(i))
84 ENDDO !next I
85 !----------------------------------------------------------------!
86 ! DEVIATORIC STRESS TENSOR : T(1:6) !
87 !----------------------------------------------------------------!
88 DO i=1,nel
89 t1(i)=sigoxx(i)+pold(i)+gg*(depsxx(i)-scrt(i))
90 t2(i)=sigoyy(i)+pold(i)+gg*(depsyy(i)-scrt(i))
91 t3(i)=sigozz(i)+pold(i)+gg*(depszz(i)-scrt(i))
92 t4(i)=sigoxy(i) + g*depsxy(i)
93 t5(i)=sigoyz(i) + g*depsyz(i)
94 t6(i)=sigozx(i) + g*depszx(i)
95 ENDDO !next I
96 !----------------------------------------------------------------!
97 ! SOUND SPEED (EOS + SHEAR) !
98 !----------------------------------------------------------------!
99 DO i=1,nel
100 dpdm(i) = dpdm(i) + onep333*g
101 ssp(i) = sqrt(abs(dpdm(i))/rho0(i))
102 ENDDO !next I
103 !----------------------------------------------------------------!
104 ! YIELD SURFACE !
105 !----------------------------------------------------------------!
106 DO i=1,nel
107 aj2(i)= half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
108 ENDDO
109 !----SUBCASE --- ORIGINAL MOHR COULOMB
110 IF(iform==4)THEN
111 k = one/sqrt(three)
112 DO i=1,nel
113 i3(i) = t2(i)*t3(i)*t1(i)-t2(i)*t6(i)*t6(i)-t3(i)*t4(i)*t4(i)-t5(i)*t5(i)*t1(i)+2*t5(i)*t4(i)*t6(i)
114 sqrt_j2 = sqrt(aj2(i))
115 cos3t(i) = nine*i3(i)/two/sqrt(three)/sqrt_j2/sqrt_j2/sqrt_j2
116 theta = acos(max(zero,min(one,cos3t(i))))
117 ptot = pnew(i)+psh(i)
118 g0(i) = -ptot*sin(phi)+sqrt_j2*(cos(theta)-k*sin(theta)*sin(phi))-c*cos(phi)
119 g0(i) = max(zero,g0(i))
120 IF(ptot <= pmin) g0(i) = zero !Drucker-Prager cut-off
121 yield2(i)= aj2(i)-g0(i)
122 ENDDO
123 !----SUBCASE --- FITTED DRUCKER PRAGER FROM MOHR COULOMB PARAMETERS (A0,A1,A2 CALCULATED DURING STARTER)
124 ELSE
125 DO i=1,nel
126 ptot = pnew(i)+psh(i)
127 g0(i) = a0 +a1 *ptot+a2 *ptot*ptot
128 g0(i) = min(amax,g0(i))
129 g0(i) = max(zero,g0(i))
130 IF(ptot <= pmin) g0(i) = zero !Drucker-Prager cut-off
131 IF(ptot <= pstar)g0(i)=zero !tensile cut-off (PSTAR is the root of the yield function)
132 yield2(i)=aj2(i)-g0(i)
133 ENDDO !next I
134 ENDIF
135
136 !----------------------------------------------------------------!
137 ! PROJECTION FACTOR ON YIELD SURFACE !
138 !----------------------------------------------------------------!
139 DO i=1,nel
140 ratio(i)=zero
141 IF(yield2(i)<=zero .AND. g0(i)>zero)THEN
142 ratio(i)=one
143 ELSE
144 ratio(i)=sqrt(g0(i)/(aj2(i)+ em14))
145 ENDIF
146 ENDDO !next I
147 !----------------------------------------------------------------!
148 ! UPDATE DEVIATORIC STRESS TENSOR IN SIG(:,:) !
149 !----------------------------------------------------------------!
150 DO i=1,nel
151 signxx(i)=ratio(i)*t1(i)*off(i) - pnew(i)
152 signyy(i)=ratio(i)*t2(i)*off(i) - pnew(i)
153 signzz(i)=ratio(i)*t3(i)*off(i) - pnew(i)
154 signxy(i)=ratio(i)*t4(i)*off(i)
155 signyz(i)=ratio(i)*t5(i)*off(i)
156 signzx(i)=ratio(i)*t6(i)*off(i)
157 dpla(i) =(one -ratio(i))*sqrt(aj2(i)) / max(em20,three*g)
158 ENDDO !next I
159 pla(1:nel) = pla(1:nel) + dpla(1:nel)
160c-----------
161 RETURN
162 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine mulaw(lft, llt, nft, mtn, jcvt, pm, off, sig, eint, rho, vol, strain, gama, uvar, bufmat, tf, npf, imat, ngl, nuvar, nvartmp, vartmp, geo, pid, epsd, wxx, wyy, wzz, jsph, ssp, voln, vis, d1, d2, d3, d4, d5, d6, dvol, sold1, sold2, sold3, sold4, sold5, sold6, rx, ry, rz, sx, sy, sz, tx, ty, tz, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz, ipm, isorth, nel, matparam)
Definition mulaw.F:54
subroutine sigeps102(nel, nuparam, uparam, rho0, rho, depsxx, depsyy, depszz, depsxy, depsyz, depszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, off, psh, pnew, dpdm, ssp, pla, pmin)
Definition sigeps102.F:35