1#ifndef included_AMP_PowerShape_h
2#define included_AMP_PowerShape_h
5#include "AMP/mesh/Mesh.h"
6#include "AMP/operators/Operator.h"
7#include "AMP/operators/OperatorParameters.h"
8#include "AMP/operators/libmesh/PowerShapeParameters.h"
9#include "AMP/utils/Database.h"
10#include "AMP/utils/UtilityMacros.h"
11#include "AMP/vectors/Variable.h"
17#include "libmesh/libmesh_config.h"
18#undef LIBMESH_ENABLE_REFERENCE_COUNTING
19#include "libmesh/elem.h"
20#include "libmesh/fe_base.h"
21#include "libmesh/fe_type.h"
22#include "libmesh/quadrature_gauss.h"
45 explicit PowerShape( std::shared_ptr<PowerShapeParameters> parameters );
53 std::string
type()
const override {
return "PowerShape"; }
80 void reset( std::shared_ptr<const OperatorParameters> parameters )
override;
94 std::shared_ptr<AMP::Database>
d_db;
97 std::shared_ptr<libMesh::FEBase>
d_fe;
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
A pointer class to wrap a MeshElementVector.
std::shared_ptr< AMP::Operator::Operator > shared_ptr
Provides the specific power distribution by node for a given mesh.
void putToDatabase(std::shared_ptr< AMP::Database > db)
AMP::Mesh::MeshElementVectorPtr d_currNodes
double getZernikeRadial(double rho)
std::vector< double > d_Zmoments
std::vector< double > d_Moments
std::shared_ptr< libMesh::QBase > d_qrule
double evalLegendre(const int n, const double x)
std::shared_ptr< libMesh::FEBase > d_fe
std::vector< double > d_radialBoundingBox
double evalFactorial(const int n)
unsigned int d_numYmoments
std::string d_coordinateSystem
void createCurrentLibMeshElement()
std::string type() const override
Return the name of the operator.
double getZernike(double rho, double phi)
libMesh::Elem * d_currElemPtr
std::vector< double > d_Xmoments
void reset(std::shared_ptr< const OperatorParameters > parameters) override
unsigned int d_numXmoments
std::shared_ptr< libMesh::FEType > d_feType
std::shared_ptr< AMP::Database > d_db
void destroyCurrentLibMeshElement()
double getFrapconFr(double radius, double rmax)
PowerShape(std::shared_ptr< PowerShapeParameters > parameters)
std::vector< double > d_Ymoments
double getGaussianF(double x, double y)
double getVolumeIntegralSum(double rmax, double cx, double cy)
double evalZernike(const int m, const int n, const double rho, const double phi)
void apply(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
void printClassData(std::ostream &os) const
unsigned int d_numMoments
unsigned int d_numZmoments
unsigned int d_numMNmoments
#define DISABLE_WARNINGS
Re-enable warnings.
#define ENABLE_WARNINGS
Suppress all warnings.