OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
get_size_tag.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!|| get_size_tag ../starter/source/spmd/get_size_tag.F
25!||====================================================================
26 SUBROUTINE get_size_tag(FLAG_FVM,FLAG_TAG,I24MAXNSNE,SIZE_TAG,IPARI)
27! ----------------------------------------------------------------
28! Description : GET_SIZE_TAG checks if TAG array is used and computes
29! the size of TAG
30! TAG is used for the following interfaces:
31! 7, 20, 22, 23, 24 and 25
32! size of TAG: NUMNOD + I24MAXNSNE + SIZE_FVM
33! | |
34! max NSNE for TYP24 ____| |
35! SIZE_FVM=NUMELS for INACTI=7 and FVM, otherwise 0 ___|
36! ----------------------------------------------------------------
37C-----------------------------------------------
38C I m p l i c i t T y p e s
39C-----------------------------------------------
40#include "implicit_f.inc"
41C-----------------------------------------------
42C C o m m o n B l o c k s
43C-----------------------------------------------
44#include "com04_c.inc"
45#include "param_c.inc"
46C-----------------------------------------------
47
48C-----------------------------------------------
49C D u m m y A r g u m e n t s
50C-----------------------------------------------
51 LOGICAL, INTENT(INOUT) :: FLAG_TAG
52 LOGICAL, INTENT(IN) :: FLAG_FVM
53 INTEGER, INTENT(IN) :: I24MAXNSNE
54 INTEGER, INTENT(INOUT) :: SIZE_TAG
55 INTEGER, DIMENSION(NPARI,*), INTENT(IN) :: IPARI
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER :: NI,ITYP,INACTI,SIZE_FVM
60C-----------------------------------------------
61C
62 flag_tag=.false.
63 size_fvm=0
64 size_tag=0
65 DO ni =1, ninter
66 ityp = ipari(7,ni)
67 inacti = ipari(22,ni)
68 IF( ityp==7.OR.ityp==20.OR.ityp==22.OR.ityp==23.OR.
69 . ityp==24.OR.ityp==25 ) THEN
70 flag_tag=.true.
71 size_tag = numnod+i24maxnsne
72 IF (flag_fvm .AND. inacti == 7) size_fvm = numels
73 ENDIF
74 ENDDO
75 IF(flag_tag) size_tag = numnod+i24maxnsne+size_fvm
76
77
78 RETURN
79 END SUBROUTINE get_size_tag
80
81!||====================================================================
82!|| get_size_inter24 ../starter/source/spmd/get_size_tag.F
83!||--- called by ------------------------------------------------------
84!|| lectur ../starter/source/starter/lectur.F
85!||====================================================================
86 SUBROUTINE get_size_inter24(I24MAXNSNE,NINTER,NPARI,IPARI,FLAG_24_25)
87! ----------------------------------------------------------------
88! Description : GET_SIZE_INTER24 checks if NODLOCAL24 array is used and computes
89! the size of NODLOCAL24
90! NODLOCAL24 is used for the following interfaces:
91! 24 and 25
92! size of NODLOCAL24: NUMNOD + I24MAXNSNE
93! |
94! max NSNE for TYP24 ____|
95!
96! ----------------------------------------------------------------
97C-----------------------------------------------
98C I m p l i c i t T y p e s
99C-----------------------------------------------
100#include "implicit_f.inc"
101C-----------------------------------------------
102C D u m m y A r g u m e n t s
103C-----------------------------------------------
104! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
105! NINTER : integer, number of interface
106! NPARI : integer, size of IPARI
107! I24MAXNSNE : integer, size of TAG_SCRATCH for interface 24
108! FLAG_24_25 : logical, flag for interface 24 or 25
109! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
110 INTEGER, INTENT(IN) :: NINTER,NPARI
111 INTEGER, INTENT(INOUT) :: I24MAXNSNE
112 LOGICAL, INTENT(INOUT) :: FLAG_24_25
113 INTEGER, DIMENSION(NPARI,*), INTENT(IN) :: IPARI
114C-----------------------------------------------
115C L o c a l V a r i a b l e s
116C-----------------------------------------------
117 INTEGER :: NI,ITYP,NSNE
118C ----------------------------------------
119C Care TYPE24 + E2E
120C Edge to Edge Nodes fictive Nodes are numbered over NUMNOD
121C Tag Arrays must be increased accordingly
122 i24maxnsne = 0
123 flag_24_25 = .false.
124 DO ni= 1, ninter
125 ityp = ipari(7,ni)
126 IF(ityp==24)THEN
127 nsne = ipari(55,ni)
128 i24maxnsne = max(i24maxnsne,nsne)
129 ENDIF
130 IF( (ityp==24).OR.(ityp==25) ) flag_24_25 = .true.
131 ENDDO
132
133 END SUBROUTINE get_size_inter24
134
135!||====================================================================
136!|| get_size_numnod_local ../starter/source/spmd/get_size_tag.F
137!||--- called by ------------------------------------------------------
138!|| lectur ../starter/source/starter/lectur.F
139!||--- calls -----------------------------------------------------
140!|| plist_ifront ../starter/source/spmd/node/ddtools.F
141!||====================================================================
142 SUBROUTINE get_size_numnod_local(NUMNOD,NUMNOD_L)
143! ----------------------------------------------------------------
144! Description : GET_SIZE_NUMNOD_LOCAL computes the local number of
145! element on each domain
146! ----------------------------------------------------------------
147C-----------------------------------------------
148C I m p l i c i t T y p e s
149C-----------------------------------------------
150#include "implicit_f.inc"
151C-----------------------------------------------
152C C o m m o n B l o c k s
153C-----------------------------------------------
154#include "com01_c.inc"
155C-----------------------------------------------
156C D u m m y A r g u m e n t s
157C-----------------------------------------------
158 INTEGER, INTENT(IN) :: NUMNOD
159 INTEGER, DIMENSION(NSPMD), INTENT(INOUT) :: NUMNOD_L
160! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
161! NUMNOD : integer,
162! total number of element
163! NSPMD : integer,
164! number of domain
165! NUMNOD_L : integer, dimension=NSPMD
166! number of element on each domain
167! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
168C-----------------------------------------------
169C L o c a l V a r i a b l e s
170C-----------------------------------------------
171 INTEGER I, J, ISPMD, NBR_PROC
172 INTEGER, DIMENSION(NSPMD) :: ID_SPMD
173C ----------------------------------------
174 numnod_l(1:nspmd) = 0
175 DO i=1,numnod
176 CALL plist_ifront(id_spmd,i,nbr_proc)
177#include "vectorize.inc"
178 DO j=1,nbr_proc
179 ispmd = id_spmd(j)
180 numnod_l(ispmd) = numnod_l(ispmd) + 1
181 ENDDO
182 ENDDO
183C
184 RETURN
185 END SUBROUTINE get_size_numnod_local
186C
subroutine plist_ifront(tab, n, cpt)
Definition ddtools.F:153
subroutine get_size_inter24(i24maxnsne, ninter, npari, ipari, flag_24_25)
subroutine get_size_tag(flag_fvm, flag_tag, i24maxnsne, size_tag, ipari)
subroutine get_size_numnod_local(numnod, numnod_l)
#define max(a, b)
Definition macros.h:21