Neko 1.99.9
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
mesh::mesh_t Type Reference
Collaboration diagram for mesh::mesh_t:

Public Member Functions

procedure, pass(thisget_global_edge (this, el, e)
 Return the global id of edge e in element el.
 
procedure, pass(thisget_global_facet (this, el, f)
 Return the global id of facet f in element el.
 
procedure, pass(thisis_shared_point (this, el, p)
 Check if point p in element el is shared.
 
procedure, pass(thisis_shared_edge (this, el, e)
 Check if edge e in element el is shared.
 
procedure, pass(thisis_shared_facet (this, el, f)
 Check if facet f in element el is shared.
 
procedure, pass(thisfree (this)
 Deallocate a mesh this.
 
procedure, pass(thisfinalize (this)
 
procedure, pass(thismark_periodic_facet (this, f, e, pf, pe, pids)
 Mark facet f in element e as periodic with (pf, pe)
 
procedure, pass(thismark_labeled_facet (this, f, e, label)
 Mark facet f in element e with label.
 
procedure, pass(thismark_curve_element (this, e, curve_data, curve_type)
 Mark element e as a curve element.
 
procedure, pass(thisapply_periodic_facet (this, f, e, pf, pe, pids)
 Replaces the periodic point's id with a common id for matching periodic points.
 
procedure, pass(thisall_deformed (this)
 Set all elements as if they are deformed.
 
procedure, pass(thisget_facet_ids (this, f, e, pids)
 Get original ids of periodic points.
 
procedure, pass(thisreset_periodic_ids (this)
 Reset ids of periodic points to their original ids.
 
procedure, pass(thiscreate_periodic_ids (this, f, e, pf, pe)
 Creates common ids for matching periodic points.
 
procedure, pass(thisgenerate_conn (this)
 Generate element-to-element connectivity.
 
procedure, pass(thishave_point_glb_idx (this, index)
 Check if the mesh has a point given its global index.
 
procedure, pass(thissubset_by_mask (this, other, mask, lx, ly, lz)
 Create a subset of the mesh this in other based on the provided mask.
 
procedure, pass(thischeck_right_handedness (this)
 Check the correct orientation of the rst coordindates.
 
generic init (this, gdim, nelv)
 Initialise a mesh.
 
generic init (this, gdim, dist)
 Initialise a mesh.
 
generic add_element (this, el, el_glb, p1, p2, p3, p4)
 Add an element to the mesh.
 
generic add_element (this, el, el_glb, p1, p2, p3, p4, p5, p6, p7, p8)
 Add an element to the mesh.
 

Public Attributes

integer nelv
 Number of elements.
 
integer npts
 Number of points per element.
 
integer gdim
 Geometric dimension.
 
integer mpts
 Number of (unique) points in the mesh.
 
integer mfcs
 Number of (unique) faces in the mesh.
 
integer meds
 Number of (unique) edges in the mesh.
 
integer glb_nelv
 Global number of elements.
 
integer glb_mpts
 Global number of unique points.
 
integer glb_mfcs
 Global number of unique faces.
 
integer glb_meds
 Global number of unique edges.
 
integer offset_el
 Element offset.
 
integer max_pts_id
 Max local point id.
 
type(point_t), dimension(:), allocatable points
 list of points
 
type(mesh_element_t), dimension(:), allocatable elements
 List of elements.
 
logical, dimension(:), allocatable dfrmd_el
 List of elements.
 
type(htable_i4_thtel
 Table of unique elements (global->local)
 
integer, dimension(:,:), allocatable pt_lid
 Local point id of each element's points \( (point, element) \).
 
integer, dimension(:,:), allocatable edge_lid
 Local edge id of each element's edges \( (edge, element) \).
 
integer, dimension(:,:), allocatable face_lid
 Local facet id of each element's facets \( (facet, element) \).
 
integer, dimension(:,:), allocatable facet_neigh
 Facet to neigh. element table.
 
class(htable_t), allocatable facet_map
 Facet to element's id tuple and the mapping of the points between lower id element and higher \( t=(low_id element, element with higher global id) \).
 
type(stack_i4_t), dimension(:), allocatable point_neigh
 Point to neigh. table.
 
type(distdata_tddata
 Mesh distributed data.
 
logical, dimension(:), allocatable neigh
 Neighbouring ranks.
 
integer, dimension(:), allocatable neigh_order
 Neighbour order.
 
integer(2), dimension(:,:), allocatable facet_type
 Facet type.
 
type(facet_zone_t), dimension(:), allocatable labeled_zones
 Zones with labeled facets.
 
type(facet_zone_periodic_tperiodic
 Zones with periodic facets.
 
type(curve_tcurve
 Set of curved elements.
 
logical lconn = .false.
 valid connectivity
 
logical ldist = .false.
 valid distributed data
 
logical lnumr = .false.
 valid numbering
 
logical lgenc = .true.
 generate connectivity
 
logical is_submesh = .false.
 is this mesh a subset of another mesh?
 
procedure(mesh_deform), pointer, pass apply_deform => null()
 enables user to specify a deformation that is applied to all x,y,z coordinates generated with this mesh
 

Private Member Functions

procedure, pass(this), private init_nelv (this, gdim, nelv)
 Initialise a mesh this with nelv elements.
 
procedure, pass(this), private init_dist (this, gdim, dist)
 Initialise a mesh this based on a distribution dist.
 
procedure, pass(this), private add_quad (this, el, el_glb, p1, p2, p3, p4)
 Add a quadrilateral element to the mesh this.
 
procedure, pass(this), private add_hex (this, el, el_glb, p1, p2, p3, p4, p5, p6, p7, p8)
 Add a hexahedral element to the mesh this.
 
procedure, pass(this), private add_point (this, p, idx)
 Add a unique point to the mesh.
 

Private Attributes

type(htable_i4_t), allocatable, private htp
 Table of unique points (global->local)
 
integer, dimension(:,:), allocatable, private edge_pts
 Endpoints (global point ids) of each unique local edge \( (2, meds) \).
 
integer, dimension(:,:), allocatable, private face_pts
 Points (global point ids) of each unique local face \( (4, mfcs) \).
 

Detailed Description

Definition at line 73 of file mesh.f90.

Member Function/Subroutine Documentation

◆ add_element() [1/2]

generic mesh::mesh_t::add_element ( class(mesh_t), intent(inout), target  this,
integer, value  el,
integer, value  el_glb,
type(point_t), intent(inout), target  p1,
type(point_t), intent(inout), target  p2,
type(point_t), intent(inout), target  p3,
type(point_t), intent(inout), target  p4 
)

Definition at line 185 of file mesh.f90.

◆ add_element() [2/2]

generic mesh::mesh_t::add_element ( class(mesh_t), intent(inout), target  this,
integer, value  el,
integer, value  el_glb,
type(point_t), intent(inout), target  p1,
type(point_t), intent(inout), target  p2,
type(point_t), intent(inout), target  p3,
type(point_t), intent(inout), target  p4,
type(point_t), intent(inout), target  p5,
type(point_t), intent(inout), target  p6,
type(point_t), intent(inout), target  p7,
type(point_t), intent(inout), target  p8 
)

Definition at line 185 of file mesh.f90.

◆ add_hex()

procedure, pass(this), private mesh::mesh_t::add_hex ( class(mesh_t), intent(inout), target  this,
integer, value  el,
integer, value  el_glb,
type(point_t), intent(inout), target  p1,
type(point_t), intent(inout), target  p2,
type(point_t), intent(inout), target  p3,
type(point_t), intent(inout), target  p4,
type(point_t), intent(inout), target  p5,
type(point_t), intent(inout), target  p6,
type(point_t), intent(inout), target  p7,
type(point_t), intent(inout), target  p8 
)
private

Definition at line 158 of file mesh.f90.

◆ add_point()

procedure, pass(this), private mesh::mesh_t::add_point ( class(mesh_t), intent(inout this,
type(point_t), intent(inout p,
integer, intent(inout idx 
)
private

Definition at line 159 of file mesh.f90.

◆ add_quad()

procedure, pass(this), private mesh::mesh_t::add_quad ( class(mesh_t), intent(inout), target  this,
integer, value  el,
integer, value  el_glb,
type(point_t), intent(inout), target  p1,
type(point_t), intent(inout), target  p2,
type(point_t), intent(inout), target  p3,
type(point_t), intent(inout), target  p4 
)
private

Definition at line 157 of file mesh.f90.

◆ all_deformed()

procedure, pass(this) mesh::mesh_t::all_deformed ( class(mesh_t), intent(inout this)

Definition at line 171 of file mesh.f90.

◆ apply_periodic_facet()

procedure, pass(this) mesh::mesh_t::apply_periodic_facet ( class(mesh_t), intent(inout this,
integer, intent(in f,
integer, intent(in e,
integer, intent(in pf,
integer, intent(in pe,
integer, dimension(4), intent(inout pids 
)

Definition at line 170 of file mesh.f90.

◆ check_right_handedness()

procedure, pass(this) mesh::mesh_t::check_right_handedness ( class(mesh_t), intent(inout this)
Note
Similar algorithm as in Nek5000 verify routine.

Definition at line 180 of file mesh.f90.

◆ create_periodic_ids()

procedure, pass(this) mesh::mesh_t::create_periodic_ids ( class(mesh_t), intent(inout this,
integer, intent(in f,
integer, intent(in e,
integer, intent(in pf,
integer, intent(in pe 
)

Definition at line 174 of file mesh.f90.

◆ finalize()

procedure, pass(this) mesh::mesh_t::finalize ( class(mesh_t), intent(inout), target  this)

Definition at line 166 of file mesh.f90.

◆ free()

procedure, pass(this) mesh::mesh_t::free ( class(mesh_t), intent(inout this)

Definition at line 165 of file mesh.f90.

◆ generate_conn()

procedure, pass(this) mesh::mesh_t::generate_conn ( class(mesh_t), intent(inout), target  this)

Definition at line 175 of file mesh.f90.

◆ get_facet_ids()

procedure, pass(this) mesh::mesh_t::get_facet_ids ( class(mesh_t), intent(inout this,
integer, intent(in f,
integer, intent(in e,
integer, dimension(4), intent(inout pids 
)

Definition at line 172 of file mesh.f90.

◆ get_global_edge()

procedure, pass(this) mesh::mesh_t::get_global_edge ( class(mesh_t), intent(in this,
integer, intent(in el,
integer, intent(in e 
)
Parameters
[in]elLocal element id
[in]eLocal edge number of the element

Definition at line 160 of file mesh.f90.

◆ get_global_facet()

procedure, pass(this) mesh::mesh_t::get_global_facet ( class(mesh_t), intent(in this,
integer, intent(in el,
integer, intent(in f 
)
Attention
only defined for gdim .eq. 3, in two dimensions the facets of an element are its edges, see mesh_get_global_edge
Parameters
[in]elLocal element id
[in]fLocal facet number of the element

Definition at line 161 of file mesh.f90.

◆ have_point_glb_idx()

procedure, pass(this) mesh::mesh_t::have_point_glb_idx ( class(mesh_t), intent(inout this,
integer, intent(inout index 
)

The one way to turn a global point id into a local one; a point carries its global id, so pid() is the key for a caller holding a point_t. For an element's own corner read pt_lid instead.

Returns
The local id of the point (if present) otherwise -1
Attention
Only valid until generate_conn releases the global->local point table
Todo:
Consider moving this to distdata
Parameters
[in,out]indexGlobal index

Definition at line 176 of file mesh.f90.

◆ init() [1/2]

generic mesh::mesh_t::init ( class(mesh_t), intent(inout this,
integer, intent(in gdim,
type(linear_dist_t), intent(in dist 
)
Parameters
[in,out]thisMesh
[in]gdimGeometric dimension
[in]distData distribution

Definition at line 183 of file mesh.f90.

◆ init() [2/2]

generic mesh::mesh_t::init ( class(mesh_t), intent(inout this,
integer, intent(in gdim,
integer, intent(in nelv 
)
Parameters
[in,out]thisMesh
[in]gdimGeometric dimension
[in]nelvLocal number of elements

Definition at line 183 of file mesh.f90.

◆ init_dist()

procedure, pass(this), private mesh::mesh_t::init_dist ( class(mesh_t), intent(inout this,
integer, intent(in gdim,
type(linear_dist_t), intent(in dist 
)
private
Parameters
[in,out]thisMesh
[in]gdimGeometric dimension
[in]distData distribution

Definition at line 156 of file mesh.f90.

◆ init_nelv()

procedure, pass(this), private mesh::mesh_t::init_nelv ( class(mesh_t), intent(inout this,
integer, intent(in gdim,
integer, intent(in nelv 
)
private
Parameters
[in,out]thisMesh
[in]gdimGeometric dimension
[in]nelvLocal number of elements

Definition at line 155 of file mesh.f90.

◆ is_shared_edge()

procedure, pass(this) mesh::mesh_t::is_shared_edge ( class(mesh_t), intent(inout this,
integer, intent(in el,
integer, intent(in e 
)
Parameters
[in]elLocal element id
[in]eLocal edge number of the element

Definition at line 163 of file mesh.f90.

◆ is_shared_facet()

procedure, pass(this) mesh::mesh_t::is_shared_facet ( class(mesh_t), intent(inout this,
integer, intent(in el,
integer, intent(in f 
)
Attention
only defined for gdim .eq. 3, in two dimensions the facets of an element are its edges, see mesh_is_shared_edge
Parameters
[in]elLocal element id
[in]fLocal facet number of the element

Definition at line 164 of file mesh.f90.

◆ is_shared_point()

procedure, pass(this) mesh::mesh_t::is_shared_point ( class(mesh_t), intent(inout this,
integer, intent(in el,
integer, intent(in p 
)
Parameters
[in]elLocal element id
[in]pLocal point number of the element

Definition at line 162 of file mesh.f90.

◆ mark_curve_element()

procedure, pass(this) mesh::mesh_t::mark_curve_element ( class(mesh_t), intent(inout this,
integer, intent(in e,
real(kind=dp), dimension(5,12), intent(in curve_data,
integer, dimension(12), intent(in curve_type 
)

Definition at line 169 of file mesh.f90.

◆ mark_labeled_facet()

procedure, pass(this) mesh::mesh_t::mark_labeled_facet ( class(mesh_t), intent(inout this,
integer, intent(in f,
integer, intent(in e,
integer, intent(in label 
)

Definition at line 168 of file mesh.f90.

◆ mark_periodic_facet()

procedure, pass(this) mesh::mesh_t::mark_periodic_facet ( class(mesh_t), intent(inout this,
integer, intent(in f,
integer, intent(in e,
integer, intent(in pf,
integer, intent(in pe,
integer, dimension(4), intent(inout pids 
)

Definition at line 167 of file mesh.f90.

◆ reset_periodic_ids()

procedure, pass(this) mesh::mesh_t::reset_periodic_ids ( class(mesh_t), intent(inout this)

Definition at line 173 of file mesh.f90.

◆ subset_by_mask()

procedure, pass(this) mesh::mesh_t::subset_by_mask ( class(mesh_t), intent(in this,
class(mesh_t), intent(inout other,
type(mask_t), intent(in mask,
integer, intent(in lx,
integer, intent(in ly,
integer, intent(in lz 
)
Parameters
thisThe original mesh.
otherThe subset mesh to be created.
maskThe mask defining the subset.
lxthe quadrature degree in x direction.
lythe quadrature degree in y direction.
lzthe quadrature degree in z direction.
Note
Partially lifted from nmsh_file.f90.

Definition at line 177 of file mesh.f90.

Member Data Documentation

◆ apply_deform

procedure(mesh_deform), pointer, pass mesh::mesh_t::apply_deform => null()

Definition at line 153 of file mesh.f90.

◆ curve

type(curve_t) mesh::mesh_t::curve

Definition at line 142 of file mesh.f90.

◆ ddata

type(distdata_t) mesh::mesh_t::ddata

Definition at line 134 of file mesh.f90.

◆ dfrmd_el

logical, dimension(:), allocatable mesh::mesh_t::dfrmd_el

Definition at line 91 of file mesh.f90.

◆ edge_lid

integer, dimension(:,:), allocatable mesh::mesh_t::edge_lid

Definition at line 108 of file mesh.f90.

◆ edge_pts

integer, dimension(:,:), allocatable, private mesh::mesh_t::edge_pts
private

Only valid while the connectivity is generated, released at the end of generate_conn.

Definition at line 118 of file mesh.f90.

◆ elements

type(mesh_element_t), dimension(:), allocatable mesh::mesh_t::elements

Definition at line 90 of file mesh.f90.

◆ face_lid

integer, dimension(:,:), allocatable mesh::mesh_t::face_lid
Attention
only allocated for gdim .eq. 3, in two dimensions the facets of an element are its edges

Definition at line 113 of file mesh.f90.

◆ face_pts

integer, dimension(:,:), allocatable, private mesh::mesh_t::face_pts
private

Only valid while the connectivity is generated, released at the end of generate_conn.

Definition at line 123 of file mesh.f90.

◆ facet_map

class(htable_t), allocatable mesh::mesh_t::facet_map

Definition at line 131 of file mesh.f90.

◆ facet_neigh

integer, dimension(:,:), allocatable mesh::mesh_t::facet_neigh

Definition at line 126 of file mesh.f90.

◆ facet_type

integer(2), dimension(:,:), allocatable mesh::mesh_t::facet_type

Definition at line 138 of file mesh.f90.

◆ gdim

integer mesh::mesh_t::gdim

Definition at line 76 of file mesh.f90.

◆ glb_meds

integer mesh::mesh_t::glb_meds

Definition at line 84 of file mesh.f90.

◆ glb_mfcs

integer mesh::mesh_t::glb_mfcs

Definition at line 83 of file mesh.f90.

◆ glb_mpts

integer mesh::mesh_t::glb_mpts

Definition at line 82 of file mesh.f90.

◆ glb_nelv

integer mesh::mesh_t::glb_nelv

Definition at line 81 of file mesh.f90.

◆ htel

type(htable_i4_t) mesh::mesh_t::htel

Definition at line 100 of file mesh.f90.

◆ htp

type(htable_i4_t), allocatable, private mesh::mesh_t::htp
private

Construction-only scratch: it is what deduplicates points as elements are added, and is released at the end of generate_conn, by which point every local id still needed lives in pt_lid. allocated(htp) is therefore the test for "the mesh is still being built".

Definition at line 99 of file mesh.f90.

◆ is_submesh

logical mesh::mesh_t::is_submesh = .false.

Definition at line 149 of file mesh.f90.

◆ labeled_zones

type(facet_zone_t), dimension(:), allocatable mesh::mesh_t::labeled_zones

Definition at line 140 of file mesh.f90.

◆ lconn

logical mesh::mesh_t::lconn = .false.

Definition at line 144 of file mesh.f90.

◆ ldist

logical mesh::mesh_t::ldist = .false.

Definition at line 145 of file mesh.f90.

◆ lgenc

logical mesh::mesh_t::lgenc = .true.

Definition at line 147 of file mesh.f90.

◆ lnumr

logical mesh::mesh_t::lnumr = .false.

Definition at line 146 of file mesh.f90.

◆ max_pts_id

integer mesh::mesh_t::max_pts_id

Definition at line 87 of file mesh.f90.

◆ meds

integer mesh::mesh_t::meds

Definition at line 79 of file mesh.f90.

◆ mfcs

integer mesh::mesh_t::mfcs

Definition at line 78 of file mesh.f90.

◆ mpts

integer mesh::mesh_t::mpts

Definition at line 77 of file mesh.f90.

◆ neigh

logical, dimension(:), allocatable mesh::mesh_t::neigh

Definition at line 135 of file mesh.f90.

◆ neigh_order

integer, dimension(:), allocatable mesh::mesh_t::neigh_order

Definition at line 136 of file mesh.f90.

◆ nelv

integer mesh::mesh_t::nelv

Definition at line 74 of file mesh.f90.

◆ npts

integer mesh::mesh_t::npts

Definition at line 75 of file mesh.f90.

◆ offset_el

integer mesh::mesh_t::offset_el

Definition at line 86 of file mesh.f90.

◆ periodic

type(facet_zone_periodic_t) mesh::mesh_t::periodic

Definition at line 141 of file mesh.f90.

◆ point_neigh

type(stack_i4_t), dimension(:), allocatable mesh::mesh_t::point_neigh

Definition at line 132 of file mesh.f90.

◆ points

type(point_t), dimension(:), allocatable mesh::mesh_t::points

Definition at line 89 of file mesh.f90.

◆ pt_lid

integer, dimension(:,:), allocatable mesh::mesh_t::pt_lid

Lets the point->local id hash table be released once the connectivity has been generated, see edge_lid

Definition at line 105 of file mesh.f90.


The documentation for this type was generated from the following file: