Gridap.Geometry

Gridap.GeometryModule

Exported names are

source
Gridap.Geometry.BoundaryTriangulationMethod
BoundaryTriangulation(model::DiscreteModel,labeling::FaceLabeling;tags::Vector{Int})
BoundaryTriangulation(model::DiscreteModel,labeling::FaceLabeling;tags::Vector{String})
BoundaryTriangulation(model::DiscreteModel,labeling::FaceLabeling;tag::Int)
BoundaryTriangulation(model::DiscreteModel,labeling::FaceLabeling;tag::String)
source
Gridap.Geometry.BoundaryTriangulationMethod
BoundaryTriangulation(model::DiscreteModel,tags::Vector{Int})
BoundaryTriangulation(model::DiscreteModel,tags::Vector{String})
BoundaryTriangulation(model::DiscreteModel,tag::Int)
BoundaryTriangulation(model::DiscreteModel,tag::String)
source
Gridap.Geometry.CartesianDescriptorType
struct CartesianDescriptor{D,T,F<:Function}
  origin::Point{D,T}
  sizes::NTuple{D,T}
  partition::NTuple{D,Int}
  map::F
end

Struct that stores the data defining a Cartesian grid.

source
Gridap.Geometry.CartesianDescriptorMethod
CartesianDescriptor(
  domain,
  partition;
  map::Function=identity,
  isperiodic::NTuple{D,Bool}=tfill(false,Val{D}))

domain and partition are 1D indexable collections of arbitrary type.

source
Gridap.Geometry.CartesianDescriptorMethod
CartesianDescriptor(
  origin::Point{D},
  sizes::NTuple{D},
  partition;
  map::Function=identity,
  isperiodic::NTuple{D,Bool}=tfill(false,Val{D})) where D

partition is a 1D indexable collection of arbitrary type.

source
Gridap.Geometry.CartesianDescriptorMethod
CartesianDescriptor(
  pmin::Point{D},
  pmax::Point{D},
  partition;
  map::Function=identity,
  isperiodic::NTuple{D,Bool}=tfill(false,Val{D})) where D

partition is a 1D indexable collection of arbitrary type.

source
Gridap.Geometry.CartesianDiscreteModelMethod
CartesianDiscreteModel(desc::CartesianDescriptor{D,T,F},
                       cmin::CartesianIndex,
                       cmax::CartesianIndex)

Builds a CartesianDiscreteModel object which represents a subgrid of
a (larger) grid represented by desc. This subgrid is described by its
D-dimensional minimum (cmin) and maximum (cmax) CartesianIndex
identifiers.

Inner constructor

source
Gridap.Geometry.DiscreteModelType
abstract type DiscreteModel{Dc,Dp} <: Grid

Abstract type holding information about a physical grid, the underlying grid topology, and a labeling of the grid faces. This is the information that typically provides a mesh generator, and it is what one needs to perform a simulation.

The DiscreteModel interface is defined by overloading the methods:

The interface is tested with this function:

source
Gridap.Geometry.FaceLabelingType
struct FaceLabeling <: GridapType
  d_to_dface_to_entity::Vector{Vector{Int32}}
  tag_to_entities::Vector{Vector{Int32}}
  tag_to_name::Vector{String}
end
source
Gridap.Geometry.GridType
abstract type Grid{Dc,Dp} <: Triangulation{Dc,Dp}

Abstract type that represents conforming triangulations, whose cell-wise nodal coordinates are defined with a vector of nodal coordinates, plus a cell-wise vector of node ids.

The interface of Grid is defined by overloading the methods in Triangulation plus the following ones:

From these two methods a default implementation of get_cell_coordinates(trian::Triangulation) is available.

The Grid interface has the following traits

The interface of Grid is tested with

source
Gridap.Geometry.GridPortionType
struct GridPortion{Dc,Dp,G} <: Grid{Dc,Dp}
  parent_grid::G
  cell_to_parent_cell::Vector{Int32}
  node_to_parent_node::Vector{Int32}
end
source
Gridap.Geometry.GridTopologyType
abstract type GridTopology{Dc,Dp}

Abstract type representing the topological information associated with a grid.

The GridTopology interface is defined by overloading the methods:

The GridTopology interface has the following traits

and tested with this function:

source
Gridap.Geometry.OrientationStyleMethod
OrientationStyle(::Type{<:GridTopology})
OrientationStyle(::GridTopology)

Oriented() if has oriented faces, NonOriented() otherwise (default).

source
Gridap.Geometry.TriangulationType
abstract type Triangulation{Dc,Dp}

Abstract type representing an arbitrary tiling, tessellation, or triangulation of a domain of parametric dimension Dc and physical dimension Dp.

We define a triangulation from two basic ingredients:

  • the cell-wise nodal coordinates of the cells in the triangulation, plus
  • an interpolation of this cell-wise coordinates into the cells interior.

Note that this type represents general triangulations (not necessarily conforming), which is the minimum geometrical information needed to perform cell-wise numerical integration.

The Triangulation interface is defined by overloading these methods:

