OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
build_addcnel_sub.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!|| build_addcnel_sub ../starter/source/model/mesh/build_addcnel_sub.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.f
27!||====================================================================
28 SUBROUTINE build_addcnel_sub(ADDCNEL ,CNEL ,ADDCNEL_SUB,
29 . INDX ,SUBSIZE)
30C-----------------------------------------------
31C I m p l i c i t T y p e s
32C-----------------------------------------------
33#include "implicit_f.inc"
34C-----------------------------------------------
35C C o m m o n B l o c k s
36C-----------------------------------------------
37#include "com04_c.inc"
38C-----------------------------------------------
39C D u m m y A r g u m e n t s
40C-----------------------------------------------
41 ! ADDCNE table for all nodes
42 INTEGER,INTENT(IN) :: ADDCNEL(*) ! (0:NUMNOD+1)
43 ! CNE table for all nodes
44 INTEGER,INTENT(IN) :: CNEL(*) ! (ADDCNEL(NUMNOD+1)-1)
45 ! Index table for corresping number in the node subset
46 INTEGER,INTENT(IN) :: INDX(*) ! (SUBSIZE)
47 ! Size of the subset
48 INTEGER,INTENT(IN) :: SUBSIZE
49 ! ADDCNE table for the subset of nodes
50 INTEGER,INTENT(INOUT) :: ADDCNEL_SUB(*) ! (0:SUBSIZE + 1) => SUBSIZE+2
51C-----------------------------------------------
52C L o c a l V a r i a b l e s
53C-----------------------------------------------
54 INTEGER NS ! Number of the node in the subset
55 INTEGER NG ! Number of the node in the global set
56 INTEGER NEL ! Number of element attached to the node
57 INTEGER NUMG
58 INTEGER I,K
59C-----------------------------------------------
60C
61C Building the ADDCNEL table for a subset of nodes
62C
63 ! The first node is in first position in FSKY
64 addcnel_sub(2) = 1
65 ! Boucle ici pour indexer les elements non-locaux
66 ! Loop over the nodes of the subset
67 DO ns=1,subsize
68 ! Number of the corresponding global node
69 ng = indx(ns)
70 ! Finding the number of elements attached to the previous node
71 nel = addcnel(ng+2) - addcnel(ng+1)
72 ! Initialization of the subsize element counter
73 k = 0
74 ! Loop over attached element
75 DO i = 1,nel
76 ! Number of the element
77 numg = cnel(addcnel(ng+1)+i-1)
78 ! Treatment according to element type
79 IF (numg<=numels) THEN
80 k = k + 1
81 ELSEIF (numg<=numels+numelq) THEN
82 CONTINUE
83 ELSEIF (numg<=numels+numelq+numelc) THEN
84 k = k + 1
85 ELSEIF (numg<=numels+numelq+numelc+numelt) THEN
86 CONTINUE
87 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp) THEN
88 CONTINUE
89 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp+ ! If the element is a triangle shell
90 . numelr) THEN
91 CONTINUE
92 ELSEIF (numg<=numels+numelq+numelc+numelt+numelp+ ! If the element is a triangle shell
93 . numelr+numeltg) THEN
94 k = k + 1
95 ELSE
96 CONTINUE
97 ENDIF
98 ENDDO
99 ! Computing the position of the current subset node in FSKY
100 addcnel_sub(ns+2) = addcnel_sub(ns+1) + k
101 ENDDO
102C-----------------------------------------------
103 RETURN
104 END
subroutine build_addcnel_sub(addcnel, cnel, addcnel_sub, indx, subsize)
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