OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
onebasisfun.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine onebasisfun (idxii, idxi, pxi, xi, kxi, ders1)

Function/Subroutine Documentation

◆ onebasisfun()

subroutine onebasisfun ( integer idxii,
integer idxi,
integer pxi,
intent(in) xi,
intent(in) kxi,
ders1 )

Definition at line 28 of file onebasisfun.F.

29C--------------------------------------------------------------------------------------------------------
30C
31C This subroutine calculates B-spline function
32C Assembling B spline functions for NURBS is outside this subroutine
33C
34C--------------------------------------------------------------------------------------------------------
35C VAR | SIZE | TYP | RW | DEFINITION
36C--------------------------------------------------------------------------------------------------------
37C IDXI | 1 | I | R | ELEMENT INDEX IN KNOT VECTOR IN XI DIRECTION
38C PXI | 1 | I | R | POLYNOMIAL INTERPOLATION DEGREE IN XI DIRECTION
39C XI | 1 | F | R | COUNTER PARAMETER VALUE (WHERE THE FUNCTION AND DERIVATE ARE CALCULATED)
40C--------------------------------------------------------------------------------------------------------
41C KXI | NKXI | F | R | (FULL) KNOT VECTOR IN XI DIRECTION FOR THE CURRENT PATCH (GROUP)
42C--------------------------------------------------------------------------------------------------------
43C DERS1 | PXI+1 | F | W | INTERPOLATION FUNCTION
44C DERS2 | PXI+1 | F | W | DERIVATE OF INTERPOLATION FUNCTION
45C--------------------------------------------------------------------------------------------------------
46C Implicite Types
47C--------------------------------------------------------------------------------------------------------
48#include "implicit_f.inc"
49C--------------------------------------------------------------------------------------------------------
50C Dummy Arguments
51C--------------------------------------------------------------------------------------------------------
52 INTEGER PXI, IDXI, IDXII
53 my_real,
54 . INTENT(IN) :: xi
55 my_real,
56 . DIMENSION(*), INTENT(IN) :: kxi
57 my_real ders1
58C--------------------------------------------------------------------------------------------------------
59C Local variables
60C--------------------------------------------------------------------------------------------------------
61 INTEGER J, JJ, K, L, NDERS
62 my_real
63 . saved, temp, aleft, right
64 my_real,
65 . DIMENSION(PXI+1,PXI+1) :: andu
66
67 andu(:,:)=zero
68 andu(idxii,1)=one
69
70c DO J=0,PXI
71c IF ((XI>=KXI(IDXI+J)).AND.(XI<KXI(IDXI+J+1))) THEN
72c ANDU(J+1,1) = ONE
73c ELSE
74c ANDU(J+1,1) = ZERO
75c ENDIF
76c ENDDO
77
78 DO k=1,pxi
79 IF (andu(1,k) == 0) THEN
80 saved = zero
81 ELSE
82 saved = ((xi-kxi(idxi))*andu(1,k))/(kxi(idxi+k)-kxi(idxi))
83 ENDIF
84 DO j=0,pxi-k
85 aleft = kxi(idxi+j+1)
86 right = kxi(idxi+j+k+1)
87 IF (andu(j+2,k) == 0) THEN
88 andu(j+1,k+1) = saved
89 saved = zero
90 ELSE
91 temp = andu(j+2,k)/(right-aleft)
92 andu(j+1,k+1) = saved+(right-xi)*temp
93 saved = (xi-aleft)*temp
94 ENDIF
95 ENDDO
96 ENDDO
97
98 ders1 = andu(1,pxi+1)
99
100 RETURN
#define my_real
Definition cppsort.cpp:32