OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
shooting_node_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!|| shooting_node_mod ../engine/share/modules/shooting_node_mod.F
25!||--- called by ------------------------------------------------------
26!|| check_edge_state ../engine/source/interfaces/interf/check_edge_state.F
27!|| check_remote_surface_state ../engine/source/interfaces/interf/check_remote_surface_state.F
28!|| check_surface_state ../engine/source/interfaces/interf/check_surface_state.F
29!|| count_nb_elem_edge ../engine/source/interfaces/interf/count_nb_elem_edge.F
30!|| dealloc_shoot_inter ../engine/source/interfaces/interf/dealloc_shoot_inter.F
31!|| find_edge_from_remote_proc ../engine/source/interfaces/interf/find_edge_from_remote_proc.F
32!|| find_edge_inter ../engine/source/interfaces/interf/find_edge_inter.F
33!|| find_surface_from_remote_proc ../engine/source/interfaces/interf/find_surface_from_remote_proc.F
34!|| find_surface_inter ../engine/source/interfaces/interf/find_surface_inter.F
35!|| get_neighbour_surface ../engine/source/interfaces/interf/get_neighbour_surface.F90
36!|| get_neighbour_surface_from_remote_proc ../engine/source/interfaces/interf/get_neighbour_surface_from_remote_proc.F90
37!|| get_segment_interface_id ../engine/source/interfaces/interf/get_segment_interface_id.F90
38!|| get_segment_orientation ../engine/source/interfaces/interf/get_segment_orientation.f90
39!|| init_nodal_state ../engine/source/interfaces/interf/init_nodal_state.F
40!|| resol ../engine/source/engine/resol.F
41!|| spmd_exch_deleted_surf_edge ../engine/source/mpi/interfaces/spmd_exch_deleted_surf_edge.F
42!|| spmd_exch_neighbour_segment ../engine/source/mpi/interfaces/spmd_exch_neighbour_segment.F90
43!|| tagoff3n ../engine/source/interfaces/interf/chkstfn3.f
44!|| update_neighbour_segment ../engine/source/interfaces/interf/update_neighbour_segment.F90
45!||====================================================================
47!$COMMENT
48! SHOOTING_NODE_MOD :
49!$ENDCOMMENT
50C-----------------------------------------------
51C m y _ r e a l
52C-----------------------------------------------
53#include "my_real.inc"
54C-----------------------------------------------
56 integer :: sol_up_bound !< upper bound for solid
57 integer :: sol_low_bound !< lower bound for solid
58 integer :: quad_up_bound !< upper bound for quad
59 integer :: quad_low_bound!< lower bound for quad
60 integer :: shell_up_bound !< upper bound for shell
61 integer :: shell_low_bound!< lower bound for shell
62 integer :: truss_up_bound !< upper bound for truss
63 integer :: truss_low_bound!< lower bound for truss
64 integer :: beam_up_bound !< upper bound for beam
65 integer :: beam_low_bound!< lower bound for beam
66 integer :: spring_up_bound !< upper bound for spring
67 integer :: spring_low_bound!< lower bound for spring
68 integer :: shell3n_up_bound !< upper bound for shell3n
69 integer :: shell3n_low_bound!< lower bound for shell3n
70 end type offset_elem_
71
73 INTEGER, DIMENSION(:), ALLOCATABLE :: surf ! working array for surface
74 INTEGER, DIMENSION(:), ALLOCATABLE :: proc ! working array for processor
75 END TYPE working_array
76
78 INTEGER, DIMENSION(:), ALLOCATABLE :: remote_elm_m ! list of remote element for the main edges
79 INTEGER, DIMENSION(:), ALLOCATABLE :: remote_elm_s ! list of remote element for the secondary edges
80 INTEGER, DIMENSION(:), ALLOCATABLE :: nb_elm_m ! number of element connected to the segmet/surface (only for interface 25)
81 END TYPE remote_elm
82
84 ! ------------------------------
85 ! secondary node array
86 INTEGER :: size_sec_node ! size of INTER_SEC_NODE & SEC_NODE_ID
87 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_s_node ! shift to point to INTER_SEC_NODE/SEC_NODE_ID arrays & number of interface per node
88 INTEGER, DIMENSION(:), ALLOCATABLE :: inter_sec_node ! list of interface of the nodes
89 INTEGER, DIMENSION(:), ALLOCATABLE :: sec_node_id ! ID of secondary nodes in each interface
90 ! ------------------------------
91 ! main node array
92 INTEGER :: max_proc_nb ! maximum number of processor
93 INTEGER :: size_m_node_proc ! size of M_NODE_PROC
94 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_m_node_proc ! shift to point to M_NODE_PROC array & number of processor per node
95 INTEGER, DIMENSION(:), ALLOCATABLE :: m_node_proc ! list of processor per node
96
97 INTEGER :: max_surf_nb ! mamimun number of surface
98 INTEGER :: size_m_node_surf ! size of M_NODE_SURF
99 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_m_node_surf ! shift to point to M_NODE_SURF array & number of surface per node
100 INTEGER, DIMENSION(:), ALLOCATABLE :: m_node_surf ! list of surface per node
101
102 INTEGER :: max_edge_nb ! mamimun number of edge
103 INTEGER :: size_m_node_edge ! size of M_NODE_EDGE
104 INTEGER :: size_s_node_edge ! size of S_NODE_EDGE
105 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_m_node_edge ! shift to point to M_NODE_EDGE array & number of edge per node
106 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_s_node_edge ! shift to point to M_NODE_EDGE array & number of edge per node
107 INTEGER, DIMENSION(:), ALLOCATABLE :: m_node_edge ! list of edge per node (M node)
108 INTEGER, DIMENSION(:), ALLOCATABLE :: s_node_edge ! list of edge per node (S node)
109
110 INTEGER, DIMENSION(:,:), ALLOCATABLE :: shift_interface ! shift for surface ID
111 INTEGER, DIMENSION(:), ALLOCATABLE :: shift_interface2 ! shift for surface ID (global Ids)
112 ! ------------------------------
113 ! surface array
114 INTEGER :: size_remote_surf ! size of array REMOTE_SURF
115 INTEGER :: number_remote_surf ! number of potential rmote surface for type 24 & 25
116 INTEGER, DIMENSION(:), ALLOCATABLE :: remote_surf ! list of potential rmote surface for type 24 & 25
117 INTEGER :: size_new_surf ! size of array NEW_SURF
118 INTEGER :: number_new_surf ! number of new active surface for type 25
119 INTEGER, DIMENSION(:), ALLOCATABLE :: new_surf ! list of new active surface for type 25
120 ! ------------------------------
121 ! ------------------------------
122
123 ! ------------------------------
124 ! working array
125 INTEGER, DIMENSION(:), ALLOCATABLE :: global_nb_elem_off ! number of deactivated element for each omp thread
126 INTEGER :: s_global_elem_index ! size of "GLOBAL_ELEM_IND" array
127 INTEGER, DIMENSION(:), ALLOCATABLE :: global_elem_index ! list of deactivated element
128
129 INTEGER :: s_save_surface ! size of SAVE_SURFACE array
130 INTEGER, DIMENSION(:), ALLOCATABLE :: save_surface ! list of deactivated surface
131 INTEGER :: save_surface_nb ! number of deactivated surface
132
133 INTEGER :: s_save_proc ! size of SAVE_PROC array
134 INTEGER, DIMENSION(:), ALLOCATABLE :: save_proc ! list of processor with a deactivated surface
135 INTEGER :: save_proc_nb ! number of processor + the 4 nodes associated to the surfaces
136
137 INTEGER :: s_save_m_edge,s_save_s_edge ! size of SAVE_M_EDGE & SAVE_S_EDGE array
138 INTEGER, DIMENSION(:), ALLOCATABLE :: save_m_edge ! list of deactivated edge : main node
139 INTEGER, DIMENSION(:), ALLOCATABLE :: save_s_edge ! list of deactivated edge : secondary node
140 INTEGER :: save_m_edge_nb,save_s_edge_nb ! number of deactivated edge
141
142 INTEGER :: s_save_proc_edge ! size of SAVE_PROC_EDGE array
143 INTEGER, DIMENSION(:), ALLOCATABLE :: save_proc_edge ! list of processor with a deactivated edge
144 INTEGER :: save_proc_nb_edge ! number of processor + the 4 nodes associated to the surfaces
145
146
147 TYPE(remote_elm), DIMENSION(:), ALLOCATABLE :: inter
148 type(offset_elem_) :: offset_elem !< upper and lower bound
149 END TYPE shooting_node_type
150
151
152C-----------------------------------------------
153 END MODULE shooting_node_mod
subroutine tagoff3n(nodes, geo, ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, ixtg, itag, nodft, nodlt, iparg, ev, itask, ixtg1, iad_elem, fr_elem, itab, addcnel, cnel, kxsp, elbuf_tab, tagel, iexlnk, igrnod, dd_r2r, dd_r2r_elem, sdd_r2r_elem, idel7nok_sav, idel7nok_r2r, tagtrimc, tagtrimtg, s_elem_state, elem_state, shoot_struct, global_nb_elem_off)
Definition chkstfn3.F:573