OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i16buce.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!|| i16buce ../engine/source/interfaces/int16/i16buce.F
25!||--- called by ------------------------------------------------------
26!|| i16main ../engine/source/interfaces/int16/i16main.F
27!||--- calls -----------------------------------------------------
28!|| i16tri ../engine/source/interfaces/int16/i16tri.F
29!||--- uses -----------------------------------------------------
30!|| element_mod ../common_source/modules/elements/element_mod.F90
31!||====================================================================
32 SUBROUTINE i16buce(
33 1 NSV ,IXS ,IXS16 ,IXS20 ,NELEM ,
34 2 NME ,MWA ,NSN ,CAND_E ,CAND_N ,
35 3 NOINT ,I_STOK_GLOB,TZINF ,MINBOX ,EMINX ,
36 4 XSAV ,ITASK ,X ,V ,A ,
37 5 MX_CAND ,IXS10 ,ESH_T)
38 use element_mod , only : nixs
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43#include "comlock.inc"
44C-----------------------------------------------
45C C o m m o n B l o c k s
46C-----------------------------------------------
47#include "units_c.inc"
48#include "warn_c.inc"
49#include "com01_c.inc"
50#include "com04_c.inc"
51#include "com08_c.inc"
52#include "task_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER NME, NSN, NOINT,ITASK,MX_CAND,
57 . ESH_T, I_STOK_GLOB
58 INTEGER CAND_E(*),CAND_N(*),IXS(NIXS,*),IXS16(8,*),
59 . NSV(*),MWA(*),NELEM(*),IXS20(12,*),IXS10(6,*)
60C REAL
62 . tzinf,minbox
64 . x(3,*),eminx(6,*),xsav(3,*),v(3,*) ,a(3,*)
65C-----------------------------------------------
66C L o c a l V a r i a b l e s
67C-----------------------------------------------
68C
69 INTEGER I, J, K, CONT,NB_N_B ,NSNF,NSNL,
70 . IP1, IP2, IP21, IP22, IP31, MAXSIZ,
71 . NE,N8,N10,N20,N16
72C-----------------------------------------------
73C S o u r c e L i n e s
74C-----------------------------------------------
75 IF (debug(3)>=1) THEN
76#include "lockon.inc"
77 WRITE(istdo,*)'** NEW SORT FOR INTERFACE NUMBER ',noint,
78 . ' AT CYCLE ',ncycle
79 WRITE(iout,*)'** NEW SORT FOR INTERFACE NUMBER ',noint,
80 . ' AT CYCLE ',ncycle
81#include "lockoff.inc"
82 ENDIF
83C-----------------------------------------------
84 nsnf = 1 + itask*nsn / nthread
85 nsnl = (itask+1)*nsn / nthread
86 DO i=nsnf,nsnl
87 j=nsv(i)
88 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
89 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
90 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
91 END DO
92 DO k=1,8
93 DO i=1+esh_t,nme+esh_t
94 j=ixs(k+1,nelem(i))
95 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
96 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
97 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
98 ENDDO
99 ENDDO
100 DO i=1+esh_t,nme+esh_t
101 ne=nelem(i)
102 n8 = ne
103 n10 = n8-numels8
104 n20 = n10-numels10
105 n16 = n20-numels20
106 IF(n16>0)THEN
107 DO k=1,8
108 j=ixs16(k,n16)
109 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
110 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
111 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
112 ENDDO
113 ELSEIF(n20>0)THEN
114 DO k=1,12
115 j=ixs20(k,n20)
116 IF(j/=0)THEN
117 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
118 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
119 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
120 ENDIF
121 ENDDO
122 ELSEIF(n10>0)THEN
123 DO k=1,6
124 j=ixs10(k,n10)
125 xsav(1,j) = x(1,j)+dt2*(v(1,j)+dt12*a(1,j))
126 xsav(2,j) = x(2,j)+dt2*(v(2,j)+dt12*a(2,j))
127 xsav(3,j) = x(3,j)+dt2*(v(3,j)+dt12*a(3,j))
128 ENDDO
129 ENDIF
130 ENDDO
131C-----------------------------------------------
132 nb_n_b = 1
133C End initialization
134C-----------------------------------------------
135C
136C-----2- sorting by boxes of elements and nodes
137C
138C-----------------------------------------------
139C if there is not enough memory for the stacks, we restart the sorting
140C by incrementing nb_n_b (number of nodes per finished box)
141C POINTEUR NOM TAILLE
142C P0........ NSN + 3
143C P1........Elt Bas Pile NME
144C P2........Elt PILE 2*NME
145C P21.......BPN NSN
146C P22.......PN NSN
147 maxsiz = 3*(nme+100)
148 ip1 = 1
149 ip2 = ip1+nme+100
150 ip21= ip2+maxsiz
151 ip22= ip21+nsn
152 ip31= ip22+nsn
153C-----------------------------------------------
154C new sorting phase
155C-----------------------------------------------
156 cont = 1
157C-----------------------------------------------
158C loop over retris
159C-----------------------------------------------
160 DO WHILE (cont/=0)
161 CALL i16tri(
162 1 mwa(ip1),mwa(ip2) ,mwa(ip21),mwa(ip22),nsn ,
163 2 tzinf ,ixs ,ixs16 ,ixs20 ,nelem ,
164 3 nsv ,maxsiz ,cand_n ,cand_e ,minbox ,
165 5 cont ,nb_n_b ,eminx ,i_stok_glob,nme ,
166 6 itask ,noint ,x ,v ,a ,
167 7 mx_cand ,ixs10 ,esh_t )
168 ENDDO
169C
170 RETURN
171 END
#define my_real
Definition cppsort.cpp:32
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 i16tri(bpe, pe, bpn, pn, nsn, tzinf, ixs, ixs16, ixs20, nelem, nsv, maxsiz, cand_n, cand_e, minbox, cont, nb_n_b, eminx, i_stok_glob, nme, itask, noint, x, v, a, mx_cand, ixs10, esh_t)
Definition i16tri.F:43