OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s16rst.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!|| s16rst ../engine/source/elements/thickshell/solide16/s16rst.f
26!||--- called by ------------------------------------------------------
27!|| s16forc3 ../engine/source/elements/thickshell/solide16/s16forc3.F
28!||====================================================================
29 SUBROUTINE s16rst(R,S,T,
30 2 NI ,DNIDR ,DNIDS ,DNIDT )
31C-----------------------------------------------
32C I m p l i c i t T y p e s
33C-----------------------------------------------
34#include "implicit_f.inc"
35C-----------------------------------------------
36C D u m m y A r g u m e n t s
37C-----------------------------------------------
39 1 r,s,t,
40 2 ni(16) ,dnidr(16),dnids(16),dnidt(16)
41C-----------------------------------------------
42C L o c a l V a r i a b l e s
43C-----------------------------------------------
44 INTEGER I
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 | 14 /
59C O-------|--O----------O 6
60C /. | / /|
61C / . | / |
62C 15 O . / 13 O |
63C / . | / |
64C / . 16 / 5 / |
65C 8 O----------O----------O |
66C R <------|- - -.- - - -+ 10 | |
67C | O..........O....|.....O 2
68C | . 3 | /
69C | . | /
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+to-1)
85C dNi/dr = ri/8 (1+so)(1+to)(2ro+to)
86C dNi/ds = si/8 (1+to)(1+ro)(to+ro-1)
87C dNi/dt = ti/8 (1+ro)(1+so)(2to+ro)
88C
89C i=10;12;14;16
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
97C i=9;11;13;15
98C ri=+-1 si=+-1 ti=0
99C Ni = 1/4 (1-t^2)(1+ro)(1+so)
100C dNi/dr = ri/4 (1-t^2)(1+so)
101C dNi/ds = si/4 (1-t^2)(1+ro)
102C dNi/dt = -t/2 (1+ro)(1+so)
103C-----------------------------------------------
104C i ri si ti Ni
105C--------------------------------------------------------------------
106C 1 -1 -1 -1 1/8(1-r)(1-s)(1-t)(-r-t-1)
107C 2 -1 -1 +1 1/8(1-r)(1-s)(1+t)(-r+t-1)
108C 3 +1 -1 +1 1/8(1+r)(1-s)(1+t)(+r+t-1)
109C 4 +1 -1 -1 1/8(1+r)(1-s)(1-t)(+r-t-1)
110C 5 -1 +1 -1 1/8(1-r)(1+s)(1-t)(-r-t-1)
111C 6 -1 +1 +1 1/8(1-r)(1+s)(1+t)(-r+t-1)
112C 7 +1 +1 +1 1/8(1+r)(1+s)(1+t)(+r+t-1)
113C 8 +1 +1 -1 1/8(1+r)(1+s)(1-t)(+r-t-1)
114C 9 -1 -1 0 1/4(1-t^2)(1-r)(1-s)
115C 10 0 -1 +1 1/4(1-r^2) (1-s)(1+t)
116C 11 +1 -1 0 1/4(1-t^2)(1+r)(1-s)
117C 12 0 -1 -1 1/4(1-r^2) (1-s)(1-t)
118C 13 -1 +1 0 1/4(1-t^2)(1-r)(1+s)
119C 14 0 +1 +1 1/4(1-r^2) (1+s)(1+t)
120C 15 +1 +1 0 1/4(1-t^2)(1+r)(1+s)
121C 16 0 +1 -1 1/4(1-r^2) (1+s)(1-t)
122C-----------------------------------------------
123C i ri si ti dNi/dr dNi/ds
124C--------------------------------------------------------------------
125C 1 -1 -1 -1 -1/8(1-s)(1-t)(-2r-t) -1/8 (1-t)(1-r)(-t-r-1)
126C 2 -1 -1 +1 -1/8(1-s)(1+t)(-2r+t) -1/8 (1+t)(1-r)( t-r-1)
127C 3 +1 -1 +1 1/8(1-s)(1+t)(+2r+t) -1/8 (1+t)(1+r)( t+r-1)
128C 4 +1 -1 -1 1/8(1-s)(1-t)(+2r-t) -1/8 (1-t)(1+r)(-t+r-1)
129C 5 -1 +1 -1 -1/8(1+s)(1-t)(-2r-t) 1/8 (1-t)(1-r)(-t-r-1)
130C 6 -1 +1 +1 -1/8(1+s)(1+t)(-2r+t) 1/8 (1+t)(1-r)( t-r-1)
131C 7 +1 +1 +1 1/8(1+s)(1+t)(+2r+t) 1/8 (1+t)(1+r)( t+r-1)
132C 8 +1 +1 -1 1/8(1+s)(1-t)(+2r-t) 1/8 (1-t)(1+r)(-t+r-1)
133C 9 -1 -1 0 -1/4 (1-t^2)(1-s) -1/4 (1-t^2)(1-r)
134C 10 0 -1 +1 -1/2 r(1-s)(1+t) -1/4 (1-r^2)(1+t)
135C 11 +1 -1 0 1/4 (1-t^2)(1-s) -1/4 (1-t^2)(1+r)
136C 12 0 -1 -1 -1/2 r(1-s)(1-t) -1/4 (1-r^2)(1-t)
137C 13 -1 +1 0 -1/4 (1-t^2)(1+s) 1/4 (1-t^2)(1-r)
138C 14 0 +1 +1 -1/2 r(1+s)(1+t) 1/4 (1-r^2)(1+t)
139C 15 +1 +1 0 1/4 (1-t^2)(1+s) 1/4 (1-t^2)(1+r)
140C 16 0 +1 -1 -1/2 r(1+s)(1-t) 1/4 (1-r^2)(1-t)
141C-----------------------------------------------
142C
143 u_m_r = half*(one - r)
144 u_p_r = half*(one + r)
145C
146 u_m_s = half*(one - s)
147 u_p_s = half*(one + s)
148C
149 u_m_t = half*(one - t)
150 u_p_t = half*(one + t)
151C
152 ums_umt = u_m_s * u_m_t
153 ums_upt = u_m_s * u_p_t
154 ups_umt = u_p_s * u_m_t
155 ups_upt = u_p_s * u_p_t
156C
157 umr_ums = u_m_r * u_m_s
158 umr_ups = u_m_r * u_p_s
159 upr_ums = u_p_r * u_m_s
160 upr_ups = u_p_r * u_p_s
161C
162 umt_umr = u_m_t * u_m_r
163 umt_upr = u_m_t * u_p_r
164 upt_umr = u_p_t * u_m_r
165 upt_upr = u_p_t * u_p_r
166C
167 ni(1) = u_m_r * ums_umt * (-r-t-one)
168 ni(2) = u_m_r * ums_upt * (-r+t-one)
169 ni(3) = u_p_r * ums_upt * ( r+t-one)
170 ni(4) = u_p_r * ums_umt * ( r-t-one)
171 ni(5) = u_m_r * ups_umt * (-r-t-one)
172 ni(6) = u_m_r * ups_upt * (-r+t-one)
173 ni(7) = u_p_r * ups_upt * ( r+t-one)
174 ni(8) = u_p_r * ups_umt * ( r-t-one)
175C
176 dnidr(1) = -ums_umt * (-half*t - r)
177 dnidr(2) = -ums_upt * ( half*t - r)
178 dnidr(3) = ums_upt * ( half*t + r)
179 dnidr(4) = ums_umt * (-half*t + r)
180 dnidr(5) = -ups_umt * (-half*t - r)
181 dnidr(6) = -ups_upt * ( half*t - r)
182 dnidr(7) = ups_upt * ( half*t + r)
183 dnidr(8) = ups_umt * (-half*t + r)
184C
185 dnids(1) = -umt_umr * (-r-t-one)*half
186 dnids(2) = -upt_umr * (-r+t-one)*half
187 dnids(3) = -upt_upr * ( r+t-one)*half
188 dnids(4) = -umt_upr * ( r-t-one)*half
189 dnids(5) = umt_umr * (-r-t-one)*half
190 dnids(6) = upt_umr * (-r+t-one)*half
191 dnids(7) = upt_upr * ( r+t-one)*half
192 dnids(8) = umt_upr * ( r-t-one)*half
193C
194 dnidt(1) = -umr_ums * (-half*r - t)
195 dnidt(2) = umr_ums * (-half*r + t)
196 dnidt(3) = upr_ums * (+half*r + t)
197 dnidt(4) = -upr_ums * (+half*r - t)
198 dnidt(5) = -umr_ups * (-half*r - t)
199 dnidt(6) = umr_ups * (-half*r + t)
200 dnidt(7) = upr_ups * (+half*r + t)
201 dnidt(8) = -upr_ups * (+half*r - t)
202C------------------------------------
203 a = (one - r*r)
204 ni(10) = a * ums_upt
205 ni(12) = a * ums_umt
206 ni(14) = a * ups_upt
207 ni(16) = a * ups_umt
208C
209 a = half*a
210 dnidt(10) = a * u_m_s
211 dnidt(14) = a * u_p_s
212 dnids(10) = -a * u_p_t
213 dnids(12) = -a * u_m_t
214C
215 a = -two*r
216 dnidr(10) = a * ums_upt
217 dnidr(12) = a * ums_umt
218 dnidr(14) = a * ups_upt
219 dnidr(16) = a * ups_umt
220C------------------------------------
221 a = (one - t*t)
222 ni(9) = a * umr_ums
223 ni(11) = a * upr_ums
224 ni(13) = a * umr_ups
225 ni(15) = a * upr_ups
226C
227 a = half*a
228C DNIDR(11) = A * U_M_S
229C DNIDR(15) = A * U_P_S
230C DNIDR(9) = -DNIDR(11)
231C DNIDR(13) = -DNIDR(15)
232 dnidr(9) = -a * u_m_s
233 dnidr(13) = -a * u_p_s
234C
235C DNIDS(13) = A * U_M_R
236C DNIDS(15) = A * U_P_R
237C DNIDS(9) = -DNIDS(13)
238C DNIDS(11) = -DNIDS(15)
239 dnids(9) = -a * u_m_r
240 dnids(11) = -a * u_p_r
241C
242 a = -two*t
243 dnidt(9) = a * umr_ums
244 dnidt(11) = a * upr_ums
245 dnidt(13) = a * umr_ups
246 dnidt(15) = a * upr_ups
247C
248C-----------------------------------------------
249 RETURN
250 END
#define my_real
Definition cppsort.cpp:32
subroutine s16rst(r, s, t, ni, dnidr, dnids, dnidt)
Definition s16rst.F:31