OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
deallocate_igrsurf_split.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!> \brief This routine deallocates the local IGSURF_PROC arrays
24!!
25!! \details loop over the NVOLU airbaig and NSURF surfaces to deallote the structure
26!!
27!||====================================================================
28!|| deallocate_igrsurf_split ../starter/source/spmd/deallocate_igrsurf_split.F
29!||--- called by ------------------------------------------------------
30!|| lectur ../starter/source/starter/lectur.F
31!||--- uses -----------------------------------------------------
32!|| monvol_struct_mod ../starter/share/modules1/monvol_struct_mod.F
33!||====================================================================
34 SUBROUTINE deallocate_igrsurf_split(T_MONVOL,IGRSURF_PROC)
35!$COMMENT
36! DEALLOCATE_IGRSURF_SPLIT description
37! DEALLOCATE_IGRSURF_SPLIT deallocates the local IGSURF_PROC arrays
38!
39! DEALLOCATE_IGRSURF_SPLIT organization :
40! -loop over NVOLU in order to deallocate the array
41!$ENDCOMMENT
42
43 USE groupdef_mod
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "param_c.inc"
53#include "com01_c.inc"
54#include "com04_c.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 TYPE(surf_), DIMENSION(NSURF,NSPMD), INTENT(INOUT) :: IGRSURF_PROC
59 TYPE(monvol_struct_), DIMENSION(NVOLU), INTENT(INOUT) :: T_MONVOL
60
61! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
62! IGRSURF_PROC : SURF_ ; dimension=NSURF*NSPMD
63! local surface property array (=IGRSURF for each proc)
64! %ELTYP --> type of element (shell, triangle...)
65! %ELEM --> element id
66! %NSEG --> total element number
67! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
68C-----------------------------------------------
69C L o c a l V a r i a b l e s
70C-----------------------------------------------
71 INTEGER :: NV,IS
72 INTEGER :: PROC,K1
73C-----------------------------------------------------
74C S o u r c e L i n e s
75C-----------------------------------------------------
76 ! --------------------------------------
77 ! Airbag
78 k1 = 1
79 DO nv=1,nvolu ! NVOLU = number of volume
80 is = t_monvol(nv)%EXT_SURFID
81 DO proc=1,nspmd
82 ! several MONVOL can refer to the same surface ID
83 IF(igrsurf_proc(is,proc)%NSEG>0.AND.ALLOCATED(igrsurf_proc(is,proc)%ELTYP) ) THEN
84 DEALLOCATE( igrsurf_proc(is,proc)%ELTYP )
85 DEALLOCATE( igrsurf_proc(is,proc)%ELEM )
86 ENDIF
87 ENDDO
88 k1 = k1 + nimv
89 ! --------------------
90 ! deallocation of NUMBER_TRI_PER_PROC :
91 DEALLOCATE( t_monvol(nv)%NUMBER_TRI_PER_PROC )
92 ! --------------------
93 ENDDO
94 ! --------------------------------------
95
96
97 ! --------------------------------------
98 ! Surface
99 DO is=1,nsurf
100 DO proc=1,nspmd
101 IF(ALLOCATED( igrsurf_proc(is,proc)%LOCAL_SEG )) DEALLOCATE( igrsurf_proc(is,proc)%LOCAL_SEG )
102 IF(ALLOCATED( igrsurf_proc(is,proc)%ELTYP ))DEALLOCATE( igrsurf_proc(is,proc)%ELTYP )
103 IF(ALLOCATED( igrsurf_proc(is,proc)%ELEM ))DEALLOCATE( igrsurf_proc(is,proc)%ELEM )
104 ENDDO
105 ENDDO
106 ! --------------------------------------
107 RETURN
108 END SUBROUTINE deallocate_igrsurf_split
subroutine deallocate_igrsurf_split(t_monvol, igrsurf_proc)
This routine deallocates the local IGSURF_PROC arrays.