72     generic :: 
operator(.eq.) => equal
 
 
   93  integer, 
parameter, 
dimension(4, 6) :: 
face_nodes = reshape((/1,5,7,3,&
 
 
  119  integer, 
parameter, 
dimension(2, 12) :: 
edge_nodes = reshape((/1,2,&
 
 
  136  subroutine hex_init(this, id, p1, p2, p3, p4, p5, p6, p7, p8)
 
  137    class(
hex_t), 
intent(inout) :: this
 
  138    integer, 
intent(inout) :: id
 
  139    type(
point_t), 
target, 
intent(in) :: p1, p2, p3, p4, p5, p6, p7, p8
 
 
  156    class(
hex_t), 
intent(in) :: this
 
  157    class(
tuple_t), 
intent(inout) :: t
 
  158    integer, 
intent(in) :: side
 
  159    integer :: i, j, temp
 
  160    type(
point_t), 
pointer :: p1,p2,p3,p4
 
  169       t%x = (/ p1%id(), p2%id(), p3%id(), p4%id() /)
 
  172             if(t%x(j) .lt. t%x(i)) 
then 
 
  185    class(
hex_t), 
intent(in) :: this
 
  186    class(
tuple_t), 
intent(inout) :: t
 
  187    integer, 
intent(in) :: side
 
  188    type(
point_t), 
pointer :: p1,p2,p3,p4
 
  197       t%x = (/ p1%id(), p2%id(), p3%id(), p4%id() /)
 
 
  205    class(
hex_t), 
intent(in) :: this
 
  206    class(
tuple_t), 
intent(inout) :: t
 
  207    integer, 
intent(in) :: side
 
  208    type(
point_t), 
pointer :: p1,p2
 
  215       if (p1%id() .lt. p2%id()) 
then 
  216          t%x = (/ p1%id(), p2%id() /)
 
  218          t%x = (/ p2%id(), p1%id() /)
 
 
  227    class(
hex_t), 
intent(in) :: this
 
  228    real(kind=
dp) :: d1, d2, d3, d4, res
 
  229    type(
point_t), 
pointer :: p1, p2, p3, p4, p5, p6, p7, p8
 
  247       d1 = d1 + (p8%x(i) - p1%x(i))**2
 
  248       d2 = d2 + (p7%x(i) - p2%x(i))**2
 
  249       d3 = d3 + (p5%x(i) - p4%x(i))**2
 
  250       d4 = d4 + (p6%x(i) - p3%x(i))**2
 
  253    res = sqrt(
max(
max(d1, d2), 
max(d3, d4)))
 
 
  259    class(
hex_t), 
intent(in) :: this
 
  261    type(
point_t), 
pointer :: p1, p2, p3, p4, p5, p6, p7, p8
 
  274    do i = 1, this%gdim()
 
  275       res%x(i) = 0.125 * (p1%x(i) + p2%x(i) + p3%x(i) + p4%x(i) + &
 
  276            p5%x(i) + p6%x(i) + p7%x(i) + p8%x(i))
 
 
  284    class(
hex_t), 
intent(in) :: this
 
  292       if ((this%gdim() .eq. other%gdim()) .and. &
 
  293            (this%npts() .eq. other%npts())) 
then 
  294          do i = 1, this%npts()
 
  295             if (this%pts(i)%p .ne. other%pts(i)%p) 
then 
 
Defines a hexahedron element.
 
type(point_t) function hex_centroid(this)
Compute the centroid of a hexahedron element.
 
subroutine hex_facet_order(this, t, side)
Return the ordered points for face i as a 4-tuple t.
 
subroutine hex_edge_id(this, t, side)
Return the edge id for an edge i as a 2-tuple t.
 
integer, dimension(4, 6), parameter face_nodes
Face node ids.
 
integer, parameter, public neko_hex_gdim
Geometric dimension.
 
integer, parameter, public neko_hex_npts
Number of points.
 
integer, parameter, public neko_hex_nfcs
Number of faces.
 
integer, parameter, public neko_hex_neds
Number of edges.
 
real(kind=dp) function hex_diameter(this)
Compute the diameter of a hexahedron element.
 
pure logical function hex_equal(this, other)
Check if two hex elements are equal.
 
integer, dimension(2, 12), parameter edge_nodes
Edge node ids.
 
subroutine hex_init(this, id, p1, p2, p3, p4, p5, p6, p7, p8)
Create a hexahedron element based upon eight points.
 
subroutine hex_facet_id(this, t, side)
Return the facet id for face i as a 4-tuple t.
 
integer, parameter, public dp
 
Base type for an element.
 
A point in  with coordinates .
 
Base type for an n-tuple.