OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
alefvm_stress_int22.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vect01_c.inc"
#include "com01_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine alefvm_stress_int22 (ixs, sig, qvis, n1x, n2x, n3x, n4x, n5x, n6x, n1y, n2y, n3y, n4y, n5y, n6y, n1z, n2z, n3z, n4z, n5z, n6z, ipm, rho, vol, iad22, nel, mom, ssp, svis)

Function/Subroutine Documentation

◆ alefvm_stress_int22()

subroutine alefvm_stress_int22 ( integer, dimension(nixs,*) ixs,
sig,
qvis,
n1x,
n2x,
n3x,
n4x,
n5x,
n6x,
n1y,
n2y,
n3y,
n4y,
n5y,
n6y,
n1z,
n2z,
n3z,
n4z,
n5z,
n6z,
integer, dimension(npropmi,*) ipm,
rho,
vol,
iad22,
integer nel,
mom,
ssp,
intent(inout) svis )

Definition at line 32 of file alefvm_stress_int22.F.

39C-----------------------------------------------
40C D e s c r i p t i o n
41C-----------------------------------------------
42C 'alefvm' is related to a collocated scheme (built from FVM and based on Godunov scheme)
43C which was temporarily introduced for experimental option /INTER/TYPE22 (FSI coupling with cut cell method)
44C This cut cell method is not completed, abandoned, and is not an official option.
45C There is no other use for this scheme which is automatically enabled when /INTER/TYPE22 is defined (INT22>0 => IALEFVM=1).
46C
47C This subroutine is treating an uncut cell.
48C-----------------------------------------------
49C M o d u l e s
50C-----------------------------------------------
51 USE alefvm_mod
52 USE elbufdef_mod !TYPE(ELBUF_STRUCT_)
53 USE i22bufbric_mod !BRICK_LIST
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 C o m m o n B l o c k s
64C-----------------------------------------------
65#include "vect01_c.inc"
66#include "com01_c.inc"
67#include "param_c.inc"
68C-----------------------------------------------
69C D e s c r i p t i o n
70C-----------------------------------------------
71C This subroutines computes internal forces for
72C finite volume scheme (IALEFVM==1)
73C
74C If option is not detected in input file then
75C subroutine is unplugged
76C-----------------------------------------------
77C D u m m y A r g u m e n t s
78C-----------------------------------------------
79 INTEGER :: NEL
80 INTEGER :: IXS(NIXS,*),IPM(NPROPMI,*)
81 my_real :: sig(nel,6),qvis(nel),rho(nel), vol(nel), iad22(*)
82 my_real :: n1x(*), n2x(*), n3x(*), n4x(*), n5x(*), n6x(*),
83 . n1y(*), n2y(*), n3y(*), n4y(*), n5y(*), n6y(*),
84 . n1z(*), n2z(*), n3z(*), n4z(*), n5z(*), n6z(*),
85 . mom(nel,3), ssp(nel), isgn, v(3), w(3), vmw(3)
86 my_real, DIMENSION(MVSIZ,6), INTENT(INOUT) :: svis
87C-----------------------------------------------
88C L o c a l V a r i a b l e s
89C-----------------------------------------------
90 INTEGER :: I, II, K, IMAT, IALEFVM_FLG, IB, NIN, IBM, NGM, IDLOCM, ICUT,MCELL,NUM
91 INTEGER :: ISECND, ID, IBs, ICELLs, Js, NumSECND
92
93 my_real :: p(mvsiz) ,
94 . s1(mvsiz) , s2(mvsiz) , s3(mvsiz),
95 . s4(mvsiz) , s5(mvsiz) , s6(mvsiz),
96 . norm , s(0:6) , s0(14)
97 my_real :: n0x(14), n0y(14), n0z(14),mass,u_n(0:6)
98
99 INTEGER :: idbf,idbl,ICELL,NBCUT,NCELL,NBCUTv,IDEB,IFIN
100 LOGICAL :: debug_outp
101C-----------------------------------------------
102C P r e - C o n d i t i o n s
103C-----------------------------------------------
104 IF(alefvm_param%IEnabled==0)RETURN
105 imat = ixs(1,1+nft)
106 ialefvm_flg = ipm(251,imat)
107 IF(ialefvm_flg <= 1)RETURN
108C-----------------------------------------------
109C S o u r c e L i n e s
110C-----------------------------------------------
111
112 !inter22
113 nin = 1
114
115 ! attention : il faut que mmain soit traite pour chacun des groupes
116 ! afin de connaitre les tenseurs voisins (SIG,SVIS,QVIS) !
117 ! l'assemblage est ensuite realise apres tous les appel de
118 ! ALEMAIN>SFORC3() pour chaque groupe.
119
120 !-------------------------------------------------------------!
121 ! PRESSURE !
122 !-------------------------------------------------------------!
123 DO i=1,nel
124 s1(i) = sig(i,1) + svis(i,1) - qvis(i)
125 s2(i) = sig(i,2) + svis(i,2) - qvis(i)
126 s3(i) = sig(i,3) + svis(i,3) - qvis(i)
127 s4(i) = sig(i,4) + svis(i,4)
128 s5(i) = sig(i,5) + svis(i,5)
129 s6(i) = sig(i,6) + svis(i,6)
130 ENDDO
131 DO i=1,nel
132 p(i) = -third*(s1(i)+s2(i)+s3(i))
133 ENDDO
134 ! STORAGE
135 DO i=1,nel
136 ib = nint(iad22(i))
137 IF(ib<=0) cycle
138 brick_list(nin,ib)%RHOC = rho(i)*ssp(i)
139 brick_list(nin,ib)%SIG(0) = p(i)
140 brick_list(nin,ib)%SIG(1) = s1(i)
141 brick_list(nin,ib)%SIG(2) = s2(i)
142 brick_list(nin,ib)%SIG(3) = s3(i)
143 brick_list(nin,ib)%SIG(4) = s4(i)
144 brick_list(nin,ib)%SIG(5) = s5(i)
145 brick_list(nin,ib)%SIG(6) = s6(i)
146 brick_list(nin,ib)%MACH = sqrt(mom(i,1)*mom(i,1)+mom(i,2)*mom(i,2)+mom(i,3)*mom(i,3))/rho(i)/vol(i) / ssp(i)
147 enddo!next I
148
149 !-------------------------------------------------------------!
150 ! NORMAL VECTOR FOR ALE (can be optimize for EULER !
151 !-------------------------------------------------------------!
152 DO i=1,nel
153 ii = i + nft
154 ib = nint(iad22(i))
155 IF(ib<=0)cycle
156 ! Face-1
157 n1x(i) = brick_list(nin,ib)%N(1,1)
158 n1y(i) = brick_list(nin,ib)%N(1,2)
159 n1z(i) = brick_list(nin,ib)%N(1,3)
160 ! Face-2
161 n2x(i) = brick_list(nin,ib)%N(2,1)
162 n2y(i) = brick_list(nin,ib)%N(2,2)
163 n2z(i) = brick_list(nin,ib)%N(2,3)
164 ! Face-3
165 n3x(i) = brick_list(nin,ib)%N(3,1)
166 n3y(i) = brick_list(nin,ib)%N(3,2)
167 n3z(i) = brick_list(nin,ib)%N(3,3)
168 ! Face-4
169 n4x(i) = brick_list(nin,ib)%N(4,1)
170 n4y(i) = brick_list(nin,ib)%N(4,2)
171 n4z(i) = brick_list(nin,ib)%N(4,3)
172 ! Face-5
173 n5x(i) = brick_list(nin,ib)%N(5,1)
174 n5y(i) = brick_list(nin,ib)%N(5,2)
175 n5z(i) = brick_list(nin,ib)%N(5,3)
176 ! Face-6
177 n6x(i) = brick_list(nin,ib)%N(6,1)
178 n6y(i) = brick_list(nin,ib)%N(6,2)
179 n6z(i) = brick_list(nin,ib)%N(6,3)
180 ENDDO
181
182 !-------------------------------------------------------------!
183 ! DATA PRE-TREATMENT ON EACH FACE OF EACH POLYHEDRON !
184 ! COMPOSING THE SUPERCELL !
185 ! NEEDED FOR ALE_FVM_SFINT3_INT22 INTEGRAL : Pface interp. !
186 !-------------------------------------------------------------!
187 DO i=1, nel
188 !WARNING : Normal vectors computed in EPXLE3() if IALEFVM>0
189 ii = i + nft
190 ib = nint(iad22(i))
191 IF(ib<=0)cycle
192 nbcut = brick_list(nin,ib)%NBCUT
193 mcell = brick_list(nin,ib)%MainID
194 ncell = nbcut
195 icell = mcell
196 brick_list(nin,ib)%POLY(icell)%FACE(1:6)%U_N = zero
197 !---face-0
198 IF(nbcut>0)THEN
199 s(1:6) = brick_list(nin,ib)%POLY(icell)%FACE(1:6)%Surf
200 s(0) = brick_list(nin,ib)%PCUT(icell)%SCUT(1)
201 ibm = brick_list(nin,ib)%POLY(icell)%WhereIsMain(4)
202 ngm = brick_list(nin,ibm)%NG
203 idlocm = brick_list(nin,ibm)%IDLOC
204 isgn = one
205 IF(icell==9)isgn = -one
206 brick_list(nin,ib)%POLY(icell)%FACE0%U_N(1:9) = zero
207 DO k=1,nbcut
208 icut = k
209 s0(k) = brick_list(nin,ib)%PCUT(icut)%Scut(1)
210 n0x(k) = brick_list(nin,ib)%PCUT(icut)%N(1) !icell=9 : normal 0 are inversed
211 n0y(k) = brick_list(nin,ib)%PCUT(icut)%N(2)
212 n0z(k) = brick_list(nin,ib)%PCUT(icut)%N(3)
213 norm = sqrt(n0x(k)**2+n0y(k)**2+n0z(k)**2)
214 n0x(k) = n0x(k) / norm
215 n0y(k) = n0y(k) / norm
216 n0z(k) = n0z(k) / norm
217 mass = rho(i)*vol(i)
218 v(1:3) = mom(i,1:3) / mass
219 w(1:3) = brick_list(nin,ib)%PCUT(icut)%VEL(1:3)
220 vmw(1) = v(1)-w(1)
221 vmw(2) = v(2)-w(2)
222 vmw(3) = v(3)-w(3)
223 u_n(0) = isgn*(vmw(1)*n0x(k) + vmw(2)*n0y(k) + vmw(3)*n0z(k))
224 brick_list(nin,ib)%POLY(icell)%FACE0%U_N(k) = u_n(0)
225 ENDDO
226 ENDIF
227 !---face-1:6
228 mass = rho(i)*vol(i)
229 u_n(1) = (mom(i,1)*n1x(i) + mom(i,2)*n1y(i) + mom(i,3)*n1z(i)) / (mass)
230 u_n(2) = (mom(i,1)*n2x(i) + mom(i,2)*n2y(i) + mom(i,3)*n2z(i)) / (mass)
231 u_n(3) = (mom(i,1)*n3x(i) + mom(i,2)*n3y(i) + mom(i,3)*n3z(i)) / (mass)
232 u_n(4) = (mom(i,1)*n4x(i) + mom(i,2)*n4y(i) + mom(i,3)*n4z(i)) / (mass)
233 u_n(5) = (mom(i,1)*n5x(i) + mom(i,2)*n5y(i) + mom(i,3)*n5z(i)) / (mass)
234 u_n(6) = (mom(i,1)*n6x(i) + mom(i,2)*n6y(i) + mom(i,3)*n6z(i)) / (mass)
235 brick_list(nin,ib)%POLY(icell)%FACE(1)%U_N = u_n(1)
236 brick_list(nin,ib)%POLY(icell)%FACE(2)%U_N = u_n(2)
237 brick_list(nin,ib)%POLY(icell)%FACE(3)%U_N = u_n(3)
238 brick_list(nin,ib)%POLY(icell)%FACE(4)%U_N = u_n(4)
239 brick_list(nin,ib)%POLY(icell)%FACE(5)%U_N = u_n(5)
240 brick_list(nin,ib)%POLY(icell)%FACE(6)%U_N = u_n(6)
241
242 numsecnd = brick_list(nin,ib)%SecndList%Num
243 DO isecnd=1,numsecnd
244 ibs = brick_list(nin,ib)%SecndList%IBV(isecnd)
245 icells = brick_list(nin,ib)%SecndList%ICELLv(isecnd)
246 js = brick_list(nin,ibs)%POLY(icells)%WhereIsMain(1)
247 nbcutv = brick_list(nin,ibs)%NBCUT
248 !---face-0
249 !forcemment NBCUTv > 0
250 s(1:6) = brick_list(nin,ibs)%POLY(icells)%FACE(1:6)%Surf
251 s(0) = brick_list(nin,ibs)%PCUT(icells)%SCUT(1)
252 ibm = brick_list(nin,ibs)%POLY(icells)%WhereIsMain(4)
253 isgn = one
254 ideb = icells
255 ifin = icells
256 IF(icells==9)THEN
257 isgn = -one
258 ideb = 1
259 ifin = nbcutv
260 ENDIF
261 brick_list(nin,ibs)%POLY(icells)%FACE0%U_N(1:9)= zero
262 mass = rho(i)*vol(i)
263 DO k=ideb,ifin
264 icut = k
265 s0(k) = brick_list(nin,ibs)%PCUT(icut)%Scut(1)
266 n0x(k) = brick_list(nin,ibs)%PCUT(icut)%N(1) !icell=9 : normal 0 are inversed
267 n0y(k) = brick_list(nin,ibs)%PCUT(icut)%N(2)
268 n0z(k) = brick_list(nin,ibs)%PCUT(icut)%N(3)
269 norm = sqrt(n0x(k)**2+n0y(k)**2+n0z(k)**2)
270 n0x(k) = n0x(k) / norm
271 n0y(k) = n0y(k) / norm
272 n0z(k) = n0z(k) / norm
273 v(1:3) = mom(i,1:3) / mass
274 w(1:3) = brick_list(nin,ibs)%PCUT(icut)%VEL(1:3)
275 vmw(1) = v(1)-w(1)
276 vmw(2) = v(2)-w(2)
277 vmw(3) = v(3)-w(3)
278 u_n(0) = isgn*(vmw(1)*n0x(k) + vmw(2)*n0y(k) + vmw(3)*n0z(k))
279 brick_list(nin,ibs)%POLY(icells)%FACE0%U_N(k) = u_n(0)
280 enddo!next K
281 !---face-1:6
282 u_n(1) = (mom(i,1)*n1x(i) + mom(i,2)*n1y(i) + mom(i,3)*n1z(i)) / mass
283 u_n(2) = (mom(i,1)*n2x(i) + mom(i,2)*n2y(i) + mom(i,3)*n2z(i)) / mass
284 u_n(3) = (mom(i,1)*n3x(i) + mom(i,2)*n3y(i) + mom(i,3)*n3z(i)) / mass
285 u_n(4) = (mom(i,1)*n4x(i) + mom(i,2)*n4y(i) + mom(i,3)*n4z(i)) / mass
286 u_n(5) = (mom(i,1)*n5x(i) + mom(i,2)*n5y(i) + mom(i,3)*n5z(i)) / mass
287 u_n(6) = (mom(i,1)*n6x(i) + mom(i,2)*n6y(i) + mom(i,3)*n6z(i)) / mass
288 brick_list(nin,ibs)%POLY(icells)%FACE(1)%U_N = u_n(1)
289 brick_list(nin,ibs)%POLY(icells)%FACE(2)%U_N = u_n(2)
290 brick_list(nin,ibs)%POLY(icells)%FACE(3)%U_N = u_n(3)
291 brick_list(nin,ibs)%POLY(icells)%FACE(4)%U_N = u_n(4)
292 brick_list(nin,ibs)%POLY(icells)%FACE(5)%U_N = u_n(5)
293 brick_list(nin,ibs)%POLY(icells)%FACE(6)%U_N = u_n(6)
294 ENDDO !next ISECND
295 enddo!next I
296
297
298
299 !DEBUG-OUTPUT---------------!
300 if(alefvm_param%IOUTP_STRESS /= 0)then
301 debug_outp = .false.
302 if(alefvm_param%IOUTP_STRESS>0)then
303 do i=lft,llt
304 ii = nft + i
305 if(ixs(11,ii)==alefvm_param%IOUTP_STRESS)THEN
306 debug_outp = .true.
307 idbf = i
308 idbl = i
309 EXIT
310 endif
311 enddo
312 elseif(alefvm_param%IOUTP_STRESS==-1)then
313 debug_outp=.true.
314 idbf = lft
315 idbl = llt
316 endif
317 if(debug_outp)then
318!#!include "lockon.inc"
319 print *, " |--alefvm_stress_int22.F---|"
320 print *, " | THREAD INFORMATION |"
321 print *, " |--------------------------|"
322 print *, " NCYCLE =", ncycle
323 do i=idbf,idbl
324 ii = nft + i
325 ib = nint(iad22(i))
326 if(ib<=0)cycle
327 nbcut = brick_list(nin,ib)%NBCUT
328 IF(nbcut>0)THEN
329 icell = brick_list(nin,ib)%mainID
330 IF(icell==0)cycle
331
332 print *, " brique=", ixs(11,nft+i), "icell=", icell
333 print *, " vold=", brick_list(nin,ib)%vold_scell
334 print *, " vnew=", brick_list(nin,ib)%vnew_scell
335 write(*,fmt='(A24,1A26)') " ",
336 . "#-stress Tensor (P+VIS+Q)#"
337
338 write (*,fmt='(A,3E26.14,A)') " | ", sig(i,1),sig(i,4),sig(i,6), " |"
339 write (*,fmt='(A,3E26.14,A)') " P =| ", sig(i,4),sig(i,2),sig(i,5), " |"
340 write (*,fmt='(A,3E26.14,A)') " |_", sig(i,6),sig(i,5),sig(i,3), "_|"
341 write (*,fmt='(A,3E26.14,A)') " | ", svis(i,1),svis(i,4),svis(i,6)," |"
342 write (*,fmt='(A,3E26.14,A)') " VIS =| ", svis(i,4),svis(i,2),svis(i,5)," |"
343 write (*,fmt='(A,3E26.14,A)') " |_", svis(i,6),svis(i,5),svis(i,3),"_|"
344 write (*,fmt='(A,3E26.14,A)') " | ", s1(i),s4(i),s6(i)," |"
345 write (*,fmt='(A,3E26.14,A)') " SIGMA = P+VIS+Q =| ", s4(i),s2(i),s5(i)," |"
346 write (*,fmt='(A,3E26.14,A)') " |_", s6(i),s5(i),s3(i),"_|"
347 write (*,fmt='(A,2E26.14)') " p = ",-third*sum(sig(i,1:3)),p(i)
348 write (*,fmt='(A,1E26.14)') " q = ",qvis(i)
349 write(*,fmt='(A34,8A26)') " ",
350 . "#-------- face_1 ---------",
351 . "#-------- face_2 ---------","#-------- face_3 ---------",
352 . "#-------- face_4 ---------","#-------- face_5 ---------",
353 . "#-------- face_6 --------#"
354 write (*,fmt='(A,8E26.14)') " <U,N> =", brick_list(nin,ib)%POLY(icell)%FACE(1:6)%U_N
355 write (*,fmt='(A,9E26.14)') " U0N0 =", brick_list(nin,ib)%POLY(icell)%FACE0%U_N(1:9)
356 ELSE
357 print *, " brique=", ixs(11,nft+i), "uncut"
358 print *, " vold=", brick_list(nin,ib)%vold_scell
359 print *, " vnew=", brick_list(nin,ib)%vnew_scell
360 write(*,fmt='(A24,1A26)') " ",
361 . "#-stress Tensor (P+VIS+Q)#"
362
363 write (*,fmt='(A,3E26.14,A)') " | ", sig(i,1),sig(i,4),sig(i,6), " |"
364 write (*,fmt='(A,3E26.14,A)') " P =| ", sig(i,4),sig(i,2),sig(i,5), " |"
365 write (*,fmt='(A,3E26.14,A)') " |_", sig(i,6),sig(i,5),sig(i,3), "_|"
366 write (*,fmt='(A,3E26.14,A)') " | ", svis(i,1),svis(i,4),svis(i,6)," |"
367 write (*,fmt='(A,3E26.14,A)') " VIS =| ", svis(i,4),svis(i,2),svis(i,5)," |"
368 write (*,fmt='(A,3E26.14,A)') " |_", svis(i,6),svis(i,5),svis(i,3),"_|"
369 write (*,fmt='(A,3E26.14,A)') " | ", s1(i),s4(i),s6(i)," |"
370 write (*,fmt='(A,3E26.14,A)') " SIGMA = P+VIS+Q =| ", s4(i),s2(i),s5(i)," |"
371 write (*,fmt='(A,3E26.14,A)') " |_", s6(i),s5(i),s3(i),"_|"
372 write (*,fmt='(A,2E26.14)') " p = ",-third*sum(sig(i,1:3)),p(i)
373 write (*,fmt='(A,1E26.14)') " q = ",qvis(i)
374 write(*,fmt='(A34,6A26)') " ",
375 . "#-------- face_1 ---------","#-------- face_2 ---------",
376 . "#-------- face_3 ---------","#-------- face_4 ---------",
377 . "#-------- face_5 ---------","#-------- face_6 --------#"
378 write (*,fmt='(A,1E26.14)') " <U,N> =", brick_list(nin,ib)%POLY(icell)%FACE(1:6)%U_N
379 endif!(NBCUT>0)
380
381 num = brick_list(nin,ib)%SecndList%Num
382 ibm = ib
383 DO isecnd=1,num
384 ib = brick_list(nin,ibm)%SecndList%IBV(isecnd)
385 icell = brick_list(nin,ibm)%SecndList%ICELLv(isecnd)
386 id = brick_list(nin,ib)%ID
387 print *, " secnd=", ixs(11,id), "icell=", icell
388 write(*,fmt='(A24,1A26)') " ",
389 . "#-stress Tensor (P+VIS+Q)#"
390
391 write (*,fmt='(A,3E26.14,A)') " | ", sig(i,1),sig(i,4),sig(i,6), " |"
392 write (*,fmt='(A,3E26.14,A)') " P =| ", sig(i,4),sig(i,2),sig(i,5), " |"
393 write (*,fmt='(A,3E26.14,A)') " |_", sig(i,6),sig(i,5),sig(i,3), "_|"
394 write (*,fmt='(A,3E26.14,A)') " | ", svis(i,1),svis(i,4),svis(i,6)," |"
395 write (*,fmt='(A,3E26.14,A)') " VIS =| ", svis(i,4),svis(i,2),svis(i,5)," |"
396 write (*,fmt='(A,3E26.14,A)') " |_", SVIS(I,6),SVIS(I,5),SVIS(I,3),"_|"
397 write (*,FMT='(A,3E26.14,A)') " | ", S1(I),S4(I),S6(I)," |"
398 write (*,FMT='(A,3E26.14,A)') " sigma = p+vis+q =| ", S4(I),S2(I),S5(I)," |"
399 write (*,FMT='(A,3E26.14,A)') " |_", S6(I),S5(I),S3(I),"_|"
400 write (*,FMT='(A,2E26.14)') " p = ",-THIRD*SUM(SIG(I,1:3)),P(I)
401 write (*,FMT='(A,1E26.14)') " q = ",QVIS(I)
402 write(*,FMT='(A34,8A26)') " ",
403 . "#-------- face_1 ---------",
404 . "#-------- face_2 ---------","#-------- face_3 ---------",
405 . "#-------- face_4 ---------","#-------- face_5 ---------",
406 . "#-------- face_6 --------#"
407 write (*,fmt='(A,8E26.14)') " <U,N> =", brick_list(nin,ib)%POLY(icell)%FACE(1:6)%U_N
408 write (*,fmt='(A,9E26.14)') " U0N0 =", brick_list(nin,ib)%POLY(icell)%FACE0%U_N(1:9)
409 ENDDO !next ICELL
410
411
412
413
414
415
416 print *, " "
417 enddo!next i
418!#!include "lockoff.inc"
419 endif
420 endif
421 !-----------------------------------------!
422
423 RETURN
#define my_real
Definition cppsort.cpp:32
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
initmumps id
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
type(brick_entity), dimension(:,:), allocatable, target brick_list