OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i15cmp.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!|| i15cmp ../engine/source/interfaces/int15/i15cmp.F
25!||--- called by ------------------------------------------------------
26!|| intfop1 ../engine/source/interfaces/interf/intfop1.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| i15ass ../engine/source/interfaces/int15/i15ass.F
31!|| i15can ../engine/source/interfaces/int15/i15can.F
32!|| i15for1 ../engine/source/interfaces/int15/i15for1.F
33!|| i15fort1 ../engine/source/interfaces/int15/i15fort1.F
34!|| i15marq ../engine/source/interfaces/int15/i15marq.F
35!|| i15tot1 ../engine/source/interfaces/int15/i15tot1.F
36!|| i15tott1 ../engine/source/interfaces/int15/i15tott1.F
37!||--- uses -----------------------------------------------------
38!|| groupdef_mod ../common_source/modules/groupdef_mod.F
39!|| h3d_mod ../engine/share/modules/h3d_mod.F
40!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
41!|| message_mod ../engine/share/message_module/message_mod.F
42!|| output_mod ../common_source/modules/output/output_mod.F90
43!||====================================================================
44 SUBROUTINE i15cmp(OUTPUT,IPARI,INTBUF_TAB,IGRSURF,BUFSF,
45 2 A, X, V, WA, FSAV,
46 3 IN, STIFN, FCONT, MS, FSKYI,
47 4 ISKY, NPC , PLD , DT2T, NELTST,
48 5 ITYPTST, ITAB,H3D_DATA)
49C-----------------------------------------------
50C M o d u l e s
51C-----------------------------------------------
52 USE output_mod, ONLY : output_
53 USE message_mod
54 USE intbufdef_mod
55 USE h3d_mod
56 USE groupdef_mod
57C-----------------------------------------------
58C I m p l i c i t T y p e s
59C-----------------------------------------------
60#include "implicit_f.inc"
61C-----------------------------------------------
62C G l o b a l P a r a m e t e r s
63C-----------------------------------------------
64#include "mvsiz_p.inc"
65C-----------------------------------------------
66C C o m m o n B l o c k s
67C-----------------------------------------------
68#include "com01_c.inc"
69#include "com04_c.inc"
70#include "param_c.inc"
71#include "parit_c.inc"
72C-----------------------------------------------------------------
73C D u m m y A r g u m e n t s
74C-----------------------------------------------
75 TYPE(output_), INTENT(INOUT) :: OUTPUT
76 INTEGER IPARI(NPARI),
77 . ISKY(*), NPC(*),
78 . NELTST, ITYPTST,
79 . itab(*)
80C REAL
82 . bufsf(*) ,a(3,*) ,x(3,*) ,v(3,*) ,
83 . fsav(nthvki) ,wa(*) ,in(*) ,stifn(*) ,fcont(3,*) ,
84 . ms(*) ,fskyi(lsky,nfskyi) ,pld(*),
85 . dt2t
86
87 TYPE(INTBUF_STRUCT_) INTBUF_TAB
88 TYPE(H3D_DATABASE) :: H3D_DATA
89 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
90C-----------------------------------------------
91C L o c a l V a r i a b l e s
92C-----------------------------------------------
93 INTEGER NOINT,N,K,NRTS,NSN,INOD
94 INTEGER I,NDEB,NREST, NSC, NTC, NNC, MAXFCT
95 INTEGER KSC, KTC, KNC, KMARQND, KWNF, KWTF, KWNS, KWLENG
96C-----------------------------------------------
97C REAL
99 . stfac, fric, stf,
100 . xp1(3,mvsiz) ,xp2(3,mvsiz) ,xp3(3,mvsiz) , xp4(3,mvsiz),
101 . gx(3,mvsiz) ,xtk(4,mvsiz) ,ytk(4,mvsiz) ,ztk(4,mvsiz) ,
102 . ntx(4,mvsiz) ,nty(4,mvsiz) ,ntz(4,mvsiz) ,
103 . ans(4,mvsiz) ,depth(4,mvsiz),
104 . xi(4,mvsiz) ,yi(4,mvsiz) ,zi(4,mvsiz) ,
105 . nxi(4,mvsiz) ,nyi(4,mvsiz) ,nzi(4,mvsiz) ,
106 . de, ansmx, ftot,
107 . fnormx,fnormy,fnormz,ftangx,ftangy,ftangz
108C-----------------------------------------------
109 noint=ipari(15)
110C-----------------------------------------------
111C Vecteurs de travail (nbre maximum de facettes).
112 maxfct=6*numels+numelc+numeltg
113 ksc =1
114 ktc =maxfct +ksc
115 knc =maxfct +ktc
116 kmarqnd=knc +numnod
117 kwnf =kmarqnd+numnod
118 kwtf =kwnf +3*numnod
119 kwns =kwtf +3*numnod
120C Longueur totale des vecteurs de travail.
121 kwleng=kwns+numnod-1
122 IF (kwleng>lenwa) THEN
123 CALL ancmsg(msgid=83,anmode=aninfo)
124 CALL arret(2)
125 END IF
126C-----------------------------------------------
127 nrts =ipari(3)
128 nsn =ipari(5)
129C-----------------------------------------------
130C ELIMINATION (HEURISTIQUE).
131C-----------------------------------------------
132 CALL i15can(nrts,intbuf_tab%IRECTS,x,intbuf_tab%KSURF(1),igrsurf,
133 2 bufsf,nsc,wa(ksc),ntc,wa(ktc),
134 3 intbuf_tab%IMPACT)
135C-----------------------------------------------
136 stfac =intbuf_tab%STFAC(1)
137 fric =intbuf_tab%VARIABLES(1)
138C-----------------------------------------------
139 ansmx =zero
140 de =zero
141C-----
142 ftangx=zero
143 ftangy=zero
144 ftangz=zero
145 fnormx=zero
146 fnormy=zero
147 fnormz=zero
148C-----------------------------------------------
149#include "vectorize.inc"
150 DO i=1,nsn
151 inod=intbuf_tab%NSV(i)
152 wa(kwnf+3*(inod-1)) =zero
153 wa(kwnf+3*(inod-1)+1)=zero
154 wa(kwnf+3*(inod-1)+2)=zero
155 wa(kwtf+3*(inod-1)) =zero
156 wa(kwtf+3*(inod-1)+1)=zero
157 wa(kwtf+3*(inod-1)+2)=zero
158 wa(kwns+inod-1)=zero
159 ENDDO
160C-----------------------------------------------
161C QUADRANGLES.
162C-----------------------------------------------
163 ndeb =0
164 10 CONTINUE
165 CALL i15tot1(noint ,ndeb, nsc,x ,intbuf_tab%KSURF(1) ,
166 2 igrsurf ,bufsf ,wa(ksc) ,intbuf_tab%IRECTS ,intbuf_tab%NOLD,
167 3 xp1 ,xp2 ,xp3 ,xp4 ,gx ,
168 4 xtk ,ytk ,ztk ,ntx ,nty ,
169 5 ntz ,ans ,depth ,xi ,yi ,
170 6 zi ,nxi ,nyi ,nzi ,ansmx ,
171 7 intbuf_tab%HOLD ,intbuf_tab%IMPACT ,itab )
172 CALL i15for1(ndeb, nsc, stfac,x ,v ,
173 2 intbuf_tab%KSURF ,igrsurf ,bufsf ,wa(ksc) ,intbuf_tab%IRECTS,
174 3 intbuf_tab%IMPACT,intbuf_tab%IOLD ,intbuf_tab%HOLD ,intbuf_tab%NOLD ,
175 4 intbuf_tab%DOLD ,xp1 ,xp2 ,xp3 ,xp4 ,gx ,
176 5 xtk ,ytk ,ztk ,ntx ,nty ,
177 6 ntz ,ans ,depth ,xi ,yi ,
178 7 zi ,nxi ,nyi ,nzi ,ms ,
179 8 de ,npc ,pld ,wa(kwnf) ,wa(kwtf) ,
180 9 wa(kwns) ,fnormx,fnormy,fnormz,ftangx,
181 a ftangy,ftangz ,dt2t ,noint ,neltst ,
182 b ityptst ,fric )
183 ndeb=ndeb+mvsiz
184 IF (ndeb<nsc) GOTO 10
185C-----------------------------------------------
186C TRIANGLES.
187C-----------------------------------------------
188 ndeb =0
189 20 CONTINUE
190 CALL i15tott1(noint ,ndeb, ntc,x ,intbuf_tab%KSURF(1) ,
191 2 igrsurf ,bufsf ,wa(ktc) ,intbuf_tab%IRECTS ,intbuf_tab%NOLD ,
192 3 xp1 ,xp2 ,xp3 ,xtk ,ytk ,
193 4 ztk ,ntx ,nty ,ntz ,ans ,
194 5 depth ,xi ,yi ,zi ,nxi ,
195 6 nyi ,nzi ,ansmx ,intbuf_tab%HOLD ,intbuf_tab%IMPACT ,
196 7 itab )
197 CALL i15fort1(ndeb, ntc, stfac,x ,v ,
198 2 intbuf_tab%KSURF(1) ,igrsurf ,bufsf ,wa(ktc) ,intbuf_tab%IRECTS,
199 3 intbuf_tab%IMPACT,intbuf_tab%IOLD ,intbuf_tab%HOLD ,intbuf_tab%NOLD,
200 4 intbuf_tab%DOLD ,xp1 ,xp2 ,xp3 ,xtk ,ytk ,
201 5 ztk ,ntx ,nty ,ntz ,ans ,
202 6 depth ,xi ,yi ,zi ,nxi ,
203 7 nyi ,nzi ,ms ,de ,npc ,
204 8 pld ,wa(kwnf) ,wa(kwtf) ,wa(kwns) ,fnormx,
205 9 fnormy,fnormz,ftangx,ftangy,ftangz ,
206 a dt2t ,noint , neltst ,ityptst ,fric )
207 ndeb=ndeb+mvsiz
208 IF (ndeb<ntc) GOTO 20
209C------
210C MARQUE LES NOEUDS / F<>0.
211C------
212 CALL i15marq(intbuf_tab%IRECTS,nsc,wa(ksc),ntc,wa(ktc),
213 2 intbuf_tab%IMPACT,nsn,intbuf_tab%NSV,wa(kmarqnd),nnc,
214 3 wa(knc))
215C-----------------------------------------------
216C RETURN TO GLOBAL VECTORS.
217C-----------------------------------------------
218 CALL i15ass(output,a ,x ,v ,intbuf_tab%KSURF ,igrsurf ,
219 2 bufsf ,stifn ,fsav ,fcont ,fskyi ,
220 3 isky ,de ,wa(kwnf) ,wa(kwtf) ,wa(kwns) ,
221 4 fnormx ,fnormy ,fnormz ,ftangx ,ftangy ,
222 5 ftangz ,nnc ,wa(knc),h3d_data )
223C-----------------------------------------------
224 intbuf_tab%VARIABLES(9)=de
225C-----------------------------------------------
2269999 CONTINUE
227 RETURN
228 END
#define my_real
Definition cppsort.cpp:32
subroutine i15ass(output, af, x, v, ksurf, igrsurf, bufsf, stifn, fs, fcont, fskyi, isky, de, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, nnc, knc, h3d_data)
Definition i15ass.F:38
subroutine i15can(nsi, ksi, x, ksurf, igrsurf, bufsf, nsc, ksc, ntc, ktc, iactiv)
Definition i15can.F:33
subroutine i15cmp(output, ipari, intbuf_tab, igrsurf, bufsf, a, x, v, wa, fsav, in, stifn, fcont, ms, fskyi, isky, npc, pld, dt2t, neltst, ityptst, itab, h3d_data)
Definition i15cmp.F:49
subroutine i15for1(ndeb, nsc, stfac, x, v, ksurf, igrsurf, bufsf, ksc, ksi, iactiv, iold, hold, nold, dold, xp1, xp2, xp3, xp4, gx, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ms, de, npc, pld, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, dt2t, noint, neltst, ityptst, vfric)
Definition i15for1.F:41
subroutine i15fort1(ndeb, ntc, stfac, x, v, ksurf, igrsurf, bufsf, ktc, ksi, iactiv, iold, hold, nold, dold, xp1, xp2, xp3, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ms, de, npc, pld, wnf, wtf, wns, fnormx, fnormy, fnormz, ftangx, ftangy, ftangz, dt2t, noint, neltst, ityptst, vfric)
Definition i15fort1.F:40
subroutine i15marq(ksi, nsc, ksc, ntc, ktc, iactiv, nsn, ksn, imarqnd, nnc, knc)
Definition i15marq.F:31
subroutine i15tot1(noint, ndeb, nsc, x, ksurf, igrsurf, bufsf, ksc, ksi, nold, xp1, xp2, xp3, xp4, gx, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ansmx, hold, iactiv, itab)
Definition i15tot1.F:37
subroutine i15tott1(noint, ndeb, ntc, x, ksurf, igrsurf, bufsf, ktc, ksi, nold, xp1, xp2, xp3, xtk, ytk, ztk, ntx, nty, ntz, penet, depth, xi, yi, zi, nxi, nyi, nzi, ansmx, hold, iactiv, itab)
Definition i15tott1.F:37
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine arret(nn)
Definition arret.F:87