OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
find_newknot.F File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine find_newknot (iel, kxig3d, knot, dir, iad_knot, nknot1, nknot2, nknot3, idcut, newknot)
subroutine find_neighbourknot (idneighbour, kxig3d, tab_oldidcut, idnbcut, dir, idcut_voisin)

Function/Subroutine Documentation

◆ find_neighbourknot()

subroutine find_neighbourknot ( integer idneighbour,
integer, dimension(nixig3d,*) kxig3d,
integer, dimension(3,*) tab_oldidcut,
integer idnbcut,
integer dir,
integer idcut_voisin )

Definition at line 138 of file find_newknot.F.

139C-----------------------------------------------
140C I m p l i c i t T y p e s
141C-----------------------------------------------
142#include "implicit_f.inc"
143C-----------------------------------------------
144C C o m m o n B l o c k s
145C-----------------------------------------------
146#include "param_c.inc"
147C-----------------------------------------------
148C D u m m y A r g u m e n t s
149C-----------------------------------------------
150 INTEGER KXIG3D(NIXIG3D,*),TAB_OLDIDCUT(3,*)
151 INTEGER IDNEIGHBOUR,IDNBCUT,IDCUT_VOISIN,DIR
152C=======================================================================
153C----------------------------------------------------------
154C ELEMENT ISO GEOMETRIQUE
155C-----------------------------------------------
156C KXIG3D(6,*) : index of 1st knot in the Xknot vector corresponding to the element
157C KXIG3D(7,*) : index of 1st knot in the Yknot vector corresponding to the element
158C KXIG3D(8,*) : index of 1st knot in the Zknot vector corresponding to the element
159C KXIG3D(9,*) : index of 2nd knot in the Xknot vector corresponding to the element
160C KXIG3D(10,*) : index of 2nd knot in the Yknot vector corresponding to the element
161C KXIG3D(11,*) : index of 2nd knot in the Zknot vector corresponding to the element
162C KXIG3D(12,*) : number of element's cuts needed in the X direction
163C KXIG3D(13,*) : number of element's cuts needed in the Y direction
164C KXIG3D(14,*) : number of element's cuts needed in the Z direction
165C=======================================================================
166C
167
168cc LES ID VOISINS NE CORRESPONDENT PAS AU INITIAL CUT
169
170 IF(kxig3d(idnbcut,idneighbour)==1) THEN
171 idcut_voisin = 0
172 ELSE
173 idcut_voisin = tab_oldidcut(dir,idneighbour)-kxig3d(idnbcut,idneighbour)+1
174 ENDIF
175C
176C
177 RETURN

◆ find_newknot()

subroutine find_newknot ( integer iel,
integer, dimension(nixig3d,*) kxig3d,
knot,
integer dir,
integer iad_knot,
integer nknot1,
integer nknot2,
integer nknot3,
integer idcut,
newknot )

Definition at line 28 of file find_newknot.F.

30C----------------------------------------------------------------------
31C ROUTINE QUI RENVOIE EN FONCTION DU NUMERO DE LA COUPE D'ELEMENT
32C A REALISER LE KNOT CORRESPONDANT A INSERER
33C----------------------------------------------------------------------
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "param_c.inc"
42C-----------------------------------------------
43C D u m m y A r g u m e n t s
44C-----------------------------------------------
45 INTEGER KXIG3D(NIXIG3D,*)
46 INTEGER IEL,DIR,IDCUT,IAD_KNOT,NKNOT1,NKNOT2,NKNOT3
47 my_real knot(*),newknot
48C-----------------------------------------------
49C L o c a l V a r i a b l e s
50C-----------------------------------------------
51 INTEGER IDNBCUT,IDKNOT1,IDKNOT2
52 INTEGER OFFSET_KNOT
53C=======================================================================
54C----------------------------------------------------------
55C ELEMENT ISO GEOMETRIQUE
56C-----------------------------------------------
57C KXIG3D(6,*) : index of 1st knot in the Xknot vector corresponding to the element
58C KXIG3D(7,*) : index of 1st knot in the Yknot vector corresponding to the element
59C KXIG3D(8,*) : index of 1st knot in the Zknot vector corresponding to the element
60C KXIG3D(9,*) : index of 2nd knot in the Xknot vector corresponding to the element
61C KXIG3D(10,*) : index of 2nd knot in the Yknot vector corresponding to the element
62C KXIG3D(11,*) : index of 2nd knot in the Zknot vector corresponding to the element
63C KXIG3D(12,*) : number of element's cuts needed in the X direction
64C KXIG3D(13,*) : number of element's cuts needed in the Y direction
65C KXIG3D(14,*) : number of element's cuts needed in the Z direction
66C=======================================================================
67C----------------------------------------------------------------------
68C INITIALISATION DES VARIABLES EN FONCTION DE LA DIRECTION DE COUPE
69C----------------------------------------------------------------------
70C
71 IF(dir==1) THEN
72 idnbcut=12
73 idknot1=6 ! index of 1st knot in the Xknot vector corresponding to the element
74 idknot2=9 ! index of 2nd knot in the Xknot vector corresponding to the element
75 offset_knot = iad_knot
76 ELSEIF(dir==2) THEN
77 idnbcut=13
78 idknot1=7 ! index of 1st knot in the Yknot vector corresponding to the element
79 idknot2=10 ! index of 1st knot in the Yknot vector corresponding to the element
80 offset_knot = iad_knot + nknot1
81 ELSEIF(dir==3) THEN
82 idnbcut=14
83 idknot1=8 ! index of 1st knot in the Zknot vector corresponding to the element
84 idknot2=11 ! index of 1st knot in the Zknot vector corresponding to the element
85 offset_knot = iad_knot + nknot1 + nknot2
86 ENDIF
87C
88C----------------------------------------------------------------------
89C NE PERMET QUE LES COUPES PAR 2,4,8... (DES COUPES PAIRES), ET
90C BORNE LE NOMBRE MAXIMAL DE COUPE PAR 8
91C----------------------------------------------------------------------
92C
93 SELECT CASE (idcut)
94 CASE(1) ! COUPE AU MILIEU DE L'ELEMENT (1/2)
95
96 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
97 + (knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/2
98
99 CASE(2) ! COUPE AU PREMIER FOURTH DE L'ELEMENT (1/4)
100
101 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
102 + 1*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/4
103
104 CASE(3) ! COUPE AU DERNIER FOURTH DE L'ELEMENT (3/4)
105
106 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
107 + 3*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/4
108
109 CASE(4) ! COUPE AU PREMIER HUITIEME DE L'ELEMENT (1/8)
110
111 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
112 + 1*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/8
113
114 CASE(5) ! COUPE AU TROISIEME HUITIEME DE L'ELEMENT (3/8)
115
116 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
117 + 3*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/8
118
119 CASE(6) ! COUPE AU CINQUIEME HUITIEME DE L'ELEMENT (5/8)
120
121 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
122 + 5*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/8
123
124 CASE(7) ! COUPE AU DERNIER HUITIEME DE L'ELEMENT (7/8)
125
126 newknot=knot(offset_knot+kxig3d(idknot1,iel))+
127 + 7*(knot(offset_knot+kxig3d(idknot2,iel))-knot(offset_knot+kxig3d(idknot1,iel)))/8
128
129 END SELECT
130C
131 RETURN
#define my_real
Definition cppsort.cpp:32