OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
amass3.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "mvsiz_p.inc"
#include "param_c.inc"
#include "inter22.inc"
#include "com01_c.inc"
#include "lockon.inc"
#include "vectorize.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine amass3 (ms, rho, volgp, tag22, volu, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, msnf, nvc, off, ixs, nel, jeul)

Function/Subroutine Documentation

◆ amass3()

subroutine amass3 ( ms,
rho,
volgp,
tag22,
volu,
integer, dimension(*) nc1,
integer, dimension(*) nc2,
integer, dimension(*) nc3,
integer, dimension(*) nc4,
integer, dimension(*) nc5,
integer, dimension(*) nc6,
integer, dimension(*) nc7,
integer, dimension(*) nc8,
msnf,
integer nvc,
off,
integer, dimension(nixs,*) ixs,
integer, intent(in) nel,
integer, intent(in) jeul )

Definition at line 32 of file amass3.F.

38C-----------------------------------------------
39C M o d u l e s
40C-----------------------------------------------
42C-----------------------------------------------
43C I m p l i c i t T y p e s
44C-----------------------------------------------
45#include "implicit_f.inc"
46#include "comlock.inc"
47C-----------------------------------------------
48C G l o b a l P a r a m e t e r s
49C-----------------------------------------------
50#include "mvsiz_p.inc"
51#include "param_c.inc"
52#include "inter22.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: JEUL
59 . ms(*), rho(*),volu(*),volgp(lveul,*),
60 . msnf(*),off(*),tag22(*)
61 INTEGER NC1(*),NC2(*),NC3(*),NC4(*),NC5(*),NC6(*),NC7(*),NC8(*)
62 INTEGER NVC,IXS(NIXS,*)
63C-----------------------------------------------
64C C o m m o n B l o c k s
65C-----------------------------------------------
66#include "com01_c.inc"
67C-----------------------------------------------
68C L o c a l V a r i a b l e s
69C-----------------------------------------------
70 INTEGER I,IFLAG,MCELL,NIN,ICELL,NCELL,IB,J
71 my_real dmass(mvsiz),fac
72 INTEGER NVC1,NVC2,NVC3,NVC4,NVC5,NVC6,NVC7,NVC8
73 my_real tnod(mvsiz,8)
74C-----------------------------------------------
75 nvc1 = nvc / 128
76 nvc2 = (nvc-nvc1*128) / 64
77 nvc3 = (nvc-nvc1*128-nvc2*64) / 32
78 nvc4 = (nvc-nvc1*128-nvc2*64-nvc3*32)/16
79 nvc5 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16)/8
80 nvc6 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8)/4
81 nvc7 = (nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8-nvc6*4)/2
82 nvc8 = nvc-nvc1*128-nvc2*64-nvc3*32-nvc4*16-nvc5*8-nvc6*4-nvc7*2
83 iflag=integ8*jeul
84
85 nin = 1
86 fac = zero
87
88 !--------------------------------------------------------------------------!
89 ! COMPUTE ELEMENTARY MASS AND ITS DISTRIBUTION ON NODES. !
90 ! FOR CUT CELL TNOD(1:8,I) ENABLE TO DISTRIBUTE MASS TO RELATED NODES ONLY !
91 !--------------------------------------------------------------------------!
92 IF(iflag/=1)THEN
93 IF(int22==0)THEN
94 !DEFAULT FORMULATION
95 tnod(1:nel,1:8) = one
96 DO i=1,nel
97 dmass(i)=one_over_8*rho(i)*volu(i)*off(i)
98 ENDDO
99 !INTERFACE 22 : CUT CELLS
100 ELSE
101 DO i=1,nel
102 ib = nint(tag22(i))
103 IF(ib>0)THEN
104 ncell = brick_list(nin,ib)%NBCUT
105 IF(ncell==0)THEN
106 tnod(i,1:8) = one
107 dmass(i)=one_over_8*rho(i)*volu(i)*off(i)
108 cycle
109 ENDIF
110 tnod(i,1:8) = zero
111 mcell = brick_list(nin,ib)%mainID
112 IF(mcell==0)cycle ! next Main Cell
113 fac = brick_list(nin,ib)%POLY(mcell)%NumNOD
114 IF(fac>0)THEN
115 fac=one/fac
116 DO j=1,8
117 icell=brick_list(nin,ib)%NODE(j)%WhichCell
118 IF(icell/=mcell)cycle
119 tnod(i,j) = one !this node is used by polyhedron
120 ENDDO
121 ELSE
122 fac = zero
123 ENDIF
124 ELSE
125 fac = one_over_8
126 tnod(i,1:8) = one !uncut cell distributes centroid mass to all 8 nodes
127 ENDIF
128 dmass(i)=fac*rho(i)*volu(i)*off(i)
129 ENDDO
130 ENDIF
131 endif!IFLAG=1
132C
133#include "lockon.inc"
134 IF(iflag/=0)THEN
135 DO i=1,nel
136 dmass(i)=rho(i)*volgp(1,i)*off(i)
137 ENDDO
138 ENDIF
139
140 !---------------------------------------------!
141 ! NODAL MASS : ELEMENTARY MASS IS DISTRIBUTED !
142 !---------------------------------------------!
143 IF(nvc1==0)THEN
144#include "vectorize.inc"
145 DO i=1,nel
146 ms(nc1(i)) = ms(nc1(i)) + tnod(i,1)*dmass(i) !by default all nodes are tagged. For cut cells only nodes defining the polyhedron is tagged
147 msnf(nc1(i)) = msnf(nc1(i)) + tnod(i,1)*dmass(i)
148 ENDDO
149 ELSE
150 DO i=1,nel
151 ms(nc1(i)) = ms(nc1(i)) + tnod(i,1)*dmass(i)
152 msnf(nc1(i)) = msnf(nc1(i)) + tnod(i,1)*dmass(i)
153 ENDDO
154 ENDIF
155C
156 IF(iflag/=0)THEN
157 DO i=1,nel
158 dmass(i)=rho(i)*volgp(2,i)*off(i)
159 ENDDO
160 ENDIF
161 IF(nvc2==0)THEN
162#include "vectorize.inc"
163 DO i=1,nel
164 ms(nc2(i)) = ms(nc2(i)) + tnod(i,2)*dmass(i)
165 msnf(nc2(i)) = msnf(nc2(i)) + tnod(i,2)*dmass(i)
166 ENDDO
167 ELSE
168 DO i=1,nel
169 ms(nc2(i)) = ms(nc2(i)) + tnod(i,2)*dmass(i)
170 msnf(nc2(i)) = msnf(nc2(i)) + tnod(i,2)*dmass(i)
171 ENDDO
172 ENDIF
173C
174 IF(iflag/=0)THEN
175 DO i=1,nel
176 dmass(i)=rho(i)*volgp(3,i)*off(i)
177 ENDDO
178 ENDIF
179 IF(nvc3==0)THEN
180#include "vectorize.inc"
181 DO i=1,nel
182 ms(nc3(i)) = ms(nc3(i)) + tnod(i,3)*dmass(i)
183 msnf(nc3(i)) = msnf(nc3(i)) + tnod(i,3)*dmass(i)
184 ENDDO
185 ELSE
186 DO i=1,nel
187 ms(nc3(i)) = ms(nc3(i)) + tnod(i,3)*dmass(i)
188 msnf(nc3(i)) = msnf(nc3(i)) + tnod(i,3)*dmass(i)
189 ENDDO
190 ENDIF
191C
192 IF(iflag/=0)THEN
193 DO i=1,nel
194 dmass(i)=rho(i)*volgp(4,i)*off(i)
195 ENDDO
196 ENDIF
197 IF(nvc4==0)THEN
198#include "vectorize.inc"
199 DO i=1,nel
200 ms(nc4(i)) = ms(nc4(i)) + tnod(i,4)*dmass(i)
201 msnf(nc4(i)) = msnf(nc4(i)) + tnod(i,4)*dmass(i)
202 ENDDO
203 ELSE
204 DO i=1,nel
205 ms(nc4(i)) = ms(nc4(i)) + tnod(i,4)*dmass(i)
206 msnf(nc4(i)) = msnf(nc4(i)) + tnod(i,4)*dmass(i)
207 ENDDO
208 ENDIF
209C
210 IF(iflag/=0)THEN
211 DO i=1,nel
212 dmass(i)=rho(i)*volgp(5,i)*off(i)
213 ENDDO
214 ENDIF
215 IF(nvc5==0)THEN
216#include "vectorize.inc"
217 DO i=1,nel
218 ms(nc5(i)) = ms(nc5(i)) + tnod(i,5)*dmass(i)
219 msnf(nc5(i)) = msnf(nc5(i)) + tnod(i,5)*dmass(i)
220 ENDDO
221 ELSE
222 DO i=1,nel
223 ms(nc5(i)) = ms(nc5(i)) + tnod(i,5)*dmass(i)
224 msnf(nc5(i)) = msnf(nc5(i)) + tnod(i,5)*dmass(i)
225 ENDDO
226 ENDIF
227C
228 IF(iflag/=0)THEN
229 DO i=1,nel
230 dmass(i)=rho(i)*volgp(6,i)*off(i)
231 ENDDO
232 ENDIF
233 IF(nvc6==0)THEN
234#include "vectorize.inc"
235 DO i=1,nel
236 ms(nc6(i)) = ms(nc6(i)) + tnod(i,6)*dmass(i)
237 msnf(nc6(i)) = msnf(nc6(i)) + tnod(i,6)*dmass(i)
238 ENDDO
239 ELSE
240 DO i=1,nel
241 ms(nc6(i)) = ms(nc6(i)) + tnod(i,6)*dmass(i)
242 msnf(nc6(i)) = msnf(nc6(i)) + tnod(i,6)*dmass(i)
243 ENDDO
244 ENDIF
245C
246 IF(iflag/=0)THEN
247 DO i=1,nel
248 dmass(i)=rho(i)*volgp(7,i)*off(i)
249 ENDDO
250 ENDIF
251 IF(nvc7==0)THEN
252#include "vectorize.inc"
253 DO i=1,nel
254 ms(nc7(i)) = ms(nc7(i)) + tnod(i,7)*dmass(i)
255 msnf(nc7(i)) = msnf(nc7(i)) + tnod(i,7)*dmass(i)
256 ENDDO
257 ELSE
258 DO i=1,nel
259 ms(nc7(i)) = ms(nc7(i)) + tnod(i,7)*dmass(i)
260 msnf(nc7(i)) = msnf(nc7(i)) + tnod(i,7)*dmass(i)
261 ENDDO
262 ENDIF
263C
264 IF(iflag/=0)THEN
265 DO i=1,nel
266 dmass(i)=rho(i)*volgp(8,i)*off(i)
267 ENDDO
268 ENDIF
269 IF(nvc8==0)THEN
270#include "vectorize.inc"
271 DO i=1,nel
272 ms(nc8(i)) = ms(nc8(i)) + tnod(i,8)*dmass(i)
273 msnf(nc8(i)) = msnf(nc8(i)) + tnod(i,8)*dmass(i)
274 ENDDO
275 ELSE
276 DO i=1,nel
277 ms(nc8(i)) = ms(nc8(i)) + tnod(i,8)*dmass(i)
278 msnf(nc8(i)) = msnf(nc8(i)) + tnod(i,8)*dmass(i)
279 ENDDO
280 ENDIF
281#include "lockoff.inc"
282C
283 RETURN
#define my_real
Definition cppsort.cpp:32
type(brick_entity), dimension(:,:), allocatable, target brick_list