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!|| s8cinit3 ../starter/source/elements/thickshell/solide8c/s8cinit3.F
69!|| s8zinit3 ../starter/source/elements/solid/solide8z/s8zinit3.F
70!|| scinit3 ../starter/source/elements/thickshell/solidec/scinit3.F
71!|| sinit3 ../starter/source/elements/solid/solide/sinit3.F
72!|| spinit3 ../starter/source/elements/sph/spinit3.F
73!|| st_qaprint_dfs_detonators ../starter/source/output/qaprint/st_qaprint_dfs_detonators.F
74!|| st_qaprint_driver ../starter/source/output/qaprint/st_qaprint_driver.F
75!|| st_qaprint_internal_groups ../starter/source/output/qaprint/st_qaprint_internal_groups.F
76!|| starter0 ../starter/source/starter/starter0.F
77!|| suinit3 ../starter/source/elements/elbuf_init/suinit3.F
78!||====================================================================
80C-----------------------------------------------
81#include "my_real.inc"
82C-----------------------------------------------
83
84 ! --- /DFS/DETPOINT DATA STRUCTURE
86 LOGICAL :: is_mat_valid = .false.
87 INTEGER :: mat = 0
88 INTEGER :: shadow = 0
89 my_real :: tdet
90 my_real :: xdet
91 my_real :: ydet
92 my_real :: zdet
93 !optional list of nodes
94 INTEGER :: grnod_id
95 INTEGER :: nnod
96 INTEGER,DIMENSION(:),ALLOCATABLE :: nodlist
98
99 ! --- /DFS/DETLINE DATA STRUCTURE
101 LOGICAL :: is_mat_valid = .false.
102 INTEGER :: mat = 0
103 my_real :: tdet
104 my_real :: xdet_1
105 my_real :: ydet_1
106 my_real :: zdet_1
107 my_real :: xdet_2
108 my_real :: ydet_2
109 my_real :: zdet_2
111
112 ! --- /DFS/DETPLANE DATA STRUCTURE
114 LOGICAL :: is_mat_valid = .false.
115 INTEGER :: mat = 0
116 my_real :: tdet
117 my_real :: xdet
118 my_real :: ydet
119 my_real :: zdet
120 my_real :: nx
121 my_real :: ny
122 my_real :: nz
124
125 ! --- /DFS/WAVE_SHAPER DATA STRUCTURE
127 LOGICAL :: is_mat_valid = .false.
128 INTEGER :: mat = 0
129 INTEGER :: numnod
130 my_real :: xdet
131 my_real :: ydet
132 my_real :: zdet
133 my_real :: vdet
134 my_real :: tdet
135 INTEGER,DIMENSION(:),ALLOCATABLE :: nodes
136 my_real,DIMENSION(:),ALLOCATABLE :: time
137 INTEGER,DIMENSION(:),ALLOCATABLE :: flag
138 INTEGER,DIMENSION(:),ALLOCATABLE :: iordr
140
141 ! --- /DFS/DETCORD DATA STRUCTURE
143 LOGICAL :: is_mat_valid = .false.
144 INTEGER :: mat = 0
145 INTEGER :: iopt
146 INTEGER :: numnod
147 INTEGER,DIMENSION(:),ALLOCATABLE :: nodes
148 my_real,DIMENSION(:),ALLOCATABLE :: tdet_path
149 my_real :: tdet
150 my_real :: vdet
152
153 ! --- MAIN DATA STRUCTURE
155 !numbering
156 INTEGER :: n_det !sum of all detonators
157 INTEGER :: n_det_point !number of /DFS/DETPOINT
158 INTEGER :: n_det_line !number of /DFS/DETLINE
159 INTEGER :: n_det_wave_shaper !number of /DFS/WAVE_SHAPER
160 INTEGER :: n_det_cord !number of /DFS/DETCORD
161 INTEGER :: n_det_plane !number of /DFS/DETPLANE
162 !all detonators
163 TYPE(detonator_point_struct_), DIMENSION(:), ALLOCATABLE :: point
164 TYPE(detonator_line_struct_), DIMENSION(:), ALLOCATABLE :: line
165 TYPE(detonator_cord_struct_), DIMENSION(:), ALLOCATABLE :: cord
166 TYPE(detonator_wave_shaper_struct_), DIMENSION(:), ALLOCATABLE :: wave_shaper
167 TYPE(detonator_plane_struct_), DIMENSION(:), ALLOCATABLE :: plane
168 !global flag
169 LOGICAL is_shadowing_required
170 END TYPE detonators_struct_
171
172 CONTAINS
173
174!||====================================================================
175!|| deallocate_detonators ../starter/share/modules1/detonators_mod.F
176!||--- called by ------------------------------------------------------
177!|| lectur ../starter/source/starter/lectur.F
178!||====================================================================
179 SUBROUTINE deallocate_detonators(DETONATORS)
180C-----------------------------------------------
181C I m p l i c i t T y p e s
182C-----------------------------------------------
183#include "implicit_f.inc"
184C-----------------------------------------------
185C D u m m y A r g u m e n t s
186C-----------------------------------------------
187 TYPE(detonators_struct_),INTENT(INOUT)::DETONATORS
188C-----------------------------------------------
189C L o c a l V a r i a b l e s
190C-----------------------------------------------
191 INTEGER IDET
192C-----------------------------------------------
193C S o u r c e L i n e s
194C-----------------------------------------------
195 !working arrays for detonation point
196 IF(detonators%N_DET_POINT > 0)THEN
197 DO idet=1,detonators%N_DET_POINT
198 IF(ALLOCATED(detonators%POINT(idet)%NODLIST))DEALLOCATE(detonators%POINT(idet)%NODLIST)
199 ENDDO
200 ENDIF
201
202 !working arrays for detonating cord
203 IF(detonators%N_DET_CORD > 0)THEN
204 DO idet=1,detonators%N_DET_CORD
205 IF(ALLOCATED(detonators%CORD(idet)%NODES))DEALLOCATE(detonators%CORD(idet)%NODES)
206 IF(ALLOCATED(detonators%CORD(idet)%TDET_PATH))DEALLOCATE(detonators%CORD(idet)%TDET_PATH)
207 ENDDO
208 ENDIF
209
210 !working arrays for wave shaper
211 IF(detonators%N_DET_WAVE_SHAPER > 0)THEN
212 DO idet=1,detonators%N_DET_WAVE_SHAPER
213 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%NODES))DEALLOCATE(detonators%WAVE_SHAPER(idet)%NODES)
214 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%TIME))DEALLOCATE(detonators%WAVE_SHAPER(idet)%TIME)
215 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%FLAG))DEALLOCATE(detonators%WAVE_SHAPER(idet)%FLAG)
216 IF(ALLOCATED(detonators%WAVE_SHAPER(idet)%IORDR))DEALLOCATE(detonators%WAVE_SHAPER(idet)%IORDR)
217 ENDDO
218 ENDIF
219
220 !general data structure
221 IF(ALLOCATED(detonators%POINT)) DEALLOCATE(detonators%POINT)
222 IF(ALLOCATED(detonators%PLANE)) DEALLOCATE(detonators%PLANE)
223 IF(ALLOCATED(detonators%LINE)) DEALLOCATE(detonators%LINE)
224 IF(ALLOCATED(detonators%CORD)) DEALLOCATE(detonators%CORD)
225 IF(ALLOCATED(detonators%WAVE_SHAPER)) DEALLOCATE(detonators%WAVE_SHAPER)
226
227 END SUBROUTINE deallocate_detonators
228
229 END MODULE detonators_mod
230
#define my_real
Definition cppsort.cpp:32
subroutine deallocate_detonators(detonators)
program starter
Definition starter.F:39