OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
prony_modelc.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!|| prony_modelc ../engine/source/materials/visc/prony_modelc.F
25!||--- called by ------------------------------------------------------
26!|| mulawc ../engine/source/materials/mat_share/mulawc.f90
27!||====================================================================
28 SUBROUTINE prony_modelc(
29 1 NEL ,NUVAR ,TIMESTEP,
30 2 NPRONY ,KV ,GI , BETA ,RHO0 ,
31 3 EPSPXX ,EPSPYY ,EPSPXY ,EPSPYZ ,EPSPZX ,
32 4 SIGVXX ,SIGVYY ,SIGVXY ,SIGVYZ ,SIGVZX ,
33 5 SOUNDSP,UVAR ,OFF ,NVAR_DAMP)
34
35C-----------------------------------------------
36C I m p l i c i t T y p e s
37C-----------------------------------------------
38#include "implicit_f.inc"
39C-----------------------------------------------
40C G l o b a l P a r a m e t e r s
41C-----------------------------------------------
42#include "mvsiz_p.inc"
43C---------+---------+---+---+--------------------------------------------
44C VAR | SIZE |TYP| RW| DEFINITION
45C---------+---------+---+---+--------------------------------------------
46C NEL | 1 | I | R | SIZE OF THE ELEMENT GROUP NEL
47C NUVAR | 1 | I | R | NUMBER OF USER ELEMENT VARIABLES
48C---------+---------+---+---+--------------------------------------------
49C---------+---------+---+---+--------------------------------------------
50C TIME | 1 | F | R | CURRENT TIME
51C TIMESTEP| 1 | F | R | CURRENT TIME STEP
52C UPARAM | NUPARAM | F | R | USER MATERIAL PARAMETER ARRAY
53C RHO0 | NEL | F | R | INITIAL DENSITY
54C EPSPXX | NEL | F | R | STRAIN RATE XX
55C EPSPYY | NEL | F | R | STRAIN RATE YY
56C ... | | | |
57C ... | | | |
58C SIGVXX | NEL | F | W | VISCOUS STRESS XX
59C SIGVYY | NEL | F | W | VISCOUS STRESS YY
60C ... | | | |
61C---------+---------+---+---+--------------------------------------------
62C UVAR |NEL*NUVAR| F |R/W| USER ELEMENT VARIABLE ARRAY
63C OFF | NEL | F |R/W| DELETED ELEMENT FLAG (=1. ON, =0. OFF)
64C---------+---------+---+---+--------------------------------------------
65C-----------------------------------------------
66C I N P U T A r g u m e n t s
67C-----------------------------------------------
68C
69 INTEGER NEL, NUVAR,NPRONY
70 INTEGER ,INTENT(IN) :: NVAR_DAMP
71 my_real
72 . TIMESTEP,KV,GI(NPRONY),BETA(NPRONY),
73 . RHO0(NEL), EPSPXX(NEL),EPSPYY(NEL),
74 . epspxy(nel),epspyz(nel),epspzx(nel)
75C-----------------------------------------------
76C O U T P U T A r g u m e n t s
77C-----------------------------------------------
78 my_real
79 . sigvxx(nel),sigvyy(nel),
80 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
81 . soundsp(nel)
82C-----------------------------------------------
83C I N P U T O U T P U T A r g u m e n t s
84C-----------------------------------------------
85 my_real
86 . uvar(nel,nuvar), off(nel),thk(nel)
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER :: I,J,II
91 my_real :: G,DAV,EPXX,EPYY,EPZZ,P,
92 . AA(MVSIZ,NPRONY),BB(MVSIZ,NPRONY),H0(6),EPSPZZ(MVSIZ),
93 . H(6,NPRONY),S(6),A1(MVSIZ),A2(MVSIZ),FAC
94C------------------------------------------
95C estiamte stress
96C------------------------------------------
97 g = zero
98C
99 DO j=1,nprony
100 g = g + gi(j)
101 ENDDO
102 DO i=1,nel
103 a1(i) = zero
104 a2(i) = zero
105 epspzz(i) = zero
106C
107 DO j=1,nprony
108 ii = (j-1)*(nuvar-nvar_damp)/nprony
109 aa(i,j) = exp(-beta(j)*timestep)
110 bb(i,j) = timestep*gi(j)*exp(-half*beta(j)*timestep)
111C
112C for computing epszz_dot (sigzz=0)
113C
114 h0(3) = uvar(i, (j - 1)*6 + 3)
115 a1(i) = a1(i) + aa(i,j)*h0(3)
116 a2(i) = a2(i) + bb(i,j)
117 ENDDO
118 ENDDO
119C
120C compute epszz_dot sig33= 0
121C
122 DO i=1,nel
123 fac = one/max(em20,two_third*a2(i) + kv)
124 epspzz(i) = -a1(i) + (third*a2(i)-kv)*(epspxx(i) + epspyy(i))
125 epspzz(i)= fac*epspzz(i)
126 ENDDO
127C
128 DO i=1,nel
129C spherique part
130 dav = third*(epspxx(i) + epspyy(i) + epspzz(i))
131 p = -three*kv*dav
132c deviatorique part
133 epxx = epspxx(i) - dav
134 epyy = epspyy(i) - dav
135 epzz = epspzz(i) - dav
136C
137 DO j= 1,nprony
138 ii = (j-1)*(nuvar-nvar_damp)/nprony
139C
140 h0(1) = uvar(i, (j - 1)*6 + 1)
141 h0(2) = uvar(i, (j - 1)*6 + 2)
142 h0(3) = uvar(i, (j - 1)*6 + 3)
143 h0(4) = uvar(i, (j - 1)*6 + 4)
144 h0(5) = uvar(i, (j - 1)*6 + 5)
145 h0(6) = uvar(i, (j - 1)*6 + 6)
146C
147
148 h(1,j) = aa(i,j)*h0(1) + bb(i,j)*epxx
149 h(2,j) = aa(i,j)*h0(2) + bb(i,j)*epyy
150 h(3,j) = aa(i,j)*h0(3) + bb(i,j)*epzz
151 h(4,j) = aa(i,j)*h0(4) + half*bb(i,j)*epspxy(i)
152 h(5,j) = aa(i,j)*h0(5) + half*bb(i,j)*epspyz(i)
153 h(6,j) = aa(i,j)*h0(6) + half*bb(i,j)*epspzx(i)
154C
155 uvar(i, (j - 1)*6 + 1) = h(1,j)
156 uvar(i, (j - 1)*6 + 2) = h(2,j)
157 uvar(i, (j - 1)*6 + 3) = h(3,j)
158 uvar(i, (j - 1)*6 + 4) = h(4,j)
159 uvar(i, (j - 1)*6 + 5) = h(5,j)
160 uvar(i, (j - 1)*6 + 6) = h(6,j)
161
162 ENDDO
163C
164C comppute stress
165C
166
167 s(1:6) = zero
168
169 DO j= 1,nprony
170 s(1) = s(1) + h(1,j)
171 s(2) = s(2) + h(2,j)
172cc S(3) = S(3) + H(3,J)
173 s(4) = s(4) + h(4,j)
174 s(5) = s(5) + h(5,j)
175 s(6) = s(6) + h(6,j)
176 ENDDO
177
178 sigvxx(i) = s(1) - p
179 sigvyy(i) = s(2) - p
180cc SIGVZZ(I) = S(3) - P
181 sigvxy(i) = s(4)
182 sigvyz(i) = s(5)
183 sigvzx(i) = s(6)
184C
185 ENDDO
186C
187 DO i=1,nel
188 sigvxx(i) = sigvxx(i)*off(i)
189 sigvyy(i) = sigvyy(i)*off(i)
190 sigvxy(i) = sigvxy(i)*off(i)
191 sigvyz(i) = sigvyz(i)*off(i)
192 sigvzx(i) = sigvzx(i)*off(i)
193C
194 soundsp(i) = sqrt(soundsp(i)**2 + g/rho0(i))
195 ENDDO
196 RETURN
197 END
#define max(a, b)
Definition macros.h:21
subroutine prony_modelc(nel, nuvar, timestep, nprony, kv, gi, beta, rho0, epspxx, epspyy, epspxy, epspyz, epspzx, sigvxx, sigvyy, sigvxy, sigvyz, sigvzx, soundsp, uvar, off, nvar_damp)