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

Go to the source code of this file.

Functions/Subroutines

subroutine ig3donebasis (itel, n, xxi, yyi, zzi, wwi, idx, idy, idz, knotlocx, knotlocy, knotlocz, r, nctrl, gaussx, gaussy, gaussz, kx, ky, kz, px, py, pz, boolg, idx2, idy2, idz2, knotlocelx, knotlocely, knotlocelz)

Function/Subroutine Documentation

◆ ig3donebasis()

subroutine ig3donebasis ( integer itel,
integer n,
xxi,
yyi,
zzi,
wwi,
integer idx,
integer idy,
integer idz,
knotlocx,
knotlocy,
knotlocz,
r,
integer nctrl,
gaussx,
gaussy,
gaussz,
kx,
ky,
kz,
integer px,
integer py,
integer pz,
integer boolg,
integer idx2,
integer idy2,
integer idz2,
knotlocelx,
knotlocely,
knotlocelz )

Definition at line 34 of file ig3donebasis.F.

44C--------------------------------------------------------------------------------------------------------
45C
46C This subroutine calculates the vector of local shape functions R and an array of their derivatives dR.dx
47C The Jacobian determinant J may be returned to if it's necessary
48C This subroutine is called by ig3dinit3 for every LR or Truncated element
49C
50C--------------------------------------------------------------------------------------------------------
51C VAR | SIZE | TYP | RW | DEFINITION
52C--------------------------------------------------------------------------------------------------------
53C ITEL | 1 | I | R | ELEMENT ID
54C N | 1 | I | R | GAUSS POINT ID
55C XXI | NCTRL | F | R | X COORDINATE of ELEMENT I CONTROL POINTS in global frame
56C YYI | NCTRL | F | R | Y COORDINATE of ELEMENT I CONTROL POINTS in global frame
57C ZZI | NCTRL | F | R | Z COORDINATE of ELEMENT I CONTROL POINTS in global frame
58C WWI | NCTRL | F | R | WEIGHT OF ELEMENT I CONTROL POINTS
59C IDX | 1 | I | R | ELEMENT FIRST INDEX IN KNOT VECTOR IN X DIRECTION
60C IDY | 1 | I | R | ELEMENT FIRST INDEX IN KNOT VECTOR IN Y DIRECTION
61C IDZ | 1 | I | R | ELEMENT FIRST INDEX IN KNOT VECTOR IN Z DIRECTION
62C IDX2 | 1 | I | R | ELEMENT LAST INDEX IN KNOT VECTOR IN X DIRECTION
63C IDY2 | 1 | I | R | ELEMENT LAST INDEX IN KNOT VECTOR IN Y DIRECTION
64C IDZ2 | 1 | I | R | ELEMENT LAST INDEX IN KNOT VECTOR IN Z DIRECTION
65C R | NCTRL | F | W | ARRAY OF TRIVIATE NURBS BASIS FUNCTION
66C GAUSSX | 1 | F | R | COORDINATES IN DIRECTION X OF GAUSS POINT
67C GAUSSY | 1 | F | R | COORDINATES IN DIRECTION Y OF GAUSS POINT
68C GAUSSZ | 1 | F | R | COORDINATES IN DIRECTION Z OF GAUSS POINT
69C NCTRL | 1 | I | R | NUMBER OF ELEMENT CONTROL POINTS IN CURRENT GROUP
70C PX | 1 | I | R | POLYNOMIAL INTERPOLATION DEGREE IN X DIRECTION
71C PY | 1 | I | R | POLYNOMIAL INTERPOLATION DEGREE IN Y DIRECTION
72C PZ | 1 | I | R | POLYNOMIAL INTERPOLATION DEGREE IN Z DIRECTION
73C KX | NKX | F | R | (FULL) KNOT VECTOR IN X DIRECTION FOR THE CURRENT PATCH
74C KY | NKY | F | R | (FULL) KNOT VECTOR IN Y DIRECTION FOR THE CURRENT PATCH
75C KZ | NKZ | F | R | (FULL) KNOT VECTOR IN Z DIRECTION FOR THE CURRENT PATCH
76C KNOTLOCX | PX+2,NCTRL | F | R | LOCAL KNOT VECTOR IN X DIRECTION FOR EACH CONTROL POINT
77C KNOTLOCY | PY+2,NCTRL | F | R | LOCAL KNOT VECTOR IN Y DIRECTION FOR EACH CONTROL POINT
78C KNOTLOCZ | PZ+2,NCTRL | F | R | LOCAL KNOT VECTOR IN Z DIRECTION FOR EACH CONTROL POINT
79C-----------------------------------------------
80C M o d u l e s
81C-----------------------------------------------
82 USE message_mod
83C-----------------------------------------------
84C I m p l i c i t T y p e s
85C-----------------------------------------------
86#include "implicit_f.inc"
87C-----------------------------------------------
88C D u m m y A r g u m e n t s
89C-----------------------------------------------
90 INTEGER IDX, IDY, IDZ, NCTRL, PX, PY, PZ,
91 . ITEL, N, BOOLG,IDX2, IDY2, IDZ2
93 . gaussx, gaussy, gaussz,
94 . r(*),xxi(*),yyi(*),zzi(*),
95 . wwi(*),kx(*), ky(*), kz(*), knotlocx(px+2,nctrl),
96 . knotlocy(py+2,nctrl),knotlocz(pz+2,nctrl),knotlocelx(2),
97 . knotlocely(2),knotlocelz(2)
98C-----------------------------------------------
99C L o c a l V a r i a b l e s
100C-----------------------------------------------
101 INTEGER NUMLOC, I, J, K, NA, NB, NC
102 my_real
103 . sumtot, fn(nctrl), fm(nctrl), fl(nctrl),
104 . xi(3)
105C=======================================================================
106C S o u r c e L i n e s
107C=======================================================================
108C
109 IF (boolg == 1) THEN
110C CALCULATE PARAMETRIC COORDINATES OF THE GAUSS POINT FROM PARENT ELEMENT COORDINATES, FOR THE THREE DIRECTIONS
111 xi(1) = ((knotlocelx(2)-knotlocelx(1))*gaussx + (knotlocelx(2)+(knotlocelx(1))))/two
112 xi(2) = ((knotlocely(2)-knotlocely(1))*gaussy + (knotlocely(2)+(knotlocely(1))))/two
113 xi(3) = ((knotlocelz(2)-knotlocelz(1))*gaussz + (knotlocelz(2)+(knotlocelz(1))))/two
114c XI(1) = ((KX(IDX2)-KX(IDX))*GAUSSX + (KX(IDX2)+(KX(IDX))))/TWO
115c XI(2) = ((KY(IDY2)-KY(IDY))*GAUSSY + (KY(IDY2)+(KY(IDY))))/TWO
116c XI(3) = ((KZ(IDZ2)-KZ(IDZ))*GAUSSZ + (KZ(IDZ2)+(KZ(IDZ))))/TWO
117 ELSE
118C SI ON A EN ENTREE DES POINTS DEJA DANS LE REPERE PARAMETRIQUE ON N'A PAS BESOIN DE LES BASCULER DE L'ESPACE PARENT A L'ESPACE PARAMETRIQUE
119 xi(1) = gaussx
120 xi(2) = gaussy
121 xi(3) = gaussz
122 ENDIF
123
124C CALCULATE B-SPLINE FUNCTION AT XI POINT
125
126c DO NUMLOC=1,NCTRL
127c CALL ONEBASISFUN(1, PX, XI(1), KNOTLOCX(:,NUMLOC), FN(NUMLOC))
128c CALL ONEBASISFUN(1, PY, XI(2), KNOTLOCY(:,NUMLOC), FM(NUMLOC))
129c CALL ONEBASISFUN(1, PZ, XI(3), KNOTLOCZ(:,NUMLOC), FL(NUMLOC))
130c ENDDO
131
132 numloc = 0
133 DO k=1,pz+1
134 DO j=1,py+1
135 DO i=1,px+1
136 numloc = numloc+1
137 CALL onebasisfun(i, 1, px, xi(1), knotlocx(:,numloc), fn(numloc))
138 CALL onebasisfun(j, 1, py, xi(2), knotlocy(:,numloc), fm(numloc))
139 CALL onebasisfun(k, 1, pz, xi(3), knotlocz(:,numloc), fl(numloc))
140 ENDDO
141 ENDDO
142 ENDDO
143
144C BUILD NUMERATORS AND DENOMINATORS
145
146 sumtot=zero
147
148 DO numloc=1,nctrl
149 r(numloc)=fn(numloc)*fm(numloc)*fl(numloc)*wwi(numloc)
150 sumtot=sumtot+r(numloc)
151 ENDDO
152
153C DIVIDE BY DENOMINATOR TO COMPLETE DEFINITION OF FUNCTION
154
155 DO numloc=1,nctrl
156 r(numloc)=r(numloc)/sumtot
157 ENDDO
158
159 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine onebasisfun(idxii, idxi, pxi, xi, kxi, ders1)
Definition onebasisfun.F:29