OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
h3d_sol_skin_ixskin.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!|| h3d_sol_skin_ixskin ../engine/source/output/h3d/h3d_results/h3d_sol_skin_ixskin.F
25!||--- called by ------------------------------------------------------
26!|| h3d_skin_ixskin ../engine/source/output/h3d/h3d_results/h3d_skin_ixskin.F
27!|| h3d_sol_skin_tensor ../engine/source/output/h3d/h3d_results/h3d_sol_skin_tensor.F
28!||--- calls -----------------------------------------------------
29!|| initbuf ../engine/share/resol/initbuf.F
30!||--- uses -----------------------------------------------------
31!|| elbufdef_mod ../common_source/modules/mat_elem/elbufdef_mod.F90
32!|| element_mod ../common_source/modules/elements/element_mod.F90
33!|| initbuf_mod ../engine/share/resol/initbuf.F
34!||====================================================================
35 SUBROUTINE h3d_sol_skin_ixskin(ELBUF_TAB,IPARG,IPARTS,IXS,IXS10,
36 . IXSKIN ,TAG_SKINS6,NSKIN )
37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE initbuf_mod
41 USE elbufdef_mod
42 use element_mod , only : nixs,nixq
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "mvsiz_p.inc"
51#include "com01_c.inc"
52#include "com04_c.inc"
53#include "param_c.inc"
54C-----------------------------------------------
55C D u m m y A r g u m e n t s
56C-----------------------------------------------
57C REAL
58 INTEGER IPARG(NPARG,*),IXS(NIXS,*),IPARTS(*),IXSKIN(NIXQ,*),
59 . ixs10(6,*) ,tag_skins6(*) ,nskin
60 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
61C-----------------------------------------------
62C L o c a l V a r i a b l e s
63C-----------------------------------------------
64 INTEGER I,ISOLNOD,ICS,NG,N,J
65 INTEGER
66 . mlw ,nel ,nft ,iad ,ity ,
67 . npt ,jale ,ismstr ,jeul ,jtur ,
68 . jthe ,jlag ,jmult ,jhbe ,jivf ,
69 . nvaux ,jpor ,kcvt ,jclose ,jplasol ,
70 . irep ,iint ,igtyp ,israt ,isrot ,
71 . icsen ,isorth ,isorthg ,ifailure,jsms ,
72 . nn,nn1,n1
73 INTEGER NC(10,MVSIZ),PWR(7),LL
74 INTEGER FACES(4,6),NS(4),JJ,II,K1,K2,T3(3),T6(6),TIA4S(3,4)
75 DATA pwr/1,2,4,8,16,32,64/
76 DATA faces/4,3,2,1,
77 . 5,6,7,8,
78 . 1,2,6,5,
79 . 3,4,8,7,
80 . 2,3,7,6,
81 . 1,5,8,4/
82 DATA tia4s/3,5,6,
83 . 2,4,5,
84 . 1,6,4,
85 . 4,6,5/
86C----tetra4:-------------------------------------------
87c N8=N4 FACES : 2 2 1 1
88c N7=N3 4 3 3 4
89c N6=N3 1 1 3 4
90c N5=N4 2 2 4 3
91c N4=N2 1 2 3 3
92c N3=N2 1 4 4 2
93c N2=N1
94c N1=N1
95C
96 DO ng=1,ngroup
97 CALL initbuf(iparg ,ng ,
98 2 mlw ,nel ,nft ,iad ,ity ,
99 3 npt ,jale ,ismstr ,jeul ,jtur ,
100 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
101 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
102 6 irep ,iint ,igtyp ,israt ,isrot ,
103 7 icsen ,isorth ,isorthg ,ifailure,jsms )
104!
105 IF(mlw == 13 .OR. mlw == 0.OR.ity /= 1) cycle
106C------
107 IF (igtyp==6 .OR. igtyp==14 ) THEN
108 isolnod = iparg(28,ng)
109 ics = iparg(17,ng)
110 IF(isolnod == 4)THEN
111 DO i=1,nel
112 n = i + nft
113 nc(1,i)=ixs(2,n)
114 nc(2,i)=ixs(4,n)
115 nc(3,i)=ixs(7,n)
116 nc(4,i)=ixs(6,n)
117 ENDDO
118C---------each face
119 DO i=1,nel
120 n = i + nft
121 ll=tag_skins6(n)
122 jj = 5
123 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
124C---------3,2,1
125 nskin = nskin + 1
126 ixskin(1,nskin) = iparts(n)
127 ixskin(2,nskin) = nc(3,i)
128 ixskin(3,nskin) = nc(2,i)
129 ixskin(4,nskin) = nc(1,i)
130 ixskin(5,nskin) = ixskin(4,nskin)
131 ixskin(6,nskin) = ixs(nixs-1,n)
132 ixskin(7,nskin) = nskin
133 END IF
134C---------2,3 ,4
135 jj = 4
136 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
137 nskin = nskin + 1
138 ixskin(1,nskin) = iparts(n)
139 ixskin(2,nskin) = nc(2,i)
140 ixskin(3,nskin) = nc(3,i)
141 ixskin(4,nskin) = nc(4,i)
142 ixskin(5,nskin) = ixskin(4,nskin)
143 ixskin(6,nskin) = ixs(nixs-1,n)
144 ixskin(7,nskin) = nskin
145 END IF
146C---------1,4,3
147 jj = 3
148 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
149 nskin = nskin + 1
150 ixskin(1,nskin) = iparts(n)
151 ixskin(2,nskin) = nc(1,i)
152 ixskin(3,nskin) = nc(4,i)
153 ixskin(4,nskin) = nc(3,i)
154 ixskin(5,nskin) = ixskin(4,nskin)
155 ixskin(6,nskin) = ixs(nixs-1,n)
156 ixskin(7,nskin) = nskin
157 END IF
158C---------1,2,4
159 jj = 6
160 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
161 nskin = nskin + 1
162 ixskin(1,nskin) = iparts(n)
163 ixskin(2,nskin) = nc(1,i)
164 ixskin(3,nskin) = nc(2,i)
165 ixskin(4,nskin) = nc(4,i)
166 ixskin(5,nskin) = ixskin(4,nskin)
167 ixskin(6,nskin) = ixs(nixs-1,n)
168 ixskin(7,nskin) = nskin
169 END IF
170 ENDDO
171 ELSEIF(isolnod == 6)THEN
172 ELSEIF(isolnod == 10)THEN
173 DO i=1,nel
174 n = i + nft
175 nc(1,i)=ixs(2,n)
176 nc(2,i)=ixs(4,n)
177 nc(3,i)=ixs(7,n)
178 nc(4,i)=ixs(6,n)
179 nn1 = n - numels8
180 nc(5:10,i) = ixs10(1:6,nn1)
181 ENDDO
182C---------each face 4x4
183 DO i=1,nel
184 n = i + nft
185 ll=tag_skins6(n)
186C---------1,2,3
187 jj = 5
188 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
189 t6(1:3) = nc(1:3,i)
190 t6(4:6) = nc(5:7,i)
191 DO j=1,4
192 nskin = nskin + 1
193 ixskin(1,nskin) = iparts(n)
194 t3(1:3) = t6(tia4s(1:3,j))
195 ixskin(2:4,nskin) = t3(1:3)
196 ixskin(5,nskin) = ixskin(4,nskin)
197 ixskin(6,nskin) = ixs(nixs-1,n)
198 ixskin(7,nskin) = nskin
199 END DO
200 END IF
201C---------2,3 ,4
202 jj = 4
203 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
204 t6(1:3) = nc(2:4,i)
205 t6(4) = nc(6,i)
206 t6(5) = nc(10,i)
207 t6(6) = nc(9,i)
208 DO j=1,4
209 nskin = nskin + 1
210 ixskin(1,nskin) = iparts(n)
211 t3(1:3) = t6(tia4s(1:3,j))
212 ixskin(2:4,nskin) = t3(1:3)
213 ixskin(5,nskin) = ixskin(4,nskin)
214 ixskin(6,nskin) = ixs(nixs-1,n)
215 ixskin(7,nskin) = nskin
216 END DO
217 END IF
218C---------1,4,3
219 jj = 3
220 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
221 t6(1) = nc(3,i)
222 t6(2) = nc(1,i)
223 t6(3) = nc(4,i)
224 t6(4) = nc(7,i)
225 t6(5) = nc(8,i)
226 t6(6) = nc(10,i)
227 DO j=1,4
228 nskin = nskin + 1
229 ixskin(1,nskin) = iparts(n)
230 t3(1:3) = t6(tia4s(1:3,j))
231 ixskin(2:4,nskin) = t3(1:3)
232 ixskin(5,nskin) = ixskin(4,nskin)
233 ixskin(6,nskin) = ixs(nixs-1,n)
234 ixskin(7,nskin) = nskin
235 END DO
236 END IF
237C---------1,2,4
238 jj = 6
239 IF(mod(ll,pwr(jj+1))/pwr(jj) == 0) THEN
240 t6(1:2) = nc(1:2,i)
241 t6(3) = nc(4,i)
242 t6(4) = nc(5,i)
243 t6(5) = nc(9,i)
244 t6(6) = nc(8,i)
245 DO j=1,4
246 nskin = nskin + 1
247 ixskin(1,nskin) = iparts(n)
248 t3(1:3) = t6(tia4s(1:3,j))
249 ixskin(2:4,nskin) = t3(1:3)
250 ixskin(5,nskin) = ixskin(4,nskin)
251 ixskin(6,nskin) = ixs(nixs-1,n)
252 ixskin(7,nskin) = nskin
253 END DO
254 END IF
255 ENDDO
256C-----------S8 (&degenerated),S20
257 ELSE
258 DO i=1,nel
259 n = i + nft
260 nc(1:8,i) = ixs(2:9,n)
261 ll=tag_skins6(n)
262C--------per face :
263 DO jj=1,6
264 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
265 DO ii=1,4
266 ns(ii)=nc(faces(ii,jj),i)
267 END DO
268C---------for degenerated cases
269 DO k1=1,3
270 DO k2=k1+1,4
271 IF(ns(k2)==ns(k1))ns(k2)=0
272 END DO
273 END DO
274 nn=0
275 DO k1=1,4
276 n1=ns(k1)
277 IF(n1/=0)THEN
278 nn=nn+1
279 ns(nn)= n1
280 END IF
281 END DO
282 IF (nn>2) THEN
283 nskin = nskin + 1
284 ixskin(1,nskin) = iparts(n)
285 ixskin(2:4,nskin) = ns(1:3)
286 IF (nn > 3) THEN
287 ixskin(5,nskin) = ns(4)
288 ELSE
289 ixskin(5,nskin) = ixskin(4,nskin)
290 END IF
291 ixskin(6,nskin) = ixs(nixs-1,n)
292 ixskin(7,nskin) = nskin
293 END IF
294 ENDDO
295 ENDDO
296 ENDIF
297 ENDIF !IF (IGTYP==
298 END DO ! NG=1,NGROUP
299C-----------
300 RETURN
301 END
subroutine h3d_sol_skin_ixskin(elbuf_tab, iparg, iparts, ixs, ixs10, ixskin, tag_skins6, nskin)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
Definition initbuf.F:261