OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i16main.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!|| i16main ../engine/source/interfaces/int16/i16main.F
25!||--- called by ------------------------------------------------------
26!|| lag_mult ../engine/source/tools/lagmul/lag_mult.F
27!||--- calls -----------------------------------------------------
28!|| i10lagm ../engine/source/interfaces/int16/i10lagm.f
29!|| i16buce ../engine/source/interfaces/int16/i16buce.F
30!|| i16crit ../engine/source/interfaces/int16/i16crit.F
31!|| i16lagm ../engine/source/interfaces/int16/i16lagm.F
32!|| i20lagm ../engine/source/interfaces/int16/i20lagm.F
33!|| i8lagm ../engine/source/interfaces/int16/i8lagm.F
34!|| my_barrier ../engine/source/system/machine.F
35!||--- uses -----------------------------------------------------
36!|| element_mod ../common_source/modules/elements/element_mod.F90
37!|| groupdef_mod ../common_source/modules/groupdef_mod.F
38!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
39!||====================================================================
40 SUBROUTINE i16main(
41 1 NIN ,IPARI ,INTBUF_TAB ,X ,V ,
42 2 A ,ITASK ,IGRNOD ,EMINX ,WAT ,
43 3 MS ,IADLL ,LLL ,JLL ,SLL ,
44 4 XLL ,N_MUL_MX ,IXS ,IXS16 ,IXS20 ,
45 5 NKMAX ,IXS10 ,COMNTAG ,IGRBRIC)
46C-----------------------------------------------
47C M o d u l e s
48C-----------------------------------------------
49 USE intbufdef_mod
50 USE groupdef_mod
51 use element_mod , only : nixs
52C-----------------------------------------------
53C D u m m y A r g u m e n t s
54C
55C-------------------------------------------------------------------------------
56C NOM DIMENSION DESCRIPTION E/S
57C-------------------------------------------------------------------------------
58C
59C NIN 1 INTERFACE NUMBER E
60C
61C IPARI NPARI,NINTER PARAMETRES D'INTERFACE E
62C
63C X 3,NUMNOD COORDONNEES E
64C
65C V 3,NUMNOD VELOCITIES E
66C
67C EMINX 6*NME<6*NUMELS MIN MAX DE CHAQUE ELEMENT TMP_GLOBAL
68C
69C
70C-----------------------------------------------
71C I m p l i c i t T y p e s
72C-----------------------------------------------
73#include "implicit_f.inc"
74C-----------------------------------------------
75C C o m m o n B l o c k s
76C-----------------------------------------------
77#include "com04_c.inc"
78#include "com08_c.inc"
79#include "param_c.inc"
80#include "task_c.inc"
81
82 COMMON /i16tmp/size
84 . SIZE
85C-----------------------------------------------
86C D u m m y A r g u m e n t s
87C-----------------------------------------------
88 INTEGER NIN,ITASK ,N_MUL_MX ,NKMAX
89 INTEGER IPARI(NPARI,NINTER),
90 . IADLL(*) ,LLL(*) ,JLL(*) ,SLL(*) ,
91 . IXS(NIXS,*) ,IXS16(8,*) ,IXS20(12,*) ,IXS10(6,*),
92 . COMNTAG(*)
93C REAL
94 my_real
95 . x(3,*), v(3,*), a(3,*), ms(*),eminx(*),wat(*),
96 . xll(*)
97
98 TYPE(intbuf_struct_) INTBUF_TAB(*)
99 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
100 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
101C-----------------------------------------------
102C L o c a l V a r i a b l e s
103C-----------------------------------------------
104 INTEGER NSN,NME,
105 . nme_t,esh_t,ign,ige,multimp,noint,mx_cand,itri
106C REAL
107 my_real
108 . startt, stopt,xx,xy,xz,tzinf,minbox
109 SAVE itri
110 data itri/0/
111C-----------------------------------------------
112C S o u r c e L i n e s
113C-----------------------------------------------
114 noint = ipari(15,nin)
115 multimp = ipari(23,nin)
116 ign = ipari(36,nin)
117 ige = ipari(34,nin)
118 nsn =igrnod(ign)%NENTITY
119 nme =igrbric(ige)%NENTITY
120C
121 mx_cand=multimp*nsn
122 startt = intbuf_tab(nin)%VARIABLES(3)
123 stopt = intbuf_tab(nin)%VARIABLES(11)
124 IF(startt>tt) RETURN
125 IF(tt>stopt) RETURN
126C -------------------------------------------------------------
127 nme_t=nme/nthread
128 esh_t = itask*nme_t
129 IF(itask==nthread-1)nme_t=nme-(nthread-1)*(nme/nthread)
130 SIZE = zero
131 intbuf_tab(nin)%XSLVG(1) = -ep30
132 intbuf_tab(nin)%XSLVG(2) = -ep30
133 intbuf_tab(nin)%XSLVG(3) = -ep30
134 intbuf_tab(nin)%XSLVG(4) = ep30
135 intbuf_tab(nin)%XSLVG(5) = ep30
136 intbuf_tab(nin)%XSLVG(6) = ep30
137 intbuf_tab(nin)%XMSRG(1) = -ep30
138 intbuf_tab(nin)%XMSRG(2) = -ep30
139 intbuf_tab(nin)%XMSRG(3) = -ep30
140 intbuf_tab(nin)%XMSRG(4) = ep30
141 intbuf_tab(nin)%XMSRG(5) = ep30
142 intbuf_tab(nin)%XMSRG(6) = ep30
143C -------------------------------------------------------------
144 CALL my_barrier
145C=======================================================================
146C Test to know whether to retriate + initialization
147C=======================================================================
148 CALL i16crit(
149 1 x ,igrnod(ign)%ENTITY,igrbric(ige)%ENTITY ,nsn ,eminx ,
150 2 nme ,itask ,intbuf_tab(nin)%XSAV ,ixs ,ixs16 ,
151 3 ixs20 ,ixs10 ,v ,a ,intbuf_tab(nin)%XMSRG,
152 4 intbuf_tab(nin)%XSLVG )
153
154C -------------------------------------------------------------
155 CALL my_barrier
156C -------------------------------------------------------------
157C error in the estimation formula
158 tzinf = intbuf_tab(nin)%VARIABLES(4) * SIZE / nme / 6
159 minbox = intbuf_tab(nin)%VARIABLES(5) * SIZE / nme / 6
160 xx = max(intbuf_tab(nin)%XSLVG(1)-intbuf_tab(nin)%XMSRG(4),
161 * intbuf_tab(nin)%XMSRG(1)-intbuf_tab(nin)%XSLVG(4))
162 xy = max(intbuf_tab(nin)%XSLVG(2)-intbuf_tab(nin)%XMSRG(5),
163 * intbuf_tab(nin)%XMSRG(2)-intbuf_tab(nin)%XSLVG(5))
164 xz = max(intbuf_tab(nin)%XSLVG(3)-intbuf_tab(nin)%XMSRG(6),
165 * intbuf_tab(nin)%XMSRG(3)-intbuf_tab(nin)%XSLVG(6))
166C -------------------------------------------------------------
167 IF(xx**2 + xy**2 + xz**2 >= tzinf**2) THEN
168C=======================================================================
169C TRI
170C=======================================================================
171 ipari(35,nin) = 0
172C -------------------------------------------------------------
173 CALL my_barrier
174C -------------------------------------------------------------
175 CALL i16buce(
176 1 igrnod(ign)%ENTITY,ixs ,ixs16 ,ixs20 ,igrbric(ige)%ENTITY ,
177 2 nme_t ,wat ,nsn ,intbuf_tab(nin)%CAND_E,intbuf_tab(nin)%CAND_N,
178 3 noint ,ipari(35,nin) ,tzinf ,minbox ,eminx ,
179 4 intbuf_tab(nin)%XSAV,itask ,x ,v ,a ,
180 5 mx_cand ,ixs10 ,esh_t)
181C -------------------------------------------------------------
182 CALL my_barrier
183C -------------------------------------------------------------
184 ENDIF
185C=======================================================================
186C CONTACT
187C=======================================================================
188 CALL i8lagm(
189 1 x ,v ,lll ,jll ,sll ,
190 2 xll ,intbuf_tab(nin)%CAND_N,intbuf_tab(nin)%CAND_E,ipari(35,nin),ixs ,
191 3 iadll ,eminx ,igrnod(ign)%ENTITY,igrbric(ige)%ENTITY,
192 4 n_mul_mx ,itask ,a ,ipari(30,nin),
193 5 nin ,nkmax ,comntag )
194 CALL i10lagm(
195 1 x ,v ,lll ,jll ,sll ,
196 2 xll ,intbuf_tab(nin)%CAND_N,intbuf_tab(nin)%CAND_E,ipari(35,nin),ixs ,
197 3 ixs10 ,iadll ,eminx ,igrnod(ign)%ENTITY,igrbric(ige)%ENTITY,
198 4 n_mul_mx ,itask ,a ,ipari(30,nin),
199 5 nin ,nkmax ,comntag )
200 CALL i16lagm(
201 1 x ,v ,lll ,jll ,sll ,
202 2 xll ,intbuf_tab(nin)%CAND_N,intbuf_tab(nin)%CAND_E,ipari(35,nin),ixs ,
203 3 ixs16 ,iadll ,eminx ,igrnod(ign)%ENTITY,igrbric(ige)%ENTITY,
204 4 n_mul_mx ,itask ,a ,ipari(30,nin),
205 5 nin ,nkmax ,comntag )
206 CALL i20lagm(
207 1 x ,v ,lll ,jll ,sll ,
208 2 xll ,intbuf_tab(nin)%CAND_N,intbuf_tab(nin)%CAND_E,ipari(35,nin),ixs ,
209 3 ixs20 ,iadll ,eminx ,igrnod(ign)%ENTITY,igrbric(ige)%ENTITY,
210 4 n_mul_mx ,itask ,a ,ipari(30,nin),
211 5 nin ,nkmax ,comntag )
212!
213 CALL my_barrier
214!
215 RETURN
216 END
#define my_real
Definition cppsort.cpp:32
subroutine i10lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs10, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
Definition i10lagm.F:37
subroutine i16buce(nsv, ixs, ixs16, ixs20, nelem, nme, mwa, nsn, cand_e, cand_n, noint, i_stok_glob, tzinf, minbox, eminx, xsav, itask, x, v, a, mx_cand, ixs10, esh_t)
Definition i16buce.F:38
subroutine i16crit(x, nsv, nelem, nsn, eminx, nme, itask, xsav, ixs, ixs16, ixs20, ixs10, v, a, xmsrg, xslvg)
Definition i16crit.F:41
subroutine i16lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs16, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
Definition i16lagm.F:37
subroutine i16main(nin, ipari, intbuf_tab, x, v, a, itask, igrnod, eminx, wat, ms, iadll, lll, jll, sll, xll, n_mul_mx, ixs, ixs16, ixs20, nkmax, ixs10, comntag, igrbric)
Definition i16main.F:46
subroutine i20lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, ixs20, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
Definition i20lagm.F:37
subroutine i8lagm(x, v, lll, jll, sll, xll, candn, cande, i_stok, ixs, iadll, eminx, nsv, nelem, n_mul_mx, itask, a, itied, nint, nkmax, comntag)
Definition i8lagm.F:37
#define max(a, b)
Definition macros.h:21
subroutine my_barrier
Definition machine.F:31