MFEM v4.10.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::PLBound Class Reference

#include <bounds.hpp>

Public Member Functions

 PLBound (const int nb_i, const int ncp_i, const int b_type_i, const int cp_type_i, const real_t tol_i)
 
 PLBound (const FiniteElementSpace *fes, const int ncp_i=-1, const int cp_type_i=0)
 
int GetMinimumPointsForGivenBases (int nb_i, int b_type_i, int cp_type_i) const
 Get minimum number of control points needed to bound the given bases.
 
void Print (std::ostream &outp=mfem::out) const
 Print information about the bounds.
 
void SetProjectionFlagForBounding (bool proj_)
 Enable (default) or disable linear projection before bounding.
 
void GetNDBounds (const int rdim, const Vector &coeff, Vector &intmin, Vector &intmax) const
 Compute piecewise linear bounds for the lexicographically-ordered nodal coefficients in coeff in 1D/2D/3D.
 
int GetNControlPoints () const
 Get number of control points used to compute the bounds.
 
const VectorGetControlPoints () const
 Get 1D control point locations (lexicographic order) in [0,1].
 
DenseMatrix GetLowerBoundMatrix (int dim=1) const
 Get lower and upper bounding matrix (ncp^dim x nb^dim)
 
DenseMatrix GetUpperBoundMatrix (int dim=1) const
 

Detailed Description

Definition at line 53 of file bounds.hpp.

Constructor & Destructor Documentation

◆ PLBound() [1/2]

mfem::PLBound::PLBound ( const int nb_i,
const int ncp_i,
const int b_type_i,
const int cp_type_i,
const real_t tol_i )
inline

Definition at line 94 of file bounds.hpp.

◆ PLBound() [2/2]

mfem::PLBound::PLBound ( const FiniteElementSpace * fes,
const int ncp_i = -1,
const int cp_type_i = 0 )

Definition at line 214 of file bounds.cpp.

Member Function Documentation

◆ GetControlPoints()

const Vector & mfem::PLBound::GetControlPoints ( ) const
inline

Get 1D control point locations (lexicographic order) in [0,1].

Definition at line 141 of file bounds.hpp.

◆ GetLowerBoundMatrix()

DenseMatrix mfem::PLBound::GetLowerBoundMatrix ( int dim = 1) const

Get lower and upper bounding matrix (ncp^dim x nb^dim)

The matrices can be used to compute the bounds at control points by a simple matrix-vector product with the lexicographically-ordered nodal coefficients. The resulting output is also lexicographically-ordered.

Note
These matrices do not account for the linear projection step that is optionally done in GetNDBounds before bounding the function.

Definition at line 698 of file bounds.cpp.

◆ GetMinimumPointsForGivenBases()

int mfem::PLBound::GetMinimumPointsForGivenBases ( int nb_i,
int b_type_i,
int cp_type_i ) const

Get minimum number of control points needed to bound the given bases.

Definition at line 712 of file bounds.cpp.

◆ GetNControlPoints()

int mfem::PLBound::GetNControlPoints ( ) const
inline

Get number of control points used to compute the bounds.

Definition at line 138 of file bounds.hpp.

◆ GetNDBounds()

void mfem::PLBound::GetNDBounds ( const int rdim,
const Vector & coeff,
Vector & intmin,
Vector & intmax ) const

Compute piecewise linear bounds for the lexicographically-ordered nodal coefficients in coeff in 1D/2D/3D.

Parameters
[in]rdimThe spatial dimension of the element (1, 2, or 3).
[in]coeffThe vector of lexicographically-ordered coefficients. Should be of size nb^rdim, where nb is the number of bases/nodes in 1D. These coefficients must correspond to the bases type and number of bases, used in the constructor of PLBound.
[out]intminThe vector of minimum bound for all control points.
[out]intmaxThe vector of maximum bound for all control points. Both intmin and intmax are of size ncp^rdim, where ncp is the number of control points in 1D, and are ordered lexicographically.

Definition at line 636 of file bounds.cpp.

◆ GetUpperBoundMatrix()

DenseMatrix mfem::PLBound::GetUpperBoundMatrix ( int dim = 1) const

Definition at line 703 of file bounds.cpp.

◆ Print()

void mfem::PLBound::Print ( std::ostream & outp = mfem::out) const

Print information about the bounds.

Definition at line 740 of file bounds.cpp.

◆ SetProjectionFlagForBounding()

void mfem::PLBound::SetProjectionFlagForBounding ( bool proj_)
inline

Enable (default) or disable linear projection before bounding.

This projection increases the computational cost but results in tighter bounds.

Definition at line 116 of file bounds.hpp.


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