Dubiner
This function forms Dubiner basis on biunit quadrangle domain.
note
This routine is called while forming dubiner basis on triangle domain
Interface 1
INTERFACE
MODULE PURE FUNCTION Dubiner_Quadrangle1(order, xij) RESULT(ans)
INTEGER(I4B), INTENT(IN) :: order
!! order of polynomial space
REAL(DFP), INTENT(IN) :: xij(:, :)
!! points in biunit quadrangle, shape functions will be evaluated
!! at these points. SIZE(xij,1) = 2, and SIZE(xij, 2) = number of points
REAL(DFP) :: ans(SIZE(xij, 2), (order + 1) * (order + 2) / 2)
!! shape functions
!! ans(:, j), jth shape functions at all points
!! ans(j, :), all shape functions at jth point
END FUNCTION Dubiner_Quadrangle1
END INTERFACE
The shape of ans
is (M,N), where M=SIZE(xij,2) (number of points) N = 0.5*(order+1)*(order+2).
In this way, ans(j,:) denotes the values of all polynomial at jth point
Polynomials are returned in following way:
For example for order=3, the polynomials are arranged as:
Interface 2
INTERFACE Dubiner_Quadrangle
MODULE PURE FUNCTION Dubiner_Quadrangle2(order, x, y) RESULT(ans)
INTEGER(I4B), INTENT(IN) :: order
!! order of polynomial space
REAL(DFP), INTENT(IN) :: x(:)
!! x coordinate on line
REAL(DFP), INTENT(IN) :: y(:)
!! y coordinate on line
REAL(DFP) :: ans(SIZE(x) * SIZE(y), (order + 1) * (order + 2) / 2)
!! shape functions
!! ans(:, j), jth shape functions at all points
!! ans(j, :), all shape functions at jth point
END FUNCTION Dubiner_Quadrangle2
END INTERFACE Dubiner_Quadrangle
- This function forms Dubiner basis on biunit quadrangle domain.
- This routine is same as Dubiner_Quadrangle1
- The only difference is that xij are given by outerproduct of x and y.
- This function calls
Dubiner_Quadrangle1
.