OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
smass3b.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!|| smass3b ../starter/source/elements/solid/solid8p/smass3b.F
25!||--- called by ------------------------------------------------------
26!|| sinit3 ../starter/source/elements/solid/solide/sinit3.f
27!||--- uses -----------------------------------------------------
28!||====================================================================
29 SUBROUTINE smass3b(
30 1 RHO ,MS ,VOLGP,LVLOC,MSS,
31 2 PARTSAV,X ,V ,IPART,MSNF,
32 3 MSSF ,WMA ,RHOCP,MCP ,MCPS,
33 4 MSSA ,VOLU,
34 5 NC1 ,NC2 ,NC3 ,NC4 ,NC5 ,
35 6 NC6 ,NC7 ,NC8)
36C-----------------------------------------------
37C I m p l i c i t T y p e s
38C-----------------------------------------------
39 USE ale_mod
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "com01_c.inc"
52#include "vect01_c.inc"
53#include "scr05_c.inc"
54C-----------------------------------------------
55C D u m m y A r g u m e n t s
56C-----------------------------------------------
57 INTEGER LVLOC,IPART(*)
58 my_real
59 . RHO(*), MS(*), VOLGP(LVLOC,*), X(3,*), V(3,*), PARTSAV(20,*),
60 . MSNF(*), MSS(8,*), MSSF(8,*),WMA(*),RHOCP(*),MCP(*),MCPS(8,*),
61 . MSSA(*), VOLU(*)
62 INTEGER NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*), NC8(*)
63C-----------------------------------------------
64C L o c a l V a r i a b l e s
65C-----------------------------------------------
66 INTEGER I1,I2,I3,I4,I5,I6,I7,I8,IP, I,J,K
67 my_real
68 . mass(mvsiz), dmasgp(8,mvsiz),
69 . xx,xy,yy,yz,zz,zx,dmcpgp(8,mvsiz)
70C=======================================================================
71 DO i=lft,llt
72 mass(i)=rho(i)*volu(i)*one_over_8
73 ENDDO
74C
75 IF(irest_mselt /= 0)THEN
76 DO i=lft,llt
77 mssa(nft+i)=mass(i)
78 ENDDO
79 ENDIF
80C
81
82 DO i=lft,llt
83 dmasgp(1,i)=rho(i)*volgp(1,i)
84 dmasgp(2,i)=rho(i)*volgp(2,i)
85 dmasgp(3,i)=rho(i)*volgp(3,i)
86 dmasgp(4,i)=rho(i)*volgp(4,i)
87 dmasgp(5,i)=rho(i)*volgp(5,i)
88 dmasgp(6,i)=rho(i)*volgp(6,i)
89 dmasgp(7,i)=rho(i)*volgp(7,i)
90 dmasgp(8,i)=rho(i)*volgp(8,i)
91 ENDDO
92 IF(jthe < 0 ) THEN
93 DO i=lft,llt
94 dmcpgp(1,i)=rhocp(i)*volgp(1,i)
95 dmcpgp(2,i)=rhocp(i)*volgp(2,i)
96 dmcpgp(3,i)=rhocp(i)*volgp(3,i)
97 dmcpgp(4,i)=rhocp(i)*volgp(4,i)
98 dmcpgp(5,i)=rhocp(i)*volgp(5,i)
99 dmcpgp(6,i)=rhocp(i)*volgp(6,i)
100 dmcpgp(7,i)=rhocp(i)*volgp(7,i)
101 dmcpgp(8,i)=rhocp(i)*volgp(8,i)
102 ENDDO
103 ENDIF
104C mass init en parith/on si spmd
105
106 DO i=lft,llt
107 mss(1,i)=dmasgp(1,i)
108 mss(2,i)=dmasgp(2,i)
109 mss(3,i)=dmasgp(3,i)
110 mss(4,i)=dmasgp(4,i)
111 mss(5,i)=dmasgp(5,i)
112 mss(6,i)=dmasgp(6,i)
113 mss(7,i)=dmasgp(7,i)
114 mss(8,i)=dmasgp(8,i)
115C
116 i1 = nc1(i)
117 i2 = nc2(i)
118 i3 = nc3(i)
119 i4 = nc4(i)
120 i5 = nc5(i)
121 i6 = nc6(i)
122 i7 = nc7(i)
123 i8 = nc8(i)
124 ip=ipart(i)
125 partsav(1,ip)=partsav(1,ip) + eight*mass(i)
126 partsav(2,ip)=partsav(2,ip)
127 . +dmasgp(1,i)*x(1,i1)+dmasgp(2,i)*x(1,i2)+dmasgp(3,i)*x(1,i3)
128 . +dmasgp(4,i)*x(1,i4)+dmasgp(5,i)*x(1,i5)+dmasgp(6,i)*x(1,i6)
129 . +dmasgp(7,i)*x(1,i7)+dmasgp(8,i)*x(1,i8)
130 partsav(3,ip)=partsav(3,ip)
131 . +dmasgp(1,i)*x(2,i1)+dmasgp(2,i)*x(2,i2)+dmasgp(3,i)*x(2,i3)
132 . +dmasgp(4,i)*x(2,i4)+dmasgp(5,i)*x(2,i5)+dmasgp(6,i)*x(2,i6)
133 . +dmasgp(7,i)*x(2,i7)+dmasgp(8,i)*x(2,i8)
134 partsav(4,ip)=partsav(4,ip)
135 . +dmasgp(1,i)*x(3,i1)+dmasgp(2,i)*x(3,i2)+dmasgp(3,i)*x(3,i3)
136 . +dmasgp(4,i)*x(3,i4)+dmasgp(5,i)*x(3,i5)+dmasgp(6,i)*x(3,i6)
137 . +dmasgp(7,i)*x(3,i7)+dmasgp(8,i)*x(3,i8)
138 xx = x(1,i1)*x(1,i1)
139 xy = x(1,i1)*x(2,i1)
140 yy = x(2,i1)*x(2,i1)
141 yz = x(2,i1)*x(3,i1)
142 zz = x(3,i1)*x(3,i1)
143 zx = x(3,i1)*x(1,i1)
144 partsav(5,ip) =partsav(5,ip) + dmasgp(1,i) * (yy+zz)
145 partsav(6,ip) =partsav(6,ip) + dmasgp(1,i) * (zz+xx)
146 partsav(7,ip) =partsav(7,ip) + dmasgp(1,i) * (xx+yy)
147 partsav(8,ip) =partsav(8,ip) - dmasgp(1,i) * xy
148 partsav(9,ip) =partsav(9,ip) - dmasgp(1,i) * yz
149 partsav(10,ip)=partsav(10,ip) - dmasgp(1,i) * zx
150 xx = x(1,i2)*x(1,i2)
151 xy = x(1,i2)*x(2,i2)
152 yy = x(2,i2)*x(2,i2)
153 yz = x(2,i2)*x(3,i2)
154 zz = x(3,i2)*x(3,i2)
155 zx = x(3,i2)*x(1,i2)
156 partsav(5,ip) =partsav(5,ip) + dmasgp(2,i) * (yy+zz)
157 partsav(6,ip) =partsav(6,ip) + dmasgp(2,i) * (zz+xx)
158 partsav(7,ip) =partsav(7,ip) + dmasgp(2,i) * (xx+yy)
159 partsav(8,ip) =partsav(8,ip) - dmasgp(2,i) * xy
160 partsav(9,ip) =partsav(9,ip) - dmasgp(2,i) * yz
161 partsav(10,ip)=partsav(10,ip) - dmasgp(2,i) * zx
162 xx = x(1,i3)*x(1,i3)
163 xy = x(1,i3)*x(2,i3)
164 yy = x(2,i3)*x(2,i3)
165 yz = x(2,i3)*x(3,i3)
166 zz = x(3,i3)*x(3,i3)
167 zx = x(3,i3)*x(1,i3)
168 partsav(5,ip) =partsav(5,ip) + dmasgp(3,i) * (yy+zz)
169 partsav(6,ip) =partsav(6,ip) + dmasgp(3,i) * (zz+xx)
170 partsav(7,ip) =partsav(7,ip) + dmasgp(3,i) * (xx+yy)
171 partsav(8,ip) =partsav(8,ip) - dmasgp(3,i) * xy
172 partsav(9,ip) =partsav(9,ip) - dmasgp(3,i) * yz
173 partsav(10,ip)=partsav(10,ip) - dmasgp(3,i) * zx
174 xx = x(1,i4)*x(1,i4)
175 xy = x(1,i4)*x(2,i4)
176 yy = x(2,i4)*x(2,i4)
177 yz = x(2,i4)*x(3,i4)
178 zz = x(3,i4)*x(3,i4)
179 zx = x(3,i4)*x(1,i4)
180 partsav(5,ip) =partsav(5,ip) + dmasgp(4,i) * (yy+zz)
181 partsav(6,ip) =partsav(6,ip) + dmasgp(4,i) * (zz+xx)
182 partsav(7,ip) =partsav(7,ip) + dmasgp(4,i) * (xx+yy)
183 partsav(8,ip) =partsav(8,ip) - dmasgp(4,i) * xy
184 partsav(9,ip) =partsav(9,ip) - dmasgp(4,i) * yz
185 partsav(10,ip)=partsav(10,ip) - dmasgp(4,i) * zx
186 xx = x(1,i5)*x(1,i5)
187 xy = x(1,i5)*x(2,i5)
188 yy = x(2,i5)*x(2,i5)
189 yz = x(2,i5)*x(3,i5)
190 zz = x(3,i5)*x(3,i5)
191 zx = x(3,i5)*x(1,i5)
192 partsav(5,ip) =partsav(5,ip) + dmasgp(5,i) * (yy+zz)
193 partsav(6,ip) =partsav(6,ip) + dmasgp(5,i) * (zz+xx)
194 partsav(7,ip) =partsav(7,ip) + dmasgp(5,i) * (xx+yy)
195 partsav(8,ip) =partsav(8,ip) - dmasgp(5,i) * xy
196 partsav(9,ip) =partsav(9,ip) - dmasgp(5,i) * yz
197 partsav(10,ip)=partsav(10,ip) - dmasgp(5,i) * zx
198 xx = x(1,i6)*x(1,i6)
199 xy = x(1,i6)*x(2,i6)
200 yy = x(2,i6)*x(2,i6)
201 yz = x(2,i6)*x(3,i6)
202 zz = x(3,i6)*x(3,i6)
203 zx = x(3,i6)*x(1,i6)
204 partsav(5,ip) =partsav(5,ip) + dmasgp(6,i) * (yy+zz)
205 partsav(6,ip) =partsav(6,ip) + dmasgp(6,i) * (zz+xx)
206 partsav(7,ip) =partsav(7,ip) + dmasgp(6,i) * (xx+yy)
207 partsav(8,ip) =partsav(8,ip) - dmasgp(6,i) * xy
208 partsav(9,ip) =partsav(9,ip) - dmasgp(6,i) * yz
209 partsav(10,ip)=partsav(10,ip) - dmasgp(6,i) * zx
210 xx = x(1,i7)*x(1,i7)
211 xy = x(1,i7)*x(2,i7)
212 yy = x(2,i7)*x(2,i7)
213 yz = x(2,i7)*x(3,i7)
214 zz = x(3,i7)*x(3,i7)
215 zx = x(3,i7)*x(1,i7)
216 partsav(5,ip) =partsav(5,ip) + dmasgp(7,i) * (yy+zz)
217 partsav(6,ip) =partsav(6,ip) + dmasgp(7,i) * (zz+xx)
218 partsav(7,ip) =partsav(7,ip) + dmasgp(7,i) * (xx+yy)
219 partsav(8,ip) =partsav(8,ip) - dmasgp(7,i) * xy
220 partsav(9,ip) =partsav(9,ip) - dmasgp(7,i) * yz
221 partsav(10,ip)=partsav(10,ip) - dmasgp(7,i) * zx
222 xx = x(1,i8)*x(1,i8)
223 xy = x(1,i8)*x(2,i8)
224 yy = x(2,i8)*x(2,i8)
225 yz = x(2,i8)*x(3,i8)
226 zz = x(3,i8)*x(3,i8)
227 zx = x(3,i8)*x(1,i8)
228 partsav(5,ip) =partsav(5,ip) + dmasgp(8,i) * (yy+zz)
229 partsav(6,ip) =partsav(6,ip) + dmasgp(8,i) * (zz+xx)
230 partsav(7,ip) =partsav(7,ip) + dmasgp(8,i) * (xx+yy)
231 partsav(8,ip) =partsav(8,ip) - dmasgp(8,i) * xy
232 partsav(9,ip) =partsav(9,ip) - dmasgp(8,i) * yz
233 partsav(10,ip)=partsav(10,ip) - dmasgp(8,i) * zx
234C les quantites suivantes sont calculees en tenant compte
235C de M_element/8. et non pas des masses associees aux noeuds.
236 partsav(11,ip)=partsav(11,ip) + mass(i)*
237 . (v(1,i1)+v(1,i2)+v(1,i3)+v(1,i4)
238 . +v(1,i5)+v(1,i6)+v(1,i7)+v(1,i8))
239 partsav(12,ip)=partsav(12,ip) + mass(i)*
240 . (v(2,i1)+v(2,i2)+v(2,i3)+v(2,i4)
241 . +v(2,i5)+v(2,i6)+v(2,i7)+v(2,i8))
242 partsav(13,ip)=partsav(13,ip) + mass(i)*
243 . (v(3,i1)+v(3,i2)+v(3,i3)+v(3,i4)
244 . +v(3,i5)+v(3,i6)+v(3,i7)+v(3,i8))
245 partsav(14,ip)=partsav(14,ip) + half * mass(i) *
246 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
247 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2)
248 . +v(1,i3)*v(1,i3)+v(2,i3)*v(2,i3)+v(3,i3)*v(3,i3)
249 . +v(1,i4)*v(1,i4)+v(2,i4)*v(2,i4)+v(3,i4)*v(3,i4)
250 . +v(1,i5)*v(1,i5)+v(2,i5)*v(2,i5)+v(3,i5)*v(3,i5)
251 . +v(1,i6)*v(1,i6)+v(2,i6)*v(2,i6)+v(3,i6)*v(3,i6)
252 . +v(1,i7)*v(1,i7)+v(2,i7)*v(2,i7)+v(3,i7)*v(3,i7)
253 . +v(1,i8)*v(1,i8)+v(2,i8)*v(2,i8)+v(3,i8)*v(3,i8))
254 ENDDO
255C
256 IF(jale+jeul>0)THEN
257 DO i=lft,llt
258 i1 = nc1(i)
259 i2 = nc2(i)
260 i3 = nc3(i)
261 i4 = nc4(i)
262 i5 = nc5(i)
263 i6 = nc6(i)
264 i7 = nc7(i)
265 i8 = nc8(i)
266 mss(1,i)=dmasgp(1,i)
267 mss(2,i)=dmasgp(2,i)
268 mss(3,i)=dmasgp(3,i)
269 mss(4,i)=dmasgp(4,i)
270 mss(5,i)=dmasgp(5,i)
271 mss(6,i)=dmasgp(6,i)
272 mss(7,i)=dmasgp(7,i)
273 mss(8,i)=dmasgp(8,i)
274 ENDDO
275 ENDIF
276C
277C For FEM heat trasnfert
278C
279 IF(jthe < 0 ) THEN
280 DO i=lft,llt
281 mcps(1,i)=dmcpgp(1,i)
282 mcps(2,i)=dmcpgp(2,i)
283 mcps(3,i)=dmcpgp(3,i)
284 mcps(4,i)=dmcpgp(4,i)
285 mcps(5,i)=dmcpgp(5,i)
286 mcps(6,i)=dmcpgp(6,i)
287 mcps(7,i)=dmcpgp(7,i)
288 mcps(8,i)=dmcpgp(8,i)
289 ENDDO
290 ENDIF
291
292C
293 IF(jale>0 .AND. ale%GRID%NWALE==4)THEN
294 DO i=lft,llt
295 i1 = nc1(i)
296 i2 = nc2(i)
297 i3 = nc3(i)
298 i4 = nc4(i)
299 i5 = nc5(i)
300 i6 = nc6(i)
301 i7 = nc7(i)
302 i8 = nc8(i)
303 wma(i1)=wma(i1)+three_half
304 wma(i2)=wma(i2)+three_half
305 wma(i3)=wma(i3)+three_half
306 wma(i4)=wma(i4)+three_half
307 wma(i5)=wma(i5)+three_half
308 wma(i6)=wma(i6)+three_half
309 wma(i7)=wma(i7)+three_half
310 wma(i8)=wma(i8)+three_half
311 ENDDO
312 ENDIF
313C-----------
314 RETURN
315 END
type(ale_) ale
Definition ale_mod.F:249
subroutine sinit3(elbuf_str, mas, ixs, pm, x, detonators, geo, veul, ale_connectivity, iparg_gr, dtelem, sigi, nel, skew, igeo, stifn, partsav, v, iparts, mss, ipart, sigsp, ng, iparg, nsigi, msnf, nvc, mssf, ipm, iuser, nsigs, volnod, bvolnod, vns, bns, in, vr, ins, wma, ptsol, bufmat, mcp, mcps, temp, xrefs, npf, tf, mssa, strsglob, straglob, fail_ini, spbuf, kxsp, ipartsp, nod2sp, sol2sph, irst, iloadp, facload, rnoise, perturb, mat_param, glob_therm)
Definition sinit3.F:75
subroutine smass3b(rho, ms, volgp, lvloc, mss, partsav, x, v, ipart, msnf, mssf, wma, rhocp, mcp, mcps, mssa, volu, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8)
Definition smass3b.F:36
program starter
Definition starter.F:39