Initiate
This routine initiate an instance of Quadrangle element.
Interface 1
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE Initiate
MODULE SUBROUTINE initiate_ref_Quadrangle(obj, NSD, xij)
CLASS(ReferenceQuadrangle_), INTENT(INOUT) :: obj
INTEGER(I4B), INTENT(IN) :: NSD
REAL(DFP), INTENT(IN), OPTIONAL :: xij(:, :)
END SUBROUTINE initiate_ref_Quadrangle
END INTERFACE Initiate
program main
use easifemBase
type(ReferenceQuadrangle_) :: refelem
call initiate(obj=refelem, nsd=2)
call display(refelem, "ans: ")
end program main
See results
ans:
# ElemType : Quadrangle4
# XiDimension :: 2
# NSD : 2
# Order : 1
# EntityCounts(0) : 4
# EntityCounts(1) : 4
# EntityCounts(2) : 1
# EntityCounts(3) : 0
# Node( 1 ) :
--------------
-1.00000
-1.00000
0.00000
# Node( 2 ) :
--------------
1.00000
-1.00000
0.00000
# Node( 3 ) :
--------------
1.00000
1.00000
0.00000
# Node( 4 ) :
--------------
-1.00000
1.00000
0.00000
# Topology( 1 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
1
# Topology( 2 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
2
# Topology( 3 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
3
# Topology( 4 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
4
# Topology( 5 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
1
2
# Topology( 6 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
2
3
# Topology( 7 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
3
4
# Topology( 8 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
4
1
# Topology( 9 ) :
# ElemType : Quadrangle4
# XiDim : 2
# Nptrs :
----------
1
2
3
4
Interface 2 (ReferenceQuadrangle)
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE ReferenceQuadrangle
MODULE FUNCTION reference_Quadrangle(NSD, xij) RESULT(obj)
INTEGER(I4B), INTENT(IN) :: NSD
REAL(DFP), INTENT(IN), OPTIONAL :: xij(:, :)
TYPE(ReferenceQuadrangle_) :: obj
END FUNCTION reference_Quadrangle
END INTERFACE ReferenceQuadrangle
This function retuns an instance of linear quadrangle element.
program main
use easifemBase
type(ReferenceQuadrangle_) :: refelem
refelem = ReferenceQuadrangle(nsd=2)
call display(refelem, "ans: ")
end program main
See results
ans:
# ElemType : Quadrangle4
# XiDimension :: 2
# NSD : 2
# Order : 1
# EntityCounts(0) : 4
# EntityCounts(1) : 4
# EntityCounts(2) : 1
# EntityCounts(3) : 0
# Node( 1 ) :
--------------
-1.00000
-1.00000
0.00000
# Node( 2 ) :
--------------
1.00000
-1.00000
0.00000
# Node( 3 ) :
--------------
1.00000
1.00000
0.00000
# Node( 4 ) :
--------------
-1.00000
1.00000
0.00000
# Topology( 1 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
1
# Topology( 2 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
2
# Topology( 3 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
3
# Topology( 4 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
4
# Topology( 5 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
1
2
# Topology( 6 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
2
3
# Topology( 7 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
3
4
# Topology( 8 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
4
1
# Topology( 9 ) :
# ElemType : Quadrangle4
# XiDim : 2
# Nptrs :
----------
1
2
3
4
Interface 3 (ReferenceQuadrangle_Pointer)
- ܀ Interface
- ️܀ See example
- ↢
INTERFACE ReferenceQuadrangle_Pointer
MODULE FUNCTION reference_Quadrangle_Pointer(NSD, xij) RESULT(obj)
INTEGER(I4B), INTENT(IN) :: NSD
REAL(DFP), INTENT(IN), OPTIONAL :: xij(:, :)
CLASS(ReferenceQuadrangle_), POINTER :: obj
END FUNCTION reference_Quadrangle_Pointer
END INTERFACE ReferenceQuadrangle_Pointer
This function returns pointer to newly created linear quadrangle elements.
program main
use easifemBase
class(ReferenceElement_), pointer :: refelem
refelem => ReferenceQuadrangle_Pointer(nsd=2)
call display(refelem, "ans: ")
end program main
See results
ans:
# ElemType : Quadrangle4
# XiDimension :: 2
# NSD : 2
# Order : 1
# EntityCounts(0) : 4
# EntityCounts(1) : 4
# EntityCounts(2) : 1
# EntityCounts(3) : 0
# Node( 1 ) :
--------------
-1.00000
-1.00000
0.00000
# Node( 2 ) :
--------------
1.00000
-1.00000
0.00000
# Node( 3 ) :
--------------
1.00000
1.00000
0.00000
# Node( 4 ) :
--------------
-1.00000
1.00000
0.00000
# Topology( 1 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
1
# Topology( 2 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
2
# Topology( 3 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
3
# Topology( 4 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
4
# Topology( 5 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
1
2
# Topology( 6 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
2
3
# Topology( 7 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
3
4
# Topology( 8 ) :
# ElemType : Line2
# XiDim : 1
# Nptrs :
----------
4
1
# Topology( 9 ) :
# ElemType : Quadrangle4
# XiDim : 2
# Nptrs :
----------
1
2
3
4
Getting higher order element
- ܀ Interface
- ️܀ See example
- ↢
This routine returns the higher order quadrangle element.
INTERFACE
MODULE SUBROUTINE highorderElement_Quadrangle(refelem, order, obj, &
& ipType)
CLASS(ReferenceElement_), INTENT(IN) :: refelem
INTEGER(I4B), INTENT(IN) :: order
CLASS(ReferenceElement_), INTENT(INOUT) :: obj
INTEGER(I4B), INTENT(IN) :: ipType
END SUBROUTINE highorderElement_Quadrangle
END INTERFACE
ipType
Interpolation point type. It can take following values:
- Equidistance
- GaussLegendreLobatto
- GaussChebyshevLobatto
- GaussJacobiLobatto
- GaussUltrasphericalLobatto
- GaussLegendre
- GaussChebyshev
- GaussUltrasphericalLobatto
- GaussJacobi
program main
use easifemBase
class( ReferenceElement_ ), pointer :: refelem => null()
type( ReferenceQuadrangle_ ) :: highorder_elem
refelem => referenceQuadrangle_pointer( nsd = 2 )
call refelem%highOrderElement( order = 2, Highorderobj = highorder_elem, ipType=Equidistance)
call display( highorder_elem, "higher order highorder_elem : ")
!call refelem%LagrangeElement( order = 3, Highorderobj = highorder_elem )
!call display( highorder_elem, "3rd order highorder_elem : ")
end program main
See results
higher order highorder_elem :
results
# ElemType : Quadrangle9
# XiDimension :: 2
# NSD : 2
# Order : 2
# EntityCounts(0) : 9
# EntityCounts(1) : 4
# EntityCounts(2) : 1
# EntityCounts(3) : 0
# Node( 1 ) :
--------------
-1.00000
-1.00000
0.00000
# Node( 2 ) :
--------------
1.00000
-1.00000
0.00000
# Node( 3 ) :
--------------
1.00000
1.00000
0.00000
# Node( 4 ) :
--------------
-1.00000
1.00000
0.00000
# Node( 5 ) :
--------------
0.00000
-1.00000
0.00000
# Node( 6 ) :
--------------
1.00000
0.00000
0.00000
# Node( 7 ) :
--------------
0.00000
1.00000
0.00000
# Node( 8 ) :
--------------
-1.00000
0.00000
0.00000
# Node( 9 ) :
--------------
0.00000
0.00000
0.00000
# Topology( 1 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
1
# Topology( 2 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
2
# Topology( 3 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
3
# Topology( 4 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
4
# Topology( 5 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
5
# Topology( 6 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
6
# Topology( 7 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
7
# Topology( 8 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
8
# Topology( 9 ) :
# ElemType : Point1
# XiDim : 0
# Nptrs :
----------
9
# Topology( 10 ) :
# ElemType : Line3
# XiDim : 1
# Nptrs :
----------
1
2
5
# Topology( 11 ) :
# ElemType : Line3
# XiDim : 1
# Nptrs :
----------
2
3
6
# Topology( 12 ) :
# ElemType : Line3
# XiDim : 1
# Nptrs :
----------
3
4
7
# Topology( 13 ) :
# ElemType : Line3
# XiDim : 1
# Nptrs :
----------
4
1
8
# Topology( 14 ) :
# ElemType : Quadrangle9
# XiDim : 2
# Nptrs :
1
2
3
4
.
.
.
6
7
8
9