OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
deallocate_buffer.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!|| deallocate_elbuf ../starter/source/elements/elbuf_init/deallocate_buffer.f
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.f
27!||--- calls -----------------------------------------------------
28!|| deallocate_one_element_group ../starter/source/elements/elbuf_init/deallocate_one_element_group.F
29!||--- uses -----------------------------------------------------
30!|| elbuftag_mod ../starter/share/modules1/elbuftag_mod.F
31!|| message_mod ../starter/share/message_module/message_mod.F
32!||====================================================================
33 SUBROUTINE deallocate_elbuf(
34 . ELBUF_TAB ,IGEO ,IPARG , IXS ,IXC ,IXTG ,
35 . FLAG_XFEM ,IXT ,IXP ,IXR ,KXX )
36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE elbufdef_mod
40 USE elbuftag_mod
41 USE message_mod
42! USE STACK_MOD
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "param_c.inc"
51#include "com01_c.inc"
52#include "com04_c.inc"
53#include "scr23_c.inc"
54#include "sphcom.inc"
55#include "tablen_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59 INTEGER IPARG(NPARG,NGROUP),IGEO(NPROPGI,NUMGEO),IXS(NIXS,NUMELS),IXC(NIXC,NUMELC),IXTG(NIXTG,NUMELTG),FLAG_XFEM,
60 . IXT(NIXT,NUMELT),IXP(NIXP,NUMELP),IXR(NIXR,NUMELR),KXX(NIXX,*)
61 TYPE(elbuf_struct_),TARGET ,DIMENSION(NGROUP) :: ELBUF_TAB
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER I,J,K,IL,IR,IS,IT,NG,BUFLEN,IRUPT,IPID,IMID,IPRT,
66 . NEL,NPT,NPG,MLW,ISORTH,ISRATE,ISROT,IREP,ISVIS,NLAY,
67 . istra,ifail,nfail,ngfail,ieos,ixfem,nptr,npts,nptt,ishplyxfem,
68 . nft,nft0,kfts,ity,jale,off,ismstr,icpre,nsg,icnod,isnod,jeul,
69 . jtur,jthe,jlag,irs,ire,icstr,nvc,jmult,iadm1,iadm2,iadm3,
70 . mmat1,mmat2,mmat3,jhbe,jivf,jpor,ipla,proc,jclos,codconv,
71 . iint,jcvt,icsen,ilev,iexpan,igre,jsms,maxflay,ivisc,law_vis,
72 . nuvarm,nuvarv,igtyp,tshell,tsh_ort,lintloc,
73 . npar_lay,npar_tab,npar_lbuf,nintlay,limat,
74 . lifail,lloc,lfail,lvisc,lmat,lporo,leos,nctrl,
75 . isubstack,
76 . ipmat,nuvarn,law,iboltp,inloc
77 INTEGER, ALLOCATABLE, DIMENSION(:) :: IMAT
78 TYPE(ELBUF_STRUCT_), POINTER :: ELBUF
79 TYPE(buf_lay_) , POINTER :: BUFLY
80 TYPE(buf_intlay_) , POINTER :: INTLAY
81 TYPE(g_bufel_) , POINTER :: GBUF
82 TYPE(l_bufel_) , POINTER :: LBUF
83 TYPE(buf_intloc_) , POINTER :: ILBUF
84 TYPE(fail_loc_) , POINTER :: FLOC
85C-----------------------------------------------
86C S o u r c e L i n e s
87C-----------------------------------------------
88 DO ng = 1,ngroup
89c
90 mlw = iparg(1,ng) ! type de loi mat
91 nel = iparg(2,ng)
92 nft = iparg(3,ng)
93 ity = iparg(5,ng)
94 npt = iparg(6,ng)
95 jale = iparg(7,ng)
96 off = iparg(8,ng)
97 ismstr = iparg(9,ng)
98 icpre = iparg(10,ng)
99 nsg = icpre
100 icnod = iparg(11,ng)
101 jeul = icnod
102 jtur = iparg(12,ng)
103 jthe = iparg(13,ng)
104 jlag = iparg(14,ng)
105 irs = iparg(15,ng)
106 ire = iparg(16,ng)
107 icstr = iparg(17,ng)
108 nvc = iparg(19,ng)
109 jmult = iparg(20,ng)
110 iadm1 = iparg(21,ng)
111 iadm2 = iparg(22,ng)
112 jhbe = iparg(23,ng)
113 jivf = iparg(24,ng)
114 mmat1 = iparg(25,ng)
115 mmat2 = iparg(26,ng)
116 jpor = iparg(27,ng)
117 isnod = iparg(28,ng)
118 ipla = iparg(29,ng)
119 kfts = iparg(30,ng)
120 nft0 = iparg(31,ng)
121 proc = iparg(32,ng)
122 jclos = iparg(33,ng)
123 codconv = iparg(34,ng) ! pm(10)
124 irep = iparg(35,ng)
125 iint = iparg(36,ng)
126 jcvt = iparg(37,ng)
127 igtyp = iparg(38,ng)
128 icsen = iparg(39,ng)
129 israte = iparg(40,ng)
130 isrot = iparg(41,ng)
131 isorth = iparg(42,ng)
132 ifail = iparg(43,ng)
133 istra = iparg(44,ng)
134 ilev = iparg(45,ng)
135 npg = iparg(48,ng)
136 iexpan = iparg(49,ng)
137 ishplyxfem = iparg(50,ng)
138 igre = iparg(51,ng)
139 jsms = iparg(52,ng)
140 invol = iparg(53,ng)
141 ixfem = iparg(54,ng) ! flag XFEM
142 ieos = iparg(55,ng)
143 nptr = iparg(56,ng)
144 npts = iparg(57,ng)
145 nptt = iparg(58,ng)
146 nlay = iparg(59,ng)
147 isvis = iparg(60,ng) ! viscous stress flag
148 ivisc = iparg(61,ng) ! /VISC models flag
149 ipid = iparg(62,ng) ! property number
150 nctrl = iparg(63,ng) ! Control point number , iso-geometric elements
151 isubstack = iparg(71,ng)
152 iboltp = iparg(72,ng) ! Bolt preloading flag
153 inloc = iparg(78,ng) ! Non-local regularization flag
154 nintlay = 0
155cc NXEL = 0
156c----
157 npar_tab = 9 ! number of integer parameters at top structure level
158 npar_lay = 11 ! number of integer parameters at layer level
159 npar_lbuf = 2 ! number of integer parameters at LBUF layer
160
161 buflen = 0
162 nfail = 0
163 lfail = 0
164 lvisc = 0
165 lmat = 0
166 lporo = 0
167 leos = 0
168 limat = 0
169 lifail = 0
170 nuvarn = 0
171
172 IF (ixfem == 0 .AND. flag_xfem == 1) cycle ! no "XFEM_TAB" buffer for non xfem PARTS
173c------------------------------------------------------
174 IF (ity == 1 .OR. ity == 2 .OR. ity == 51 .OR. ity == 101 ) THEN ! solids, quads & SPH cells
175c------------------------------------------------------
176 tshell = 0
177 tsh_ort = 0
178 IF (igtyp==20 .OR. igtyp==21 .OR. igtyp==22 .OR. isnod == 16) tshell = 1
179 IF (igtyp==21 .OR. igtyp==22) tsh_ort = 1
180c
181c---------ELEMENT PROPERTY
182 IF (ity == 101) THEN
183 nlay = 1
184 ELSEIF (npt == 1) THEN
185 nptr = 1
186 npts = 1
187 nptt = 1
188 IF (jmult > 0) THEN ! multimateriau
189 nlay = 2
190 ELSE
191 nlay = 1
192 ENDIF
193C Multifluid law
194 IF (mlw == 151) THEN
195 nlay = iparg(20, ng)
196 ENDIF
197 ELSEIF (tshell == 1) THEN ! NLAY >= 1
198 npts = npt/100
199 nptt = mod(npt/10,10)
200 nptr = mod(npt,10)
201 IF (jhbe==15) THEN ! Thick shell HSPH
202 nlay = npt
203 nptr = 1
204 npts = 1
205 nptt = 1
206 ELSEIF (jhbe == 14) THEN ! Thick shell H8
207c plan = (r,s), layers = t
208c ICS=ICSIG/100
209c ICT=MOD(ICSIG/10,10)
210c ICR=MOD(ICSIG,10)
211 IF (tsh_ort == 0) THEN
212 nlay = nptt
213 nptt = 1
214 ELSEIF (icstr == 1) THEN
215 nlay = nptr
216 nptr = npts
217 npts = nptt
218 nptt = 1
219 ELSEIF (icstr == 100) THEN
220 nlay = npts
221 npts = nptr
222 nptr = nptt
223 nptt = 1
224 ELSE
225 nlay = nptt
226 nptt = 1
227 ENDIF
228 IF (nlay == 0) THEN
229 ipid = ixs(10,nft+1)
230 nlay = igeo(15,ipid)
231 ENDIF
232 ELSEIF (jhbe==16) THEN ! Thick shell 16 nodes
233 nptr = npt/100
234 npts = mod(npt/10,10)
235 nptt = mod(npt,10)
236c IF (TSH_ORT == 0) THEN
237c NLAY = NPTT
238c NPTT = 1
239c ELSE
240 nlay = npts
241 npts = 1
242c ENDIF
243 ENDIF
244c---------
245 ELSE ! Solid property
246 nlay = 1
247 IF (jhbe == 16 .AND. isnod == 20) THEN
248 nptr = npt/100
249 npts = mod(npt/10,10)
250 nptt = mod(npt,10)
251 ELSEIF (jhbe == 14) THEN
252 npts = abs(npt)/100
253 nptt = mod(abs(npt)/10,10)
254 nptr = mod(abs(npt),10)
255 ELSEIF (jhbe == 12) THEN
256 nptr = 1
257 npts = 1
258 nptt = npt
259 npg = npt
260 ELSEIF (jhbe == 17) THEN
261 npts = 2
262 nptt = 2
263 nptr = 2
264 ELSE
265 nptr = npt
266 npts = 1
267 nptt = 1
268 ENDIF
269 IF (n2d > 0 .AND. (jhbe == 17.OR.jhbe == 22)) THEN
270 npts = 2
271 nptt = 1
272 nptr = 2
273 npg = npt
274 END IF
275 ENDIF
276
277 CALL deallocate_one_element_group(elbuf_tab,nlay,nptr,npts,nptt,nintlay,nel,npt,ng,ngroup,ity,igtyp)
278
279 DO il = 1, nlay
280 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
281 nuvarv = elbuf_tab(ng)%BUFLY(il)%NVAR_VISC
282 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
283 DO ir = 1,nptr
284 DO is = 1,npts
285 DO it = 1,nptt
286 lmat = lmat + nuvarm*nel
287 lvisc = lvisc + nuvarv*nel
288 DO j = 1,nfail
289 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
290 IF(ASSOCIATED(floc%VAR)) DEALLOCATE(floc%VAR)
291 IF(ASSOCIATED(floc%DAM)) DEALLOCATE(floc%DAM)
292 IF(ASSOCIATED(floc%DAMMX)) DEALLOCATE(floc%DAMMX)
293 IF(ASSOCIATED(floc%DAMINI)) DEALLOCATE(floc%DAMINI)
294 IF(ASSOCIATED(floc%TDEL)) DEALLOCATE(floc%TDEL)
295 IF(ASSOCIATED(floc%INDX)) DEALLOCATE(floc%INDX)
296 IF(ASSOCIATED(floc%OFF)) DEALLOCATE(floc%OFF)
297 ENDDO
298 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR)) DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR)
299 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR)) DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR)
300 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC)
301 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VAR)
302 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%EOS(ir,is,it)%VARTMP)
303 ENDDO
304 ENDDO
305 ENDDO
306 ENDDO
307
308 DO il = 1, nlay
309 bufly => elbuf_tab(ng)%BUFLY(il)
310 IF(ASSOCIATED(bufly%LBUF)) DEALLOCATE(bufly%LBUF)
311 IF(ASSOCIATED(bufly%MAT)) DEALLOCATE(bufly%MAT)
312 IF(ASSOCIATED(bufly%FAIL)) DEALLOCATE(bufly%FAIL)
313 IF(ASSOCIATED(bufly%PROP)) DEALLOCATE(bufly%PROP)
314 IF(ASSOCIATED(bufly%EOS)) DEALLOCATE(bufly%EOS)
315 IF(ASSOCIATED(bufly%VISC)) DEALLOCATE(bufly%VISC)
316 IF(ASSOCIATED(bufly%PORO)) DEALLOCATE(bufly%PORO)
317 ENDDO
318
319 IF(ASSOCIATED(elbuf_tab(ng)%INTLAY)) DEALLOCATE(elbuf_tab(ng)%INTLAY)
320 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY)) DEALLOCATE(elbuf_tab(ng)%BUFLY)
321
322c------------------------------------------------------
323 ELSEIF (ity == 3 .OR. ity == 7) THEN ! shell properties
324c------------------------------------------------------
325 IF (ity == 3) THEN
326 imid = ixc(1,nft+1)
327 ipid = ixc(6,nft+1)
328 ELSEIF (ity == 7) THEN
329 imid = ixtg(1,nft+1)
330 ipid = ixtg(5,nft+1)
331 ENDIF
332
333 nptt = 1
334 IF (ity == 3 .and. jhbe == 11) THEN
335 nptr = 2
336 npts = 2
337 ELSEIF (ity==7 .and. jhbe == 30) THEN
338 nptr = 3
339 npts = 1
340 ELSE ! one Gauss point on surface
341 nptr = 1
342 npts = 1
343 ENDIF
344 IF (igtyp == 10 .or. igtyp == 11 .or. igtyp == 16 .or. igtyp == 17 .or. igtyp == 51 .or. igtyp == 52) THEN
345 nlay = max(1,npt)
346 nptt = 1
347 ELSE ! IGTYP = 1 .or. IGTYP = 9
348 nlay = 1
349 nptt = max(1,npt) ! attention to global integration
350 ENDIF
351 IF (igtyp == 17 .and. ishplyxfem == 1) nintlay = nlay-1
352 IF (ity == 7 .AND. mlw == 151) THEN
353 nlay = iparg(20, ng)
354 ENDIF
355
356 npg = nptr*npts
357c-------------------------------------------------
358 IF (igtyp == 51 .OR. igtyp == 52) THEN
359 npt = npg*npt
360 ELSE
361 npt = npg*nlay*nptt
362 ENDIF
363c-----------------------------------------------------
364c deallocation des sub-structures de l'element buffer
365c-----------------------------------------------------
366 CALL deallocate_one_element_group(elbuf_tab,nlay,nptr,npts,nptt,nintlay,nel,npt,ng,ngroup,ity,igtyp)
367
368 DO il = 1, nintlay
369 nuvarm = elbuf_tab(ng)%INTLAY(il)%NVAR_MAT
370 nfail = elbuf_tab(ng)%INTLAY(il)%NFAIL
371 DO ir = 1,nptr
372 DO is = 1,npts
373C
374 DO j = 1,nfail
375 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
376 IF(ASSOCIATED(floc%VAR)) DEALLOCATE(floc%VAR)
377 ENDDO
378
379 IF(ASSOCIATED(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR))DEALLOCATE(elbuf_tab(ng)%INTLAY(il)%MAT(ir,is)%VAR)
380 IF(ASSOCIATED(elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC))DEALLOCATE(elbuf_tab(ng)%INTLAY(il)%FAIL(ir,is)%FLOC)
381 ENDDO
382 ENDDO
383 ENDDO
384
385 DO il = 1, nlay
386 nfail = elbuf_tab(ng)%BUFLY(il)%NFAIL
387 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
388 DO ir = 1,nptr
389 DO is = 1,npts
390 DO it = 1,nptt
391 DO j = 1,nfail
392 floc=>elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC(j)
393 IF(ASSOCIATED(floc%VAR)) DEALLOCATE(floc%VAR)
394 IF(ASSOCIATED(floc%DAM)) DEALLOCATE(floc%DAM)
395 IF(ASSOCIATED(floc%DAMMX)) DEALLOCATE(floc%DAMMX)
396 IF(ASSOCIATED(floc%DAMINI)) DEALLOCATE(floc%DAMINI)
397 IF(ASSOCIATED(floc%TDEL)) DEALLOCATE(floc%TDEL)
398 IF(ASSOCIATED(floc%INDX)) DEALLOCATE(floc%INDX)
399 IF(ASSOCIATED(floc%OFF)) DEALLOCATE(floc%OFF)
400 ENDDO
401 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR)
402 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%VISC(ir,is,it)%VAR)
403 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC))DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%FAIL(ir,is,it)%FLOC)
404 ENDDO
405 ENDDO
406 ENDDO
407 ENDDO
408
409 DO i = 1, nintlay
410 intlay => elbuf_tab(ng)%INTLAY(i)
411 IF(ASSOCIATED(intlay%ILBUF)) DEALLOCATE(intlay%ILBUF)
412 IF(ASSOCIATED(intlay%MAT)) DEALLOCATE(intlay%MAT)
413 IF(ASSOCIATED(intlay%FAIL))DEALLOCATE(intlay%FAIL)
414 ENDDO
415
416 IF(ASSOCIATED(elbuf_tab(ng)%INTLAY))DEALLOCATE(elbuf_tab(ng)%INTLAY)
417
418 DO i = 1, nlay
419 bufly => elbuf_tab(ng)%BUFLY(i)
420 nptt = bufly%NPTT
421 IF(ASSOCIATED(bufly%LBUF))DEALLOCATE(bufly%LBUF)
422 IF(ASSOCIATED(bufly%MAT)) DEALLOCATE(bufly%MAT)
423 IF(ASSOCIATED(bufly%FAIL))DEALLOCATE(bufly%FAIL)
424 IF(ASSOCIATED(bufly%PROP))DEALLOCATE(bufly%PROP)
425 IF(ASSOCIATED(bufly%EOS)) DEALLOCATE(bufly%EOS)
426 IF(ASSOCIATED(bufly%VISC))DEALLOCATE(bufly%VISC)
427 IF(ASSOCIATED(bufly%PORO))DEALLOCATE(bufly%PORO)
428 ENDDO
429
430 IF(ASSOCIATED(elbuf_tab(ng)%BUFLY)) DEALLOCATE(elbuf_tab(ng)%BUFLY)
431
432 ! Non-local table for regularization in the shell thickness
433 IF ((inloc>0).AND.(nptt>1)) THEN
434 ! Deallocating the buffer
435 DO ir = 1,nptr
436 DO is = 1,npts
437 IF(ASSOCIATED(elbuf_tab(ng)%NLOC(ir,is)%MASSTH))
438 * DEALLOCATE(elbuf_tab(ng)%NLOC(ir,is)%MASSTH)
439 IF(ASSOCIATED(elbuf_tab(ng)%NLOC(ir,is)%UNLTH))
440 * DEALLOCATE(elbuf_tab(ng)%NLOC(ir,is)%UNLTH)
441 IF(ASSOCIATED(elbuf_tab(ng)%NLOC(ir,is)%VNLTH))
442 * DEALLOCATE(elbuf_tab(ng)%NLOC(ir,is)%VNLTH)
443 IF(ASSOCIATED(elbuf_tab(ng)%NLOC(ir,is)%FNLTH))
444 * DEALLOCATE(elbuf_tab(ng)%NLOC(ir,is)%FNLTH)
445 ENDDO
446 ENDDO
447 IF(ASSOCIATED(elbuf_tab(ng)%NLOC)) DEALLOCATE(elbuf_tab(ng)%NLOC)
448 ENDIF
449c---
450c 1-D elements (TRUSS, BEAM, SPRING)
451c---
452 ELSEIF (ity == 4 .OR. ity == 5 .OR. ity == 6 .OR. ity == 100) THEN
453c------------------------------------------------------
454 IF (ity == 4) THEN ! TRUSS
455 imid = ixt(1,nft+1)
456 ipid = ixt(4,nft+1)
457 ELSEIF (ity == 5) THEN ! BEAM
458 imid = ixp(1,nft+1)
459 ipid = ixp(5,nft+1)
460 ELSEIF (ity == 6) THEN ! SPRING
461 ipid = ixr(1,nft+1)
462 ELSEIF (ity == 100) THEN ! MULTIBRIN
463 ipid = kxx(2,nft+1)
464 ENDIF
465
466 igtyp = 0
467 IF(ipid > 0)THEN
468 igtyp = igeo(11,ipid)
469 ENDIF
470C----
471 gbuf => elbuf_tab(ng)%GBUF
472
473 CALL deallocate_one_element_group(elbuf_tab,nlay,nptr,npts ,nptt, nintlay,
474 . nel ,npt ,ng ,ngroup,ity, igtyp)
475
476 IF (nlay > 0) THEN ! integrated beam (NLAY = 1)
477c
478c--- User Mat Buffer, Fail buffer, Visc buffer : alloc + init
479c
480 DO il = 1,nlay
481 nuvarm = elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
482 nptt = elbuf_tab(ng)%BUFLY(il)%NPTT
483 DO ir = 1,nptr
484 DO is = 1,npts
485 DO it = 1,nptt
486
487 IF (ASSOCIATED(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR))
488 . DEALLOCATE(elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR)
489 ENDDO
490 ENDDO
491 ENDDO
492 ENDDO
493
494 DO il = 1,nlay
495 bufly => elbuf_tab(ng)%BUFLY(il)
496
497 IF (ASSOCIATED(bufly%LBUF)) DEALLOCATE(bufly%MAT)
498 IF (ASSOCIATED(bufly%MAT)) DEALLOCATE(bufly%MAT)
499 ENDDO
500
501 IF (ASSOCIATED(elbuf_tab(ng)%BUFLY)) DEALLOCATE(elbuf_tab(ng)%BUFLY)
502 ENDIF ! IF (NLAY > 0)
503
504 ELSE
505 IF (ASSOCIATED(elbuf_tab(ng)%BUFLY)) DEALLOCATE(elbuf_tab(ng)%BUFLY)
506 ENDIF ! ITY = 1,2,51,101 (solid group)
507
508 ENDDO ! NG = 1,NGROUP
509
510 RETURN
511
512 END
513
subroutine deallocate_elbuf(elbuf_tab, igeo, iparg, ixs, ixc, ixtg, flag_xfem, ixt, ixp, ixr, kxx)
subroutine deallocate_one_element_group(elbuf_tab, nlay, nptr, npts, nptt, nintlay, nel, npt, ng, ngroup, ity, igtyp)
#define max(a, b)
Definition macros.h:21
subroutine lectur(multi_fvm, lsubmodel, is_dyna, detonators, ebcs_tab, seatbelt_converted_elements, nb_seatbelt_shells, nb_dyna_include, user_windows, output, mat_elem, names_and_titles, defaults, glob_therm, pblast, sensor_user_struct)
Definition lectur.F:533
program starter
Definition starter.F:39