OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sfint3b.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!||====================================================================
26!|| sfint3b ../engine/source/elements/solid/solide/sfint3b.F
27!||--- called by ------------------------------------------------------
28!|| sforc3 ../engine/source/elements/solid/solide/sforc3.F
29!||====================================================================
30 SUBROUTINE sfint3b(
31 1 SIG, SIGD, X, NC1,
32 2 NC2, NC3, NC4, NC5,
33 3 NC6, NC7, NC8, PX1,
34 4 PX2, PX3, PX4, PY1,
35 5 PY2, PY3, PY4, PZ1,
36 6 PZ2, PZ3, PZ4, PX5,
37 7 PX6, PX7, PX8, PY5,
38 8 PY6, PY7, PY8, PZ5,
39 9 PZ6, PZ7, PZ8, F11,
40 A F21, F31, F12, F22,
41 B F32, F13, F23, F33,
42 C F14, F24, F34, F15,
43 D F25, F35, F16, F26,
44 E F36, F17, F27, F37,
45 F F18, F28, F38, VOL,
46 G QVIS, DR, RHO, CXX,
47 H MX1, MY1, MZ1, MX2,
48 I MY2, MZ2, MX3, MY3,
49 J MZ3, MX4, MY4, MZ4,
50 K MX5, MY5, MZ5, MX6,
51 L MY6, MZ6, MX7, MY7,
52 M MZ7, MX8, MY8, MZ8,
53 N IXS, NEL, ISMSTR, SVIS)
54C-----------------------------------------------
55C I m p l i c i t T y p e s
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C G l o b a l P a r a m e t e r s
60C-----------------------------------------------
61#include "mvsiz_p.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 INTEGER, INTENT(IN) :: ISMSTR
66 INTEGER NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*),
67 . NC8(*),IXS(NIXS,*),NEL
68 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: SVIS
69 my_real
70 . SIG(NEL,6),SIGD(NEL,6),X(3,*),DR(3,*),
71 . PX1(*), PX2(*), PX3(*), PX4(*),
72 . PY1(*), PY2(*), PY3(*), PY4(*),
73 . PZ1(*), PZ2(*), PZ3(*), PZ4(*),
74 . PX5(*), PX6(*), PX7(*), PX8(*),
75 . PY5(*), PY6(*), PY7(*), PY8(*),
76 . PZ5(*), PZ6(*), PZ7(*), PZ8(*),
77 . F11(*),F21(*),F31(*),F12(*),F22(*),F32(*),
78 . F13(*),F23(*),F33(*),F14(*),F24(*),F34(*),
79 . F15(*),F25(*),F35(*),F16(*),F26(*),F36(*),
80 . F17(*),F27(*),F37(*),F18(*),F28(*),F38(*),
81 . VOL(*),QVIS(*),RHO(*),CXX(*),
82 . MX1(*),MY1(*),MZ1(*),MX2(*),MY2(*),MZ2(*),
83 . MX3(*),MY3(*),MZ3(*),MX4(*),MY4(*),MZ4(*),
84 . MX5(*),MY5(*),MZ5(*),MX6(*),MY6(*),MZ6(*),
85 . MX7(*),MY7(*),MZ7(*),MX8(*),MY8(*),MZ8(*)
86C-----------------------------------------------
87C L o c a l V a r i a b l e s
88C-----------------------------------------------
89 INTEGER I, J
90 my_real
91 . s1, s2, s3,
92 . s4, s5, s6,
93 . sxy, syz, szx,
94 . syx, szy, sxz,
95 . mx(mvsiz), my(mvsiz), mz(mvsiz),
96 . fint,fintd,aaa,dxr,dyr,dzr
97C-----------------------------------------------
98 DO i=1,nel
99 s1=(sig(i,1)+svis(i,1)-qvis(i))*vol(i)
100 s2=(sig(i,2)+svis(i,2)-qvis(i))*vol(i)
101 s3=(sig(i,3)+svis(i,3)-qvis(i))*vol(i)
102 s4 = (sig(i,4)+svis(i,4))*vol(i)
103 s5 = (sig(i,5)+svis(i,5))*vol(i)
104 s6 = (sig(i,6)+svis(i,6))*vol(i)
105 mz(i) = (sigd(i,1))*vol(i)
106 mx(i) = (sigd(i,2))*vol(i)
107 my(i) = (sigd(i,3))*vol(i)
108 sxy = s4 + mz(i)
109 syz = s5 + mx(i)
110 szx = s6 + my(i)
111 syx = s4 - mz(i)
112 szy = s5 - mx(i)
113 sxz = s6 - my(i)
114 mz(i) = -mz(i)*0.25
115 mx(i) = -mx(i)*0.25
116 my(i) = -my(i)*0.25
117C
118 fint=s1*px1(i)+sxy*py1(i)+sxz*pz1(i)
119 f11(i)=f11(i)-fint
120 f17(i)=f17(i)+fint
121 fint=s2*py1(i)+syx*px1(i)+syz*pz1(i)
122 f21(i)=f21(i)-fint
123 f27(i)=f27(i)+fint
124 fint=s3*pz1(i)+szx*px1(i)+szy*py1(i)
125 f31(i)=f31(i)-fint
126 f37(i)=f37(i)+fint
127C
128 fint=s1*px2(i)+sxy*py2(i)+sxz*pz2(i)
129 f12(i)=f12(i)-fint
130 f18(i)=f18(i)+fint
131 fint=s2*py2(i)+syx*px2(i)+syz*pz2(i)
132 f22(i)=f22(i)-fint
133 f28(i)=f28(i)+fint
134 fint=s3*pz2(i)+szx*px2(i)+szy*py2(i)
135 f32(i)=f32(i)-fint
136 f38(i)=f38(i)+fint
137C
138 fint=s1*px3(i)+sxy*py3(i)+sxz*pz3(i)
139 f13(i)=f13(i)-fint
140 f15(i)=f15(i)+fint
141 fint=s2*py3(i)+syx*px3(i)+syz*pz3(i)
142 f23(i)=f23(i)-fint
143 f25(i)=f25(i)+fint
144 fint=s3*pz3(i)+szx*px3(i)+szy*py3(i)
145 f33(i)=f33(i)-fint
146 f35(i)=f35(i)+fint
147C
148 fint=s1*px4(i)+sxy*py4(i)+sxz*pz4(i)
149 f14(i)=f14(i)-fint
150 f16(i)=f16(i)+fint
151 fint=s2*py4(i)+syx*px4(i)+syz*pz4(i)
152 f24(i)=f24(i)-fint
153 f26(i)=f26(i)+fint
154 fint=s3*pz4(i)+szx*px4(i)+szy*py4(i)
155 f34(i)=f34(i)-fint
156 f36(i)=f36(i)+fint
157 ENDDO
158C
159 goto 111
160C correction des moments pour eviter une instabilite
161 IF(ismstr==1.OR.ismstr==2.OR.ismstr==3)THEN
162 DO i=1,nel
163 mx(i) = x(2,nc1(i))*f31(i) - x(3,nc1(i))*f21(i)
164 . + x(2,nc2(i))*f32(i) - x(3,nc2(i))*f22(i)
165 . + x(2,nc3(i))*f33(i) - x(3,nc3(i))*f23(i)
166 . + x(2,nc4(i))*f34(i) - x(3,nc4(i))*f24(i)
167 . + x(2,nc5(i))*f35(i) - x(3,nc5(i))*f25(i)
168 . + x(2,nc6(i))*f36(i) - x(3,nc6(i))*f26(i)
169 . + x(2,nc7(i))*f37(i) - x(3,nc7(i))*f27(i)
170 . + x(2,nc8(i))*f38(i) - x(3,nc8(i))*f28(i)
171
172 my(i) = x(3,nc1(i))*f11(i) - x(1,nc1(i))*f31(i)
173 . + x(3,nc2(i))*f12(i) - x(1,nc2(i))*f32(i)
174 . + x(3,nc3(i))*f13(i) - x(1,nc3(i))*f33(i)
175 . + x(3,nc4(i))*f14(i) - x(1,nc4(i))*f34(i)
176 . + x(3,nc5(i))*f15(i) - x(1,nc5(i))*f35(i)
177 . + x(3,nc6(i))*f16(i) - x(1,nc6(i))*f36(i)
178 . + x(3,nc7(i))*f17(i) - x(1,nc7(i))*f37(i)
179 . + x(3,nc8(i))*f18(i) - x(1,nc8(i))*f38(i)
180
181 mz(i) = x(1,nc1(i))*f21(i) - x(2,nc1(i))*f11(i)
182 . + x(1,nc2(i))*f22(i) - x(2,nc2(i))*f12(i)
183 . + x(1,nc3(i))*f23(i) - x(2,nc3(i))*f13(i)
184 . + x(1,nc4(i))*f24(i) - x(2,nc4(i))*f14(i)
185 . + x(1,nc5(i))*f25(i) - x(2,nc5(i))*f15(i)
186 . + x(1,nc6(i))*f26(i) - x(2,nc6(i))*f16(i)
187 . + x(1,nc7(i))*f27(i) - x(2,nc7(i))*f17(i)
188 . + x(1,nc8(i))*f28(i) - x(2,nc8(i))*f18(i)
189
190 mx(i) = -mx(i)*0.125
191 my(i) = -my(i)*0.125
192 mz(i) = -mz(i)*0.125
193 ENDDO
194 ENDIF
195 111 continue
196C
197 DO i=1,nel
198C
199 aaa = 0.0125 * rho(i) * cxx(i)**2 * vol(i)
200C
201 dxr = 0.125 *
202 . (dr(1,nc1(i))+dr(1,nc2(i))+dr(1,nc3(i))+dr(1,nc4(i))
203 . +dr(1,nc5(i))+dr(1,nc6(i))+dr(1,nc7(i))+dr(1,nc8(i)))
204 dyr = 0.125 *
205 . (dr(2,nc1(i))+dr(2,nc2(i))+dr(2,nc3(i))+dr(2,nc4(i))
206 . +dr(2,nc5(i))+dr(2,nc6(i))+dr(2,nc7(i))+dr(2,nc8(i)))
207 dzr = 0.125 *
208 . (dr(3,nc1(i))+dr(3,nc2(i))+dr(3,nc3(i))+dr(3,nc4(i))
209 . +dr(3,nc5(i))+dr(3,nc6(i))+dr(3,nc7(i))+dr(3,nc8(i)))
210C
211 mx1(i) = mx(i) - aaa * (dr(1,nc1(i))-dxr)
212 my1(i) = my(i) - aaa * (dr(2,nc1(i))-dyr)
213 mz1(i) = mz(i) - aaa * (dr(3,nc1(i))-dzr)
214C
215 mx2(i) = mx(i) - aaa * (dr(1,nc2(i))-dxr)
216 my2(i) = my(i) - aaa * (dr(2,nc2(i))-dyr)
217 mz2(i) = mz(i) - aaa * (dr(3,nc2(i))-dzr)
218C
219 mx3(i) = mx(i) - aaa * (dr(1,nc3(i))-dxr)
220 my3(i) = my(i) - aaa * (dr(2,nc3(i))-dyr)
221 mz3(i) = mz(i) - aaa * (dr(3,nc3(i))-dzr)
222C
223 mx4(i) = mx(i) - aaa * (dr(1,nc4(i))-dxr)
224 my4(i) = my(i) - aaa * (dr(2,nc4(i))-dyr)
225 mz4(i) = mz(i) - aaa * (dr(3,nc4(i))-dzr)
226C
227 mx5(i) = mx(i) - aaa * (dr(1,nc5(i))-dxr)
228 my5(i) = my(i) - aaa * (dr(2,nc5(i))-dyr)
229 mz5(i) = mz(i) - aaa * (dr(3,nc5(i))-dzr)
230C
231 mx6(i) = mx(i) - aaa * (dr(1,nc6(i))-dxr)
232 my6(i) = my(i) - aaa * (dr(2,nc6(i))-dyr)
233 mz6(i) = mz(i) - aaa * (dr(3,nc6(i))-dzr)
234C
235 mx7(i) = mx(i) - aaa * (dr(1,nc7(i))-dxr)
236 my7(i) = my(i) - aaa * (dr(2,nc7(i))-dyr)
237 mz7(i) = mz(i) - aaa * (dr(3,nc7(i))-dzr)
238C
239 mx8(i) = mx(i) - aaa * (dr(1,nc8(i))-dxr)
240 my8(i) = my(i) - aaa * (dr(2,nc8(i))-dyr)
241 mz8(i) = mz(i) - aaa * (dr(3,nc8(i))-dzr)
242 ENDDO
243C
244 RETURN
245 END
subroutine sfint3b(sig, sigd, x, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, px5, px6, px7, px8, py5, py6, py7, py8, pz5, pz6, pz7, pz8, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, vol, qvis, dr, rho, cxx, mx1, my1, mz1, mx2, my2, mz2, mx3, my3, mz3, mx4, my4, mz4, mx5, my5, mz5, mx6, my6, mz6, mx7, my7, mz7, mx8, my8, mz8, ixs, nel, ismstr, svis)
Definition sfint3b.F:54