66     generic :: 
operator(.eq.) => equal
 
 
   81  integer, 
parameter, 
dimension(2, 4) :: 
edge_nodes = reshape((/1,3,&
 
 
   91    class(
quad_t), 
intent(inout) :: this
 
   92    integer, 
intent(inout) :: id
 
   93    type(
point_t), 
target, 
intent(in) :: p1, p2, p3, p4
 
 
  107    class(
quad_t), 
intent(in) :: this
 
  108    class(
tuple_t), 
intent(inout) :: t
 
  109    integer, 
intent(in) :: side
 
  110    type(
point_t), 
pointer :: p1, p2
 
  117       if (p1%id() .lt. p2%id()) 
then 
  118          t%x = (/ p1%id(), p2%id() /)
 
  120          t%x = (/ p2%id(), p1%id() /)
 
 
  127    class(
quad_t), 
intent(in) :: this
 
  128    class(
tuple_t), 
intent(inout) :: t
 
  129    integer, 
intent(in) :: side
 
  130    type(
point_t), 
pointer :: p1, p2
 
  137       t%x = (/ p1%id(), p2%id() /)
 
 
  144    class(
quad_t), 
intent(in) :: this
 
  145    real(kind=
dp) :: d1, d2, res
 
  146    type(
point_t), 
pointer :: p1, p2, p3, p4
 
  158       d1 = d1 + (p4%x(i) - p1%x(i))**2
 
  159       d2 = d2 + (p3%x(i) - p2%x(i))**2
 
  162    res = sqrt(
max(d1, d2))
 
 
  168    class(
quad_t), 
intent(in) :: this
 
  170    type(
point_t), 
pointer :: p1, p2, p3, p4
 
  179    do i = 1, this%gdim()
 
  180       res%x(i) = 0.25d0 * (p1%x(i) + p2%x(i) + p3%x(i) + p4%x(i))
 
 
  187    class(
quad_t), 
intent(in) :: this
 
  195       if ((this%gdim() .eq. other%gdim()) .and. &
 
  196            (this%npts() .eq. other%npts())) 
then 
  197          do i = 1, this%npts()
 
  198             if (this%pts(i)%p .ne. other%pts(i)%p) 
then 
 
integer, parameter, public dp
 
Defines a quadrilateral element.
 
integer, dimension(2, 4), parameter edge_nodes
Edge node ids.
 
integer, parameter, public neko_quad_gdim
Geometric dimension.
 
subroutine quad_facet_order(this, t, side)
Return the ordered edge for face i as a 2-tuple t.
 
integer, parameter, public neko_quad_neds
Number of edges.
 
integer, parameter, public neko_quad_npts
Number of points.
 
subroutine quad_facet_id(this, t, side)
Return the edge id for face i as a 2-tuple t.
 
subroutine quad_init(this, id, p1, p2, p3, p4)
Create a quadrilateral element based upon four points.
 
real(kind=dp) function quad_diameter(this)
Compute the diameter of a quadrilateral element.
 
pure logical function quad_equal(this, other)
Check if two quad elements are equal.
 
type(point_t) function quad_centroid(this)
Compute the centroid of a quadrilateral element.
 
Base type for an element.
 
A point in  with coordinates .
 
Base type for an n-tuple.