Optional interface:

For triangulations living in a space of co-dimension 1, the following method can be defined:

  • [get_facet_normal(trian::Triangulation)]

In some cases, concrete implementations want to override the default implementation of the following methods:

  • [restrict(f::AbstractArray, trian::Triangulation)]
  • [get_cell_to_bgcell(f::AbstractArray, trian::Triangulation)]

The (mandatory) Triangulation interface can be tested with

source
Gridap.Geometry.UnstructuredDiscreteModelType
struct UnstructuredDiscreteModel{Dc,Dp,Tp,B} <: DiscreteModel{Dc,Dp}
  grid::UnstructuredGrid{Dc,Dp,Tp,B}
  grid_topology::UnstructuredGridTopology{Dc,Dp,Tp,B}
  face_labeling::FaceLabeling
end
source
Gridap.Geometry.UnstructuredGridType
struct UnstructuredGrid{Dc,Dp,Tp,Ti,O} <: Grid{Dc,Dp}
  node_coordinates::Vector{Point{Dp,Tp}}
  cell_node_ids::Table{Ti,Int32}
  reffes::Vector{<:LagrangianRefFE{Dc}}
  cell_types::Vector{Int8}
end
source
Gridap.Geometry.UnstructuredGridMethod
function UnstructuredGrid(
  node_coordinates::Vector{Point{Dp,Tp}},
  cell_node_ids::Table{Ti},
  reffes::Vector{<:LagrangianRefFE{Dc}},
  cell_types::Vector,
  orientation_style::OrientationStyle=NonOriented()) where {Dc,Dp,Tp,Ti}
end

Low-level inner constructor.

source
Gridap.Geometry.UnstructuredGridTopologyType
UnstructuredGridTopology(
  vertex_coordinates::Vector{<:Point},
  d_to_dface_vertices::Vector{<:Table},
  cell_type::Vector{<:Integer},
  polytopes::Vector{<:Polytope},
  orientation_style::OrientationStyle=NonOriented())
source
Gridap.Geometry.UnstructuredGridTopologyType
UnstructuredGridTopology(
  vertex_coordinates::Vector{<:Point},
  cell_vertices::Table,
  cell_type::Vector{<:Integer},
  polytopes::Vector{<:Polytope},
  orientation_style::OrientationStyle=NonOriented())
source
Gridap.Geometry._find_ncube_face_neighbor_deltasMethod

findncubefaceneighbor_deltas(p::ExtrusionPolytope{D}) -> Vector{CartesianIndex}

Given an n-cube type ExtrusionPolytope{D}, returns V=Vector{CartesianIndex} with as many entries as the number of faces in the boundary of the Polytope. For an entry facelid in this vector, V[facelid] returns what has to be added to the CartesianIndex of a cell in order to obtain the CartesianIndex of the cell neighbour of K across the face F with local ID face_lid.

source
Gridap.Geometry.add_tag_from_tags!Method
add_tag_from_tags!(lab::FaceLabeling, name::String, tags::Vector{Int})
add_tag_from_tags!(lab::FaceLabeling, name::String, tags::Vector{String})
add_tag_from_tags!(lab::FaceLabeling, name::String, tag::Int)
add_tag_from_tags!(lab::FaceLabeling, name::String, tag::String)
source
Gridap.Geometry.get_cell_reffeMethod
get_cell_reffe(trian::Triangulation) -> Vector{<:LagrangianRefFE}

It is not desirable to iterate over the resulting array for large number of cells if the underlying reference FEs are of different Julia type.

source
Gridap.Geometry.get_face_maskMethod
get_face_mask(labeling::FaceLabeling,tags::Vector{Int},d::Integer)
get_face_mask(labeling::FaceLabeling,tags::Vector{String},d::Integer)
get_face_mask(labeling::FaceLabeling,tag::Int,d::Integer)
get_face_mask(labeling::FaceLabeling,tag::String,d::Integer)
source
Gridap.Geometry.get_face_tagMethod
get_face_tag(labeling::FaceLabeling,tags::Vector{Int},d::Integer)
get_face_tag(labeling::FaceLabeling,tags::Vector{String},d::Integer)
get_face_tag(labeling::FaceLabeling,tag::Int,d::Integer)
get_face_tag(labeling::FaceLabeling,tag::String,d::Integer)
get_face_tag(labeling::FaceLabeling,d::Integer)

The first of the given tags appearing in the face is taken. If there is no tag on a face, this face will have a value equal to UNSET. If not tag or tags are provided, all the tags in the model are considered

source
Gridap.Geometry.get_face_tag_indexMethod
get_face_tag_index(labeling::FaceLabeling,tags::Vector{Int},d::Integer)
get_face_tag_index(labeling::FaceLabeling,tags::Vector{String},d::Integer)
get_face_tag_index(labeling::FaceLabeling,tag::Int,d::Integer)
get_face_tag_index(labeling::FaceLabeling,tag::String,d::Integer)

Like get_face_tag by provides the index into the array tags instead of the tag stored in tags.

source