This object is passed to MeshTools::Modification::redistribute() to redistribute the points on a uniform grid into the Gauss-Lobatto points on the actual grid.
More...
|
| GaussLobattoRedistributionFunction (unsigned int nx, Real xmin, Real xmax, unsigned int ny=0, Real ymin=0, Real ymax=0, unsigned int nz=0, Real zmin=0, Real zmax=0) |
| Constructor. More...
|
|
| GaussLobattoRedistributionFunction (GaussLobattoRedistributionFunction &&)=default |
| The 5 special functions can be defaulted for this class. More...
|
|
| GaussLobattoRedistributionFunction (const GaussLobattoRedistributionFunction &)=default |
|
GaussLobattoRedistributionFunction & | operator= (const GaussLobattoRedistributionFunction &)=default |
|
GaussLobattoRedistributionFunction & | operator= (GaussLobattoRedistributionFunction &&)=default |
|
virtual | ~GaussLobattoRedistributionFunction ()=default |
|
virtual std::unique_ptr< FunctionBase< Real > > | clone () const override |
| We must provide a way to clone ourselves to satisfy the pure virtual interface. More...
|
|
virtual void | operator() (const Point &p, const Real, DenseVector< Real > &output) override |
| This is the actual function that MeshTools::Modification::redistribute() calls. More...
|
|
virtual Real | operator() (const Point &, const Real) override |
| We must also override operator() which returns a Real, but this function should never be called, so it's left unimplemented. More...
|
|
virtual void | init () |
| The actual initialization process. More...
|
|
virtual void | clear () |
| Clears the function. More...
|
|
void | operator() (const Point &p, DenseVector< Real > &output) |
| Evaluation function for time-independent vector-valued functions. More...
|
|
virtual Real | component (unsigned int i, const Point &p, Real time=0.) |
|
bool | initialized () const |
|
void | set_is_time_dependent (bool is_time_dependent) |
| Function to set whether this is a time-dependent function or not. More...
|
|
bool | is_time_dependent () const |
|
This object is passed to MeshTools::Modification::redistribute() to redistribute the points on a uniform grid into the Gauss-Lobatto points on the actual grid.
Definition at line 159 of file mesh_generation.C.
◆ GaussLobattoRedistributionFunction() [1/3]
libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::GaussLobattoRedistributionFunction |
( |
unsigned int |
nx, |
|
|
Real |
xmin, |
|
|
Real |
xmax, |
|
|
unsigned int |
ny = 0 , |
|
|
Real |
ymin = 0 , |
|
|
Real |
ymax = 0 , |
|
|
unsigned int |
nz = 0 , |
|
|
Real |
zmin = 0 , |
|
|
Real |
zmax = 0 |
|
) |
| |
|
inline |
◆ GaussLobattoRedistributionFunction() [2/3]
The 5 special functions can be defaulted for this class.
◆ GaussLobattoRedistributionFunction() [3/3]
◆ ~GaussLobattoRedistributionFunction()
virtual libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::~GaussLobattoRedistributionFunction |
( |
| ) |
|
|
virtualdefault |
◆ clear()
◆ clone()
virtual std::unique_ptr<FunctionBase<Real> > libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::clone |
( |
| ) |
const |
|
inlineoverridevirtual |
We must provide a way to clone ourselves to satisfy the pure virtual interface.
We use the autogenerated copy constructor.
Implements libMesh::FunctionBase< Real >.
Definition at line 215 of file mesh_generation.C.
217 return std::make_unique<GaussLobattoRedistributionFunction>(*this);
◆ component()
- Returns
- The vector component
i
at coordinate p
and time time
.
- Note
- Subclasses aren't required to override this, since the default implementation is based on the full vector evaluation, which is often correct.
-
Subclasses are recommended to override this, since the default implementation is based on a vector evaluation, which is usually unnecessarily inefficient.
-
The default implementation calls operator() with a DenseVector of size
i+1
which will result in unexpected behaviour if operator() makes any access beyond that limit.
Definition at line 232 of file function_base.h.
236 DenseVector<Output> outvec(i+1);
237 (*this)(p, time, outvec);
◆ init()
◆ initialized()
- Returns
true
when this object is properly initialized and ready for use, false
otherwise.
Definition at line 210 of file function_base.h.
bool _initialized
When init() was called so that everything is ready for calls to operator() (...), then this bool is t...
◆ is_time_dependent()
- Returns
true
when the function this object represents is actually time-dependent, false
otherwise.
Definition at line 224 of file function_base.h.
bool _is_time_dependent
Cache whether or not this function is actually time-dependent.
◆ operator()() [1/3]
Evaluation function for time-independent vector-valued functions.
Sets output values in the passed-in output
DenseVector.
Definition at line 245 of file function_base.h.
virtual Real operator()(const Point &p, const Real time=0.)=0
◆ operator()() [2/3]
virtual void libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::operator() |
( |
const Point & |
p, |
|
|
const Real |
, |
|
|
DenseVector< Real > & |
output |
|
) |
| |
|
inlineoverridevirtual |
This is the actual function that MeshTools::Modification::redistribute() calls.
Moves the points of the grid to the Gauss-Lobatto points.
Implements libMesh::FunctionBase< Real >.
Definition at line 225 of file mesh_generation.C.
References _cosines, _mins, _nelem, _widths, std::abs(), int, libMesh::Real, libMesh::DenseVector< T >::resize(), and libMesh::TOLERANCE.
231 for (
unsigned dir=0; dir<3; ++dir)
238 Real integer_part_f = 0;
239 const Real fractional_part = std::modf(float_index, &integer_part_f);
241 const int integer_part =
int(integer_part_f);
246 int index =
int(round(float_index));
267 (1.0 - 2./3.*
_cosines[dir][integer_part] - 1./3.*
_cosines[dir][integer_part+1]);
276 (1.0 - 1./3.*
_cosines[dir][integer_part] - 2./3.*
_cosines[dir][integer_part+1]);
280 libmesh_error_msg(
"Cannot redistribute node: " << p);
static constexpr Real TOLERANCE
ADRealEigenVector< T, D, asd > abs(const ADRealEigenVector< T, D, asd > &)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void ErrorVector unsigned int
◆ operator()() [3/3]
virtual Real libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::operator() |
( |
const Point & |
, |
|
|
const Real |
|
|
) |
| |
|
inlineoverridevirtual |
We must also override operator() which returns a Real, but this function should never be called, so it's left unimplemented.
Implements libMesh::FunctionBase< Real >.
Definition at line 288 of file mesh_generation.C.
291 libmesh_not_implemented();
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ set_is_time_dependent()
Function to set whether this is a time-dependent function or not.
This is intended to be only used by subclasses who cannot natively determine time-dependence. In such a case, this function should be used immediately following construction.
Definition at line 217 of file function_base.h.
bool is_time_dependent() const
bool _is_time_dependent
Cache whether or not this function is actually time-dependent.
◆ _cosines
std::vector<std::vector<Real> > libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::_cosines |
|
protected |
◆ _initialized
When init()
was called so that everything is ready for calls to operator()
(...), then this bool
is true.
Definition at line 184 of file function_base.h.
◆ _is_time_dependent
Cache whether or not this function is actually time-dependent.
Definition at line 189 of file function_base.h.
◆ _master
Const pointer to our master, initialized to nullptr
.
There may be cases where multiple functions are required, but to save memory, one master handles some centralized data.
Definition at line 178 of file function_base.h.
◆ _mins
std::vector<Real> libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::_mins |
|
protected |
◆ _nelem
std::vector<unsigned int> libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::_nelem |
|
protected |
◆ _widths
std::vector<Real> libMesh::MeshTools::Generation::Private::GaussLobattoRedistributionFunction::_widths |
|
protected |
The documentation for this class was generated from the following file: