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

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ prony_modelc()

subroutine prony_modelc ( integer nel,
integer nuvar,
timestep,
integer nprony,
kv,
gi,
beta,
rho0,
epspxx,
epspyy,
epspxy,
epspyz,
epspzx,
sigvxx,
sigvyy,
sigvxy,
sigvyz,
sigvzx,
soundsp,
uvar,
off,
integer, intent(in) nvar_damp )

Definition at line 28 of file prony_modelc.F.

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
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-----------------------------------------------
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-----------------------------------------------
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
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21