OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m10law.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!|| m10law ../engine/source/materials/mat/mat010/m10law.F
25!||--- called by ------------------------------------------------------
26!|| mmain ../engine/source/materials/mat_share/mmain.F90
27!||====================================================================
28 SUBROUTINE m10law(PM ,OFF ,SIG ,EINT ,RHO ,
29 2 EPSQ ,EPXE ,VOL ,MAT ,SSP ,
30 3 DVOL ,VNEW ,D1 ,D2 ,D3 ,
31 4 D4 ,D5 ,D6 ,SOLD1 ,SOLD2 ,
32 5 SOLD3 ,SOLD4 ,SOLD5 ,SOLD6 ,SIGY ,
33 6 DEFP ,PNEW ,PSH ,MU_NEW ,SEQ_OUTPUT,
34 7 NEL ,DPDM ,DPLA ,MU_BAK)
35C-----------------------------------------------
36C D e s c r i p t i o n
37C-----------------------------------------------
38Constitutive relations :
39C YIELD CRITERIA : Drucker-Prager Yield J2=A0+A1*P+A2*P**2
40C EOS : legacy input has compaction eos embedded.
41C
42C F = J2 - A0 + A1*P + A2*P**2
43C If F > 1 then deviatoric tensor is projected on F=1. Otherwise Elastic behavior if F<1
44C Yield surface using scale factor RATIO(I).
45C Pressure is cubic in compression linear in tension.
46C Energy integration is made in MEINT subroutine, but eos is not energy dependent...
47C
48C
49C VARIABLE DEFINITIONS :
50C
51C G0 : YIELD ENVELOPE
52C AJ2 : 2ND INVARIANT FROM DEVIATORIC TENSOR
53C-----------------------------------------------
54C M o d u l e s
55C-----------------------------------------------
56
57C-----------------------------------------------
58C I m p l i c i t T y p e s
59C-----------------------------------------------
60#include "implicit_f.inc"
61C-----------------------------------------------
62C C o m m o n B l o c k s
63C-----------------------------------------------
64#include "param_c.inc"
65#include "com08_c.inc"
66C-----------------------------------------------
67C D u m m y A r g u m e n t s
68C-----------------------------------------------
69 INTEGER,INTENT(IN) :: NEL
70 INTEGER,INTENT(IN) :: MAT(NEL)
71 my_real PM(NPROPM,*), SIG(NEL,6), EPXE(NEL), EINT(NEL), RHO(NEL), VOL(NEL),SEQ_OUTPUT(NEL)
72 my_real,INTENT(INOUT) :: PNEW(NEL)
73 my_real,INTENT(INOUT) :: PSH(NEL)
74 my_real,INTENT(IN) :: OFF(NEL)
75 my_real,INTENT(INOUT) :: dpla(nel)
76 my_real,INTENT(INOUT) :: epsq(nel)
77 my_real,INTENT(INOUT) :: mu_bak(nel)
78 my_real vnew(nel), ssp(nel), sigy(nel),defp(nel),
79 . d1(nel), d2(nel), d3(nel), d4(nel), d5(nel), d6(nel),
80 . dvol(nel), mu_new(nel),
81 . sold1(nel), sold2(nel), sold3(nel),
82 . sold4(nel), sold5(nel), sold6(nel),
83 . dpdm(nel)
84C-----------------------------------------------
85C L o c a l V a r i a b l e s
86C-----------------------------------------------
87 INTEGER I, MX
88 my_real T1(NEL), T2(NEL), T3(NEL), T4(NEL),
89 . T5(NEL), T6(NEL), POLD(NEL),
90 . G(NEL), A0(NEL), A1(NEL),
91 . A2(NEL), AMX(NEL), AJ2(NEL), G0(NEL), GG(NEL),
92 . MU2(NEL), SVRT(NEL), RATIO(NEL),
93 . yield2(nel), g43(nel),
94 . rho0(nel),ptot,pstar(nel),
95 . g43_1,
96 . psh_1,
97 . pstar_1,a0_1,a1_1,a2_1,amx_1,
98 . rho0_1,pfrac
99C-----------------------------------------------
100C D e s c r i p t i o n
101C-----------------------------------------------
102 !----------------------------------------------------------------!
103 ! PARAMETER INITIALIZATION !
104 !----------------------------------------------------------------!
105 mx=mat(1)
106 g43_1 = onep333*pm(22,mx)
107 pstar_1 = pm(44,mx)
108 a0_1 = pm(38,mx)
109 a1_1 = pm(39,mx)
110 a2_1 = pm(40,mx)
111 amx_1 = pm(41,mx)
112 rho0_1 = pm(1,mx)
113 psh_1 = pm(88,mx)
114 pfrac = pm(37,mx)
115 DO i=1,nel
116 g(i) = dt1*pm(22,mx)
117 g43(i) = g43_1
118 gg(i) = two*g(i)
119 psh(i) = psh_1
120 pstar(i) = pstar_1
121 a0(i) = a0_1
122 a1(i) = a1_1
123 a2(i) = a2_1
124 amx(i) = amx_1
125 rho0(i) = rho0_1
126 ENDDO !next I
127
128 !----------------------------------------------------------------!
129 ! STATE INIT. !
130 !----------------------------------------------------------------!
131 DO i=1,nel
132 pold(i)=-third*(sig(i,1)+sig(i,2)+sig(i,3))
133 svrt(i)= third*(d1(i)+d2(i)+d3(i))
134 mu2(i) = mu_new(i) * max(zero,mu_new(i))
135 ENDDO !next I
136
137 !----------------------------------------------------------------!
138 ! TEMPORARY DEVIATORIC STRESS TENSOR : T(1:6) !
139 !----------------------------------------------------------------!
140 DO i=1,nel
141 t1(i)=sig(i,1)+pold(i)
142 t2(i)=sig(i,2)+pold(i)
143 t3(i)=sig(i,3)+pold(i)
144 t4(i)=sig(i,4)
145 t5(i)=sig(i,5)
146 t6(i)=sig(i,6)
147 ENDDO !next I
148
149 !----------------------------------------------------------------!
150 ! SOUND SPEED !
151 !----------------------------------------------------------------!
152 DO i=1,nel
153 dpdm(i) = g43(i) + dpdm(i)
154 ssp(i) = sqrt(abs(dpdm(i))/rho0(i))
155 ENDDO !next I
156
157 !----------------------------------------------------------------!
158 ! DEVIATORIC TENSOR - ELASTIC INCREMENT !
159 !----------------------------------------------------------------!
160 DO i=1,nel
161 t1(i)=t1(i)+gg(i)*(d1(i)-svrt(i))
162 t2(i)=t2(i)+gg(i)*(d2(i)-svrt(i))
163 t3(i)=t3(i)+gg(i)*(d3(i)-svrt(i))
164 t4(i)=t4(i)+g(i)*d4(i)
165 t5(i)=t5(i)+g(i)*d5(i)
166 t6(i)=t6(i)+g(i)*d6(i)
167 ENDDO !next I
168
169 !----------------------------------------------------------------!
170 ! YIELD SURFACE !
171 !----------------------------------------------------------------!
172 DO i=1,nel
173 aj2(i)= half*(t1(i)**2+t2(i)**2+t3(i)**2)+t4(i)**2+t5(i)**2+t6(i)**2
174 ptot = pnew(i)+psh(i)
175 g0(i) = a0(i)+a1(i)*ptot+a2(i)*ptot*ptot
176 g0(i) = min(amx(i),g0(i))
177 g0(i) = max(zero,g0(i))
178 IF(pnew(i)<=pfrac)g0(i)=zero
179 IF(ptot <= pstar(i))g0(i)=zero
180 yield2(i)=aj2(i)-g0(i)
181 ENDDO !next I
182
183 !----------------------------------------------------------------!
184 ! PROJECTION FACTOR ON YIELD SURFACE !
185 !----------------------------------------------------------------!
186 DO i=1,nel
187 ratio(i)=zero
188 IF(yield2(i)<=zero .AND. g0(i)>zero)THEN
189 ratio(i)=one
190 ELSE
191 ratio(i)=sqrt(g0(i)/(aj2(i)+ em14))
192 ENDIF
193 ENDDO !next I
194
195 !----------------------------------------------------------------!
196 ! UPDATE DEVIATORIC STRESS TENSOR IN SIG(:,:) !
197 !----------------------------------------------------------------!
198 DO i=1,nel
199 sig(i,1)=ratio(i)*t1(i)*off(i)
200 sig(i,2)=ratio(i)*t2(i)*off(i)
201 sig(i,3)=ratio(i)*t3(i)*off(i)
202 sig(i,4)=ratio(i)*t4(i)*off(i)
203 sig(i,5)=ratio(i)*t5(i)*off(i)
204 sig(i,6)=ratio(i)*t6(i)*off(i)
205 dpla(i) = (one -ratio(i))*sqrt(three*abs(aj2(i)))*dt1 / max(em20,three*g(i)) !G <- G*DT1
206 ENDDO !next I
207
208 !----------------------------------------------------------------!
209 ! OUTPUT / MISC. !
210 !----------------------------------------------------------------!
211 DO i=1,nel
212 sigy(i) = g0(i) !YIELD SURFACE
213 epxe(i) = epxe(i) + dpla(i)
214 defp(i) = epxe(i)
215 epsq(i) = mu_bak(i) ! updated if compaction EoS defined
216 ENDDO !next I
217
218 RETURN
219 END
subroutine m10law(pm, off, sig, eint, rho, epsq, epxe, vol, mat, ssp, dvol, vnew, d1, d2, d3, d4, d5, d6, sold1, sold2, sold3, sold4, sold5, sold6, sigy, defp, pnew, psh, mu_new, seq_output, nel, dpdm, dpla, mu_bak)
Definition m10law.F:35
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21