61 virtual void AssembleElementVector(
const mfem::FiniteElement &el, mfem::ElementTransformation &Trans,
const mfem::Vector &elfun, mfem::Vector &elvect)
override;
70 virtual void AssembleElementGrad (
const mfem::FiniteElement &el, mfem::ElementTransformation &Trans,
const mfem::Vector &elfun, mfem::DenseMatrix &elmat)
override;
72 serif::config::Config&
m_config = serif::config::Config::getInstance();
81 inline double dfmod(
const double epsilon,
const double n) {
88 return n * std::pow(epsilon, n - 1.0);
91 inline double fmod(
const double theta,
const double n,
const double epsilon) {
96 const double y_prime_at_epsilon =
dfmod(epsilon, n);
97 const double y_at_epsilon = std::pow(epsilon, n);
100 return y_at_epsilon + y_prime_at_epsilon * (theta - epsilon);
NonlinearPowerIntegrator(double n)
Constructor for NonlinearPowerIntegrator.
static constexpr double m_regularizationRadius
Regularization radius for the epsilon function, used to avoid singularities in the power law.
virtual void AssembleElementVector(const mfem::FiniteElement &el, mfem::ElementTransformation &Trans, const mfem::Vector &elfun, mfem::Vector &elvect) override
Assembles the element vector.
virtual void AssembleElementGrad(const mfem::FiniteElement &el, mfem::ElementTransformation &Trans, const mfem::Vector &elfun, mfem::DenseMatrix &elmat) override
Assembles the element gradient.
serif::config::Config & m_config
static constexpr double m_regularizationCoeff
Coefficient for the regularization term, used to ensure smoothness in the power law.
serif::probe::LogManager & m_logManager
Class to manage logging operations.
static LogManager & getInstance()
Get the singleton instance of LogManager.
A namespace for utilities for working with MFEM and solving the lane-emden equation.
double dfmod(const double epsilon, const double n)
double fmod(const double theta, const double n, const double epsilon)