OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
intti12.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!|| intti12a ../engine/source/interfaces/interf/intti12.F
25!||--- called by ------------------------------------------------------
26!|| intti0 ../engine/source/interfaces/interf/intti0.F
27!||--- calls -----------------------------------------------------
28!|| i12cor3 ../engine/source/interfaces/inter3d/i12cor3.F
29!|| i12dis3 ../engine/source/interfaces/inter3d/i12dis3.F
30!|| i12gathcor ../engine/source/interfaces/interf/i12gathcor.F
31!|| i12loc3 ../engine/source/interfaces/inter3d/i12loc3.F
32!|| i12m2s ../engine/source/interfaces/interf/i12m2s.F
33!|| i12msr3 ../engine/source/interfaces/inter3d/i12msr3.F
34!|| i12nod3 ../engine/source/interfaces/interf/i12nod3.F
35!|| i12rot3 ../engine/source/interfaces/inter3d/i12rot3.F
36!|| i12s2m ../engine/source/interfaces/interf/i12s2m.F
37!|| i3cst3 ../engine/source/interfaces/inter3d/i3cst3.F
38!|| varcondec ../engine/source/interfaces/interf/varcondec.F
39!||--- uses -----------------------------------------------------
40!|| ale_mod ../common_source/modules/ale/ale_mod.F
41!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
42!|| segvar_mod ../engine/share/modules/segvar_mod.F
43!||====================================================================
44 SUBROUTINE intti12a(IPARI, X, WA, ITAB, SEGVAR, TEST, SKEW, ISKWN ,INTBUF_TAB )
45C-----------------------------------------------
46C D e s c r i p t i o n
47C-----------------------------------------------
48C FLUID/FLUID INTERFACE DERIVATED FROM TYPE 2 & 5 (SLIDING)
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE segvar_mod
53 USE ale_mod
54 USE intbufdef_mod
55C-----------------------------------------------
56C I m p l i c i t T y p e s
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER IPARI(*),ITAB(*),TEST,ISKWN(*)
63 my_real x(*),wa(*),skew(*)
64
65 TYPE(intbuf_struct_) INTBUF_TAB
66 TYPE(t_segvar) :: SEGVAR
67C-----------------------------------------------
68C C o m m o n B l o c k s
69C-----------------------------------------------
70#include "param_c.inc"
71#include "scr06_c.inc"
72#include "units_c.inc"
73#include "mvsiz_p.inc"
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77
78 INTEGER ITIED,NOINT,NGROUS,NGROUM,NG,
79 . L1 ,L2 ,L3 ,L4,L5,L6
80 INTEGER JCODV(ALE%GLOBAL%LCONV),CODTOT,I,ITEST,ILEV,IREF,ICEN
81 INTEGER, DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
83 . gap
84 my_real, DIMENSION(MVSIZ) :: x1,x2,x3,x4,xi
85 my_real, DIMENSION(MVSIZ) :: y1,y2,y3,y4,yi
86 my_real, DIMENSION(MVSIZ) :: z1,z2,z3,z4,zi
87 my_real, DIMENSION(MVSIZ) :: xface,n1,n2,n3
88 my_real, DIMENSION(MVSIZ) :: ssc,ttc,area,thk,alp
89 my_real, DIMENSION(MVSIZ) :: x0,y0,z0,ans
90 my_real, DIMENSION(MVSIZ) :: xx1,xx2,xx3,xx4
91 my_real, DIMENSION(MVSIZ) :: yy1,yy2,yy3,yy4
92 my_real, DIMENSION(MVSIZ) :: zz1,zz2,zz3,zz4
93 my_real, DIMENSION(MVSIZ) :: xi1,xi2,xi3,xi4
94 my_real, DIMENSION(MVSIZ) :: yi1,yi2,yi3,yi4
95 my_real, DIMENSION(MVSIZ) :: zi1,zi2,zi3,zi4
96 my_real, DIMENSION(MVSIZ) :: xn1,xn2,xn3,xn4
97 my_real, DIMENSION(MVSIZ) :: yn1,yn2,yn3,yn4
98 my_real, DIMENSION(MVSIZ) :: zn1,zn2,zn3,zn4
99 my_real, DIMENSION(MVSIZ) :: xp,yp,zp
100 my_real, DIMENSION(MVSIZ) :: h1,h2,h3,h4
101 INTEGER :: NRTS, NRTM, NSN, NMN, NST, MST
102 INTEGER :: LFT, LLT, NFT
103C-----------------------------------------------
104 itest =0
105
106 nrts =ipari(3)
107 nrtm =ipari(4)
108 nsn =ipari(5)
109 nmn =ipari(6)
110 nst =ipari(8)
111 mst =ipari(9)
112 noint =ipari(15)
113 ilev=ipari(20)
114 iref=ipari(21)
115 icen=ipari(22)
116 CALL varcondec(jcodv,ipari(30),codtot)
117
118 ngrous=1+(nsn-1)/nvsiz
119 ngroum=1+(nmn-1)/nvsiz
120
121 itied=int(intbuf_tab%VARIABLES(1))
122 gap =intbuf_tab%VARIABLES(2)
123 IF(itied==0 .OR. itied==3)THEN
124 l1=1
125 l2=l1+3*nsn
126 l3=l2+3*nmn
127 CALL i12gathcor(x,wa(l1),wa(l2),nsn,nmn,intbuf_tab%NSV,intbuf_tab%MSR)
128
129 DO ng=1,ngrous
130 nft=(ng-1)*nvsiz
131 lft=1
132 llt=min0(nvsiz,nsn-nft)
133 !----------------------------------------------!
134 ! FIND NEAREST NODE !
135 !----------------------------------------------!
136 CALL i12loc3(
137 1 wa(l1), wa(l2), intbuf_tab%IRECTM,intbuf_tab%LMSR,
138 2 intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM,
139 3 lft, llt, nft)
140
141 !----------------------------------------------!
142 ! FIND MAIN SEGMENT
143 !----------------------------------------------!
144 CALL i12msr3(
145 1 wa(l1), wa(l2), intbuf_tab%IRECTM,intbuf_tab%LMSR,
146 2 intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM,
147 3 intbuf_tab%NSEGM, lft, llt, nft)
148 ENDDO
149
150 IF(ilev>0)
151 & CALL i12rot3(wa(l1),wa(l2),x,skew,iskwn,ilev,iref,icen,nsn,nmn,
152 & intbuf_tab%STFNS,intbuf_tab%STFNM)
153
154 DO ng=1,ngrous
155 nft=(ng-1)*nvsiz
156 lft=1
157 llt=min0(nvsiz,nsn-nft)
158 CALL i12cor3(
159 1 wa(l1), wa(l2), intbuf_tab%IRECTM,intbuf_tab%MSR,
160 2 intbuf_tab%IRTLM, ilev, x, intbuf_tab%STFNS,
161 3 ix1, ix2, ix3, ix4,
162 4 x1, x2, x3, x4,
163 5 xi, y1, y2, y3,
164 6 y4, yi, z1, z2,
165 7 z3, z4, zi, xface,
166 8 lft, llt, nft)
167 !-----------------------------------------------------------!
168 ! CALCUL COORDONNEES ISOPARAMETRIQUES S & T NOEUD SECONDARY !
169 !-----------------------------------------------------------!
170 CALL i3cst3(
171 1 x1, x2, x3, x4,
172 2 xi, y1, y2, y3,
173 3 y4, yi, z1, z2,
174 4 z3, z4, zi, xface,
175 5 n1, n2, n3, ssc,
176 6 ttc, x0, y0, z0,
177 7 xx1, xx2, xx3, xx4,
178 8 yy1, yy2, yy3, yy4,
179 9 zz1, zz2, zz3, zz4,
180 a xi1, xi2, xi3, xi4,
181 b yi1, yi2, yi3, yi4,
182 c zi1, zi2, zi3, zi4,
183 d xn1, xn2, xn3, xn4,
184 e yn1, yn2, yn3, yn4,
185 f zn1, zn2, zn3, zn4,
186 g area, lft, llt)
187 !-----------------------------------------------------------!
188 ! VERIFIE QUE LE NOEUD EST SUR LA FACETTE ET STOCKE S & T !
189 !-----------------------------------------------------------!
190 CALL i12dis3(
191 1 intbuf_tab%CSTS, intbuf_tab%NSV, itab, gap,
192 2 noint, itest, intbuf_tab%FCOUNT,ssc,
193 3 ttc, lft, llt, nft)
194 ENDDO
195 IF(itest>0)THEN
196 WRITE(iout,'(A,I8,A,I8,A)')
197 . ' *** WARNING INTERFACE',noint,' : ',
198 . itest,' SECONDARY NODES LIE OUTSIDE OF MAIN SEGMENT'
199 test=1
200 ENDIF
201 ENDIF !(ITIED==0 .OR. ITIED==3)
202
203 IF(codtot/=0 .AND. ale%GLOBAL%INCOMP==0 .AND. itied/=3)THEN
204 l1=1
205 l2=l1+nsn*ale%GLOBAL%NVCONV
206 l3=l2+nsn*ale%GLOBAL%NVCONV
207 l4=l3+nrtm
208 l5=l4+nmn*ale%GLOBAL%NVCONV
209 l6=l5+nmn
210 !-----------------------------------------------------------------!
211 ! ECHANGE DES INFORMATIONS ENTRE LES TWO FACES DE l'INTERFACE !
212 !-----------------------------------------------------------------!
213 ! 1- Transforme Valeurs elementaires en valeurs nodales cote second.
214 !-----------------------------------------------------------------!
215 CALL i12nod3(nrts,intbuf_tab%IELES,intbuf_tab%IRECTS,segvar,jcodv,
216 . wa(l1),intbuf_tab%FCOUNT,nsn)
217 ! 2- Valeurs MAIN -> SECONDARY
218 !-----------------------------------------------------------------!
219 CALL i12m2s(nsn ,intbuf_tab%IRECTS,intbuf_tab%IRTLM,wa(l2),nrtm,nrts,
220 . intbuf_tab%IELEM,intbuf_tab%IELES,segvar,jcodv)
221 ! 3- Valeurs Nodales SECONDARY -> MAIN
222 !-----------------------------------------------------------------!
223 CALL i12s2m(nsn,intbuf_tab%IRTLM,nrtm,jcodv,wa(l1),wa(l3),
224 . nmn,wa(l4),intbuf_tab%IRECTM,wa(l5),intbuf_tab%MSR,
225 . segvar,intbuf_tab%IELEM,noint)
226 ENDIF
227
228 RETURN
229 END
230
231!||====================================================================
232!|| intti12f ../engine/source/interfaces/interf/intti12.F
233!||--- called by ------------------------------------------------------
234!|| intti1 ../engine/source/interfaces/interf/intti1.F
235!||--- calls -----------------------------------------------------
236!|| i12for3 ../engine/source/interfaces/interf/i12for3.F
237!|| in12r ../engine/source/interfaces/interf/in12r.F
238!||--- uses -----------------------------------------------------
239!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
240!||====================================================================
241 SUBROUTINE intti12f(IPARI,INTBUF_TAB ,X ,V ,
242 . A ,MS ,ITAB ,WEIGHT,STIFN ,WA,SKEW )
243C INTERFACE FLUIDE/FLUIDE DERIVEE DES INTERFACE 2 ET 5 (SLIDING)
244C-----------------------------------------------
245C M o d u l e s
246C-----------------------------------------------
247 USE intbufdef_mod
248C-----------------------------------------------
249C I m p l i c i t T y p e s
250C-----------------------------------------------
251#include "implicit_f.inc"
252C-----------------------------------------------
253C D u m m y A r g u m e n t s
254C-----------------------------------------------
255 INTEGER IPARI(*), ITAB(*),WEIGHT(*)
256 my_real
257 . x(*), v(*), a(*), ms(*), stifn(*),wa(*),skew(*)
258
259 TYPE(intbuf_struct_) INTBUF_TAB
260C-----------------------------------------------
261C C o m m o n B l o c k s
262C-----------------------------------------------
263#include "param_c.inc"
264C-----------------------------------------------
265C L o c a l V a r i a b l e s
266C-----------------------------------------------
267 INTEGER ITIED,NOINT,NGROUS,NGROUM,NG
268 INTEGER ILEV,IREF
269 my_real
270 . gap
271 INTEGER :: NRTS, NRTM, NSN, NMN, NST, MST
272
273C-----------------------------------------------
274
275 nrts =ipari(3)
276 nrtm =ipari(4)
277 nsn =ipari(5)
278 nmn =ipari(6)
279 nst =ipari(8)
280 mst =ipari(9)
281 noint =ipari(15)
282 ilev =ipari(20)
283 iref =ipari(21)
284
285 ngrous=1+(nsn-1)/nvsiz
286 ngroum=1+(nmn-1)/nvsiz
287
288 itied=int(intbuf_tab%VARIABLES(1))
289 !-----------------------------------------------------------------!
290 ! CONDITIONS PERIODIQUES !
291 ! TRANSFORMATIONS DES ACCELERATIONS SECONDARYS !
292 !-----------------------------------------------------------------!
293 IF(itied==2)CALL in12r(a,intbuf_tab%VARIABLES(1),intbuf_tab%NSV,
294 . nsn,1,intbuf_tab%FCOUNT)
295 !-----------------------------------------------------------------!
296 ! CALCUL FORCES COTE MAIN (IDEM TYPE 2) !
297 !-----------------------------------------------------------------!
298 CALL i12for3(
299 1 nsn ,nmn ,a ,intbuf_tab%IRECTM,intbuf_tab%CSTS,
300 2 intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,ms ,weight ,
301 3 stifn ,intbuf_tab%NMAS,intbuf_tab%FCOUNT,skew ,wa ,
302 4 intbuf_tab%STFNS,intbuf_tab%STFNM,ilev,iref)
303 RETURN
304 END
305
306
307!||====================================================================
308!|| intti12v ../engine/source/interfaces/interf/intti12.F
309!||--- called by ------------------------------------------------------
310!|| intti2 ../engine/source/interfaces/interf/intti2.f
311!||--- calls -----------------------------------------------------
312!|| i12vit3 ../engine/source/interfaces/interf/i12vit3.F
313!|| in12r ../engine/source/interfaces/interf/in12r.f
314!||--- uses -----------------------------------------------------
315!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
316!||====================================================================
317 SUBROUTINE intti12v(IPARI,INTBUF_TAB ,X ,V ,
318 . A ,MS ,WEIGHT,WA,SKEW )
319C-----------------------------------------------
320C M o d u l e s
321C-----------------------------------------------
322 USE intbufdef_mod
323!-----------------------------------------------------------------!
324! INTERFACE FLUIDE/FLUIDE DERIVEE DES INTERFACE 2 ET 5 (SLIDING) !
325!-----------------------------------------------------------------!
326C-----------------------------------------------
327C I m p l i c i t T y p e s
328C-----------------------------------------------
329#include "implicit_f.inc"
330C-----------------------------------------------
331C D u m m y A r g u m e n t s
332C-----------------------------------------------
333 INTEGER IPARI(*), WEIGHT(*)
334 my_real
335 . x(*), v(*), a(*),ms(*),wa(*),skew(*)
336
337 TYPE(intbuf_struct_) INTBUF_TAB
338C-----------------------------------------------
339C C o m m o n B l o c k s
340C-----------------------------------------------
341C-----------------------------------------------
342C L o c a l V a r i a b l e s
343C-----------------------------------------------
344 INTEGER
345 . ITIED,ILEV,IREF
346 INTEGER :: NRTS, NRTM, NSN, NMN, NST, MST
347
348C-----------------------------------------------
349 nrts =ipari(3)
350 nrtm =ipari(4)
351 nsn =ipari(5)
352 nmn =ipari(6)
353 nst =ipari(8)
354 mst =ipari(9)
355 ilev =ipari(20)
356 iref =ipari(21)
357
358 itied=int(intbuf_tab%VARIABLES(1))
359 !-----------------------------------------------------------------!
360 ! BC MAIN ET IMPOSE VITESSE ET ACC COTE SECONDARY !
361 ! VITESSE DE GRILLE (CAS TIED) FAIT DS INTERF 1 !
362 !-----------------------------------------------------------------!
363 CALL i12vit3(nsn ,nmn ,
364 2 a ,intbuf_tab%IRECTM,
365 3 intbuf_tab%CSTS,intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,
366 4 v ,ms ,weight ,intbuf_tab%NMAS,intbuf_tab%FCOUNT,
367 5 skew ,wa ,intbuf_tab%STFNS,intbuf_tab%STFNM,ilev,iref)
368
369 IF(itied==2)THEN
370 CALL in12r(a,intbuf_tab%VARIABLES(1),intbuf_tab%NSV,nsn,2,intbuf_tab%FCOUNT)
371 CALL in12r(v,intbuf_tab%VARIABLES(1),intbuf_tab%NSV,nsn,2,intbuf_tab%FCOUNT)
372 ENDIF
373
374 RETURN
375 END
#define my_real
Definition cppsort.cpp:32
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i12cor3(xs, xm, irect, msr, irtl, ilev, x, tets, ix1, ix2, ix3, ix4, x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, lft, llt, nft)
Definition i12cor3.F:37
subroutine i12dis3(crst, nsv, itab, gap, noint, itest, tagkine, ssc, ttc, lft, llt, nft)
Definition i12dis3.F:32
subroutine i12for3(nsn, nmn, a, irect, crst, msr, nsv, irtl, ms, weight, stifn, mmass, tagkine, skew, wa, tets, tetm, ilev, iref)
Definition i12for3.F:34
subroutine i12gathcor(x, xs, xm, nsn, nmn, nsv, msr)
Definition i12gathcor.F:29
subroutine i12loc3(xs, xm, irect, lmsr, msr, nsv, iloc, nseg, lft, llt, nft)
Definition i12loc3.F:32
subroutine i12m2s(nsn, irects, irtl, nodvar, nrtm, nrts, isegm, isegs, segvar, jcodv)
Definition i12m2s.F:33
subroutine i12msr3(xs, xm, irect, lmsr, msr, nsv, iloc, irtl, nseg, lft, llt, nft)
Definition i12msr3.F:34
subroutine i12nod3(nrt, iseg, irect, segvar, jcodv, nodvar, fcount, nsn)
Definition i12nod3.F:33
subroutine i12rot3(xs, xm, x, skew, iskwn, ilev, iref, icen, nsn, nmn, tets, tetm)
Definition i12rot3.F:30
subroutine i12s2m(nsn, irtl, nrtm, jcodv, nodvars, mcount, nmn, nodvarm, irectm, ncount, msr, segvar, isegm, noint)
Definition i12s2m.F:34
subroutine i12vit3(nsn, nmn, a, irect, crst, msr, nsv, irtl, v, ms, weight, mmass, tagkine, skew, wa, tets, tetm, ilev, iref)
Definition i12vit3.F:33
subroutine i3cst3(x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, n1, n2, n3, ssc, ttc, x0, y0, z0, xx1, xx2, xx3, xx4, yy1, yy2, yy3, yy4, zz1, zz2, zz3, zz4, xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4, zi1, zi2, zi3, zi4, xn1, xn2, xn3, xn4, yn1, yn2, yn3, yn4, zn1, zn2, zn3, zn4, area, lft, llt)
Definition i3cst3.F:50
subroutine intti12v(ipari, intbuf_tab, x, v, a, ms, weight, wa, skew)
Definition intti12.F:319
subroutine intti12f(ipari, intbuf_tab, x, v, a, ms, itab, weight, stifn, wa, skew)
Definition intti12.F:243
subroutine intti12a(ipari, x, wa, itab, segvar, test, skew, iskwn, intbuf_tab)
Definition intti12.F:45
subroutine intti2(ipari, x, v, a, vr, ar, khie, ms, in, weight, wa, skew, intbuf_tab)
Definition intti2.F:37
subroutine in12r(x, frigap, nsv, nsn, flag)
Definition in12r.F:30
subroutine varcondec(icodv, varconv, codtot)
Definition varcondec.F:33