OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
detonators_mod.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!|| detonators_mod ../starter/share/modules1/detonators_mod.F
25!||--- called by ------------------------------------------------------
26!|| binit2 ../starter/source/ale/bimat/binit2.F
27!|| contrl ../starter/source/starter/contrl.F
28!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
29!|| detcord ../starter/source/initial_conditions/detonation/detcord.F
30!|| detcord0 ../starter/source/initial_conditions/detonation/detcord0.F
31!|| ecran1 ../starter/source/initial_conditions/detonation/ecran1.F
32!|| ecran2 ../starter/source/initial_conditions/detonation/ecran2.F
33!|| eikonal_fast_marching_method ../starter/source/initial_conditions/detonation/eikonal_fast_marching_method.F90
34!|| eikonal_init_start_list_2d ../starter/source/initial_conditions/detonation/eikonal_init_start_list_2d.F90
35!|| eikonal_solver ../starter/source/initial_conditions/detonation/eikonal_solver.F90
36!|| ig3dinit3 ../starter/source/elements/ige3d/ig3dinit3.F
37!|| initia ../starter/source/elements/initia/initia.F
38!|| iombr ../starter/source/initial_conditions/detonation/iombr.F
39!|| lectur ../starter/source/starter/lectur.F
40!|| m105init ../starter/source/materials/mat/mat105/m105init.F
41!|| m51init ../starter/source/materials/mat/mat051/m51init.F
42!|| m5in2 ../starter/source/initial_conditions/detonation/m5in2.F
43!|| m5in2t ../starter/source/initial_conditions/detonation/m5in2t.F
44!|| m5in3 ../starter/source/initial_conditions/detonation/m5in3.F
45!|| m97init ../starter/source/materials/mat/mat097/m97init.F
46!|| matini ../starter/source/materials/mat_share/matini.F
47!|| multifluid_init2 ../starter/source/multifluid/multifluid_init2.F
48!|| multifluid_init2t ../starter/source/multifluid/multifluid_init2t.F
49!|| multifluid_init3 ../starter/source/multifluid/multifluid_init3.F
50!|| multifluid_init3t ../starter/source/multifluid/multifluid_init3t.F
51!|| prelecdet ../starter/source/initial_conditions/detonation/prelecdet.F
52!|| printstsz ../starter/source/spmd/node/st_array_size.F
53!|| q4init2 ../starter/source/elements/solid_2d/quad4/q4init2.F
54!|| qinit2 ../starter/source/elements/solid_2d/quad/qinit2.F
55!|| r2r_group ../starter/source/coupling/rad2rad/r2r_group.F
56!|| r2r_prelec ../starter/source/coupling/rad2rad/r2r_prelec.F
57!|| read_detonators ../starter/source/initial_conditions/detonation/read_detonators.F
58!|| read_dfs_detcord ../starter/source/initial_conditions/detonation/read_dfs_detcord.F
59!|| read_dfs_detline ../starter/source/initial_conditions/detonation/read_dfs_detline.F
60!|| read_dfs_detplan ../starter/source/initial_conditions/detonation/read_dfs_detplan.F
61!|| read_dfs_detpoint ../starter/source/initial_conditions/detonation/read_dfs_detpoint.F
62!|| read_dfs_wave_shaper ../starter/source/initial_conditions/detonation/read_dfs_wave_shaper.F
63!|| s10init3 ../starter/source/elements/solid/solide10/s10init3.F
64!|| s16init3 ../starter/source/elements/thickshell/solide16/s16init3.F
65!|| s20init3 ../starter/source/elements/solid/solide20/s20init3.F
66!|| s4init3 ../starter/source/elements/solid/solide4/s4init3.F
67!|| s6cinit3 ../starter/source/elements/thickshell/solide6c/s6cinit3.F
68!|| s6zinit3 ../starter/source/elements/solid/solide6z/s6zinit3.F90
69!|| s8cinit3 ../starter/source/elements/thickshell/solide8c/s8cinit3.F
70!|| s8zinit3 ../starter/source/elements/solid/solide8z/s8zinit3.F
71!|| scinit3 ../starter/source/elements/thickshell/solidec/scinit3.F
72!|| sinit3 ../starter/source/elements/solid/solide/sinit3.F
73!|| spinit3 ../starter/source/elements/sph/spinit3.F
74!|| st_qaprint_dfs_detonators ../starter/source/output/qaprint/st_qaprint_dfs_detonators.F
75!|| st_qaprint_driver ../starter/source/output/qaprint/st_qaprint_driver.F
76!|| st_qaprint_internal_groups ../starter/source/output/qaprint/st_qaprint_internal_groups.F
77!|| starter0 ../starter/source/starter/starter0.F
78!|| suinit3 ../starter/source/elements/elbuf_init/suinit3.F
79!||====================================================================
81C-----------------------------------------------
82#include "my_real.inc"
83C-----------------------------------------------
84
85 ! --- /DFS/DETPOINT DATA STRUCTURE
87 LOGICAL :: is_mat_valid = .false.
88 INTEGER :: mat = 0
89 INTEGER :: shadow = 0
90 my_real :: tdet
91 my_real :: xdet
92 my_real :: ydet
93 my_real :: zdet
94 !optional list of nodes
95 INTEGER :: grnod_id
96 INTEGER :: NNOD
97 INTEGER,DIMENSION(:),ALLOCATABLE :: nodlist
99
100 ! --- /DFS/DETLINE DATA STRUCTURE
102 LOGICAL :: is_mat_valid = .false.
103 INTEGER :: mat = 0
104 my_real :: tdet
105 my_real :: xdet_1
106 my_real :: ydet_1
107 my_real :: zdet_1
108 my_real :: xdet_2
109 my_real :: ydet_2
110 my_real :: zdet_2
112
113 ! --- /DFS/DETPLANE DATA STRUCTURE
115 LOGICAL :: is_mat_valid = .false.
116 INTEGER :: mat = 0
117 my_real :: tdet
118 my_real :: xdet
119 my_real :: ydet
120 my_real :: zdet
121 my_real :: nx
122 my_real :: ny
123 my_real :: nz
125
126 ! --- /DFS/WAVE_SHAPER DATA STRUCTURE
128 LOGICAL :: is_mat_valid = .false.
129 INTEGER :: mat = 0
130 INTEGER :: numnod
131 my_real :: xdet
132 my_real :: ydet
133 my_real :: zdet
134 my_real :: vdet
135 my_real :: tdet
136 INTEGER,DIMENSION(:),ALLOCATABLE :: nodes
137 my_real,DIMENSION(:),ALLOCATABLE :: time
138 INTEGER,DIMENSION(:),ALLOCATABLE :: flag
139 INTEGER,DIMENSION(:),ALLOCATABLE :: iordr
141
142 ! --- /DFS/DETCORD DATA STRUCTURE
144 LOGICAL :: is_mat_valid = .false.
145 INTEGER :: mat = 0
146 INTEGER :: iopt
147 INTEGER :: numnod
148 INTEGER,DIMENSION(:),ALLOCATABLE :: nodes
149 my_real,DIMENSION(:),ALLOCATABLE :: tdet_path
150 my_real :: tdet
151 my_real :: vdet
153
154 ! --- MAIN DATA STRUCTURE
156 !numbering
157 INTEGER :: n_det !sum of all detonators
158 INTEGER :: n_det_point !number of /DFS/DETPOINT
159 INTEGER :: n_det_line !number of /DFS/DETLINE
160 INTEGER :: n_det_wave_shaper !number of /DFS/WAVE_SHAPER
161 INTEGER :: n_det_cord !number of /DFS/DETCORD
162 INTEGER :: n_det_plane !number of /DFS/DETPLANE
163 !all detonators
164 TYPE(detonator_point_struct_), DIMENSION(:), ALLOCATABLE :: point
165 TYPE(detonator_line_struct_), DIMENSION(:), ALLOCATABLE :: line
166 TYPE(detonator_cord_struct_), DIMENSION(:), ALLOCATABLE :: cord
167 TYPE(detonator_wave_shaper_struct_), DIMENSION(:), ALLOCATABLE :: wave_shaper
168 TYPE(detonator_plane_struct_), DIMENSION(:), ALLOCATABLE :: plane
169 !global flag
170 LOGICAL is_shadowing_required
171 END TYPE detonators_struct_
172
173 CONTAINS
174
175!||====================================================================
176!|| deallocate_detonators ../starter/share/modules1/detonators_mod.F
177!||--- called by ------------------------------------------------------
178!|| lectur ../starter/source/starter/lectur.F
179!||====================================================================
180 SUBROUTINE deallocate_detonators(DETONATORS)
181C-----------------------------------------------
182C I m p l i c i t T y p e s
183C-----------------------------------------------
184#include "implicit_f.inc"
185C-----------------------------------------------
186C D u m m y A r g u m e n t s
187C-----------------------------------------------
188 TYPE(detonators_struct_),INTENT(INOUT)::DETONATORS
189C-----------------------------------------------
190C L o c a l V a r i a b l e s
191C-----------------------------------------------
192 INTEGER IDET
193C-----------------------------------------------
194C S o u r c e L i n e s
195C-----------------------------------------------
196 !working arrays for detonation point
197 IF(detonators%N_DET_POINT > 0)THEN
198 DO idet=1,detonators%N_DET_POINT
199 IF(ALLOCATED(detonators%POINT(idet)%NODLIST))DEALLOCATE(detonators%POINT(idet)%NODLIST)
200 ENDDO
201 ENDIF
202
203 !working arrays for detonating cord
204 IF(detonators%N_DET_CORD > 0)THEN
205 DO idet=1,detonators%N_DET_CORD
206 IF(ALLOCATED(detonators%CORD(idet)%NODES))DEALLOCATE(detonators%CORD(idet)%NODES)
207 IF(ALLOCATED(detonators%CORD(idet)%TDET_PATH))DEALLOCATE(detonators%CORD(idet)%TDET_PATH)
208 ENDDO
209 ENDIF
210
211 !working arrays for wave shaper
212 IF(detonators%N_DET_WAVE_SHAPER > 0)THEN
213 DO idet=1,detonators%N_DET_WAVE_SHAPER
214 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%NODES))DEALLOCATE(detonators%WAVE_SHAPER(idet)%NODES)
215 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%TIME))DEALLOCATE(detonators%WAVE_SHAPER(idet)%TIME)
216 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%FLAG))DEALLOCATE(detonators%WAVE_SHAPER(idet)%FLAG)
217 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%IORDR))DEALLOCATE(detonators%WAVE_SHAPER(idet)%IORDR)
218 ENDDO
219 ENDIF
220
221 !general data structure
222 IF(ALLOCATED(detonators%POINT)) DEALLOCATE(detonators%POINT)
223 IF(ALLOCATED(detonators%PLANE)) DEALLOCATE(detonators%PLANE)
224 IF(ALLOCATED(detonators%LINE)) DEALLOCATE(detonators%LINE)
225 IF(ALLOCATED(detonators%CORD)) DEALLOCATE(detonators%CORD)
226 IF(ALLOCATED(detonators%WAVE_SHAPER)) DEALLOCATE(detonators%WAVE_SHAPER)
227
228 END SUBROUTINE deallocate_detonators
229
230 END MODULE detonators_mod
231
#define my_real
Definition cppsort.cpp:32
subroutine deallocate_detonators(detonators)