OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
s16mass3.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!|| s16mass3 ../starter/source/elements/thickshell/solide16/s16mass3.f
25!||--- called by ------------------------------------------------------
26!|| s16init3 ../starter/source/elements/thickshell/solide16/s16init3.F
27!||====================================================================
28 SUBROUTINE s16mass3(
29 1 MASS ,MS ,PARTSAV,IPART ,MSS,VOLG,
30 2 XX ,YY ,ZZ ,VX ,VY ,VZ ,
31 3 NC ,STI ,STIFN ,DELTAX2,RHO,DTX ,
32 4 DTELEM,MSSX,RHOCP ,MCP ,MCPS, MCPSX,
33 5 FILL )
34C
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 D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER IPART(*), NC(MVSIZ,16)
47 my_real
48 . MASS(*), MS(*),PARTSAV(20,*), MSS(8,*),DELTAX2(*),
49 . XX(MVSIZ,16), YY(MVSIZ,16), ZZ(MVSIZ,16),
50 . VX(MVSIZ,16), VY(MVSIZ,16), VZ(MVSIZ,16),STI(*),STIFN(*),
51 . volg(mvsiz),rho(mvsiz),dtx(mvsiz),dtelem(mvsiz),
52 . mssx(12,*), rhocp(*), mcp(*), mcps(8,*),mcpsx(12,*),
53 . fill(*)
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57#include "vect01_c.inc"
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER I, IP,N1,N2, IPERM1(16),IPERM2(16),N
62C REAL
63 my_real
64 . AXX,AYY,AZZ,AXY,AYZ,AZX,AM,BM,FAC,MASSCP
65C
66 DATA iperm1/0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8/
67 DATA iperm2/0,0,0,0,0,0,0,0,2,3,4,1,6,7,8,5/
68C-----------------------------------------------------------------------
69 DO i=lft,llt
70C
71 mass(i)=fill(i)*rho(i)*volg(i)
72 dtelem(i)=min(dtelem(i),dtx(i))
73 sti(i) = fill(i) * rho(i) * volg(i) * two / sixty4 /
74 . max(em20,dtx(i)*dtx(i))
75 am = mass(i)/thirty2
76 bm = mass(i)*three/thirty2
77 mss(1,i)=am
78 mss(2,i)=am
79 mss(3,i)=am
80 mss(4,i)=am
81 mss(5,i)=am
82 mss(6,i)=am
83 mss(7,i)=am
84 mss(8,i)=am
85 stifn(nc(i,1))=stifn(nc(i,1))+sti(i)*deltax2(i)
86 stifn(nc(i,2))=stifn(nc(i,2))+sti(i)*deltax2(i)
87 stifn(nc(i,3))=stifn(nc(i,3))+sti(i)*deltax2(i)
88 stifn(nc(i,4))=stifn(nc(i,4))+sti(i)*deltax2(i)
89 stifn(nc(i,5))=stifn(nc(i,5))+sti(i)*deltax2(i)
90 stifn(nc(i,6))=stifn(nc(i,6))+sti(i)*deltax2(i)
91 stifn(nc(i,7))=stifn(nc(i,7))+sti(i)*deltax2(i)
92 stifn(nc(i,8))=stifn(nc(i,8))+sti(i)*deltax2(i)
93 DO n=9,16
94 n1=iperm1(n)
95 n2=iperm2(n)
96 IF(nc(i,n)/=0)THEN
97 mssx(n-8,i)=bm
98 stifn(nc(i,n))=stifn(nc(i,n))+sti(i)
99 ELSE
100 mss(n1,i)=mss(n1,i)+ half*bm
101 mss(n2,i)=mss(n2,i)+ half*bm
102 stifn(nc(i,n1))=stifn(nc(i,n1))+ half*sti(i)
103 stifn(nc(i,n2))=stifn(nc(i,n2))+ half*sti(i)
104 ENDIF
105 ENDDO
106C
107 ip=ipart(i)
108 partsav(1,ip)=partsav(1,ip) + mass(i)
109 partsav(2,ip)=partsav(2,ip)
110 . + am*(xx(i,1)+xx(i,2)+xx(i,3)+xx(i,4)
111 . +xx(i,5)+xx(i,6)+xx(i,7)+xx(i,8))
112 . + bm*(xx(i,9) +xx(i,10)+xx(i,11)+xx(i,12)+xx(i,13)+xx(i,14)
113 . +xx(i,15)+xx(i,16))
114 partsav(3,ip)=partsav(3,ip)
115 . + am*(yy(i,1)+yy(i,2)+yy(i,3)+yy(i,4)
116 . +yy(i,5)+yy(i,6)+yy(i,7)+yy(i,8))
117 . + bm*(yy(i,9) +yy(i,10)+yy(i,11)+yy(i,12)+yy(i,13)+yy(i,14)
118 . +yy(i,15)+yy(i,16))
119 partsav(4,ip)=partsav(4,ip)
120 . + am*(zz(i,1)+zz(i,2)+zz(i,3)+zz(i,4)
121 . +zz(i,5)+zz(i,6)+zz(i,7)+zz(i,8))
122 . + bm*(zz(i,9) +zz(i,10)+zz(i,11)+zz(i,12)+zz(i,13)+zz(i,14)
123 . +zz(i,15)+zz(i,16))
124 axx = am*(xx(i,1)*xx(i,1)+xx(i,2)*xx(i,2)
125 . +xx(i,3)*xx(i,3)+xx(i,4)*xx(i,4)
126 . +xx(i,5)*xx(i,5)+xx(i,6)*xx(i,6)
127 . +xx(i,7)*xx(i,7)+xx(i,8)*xx(i,8))
128 . +bm*(xx(i,9) *xx(i,9) +xx(i,10)*xx(i,10)
129 . +xx(i,11)*xx(i,11)+xx(i,12)*xx(i,12)
130 . +xx(i,13)*xx(i,13)+xx(i,14)*xx(i,14)
131 . +xx(i,15)*xx(i,15)+xx(i,16)*xx(i,16))
132 ayy = am*(yy(i,1)*yy(i,1)+yy(i,2)*yy(i,2)
133 . +yy(i,3)*yy(i,3)+yy(i,4)*yy(i,4)
134 . +yy(i,5)*yy(i,5)+yy(i,6)*yy(i,6)
135 . +yy(i,7)*yy(i,7)+yy(i,8)*yy(i,8))
136 . +bm*(yy(i,9) *yy(i,9) +yy(i,10)*yy(i,10)
137 . +yy(i,11)*yy(i,11)+yy(i,12)*yy(i,12)
138 . +yy(i,13)*yy(i,13)+yy(i,14)*yy(i,14)
139 . +yy(i,15)*yy(i,15)+yy(i,16)*yy(i,16))
140 azz = am*(zz(i,1)*zz(i,1)+zz(i,2)*zz(i,2)
141 . +zz(i,3)*zz(i,3)+zz(i,4)*zz(i,4)
142 . +zz(i,5)*zz(i,5)+zz(i,6)*zz(i,6)
143 . +zz(i,7)*zz(i,7)+zz(i,8)*zz(i,8))
144 . +bm*(zz(i,9) *zz(i,9) +zz(i,10)*zz(i,10)
145 . +zz(i,11)*zz(i,11)+zz(i,12)*zz(i,12)
146 . +zz(i,13)*zz(i,13)+zz(i,14)*zz(i,14)
147 . +zz(i,15)*zz(i,15)+zz(i,16)*zz(i,16))
148 axy = am*(xx(i,1)*yy(i,1)+xx(i,2)*yy(i,2)
149 . +xx(i,3)*yy(i,3)+xx(i,4)*yy(i,4)
150 . +xx(i,5)*yy(i,5)+xx(i,6)*yy(i,6)
151 . +xx(i,7)*yy(i,7)+xx(i,8)*yy(i,8))
152 . +bm*(xx(i,9) *yy(i,9) +xx(i,10)*yy(i,10)
153 . +xx(i,11)*yy(i,11)+xx(i,12)*yy(i,12)
154 . +xx(i,13)*yy(i,13)+xx(i,14)*yy(i,14)
155 . +xx(i,15)*yy(i,15)+xx(i,16)*yy(i,16))
156 ayz = am*(yy(i,1)*zz(i,1)+yy(i,2)*zz(i,2)
157 . +yy(i,3)*zz(i,3)+yy(i,4)*zz(i,4)
158 . +yy(i,5)*zz(i,5)+yy(i,6)*zz(i,6)
159 . +yy(i,7)*zz(i,7)+yy(i,8)*zz(i,8))
160 . +bm*(yy(i,9) *zz(i,9) +yy(i,10)*zz(i,10)
161 . +yy(i,11)*zz(i,11)+yy(i,12)*zz(i,12)
162 . +yy(i,13)*zz(i,13)+yy(i,14)*zz(i,14)
163 . +yy(i,15)*zz(i,15)+yy(i,16)*zz(i,16))
164 azx = am*(zz(i,1)*xx(i,1)+zz(i,2)*xx(i,2)
165 . +zz(i,3)*xx(i,3)+zz(i,4)*xx(i,4)
166 . +zz(i,5)*xx(i,5)+zz(i,6)*xx(i,6)
167 . +zz(i,7)*xx(i,7)+zz(i,8)*xx(i,8))
168 . +bm*(zz(i,9) *xx(i,9) +zz(i,10)*xx(i,10)
169 . +zz(i,11)*xx(i,11)+zz(i,12)*xx(i,12)
170 . +zz(i,13)*xx(i,13)+zz(i,14)*xx(i,14)
171 . +zz(i,15)*xx(i,15)+zz(i,16)*xx(i,16))
172 partsav(5,ip) =partsav(5,ip) + (ayy+azz)
173 partsav(6,ip) =partsav(6,ip) + (azz+axx)
174 partsav(7,ip) =partsav(7,ip) + (axx+ayy)
175 partsav(8,ip) =partsav(8,ip) - axy
176 partsav(9,ip) =partsav(9,ip) - ayz
177 partsav(10,ip)=partsav(10,ip) - azx
178C
179 partsav(11,ip)=partsav(11,ip)
180 . + am*(vx(i,1)+vx(i,2)+vx(i,3)+vx(i,4)
181 . +vx(i,5)+vx(i,6)+vx(i,7)+vx(i,8))
182 . + bm*(vx(i,9) +vx(i,10)+vx(i,11)+vx(i,12)+vx(i,13)+vx(i,14)
183 . +vx(i,15)+vx(i,16))
184 partsav(12,ip)=partsav(12,ip)
185 . + am*(vy(i,1)+vy(i,2)+vy(i,3)+vy(i,4)
186 . +vy(i,5)+vy(i,6)+vy(i,7)+vy(i,8))
187 . + bm*(vy(i,9) +vy(i,10)+vy(i,11)+vy(i,12)+vy(i,13)+vy(i,14)
188 . +vy(i,15)+vy(i,16))
189 partsav(13,ip)=partsav(13,ip)
190 . + am*(vz(i,1)+vz(i,2)+vz(i,3)+vz(i,4)
191 . +vz(i,5)+vz(i,6)+vz(i,7)+vz(i,8))
192 . + bm*(vz(i,9) +vz(i,10)+vz(i,11)+vz(i,12)+vz(i,13)+vz(i,14)
193 . +vz(i,15)+vz(i,16))
194 partsav(14,ip)=partsav(14,ip) + half *
195 . (am*(vx(i,1)*vx(i,1)+vx(i,2)*vx(i,2)
196 . +vx(i,3)*vx(i,3)+vx(i,4)*vx(i,4)
197 . +vx(i,5)*vx(i,5)+vx(i,6)*vx(i,6)
198 . +vx(i,7)*vx(i,7)+vx(i,8)*vx(i,8)
199 . +vy(i,1)*vy(i,1)+vy(i,2)*vy(i,2)
200 . +vy(i,3)*vy(i,3)+vy(i,4)*vy(i,4)
201 . +vy(i,5)*vy(i,5)+vy(i,6)*vy(i,6)
202 . +vy(i,7)*vy(i,7)+vy(i,8)*vy(i,8)
203 . +vz(i,1)*vz(i,1)+vz(i,2)*vz(i,2)
204 . +vz(i,3)*vz(i,3)+vz(i,4)*vz(i,4)
205 . +vz(i,5)*vz(i,5)+vz(i,6)*vz(i,6)
206 . +vz(i,7)*vz(i,7)+vz(i,8)*vz(i,8))
207 . +bm*(vx(i,9) *vx(i,9) +vx(i,10)*vx(i,10)
208 . +vx(i,11)*vx(i,11)+vx(i,12)*vx(i,12)
209 . +vx(i,13)*vx(i,13)+vx(i,14)*vx(i,14)
210 . +vx(i,15)*vx(i,15)+vx(i,16)*vx(i,16)
211 . +vy(i,9) *vy(i,9) +vy(i,10)*vy(i,10)
212 . +vy(i,11)*vy(i,11)+vy(i,12)*vy(i,12)
213 . +vy(i,13)*vy(i,13)+vy(i,14)*vy(i,14)
214 . +vy(i,15)*vy(i,15)+vy(i,16)*vy(i,16)
215 . +vz(i,9) *vz(i,9) +vz(i,10)*vz(i,10)
216 . +vz(i,11)*vz(i,11)+vz(i,12)*vz(i,12)
217 . +vz(i,13)*vz(i,13)+vz(i,14)*vz(i,14)
218 . +vz(i,15)*vz(i,15)+vz(i,16)*vz(i,16)))
219 ENDDO
220CC
221C heat transfer for solid
222C
223 IF(jthe < 0 ) THEN
224 DO i=lft,llt
225 masscp=fill(i)*rhocp(i)*volg(i)
226 am = masscp/thirty2
227 bm = masscp*three/thirty2
228 mss(1,i)=am
229 mss(2,i)=am
230 mss(3,i)=am
231 mss(4,i)=am
232 mss(5,i)=am
233 mss(6,i)=am
234 mss(7,i)=am
235 mss(8,i)=am
236 DO n=9,16
237 n1=iperm1(n)
238 n2=iperm2(n)
239 IF(nc(i,n) /= 0)THEN
240 mcpsx(n-8,i)=bm
241 ELSE
242 mcps(n1,i)=mcps(n1,i)+ half*bm
243 mcps(n2,i)=mcps(n2,i)+ half*bm
244 ENDIF
245 ENDDO
246 ENDDO
247 ENDIF
248C
249 RETURN
250 END
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
subroutine s16mass3(mass, ms, partsav, ipart, mss, volg, xx, yy, zz, vx, vy, vz, nc, sti, stifn, deltax2, rho, dtx, dtelem, mssx, rhocp, mcp, mcps, mcpsx, fill)
Definition s16mass3.F:34
program starter
Definition starter.F:39