Chi-Tech
chi_math::spatial_discretization::PieceWiseLinearDiscontinuous Class Reference

#include <PieceWiseLinearDiscontinuous.h>

Inheritance diagram for chi_math::spatial_discretization::PieceWiseLinearDiscontinuous:
chi_math::spatial_discretization::PieceWiseLinearBase chi_math::spatial_discretization::FiniteElementBase chi_math::SpatialDiscretization

Public Member Functions

void BuildSparsityPattern (std::vector< int64_t > &nodal_nnz_in_diag, std::vector< int64_t > &nodal_nnz_off_diag, const UnknownManager &unknown_manager) const override
 
int64_t MapDOF (const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const override
 
int64_t MapDOFLocal (const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const override
 
int64_t MapDOF (const chi_mesh::Cell &cell, unsigned int node) const override
 
int64_t MapDOFLocal (const chi_mesh::Cell &cell, unsigned int node) const override
 
size_t GetNumGhostDOFs (const UnknownManager &unknown_manager) const override
 
std::vector< int64_t > GetGhostDOFIndices (const UnknownManager &unknown_manager) const override
 
- Public Member Functions inherited from chi_math::spatial_discretization::FiniteElementBase
QuadratureOrder GetQuadratureOrder () const
 
- Public Member Functions inherited from chi_math::SpatialDiscretization
std::pair< std::set< uint32_t >, std::set< uint32_t > > MakeCellInternalAndBndryNodeIDs (const chi_mesh::Cell &cell) const
 
const CellMappingGetCellMapping (const chi_mesh::Cell &cell) const
 
SpatialDiscretizationType Type () const
 
const chi_mesh::MeshContinuumGrid () const
 
CoordinateSystemType GetCoordinateSystemType () const
 
virtual void BuildSparsityPattern (std::vector< int64_t > &nodal_nnz_in_diag, std::vector< int64_t > &nodal_nnz_off_diag, const UnknownManager &unknown_manager) const =0
 
virtual int64_t MapDOF (const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const =0
 
virtual int64_t MapDOFLocal (const chi_mesh::Cell &cell, unsigned int node, const UnknownManager &unknown_manager, unsigned int unknown_id, unsigned int component) const =0
 
virtual int64_t MapDOF (const chi_mesh::Cell &cell, unsigned int node) const =0
 
virtual int64_t MapDOFLocal (const chi_mesh::Cell &cell, unsigned int node) const =0
 
size_t GetNumLocalDOFs (const UnknownManager &unknown_manager) const
 
size_t GetNumGlobalDOFs (const UnknownManager &unknown_manager) const
 
virtual size_t GetNumGhostDOFs (const UnknownManager &unknown_manager) const =0
 
virtual std::vector< int64_t > GetGhostDOFIndices (const UnknownManager &unknown_manager) const =0
 
size_t GetNumLocalAndGhostDOFs (const UnknownManager &unknown_manager) const
 
size_t GetCellNumNodes (const chi_mesh::Cell &cell) const
 
const std::vector< chi_mesh::Vector3 > & GetCellNodeLocations (const chi_mesh::Cell &cell) const
 
std::vector< std::vector< std::vector< int > > > MakeInternalFaceNodeMappings (double tolerance=1.0e-12) const
 For each local cell, for each face, for each face-node, provides a mapping to the adjacent cell's nodes. More...
 
void CopyVectorWithUnknownScope (const std::vector< double > &from_vector, std::vector< double > &to_vector, const UnknownManager &from_vec_uk_structure, unsigned int from_vec_uk_id, const UnknownManager &to_vec_uk_structure, unsigned int to_vec_uk_id) const
 
virtual void LocalizePETScVector (Vec petsc_vector, std::vector< double > &local_vector, const UnknownManager &unknown_manager) const
 
virtual void LocalizePETScVectorWithGhosts (Vec petsc_vector, std::vector< double > &local_vector, const UnknownManager &unknown_manager) const
 
SpatialWeightFunction GetSpatialWeightingFunction () const
 
virtual ~SpatialDiscretization ()=default
 

Static Public Member Functions

static std::shared_ptr< PieceWiseLinearDiscontinuousNew (const chi_mesh::MeshContinuum &grid, QuadratureOrder q_order=QuadratureOrder::SECOND, CoordinateSystemType cs_type=CoordinateSystemType::CARTESIAN)
 
- Static Public Member Functions inherited from chi_math::SpatialDiscretization
static double CartesianSpatialWeightFunction (const chi_mesh::Vector3 &point)
 
static double CylindricalRZSpatialWeightFunction (const chi_mesh::Vector3 &point)
 
static double Spherical1DSpatialWeightFunction (const chi_mesh::Vector3 &point)
 

Protected Member Functions

void OrderNodes ()
 
- Protected Member Functions inherited from chi_math::spatial_discretization::PieceWiseLinearBase
 PieceWiseLinearBase (const chi_mesh::MeshContinuum &grid, QuadratureOrder q_order, SDMType sdm_type, CoordinateSystemType cs_type)
 
void CreateCellMappings ()
 
- Protected Member Functions inherited from chi_math::spatial_discretization::FiniteElementBase
 FiniteElementBase (const chi_mesh::MeshContinuum &grid, CoordinateSystemType cs_type, SDMType sdm_type, QuadratureOrder q_order)
 
- Protected Member Functions inherited from chi_math::SpatialDiscretization
 SpatialDiscretization (const chi_mesh::MeshContinuum &grid, CoordinateSystemType cs_type, SDMType sdm_type)
 

Protected Attributes

std::vector< int64_t > cell_local_block_address_
 
std::vector< std::pair< uint64_t, int64_t > > neighbor_cell_block_address_
 
- Protected Attributes inherited from chi_math::spatial_discretization::PieceWiseLinearBase
QuadratureLine line_quad_order_arbitrary_
 
QuadratureTriangle tri_quad_order_arbitrary_
 
QuadratureQuadrilateral quad_quad_order_arbitrary_
 
QuadratureTetrahedron tet_quad_order_arbitrary_
 
- Protected Attributes inherited from chi_math::spatial_discretization::FiniteElementBase
const QuadratureOrder q_order_
 
- Protected Attributes inherited from chi_math::SpatialDiscretization
const chi_mesh::MeshContinuumref_grid_
 
std::vector< std::unique_ptr< CellMapping > > cell_mappings_
 
std::map< uint64_t, std::shared_ptr< CellMapping > > nb_cell_mappings_
 
uint64_t local_block_address_ = 0
 
std::vector< uint64_t > locJ_block_address_
 
std::vector< uint64_t > locJ_block_size_
 
uint64_t local_base_block_size_ = 0
 
uint64_t globl_base_block_size_ = 0
 
const CoordinateSystemType coord_sys_type_
 

Private Member Functions

 PieceWiseLinearDiscontinuous (const chi_mesh::MeshContinuum &grid, QuadratureOrder q_order, CoordinateSystemType cs_type)
 

Additional Inherited Members

- Public Types inherited from chi_math::SpatialDiscretization
typedef std::function< double(const chi_mesh::Vector3 &)> SpatialWeightFunction
 
- Data Fields inherited from chi_math::SpatialDiscretization
const UnknownManager UNITARY_UNKNOWN_MANAGER
 
- Protected Types inherited from chi_math::SpatialDiscretization
typedef SpatialDiscretizationType SDMType
 

Detailed Description

Generalization of the Galerkin Finite Element Method with piecewise linear basis functions for use by a Discontinuous Finite Element Method (DFEM).

Definition at line 15 of file PieceWiseLinearDiscontinuous.h.

Constructor & Destructor Documentation

◆ PieceWiseLinearDiscontinuous()

chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::PieceWiseLinearDiscontinuous ( const chi_mesh::MeshContinuum grid,
chi_math::QuadratureOrder  q_order,
chi_math::CoordinateSystemType  cs_type 
)
explicitprivate

Constructor.

Definition at line 15 of file pwld_00_constrdestr.cc.

Member Function Documentation

◆ BuildSparsityPattern()

void chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::BuildSparsityPattern ( std::vector< int64_t > &  nodal_nnz_in_diag,
std::vector< int64_t > &  nodal_nnz_off_diag,
const UnknownManager unknown_manager 
) const
overridevirtual

Builds the sparsity pattern for a Discontinuous Finite Element Method.

Implements chi_math::SpatialDiscretization.

Definition at line 13 of file pwld_03_buildsparsity.cc.

◆ GetGhostDOFIndices()

std::vector< int64_t > chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::GetGhostDOFIndices ( const UnknownManager unknown_manager) const
overridevirtual

Returns the ghost DOF indices.

Implements chi_math::SpatialDiscretization.

Definition at line 18 of file pwld_05_utils.cc.

◆ GetNumGhostDOFs()

size_t chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::GetNumGhostDOFs ( const UnknownManager unknown_manager) const
overridevirtual

Get the number of ghost degrees-of-freedom.

Implements chi_math::SpatialDiscretization.

Definition at line 10 of file pwld_05_utils.cc.

◆ MapDOF() [1/2]

int64_t chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::MapDOF ( const chi_mesh::Cell cell,
unsigned int  node 
) const
inlineoverridevirtual

Maps the local address of a degree of freedom. This can include ghost entries if the specific discretization has any. Default structure here is a single scalar unknown.

Implements chi_math::SpatialDiscretization.

Definition at line 43 of file PieceWiseLinearDiscontinuous.h.

◆ MapDOF() [2/2]

int64_t chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::MapDOF ( const chi_mesh::Cell cell,
unsigned int  node,
const UnknownManager unknown_manager,
unsigned int  unknown_id,
unsigned int  component 
) const
overridevirtual

Provides a mapping of cell's DOF from a DFEM perspective.

Implements chi_math::SpatialDiscretization.

Definition at line 13 of file pwld_04_mappings.cc.

◆ MapDOFLocal() [1/2]

int64_t chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::MapDOFLocal ( const chi_mesh::Cell cell,
unsigned int  node 
) const
inlineoverridevirtual

Maps the local address of a degree of freedom. This can include ghost entries if the specific discretization has any. Default structure here is a single scalar unknown.

Implements chi_math::SpatialDiscretization.

Definition at line 47 of file PieceWiseLinearDiscontinuous.h.

◆ MapDOFLocal() [2/2]

int64_t chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::MapDOFLocal ( const chi_mesh::Cell cell,
unsigned int  node,
const UnknownManager unknown_manager,
unsigned int  unknown_id,
unsigned int  component 
) const
overridevirtual

Provides a mapping of cell's DOF from a DFEM perspective.

Implements chi_math::SpatialDiscretization.

Definition at line 86 of file pwld_04_mappings.cc.

◆ New()

std::shared_ptr< PieceWiseLinearDiscontinuous > chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::New ( const chi_mesh::MeshContinuum grid,
QuadratureOrder  q_order = QuadratureOrder::SECOND,
CoordinateSystemType  cs_type = CoordinateSystemType::CARTESIAN 
)
static

Construct a shared object using the protected constructor.

Definition at line 29 of file pwld_00_constrdestr.cc.

◆ OrderNodes()

void chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::OrderNodes ( )
protected

Reorders the nodes for parallel computation in a Continuous Finite Element calculation.

Definition at line 18 of file pwld_02_ordering.cc.

Field Documentation

◆ cell_local_block_address_

std::vector<int64_t> chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::cell_local_block_address_
protected

Definition at line 62 of file PieceWiseLinearDiscontinuous.h.

◆ neighbor_cell_block_address_

std::vector<std::pair<uint64_t, int64_t> > chi_math::spatial_discretization::PieceWiseLinearDiscontinuous::neighbor_cell_block_address_
protected

Definition at line 63 of file PieceWiseLinearDiscontinuous.h.


The documentation for this class was generated from the following files: