xEdgeBasis
Returns the basis on edges parallel to the x axis.
Interface 1
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE xEdgeBasis_Hexahedron
MODULE PURE FUNCTION xEdgeBasis_Hexahedron1( &
& pe1, &
& pe2, &
& pe3, &
& pe4, &
& x, &
& y, &
& z) &
& RESULT(ans)
INTEGER(I4B), INTENT(IN) :: pe1
!! order on edge e1, it should be greater than 1
INTEGER(I4B), INTENT(IN) :: pe2
!! order on edge e2, it should be greater than 1
INTEGER(I4B), INTENT(IN) :: pe3
!! order on edge e3, it should be greater than 1
INTEGER(I4B), INTENT(IN) :: pe4
!! order on edge e4, it should be greater than 1
REAL(DFP), INTENT(IN) :: x(:), y(:), z(:)
!! point of evaluation
!! these points should be between [-1, 1].
REAL(DFP) :: ans(SIZE(x), pe1 + pe2 + pe3 + pe4 - 4)
END FUNCTION xEdgeBasis_Hexahedron1
END INTERFACE xEdgeBasis_Hexahedron
pe1, pe2, pe3, pe4
These are orders of approximation on edges parallel to x axis.
x
x
coordinate of all points.
y
y
coordinate of all points.
z
z
coordinate of all points.
PROGRAM main
USE easifemBase
USE easifemClasses
IMPLICIT NONE
REAL(DFP), ALLOCATABLE :: xxx(:, :, :), yyy(:, :, :), zzz(:, :, :), &
& x(:), y(:), z(:), basisValue(:, :), val(:, :, :)
TYPE(VTKPlot_) :: avtk
TYPE(string) :: label(4)
INTEGER(I4B) :: ii
x = linspace(-1.0_DFP, 1.0_DFP, 11)
y = linspace(-1.0_DFP, 1.0_DFP, 11)
z = linspace(-1.0_DFP, 1.0_DFP, 11)
CALL MeshGrid(xxx, yyy, zzz, x, y, z)
x = RESHAPE(xxx, [SIZE(xxx)])
y = RESHAPE(yyy, [SIZE(yyy)])
z = RESHAPE(zzz, [SIZE(zzz)])
basisValue = EdgeBasis_Hexahedron(2, 2, 2, 2, x, y, z, dim=1_I4B)
DO ii = 1, SIZE(label)
label(ii) = tostring(ii)
END DO
CALL avtk%Plot(xxx, yyy, zzz, basisValue, label, "xEdgeBasis.vts")
END PROGRAM main