OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s20rst.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!||====================================================================
25!|| s20rst ../engine/source/elements/solid/solide20/s20rst.F
26!||--- called by ------------------------------------------------------
27!|| s20forc3 ../engine/source/elements/solid/solide20/s20forc3.f
28!|| s20ke3 ../engine/source/elements/solid/solide20/s20ke3.F
29!||====================================================================
30 SUBROUTINE s20rst(R,S,T,
31 2 NI ,DNIDR ,DNIDS ,DNIDT )
32C-----------------------------------------------
33C I m p l i c i t T y p e s
34C-----------------------------------------------
35#include "implicit_f.inc"
36C-----------------------------------------------
37C D u m m y A r g u m e n t s
38C-----------------------------------------------
40 1 r,s,t,
41 2 ni(20) ,dnidr(20),dnids(20),dnidt(20)
42C-----------------------------------------------
43C L o c a l V a r i a b l e s
44C-----------------------------------------------
46 . u_m_r,u_p_r,u_m_s,u_p_s,u_m_t,u_p_t,
47 . ums_umt,ums_upt,ups_umt,ups_upt,
48 . umr_ums,umr_ups,upr_ums,upr_ups,
49 . umt_umr,umt_upr,upt_umr,upt_upr,
50 . a
51C-----------------------------------------------
52C
53C
54C
55C ^ S _ T
56C | /|
57C | /
58C 7 | 18 /
59C O-------|--O----------O 6
60C /. | / /|
61C / . | / |
62C 19 O . / 17 O |
63C / O 15 | / O 14
64C / . 20 / 5 / |
65C 8 O----------O----------O |
66C R <------|- - -.- - - -+ 10 | |
67C | O..........O....|.....O 2
68C | . 3 | /
69C 16 O . 13 O /
70C | O 11 | O
71C | . | / 9
72C |. |/
73C O----------O----------O
74C 4 12 1
75C
76C
77C
78C
79C-----------------------------------------------
80C ro = r ri so = s si to = t ti
81C
82C i=1,8
83C ri=+-1 si=+-1 ti=+-1
84C Ni = 1/8 (1+ro)(1+so)(1+to)(ro+so+to-2)
85C dNi/dr = ri/8 (1+so)(1+to)(2ro+so+to-1)
86C dNi/ds = si/8 (1+to)(1+ro)(2so+to+ro-1)
87C dNi/dt = ti/8 (1+ro)(1+so)(2to+ro+so-1)
88C
89C i=10;12;18;20
90C ri=0 si=+-1 ti=+-1
91C Ni = 1/4 (1-r^2)(1+so)(1+to)
92C dNi/dr = -r/2 (1+so)(1+to)
93C dNi/ds = si/4 (1-r^2)(1+to)
94C dNi/dt = ti/4 (1-r^2)(1+so)
95C
96C i=13,16
97C ri=+-1 si=0 ti=+-1
98C Ni = 1/4 (1-s^2)(1+to)(1+ro)
99C dNi/dr = ri/4 (1-s^2)(1+to)
100C dNi/ds = -s/2 (1+to)(1+ro)
101C dNi/dt = ti/4 (1-s^2)(1+ro)
102C
103C i=9;11;17;19
104C ri=+-1 si=+-1 ti=0
105C Ni = 1/4 (1-t^2)(1+ro)(1+so)
106C dNi/dr = ri/4 (1-t^2)(1+so)
107C dNi/ds = si/4 (1-t^2)(1+ro)
108C dNi/dt = -t/2 (1+ro)(1+so)
109C-----------------------------------------------
110C i ri si ti Ni
111C--------------------------------------------------------------------
112C 1 -1 -1 -1 1/8(1-r)(1-s)(1-t)(-r-s-t-2)
113C 2 -1 -1 +1 1/8(1-r)(1-s)(1+t)(-r-s+t-2)
114C 3 +1 -1 +1 1/8(1+r)(1-s)(1+t)(+r-s+t-2)
115C 4 +1 -1 -1 1/8(1+r)(1-s)(1-t)(+r-s-t-2)
116C 5 -1 +1 -1 1/8(1-r)(1+s)(1-t)(-r+s-t-2)
117C 6 -1 +1 +1 1/8(1-r)(1+s)(1+t)(-r+s+t-2)
118C 7 +1 +1 +1 1/8(1+r)(1+s)(1+t)(+r+s+t-2)
119C 8 +1 +1 -1 1/8(1+r)(1+s)(1-t)(+r+s-t-2)
120C 9 -1 -1 0 1/4(1-t^2)(1-r)(1-s)
121C 10 0 -1 +1 1/4(1-r^2)(1-s)(1+t)
122C 11 +1 -1 0 1/4(1-t^2)(1+r)(1-s)
123C 12 0 -1 -1 1/4(1-r^2)(1-s)(1-t)
124C 13 -1 0 -1 1/4(1-s^2)(1-t)(1-r)
125C 14 -1 0 +1 1/4(1-s^2)(1+t)(1-r)
126C 15 +1 0 +1 1/4(1-s^2)(1+t)(1+r)
127C 16 +1 0 -1 1/4(1-s^2)(1-t)(1+r)
128C 17 -1 +1 0 1/4(1-t^2)(1-r)(1+s)
129C 18 0 +1 +1 1/4(1-r^2)(1+s)(1+t)
130C 19 +1 +1 0 1/4(1-t^2)(1+r)(1+s)
131C 20 0 +1 -1 1/4(1-r^2)(1+s)(1-t)
132C-----------------------------------------------
133C i ri si ti dNi/dr
134C--------------------------------------------------------------------
135C 1 -1 -1 -1 -1/8(1-s)(1-t)(-2r-s-t-1)
136C 2 -1 -1 +1 -1/8(1-s)(1+t)(-2r-s+t-1)
137C 3 +1 -1 +1 1/8(1-s)(1+t)(+2r-s+t-1)
138C 4 +1 -1 -1 1/8(1-s)(1-t)(+2r-s-t-1)
139C 5 -1 +1 -1 -1/8(1+s)(1-t)(-2r+s-t-1)
140C 6 -1 +1 +1 -1/8(1+s)(1+t)(-2r+s+t-1)
141C 7 +1 +1 +1 1/8(1+s)(1+t)(+2r+s+t-1)
142C 8 +1 +1 -1 1/8(1+s)(1-t)(+2r+s-t-1)
143C 9 -1 -1 0 -1/4 (1-t^2)(1-s)
144C 10 0 -1 +1 -1/2 r(1-s)(1+t)
145C 11 +1 -1 0 1/4 (1-t^2)(1-s)
146C 12 0 -1 -1 -1/2 r(1-s)(1-t)
147C 13 -1 0 -1 -1/4 (1-s^2)(1-t)
148C 14 -1 0 +1 -1/4 (1-s^2)(1+t)
149C 15 +1 0 +1 1/4 (1-s^2)(1+t)
150C 16 +1 0 -1 1/4 (1-s^2)(1-t)
151C 17 -1 +1 0 -1/4 (1-t^2)(1+s)
152C 18 0 +1 +1 -1/2 r(1+s)(1+t)
153C 19 +1 +1 0 1/4 (1-t^2)(1+s)
154C 20 0 +1 -1 -1/2 r(1+s)(1-t)
155C-----------------------------------------------
156C
157 u_m_r = half*(one - r)
158 u_p_r = half*(one + r)
159C
160 u_m_s = half*(one - s)
161 u_p_s = half*(one + s)
162C
163 u_m_t = half*(one - t)
164 u_p_t = half*(one + t)
165C
166 ums_umt = u_m_s * u_m_t
167 ums_upt = u_m_s * u_p_t
168 ups_umt = u_p_s * u_m_t
169 ups_upt = u_p_s * u_p_t
170C
171 umr_ums = u_m_r * u_m_s
172 umr_ups = u_m_r * u_p_s
173 upr_ums = u_p_r * u_m_s
174 upr_ups = u_p_r * u_p_s
175C
176 umt_umr = u_m_t * u_m_r
177 umt_upr = u_m_t * u_p_r
178 upt_umr = u_p_t * u_m_r
179 upt_upr = u_p_t * u_p_r
180C
181 ni(1) = u_m_r * ums_umt * (-r-s-t-two)
182 ni(2) = u_m_r * ums_upt * (-r-s+t-two)
183 ni(3) = u_p_r * ums_upt * ( r-s+t-two)
184 ni(4) = u_p_r * ums_umt * ( r-s-t-two)
185 ni(5) = u_m_r * ups_umt * (-r+s-t-two)
186 ni(6) = u_m_r * ups_upt * (-r+s+t-two)
187 ni(7) = u_p_r * ups_upt * ( r+s+t-two)
188 ni(8) = u_p_r * ups_umt * ( r+s-t-two)
189C
190 dnidr(1) = -ums_umt * (u_m_s + u_m_t - r -three_half)
191 dnidr(2) = -ums_upt * (u_m_s + u_p_t - r -three_half)
192 dnidr(3) = ums_upt * (u_m_s + u_p_t + r -three_half)
193 dnidr(4) = ums_umt * (u_m_s + u_m_t + r -three_half)
194 dnidr(5) = -ups_umt * (u_p_s + u_m_t - r -three_half)
195 dnidr(6) = -ups_upt * (u_p_s + u_p_t - r -three_half)
196 dnidr(7) = ups_upt * (u_p_s + u_p_t + r -three_half)
197 dnidr(8) = ups_umt * (u_p_s + u_m_t + r -three_half)
198C
199C
200 dnids(1) = -umt_umr * (u_m_r + u_m_t - s -three_half)
201 dnids(2) = -upt_umr * (u_m_r + u_p_t - s -three_half)
202 dnids(3) = -upt_upr * (u_p_r + u_p_t - s -three_half)
203 dnids(4) = -umt_upr * (u_p_r + u_m_t - s -three_half)
204 dnids(5) = umt_umr * (u_m_r + u_m_t + s -three_half)
205 dnids(6) = upt_umr * (u_m_r + u_p_t + s -three_half)
206 dnids(7) = upt_upr * (u_p_r + u_p_t + s -three_half)
207 dnids(8) = umt_upr * (u_p_r + u_m_t + s -three_half)
208C
209 dnidt(1) = -umr_ums * (u_m_r + u_m_s - t -three_half)
210 dnidt(2) = umr_ums * (u_m_r + u_m_s + t -three_half)
211 dnidt(3) = upr_ums * (u_p_r + u_m_s + t -three_half)
212 dnidt(4) = -upr_ums * (u_p_r + u_m_s - t -three_half)
213 dnidt(5) = -umr_ups * (u_m_r + u_p_s - t -three_half)
214 dnidt(6) = umr_ups * (u_m_r + u_p_s + t -three_half)
215 dnidt(7) = upr_ups * (u_p_r + u_p_s + t -three_half)
216 dnidt(8) = -upr_ups * (u_p_r + u_p_s - t -three_half)
217C------------------------------------
218 a = (one - r*r)
219 ni(10) = a * ums_upt
220 ni(12) = a * ums_umt
221 ni(18) = a * ups_upt
222 ni(20) = a * ups_umt
223C
224 a = half*a
225 dnidt(10) = a * u_m_s
226 dnidt(18) = a * u_p_s
227 dnidt(12) = -dnidt(10)
228 dnidt(20) = -dnidt(18)
229C
230 dnids(18) = a * u_p_t
231 dnids(20) = a * u_m_t
232 dnids(10) = -dnids(18)
233 dnids(12) = -dnids(20)
234C
235 a = -two*r
236 dnidr(10) = a * ums_upt
237 dnidr(12) = a * ums_umt
238 dnidr(18) = a * ups_upt
239 dnidr(20) = a * ups_umt
240C------------------------------------
241 a = (one - s*s)
242 ni(13) = a * umt_umr
243 ni(14) = a * upt_umr
244 ni(15) = a * upt_upr
245 ni(16) = a * umt_upr
246C
247 a = half*a
248 dnidr(15) = a * u_p_t
249 dnidr(16) = a * u_m_t
250 dnidr(13) = -dnidr(16)
251 dnidr(14) = -dnidr(15)
252C
253 dnidt(14) = a * u_m_r
254 dnidt(15) = a * u_p_r
255 dnidt(13) = -dnidt(14)
256 dnidt(16) = -dnidt(15)
257C
258 a = -two*s
259 dnids(13) = a * umt_umr
260 dnids(14) = a * upt_umr
261 dnids(15) = a * upt_upr
262 dnids(16) = a * umt_upr
263C------------------------------------
264 a = (one-t*t)
265 ni(9) = a * umr_ums
266 ni(11) = a * upr_ums
267 ni(17) = a * umr_ups
268 ni(19) = a * upr_ups
269C
270 a = half*a
271 dnidr(11) = a * u_m_s
272 dnidr(19) = a * u_p_s
273 dnidr(9) = -dnidr(11)
274 dnidr(17) = -dnidr(19)
275C
276 dnids(17) = a * u_m_r
277 dnids(19) = a * u_p_r
278 dnids(9) = -dnids(17)
279 dnids(11) = -dnids(19)
280C
281 a = -two*t
282 dnidt(9) = a * umr_ums
283 dnidt(11) = a * upr_ums
284 dnidt(17) = a * umr_ups
285 dnidt(19) = a * upr_ups
286C
287C-----------------------------------------------
288 RETURN
289 END
#define my_real
Definition cppsort.cpp:32
subroutine s20forc3(timers, output, elbuf_tab, ng, pm, geo, ixs, x, a, v, ms, w, flux, flu1, veul, fv, ale_connect, iparg, tf, npf, bufmat, partsav, nloc_dmg, dt2t, neltst, ityptst, stifn, fsky, iads, offset, eani, iparts, ixs20, iads20, nel, fx, fy, fz, volnp, rx, ry, rz, sx, sy, sz, tx, ty, tz, stig, stin, ul, xx, yy, zz, vx, vy, vz, vdxx, vdyy, vdzz, dnidr, dnids, dnidt, px, py, pz, ipm, istrain, temp, fthe, fthesky, iexpan, gresav, grth, igrth, table, igeo, voln, condn, condnsky, itask, ioutprt, mat_elem, h3d_strain, dt, idel7nok, snpc, stf, sbufmat, svis, idtmins, nsvois, iresp, idel7ng, idtmin, maxfunc, imon_mat, userl_avail, glob_therm, impl_s, idyna, sensors)
Definition s20forc3.F:88
subroutine s20rst(r, s, t, ni, dnidr, dnids, dnidt)
Definition s20rst.F:32