82 : pml(pml_), Function(F)
88 T.Transform(ip, transip);
89 return ((*Function)(transip, pml));
109 T.Transform(ip, transip);
111 (*Function)(transip, pml, K);
const Array2D< double > & GetDomainBdr()
Return Domain Boundary.
const Array2D< double > & GetCompDomainBdr()
Return Computational Domain Boundary.
Data type dense matrix using column-major storage.
void Jt_J_detJinv_i_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
void SetOmega(double omega_)
void abs_detJ_Jt_J_inv_2_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
void detJ_Jt_J_inv_r_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
double detJ_i_function(const Vector &x, CartesianPML *pml)
CartesianPML(Mesh *mesh_, const Array2D< double > &length_)
virtual double Eval(ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the coefficient in the element described by T at the point ip.
PmlCoefficient(double(*F)(const Vector &, CartesianPML *), CartesianPML *pml_)
void abs_Jt_J_detJinv_2_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
void SetAttributes(Mesh *mesh_, Array< int > *attrNonPML=nullptr, Array< int > *attrPML=nullptr)
Mark element in the PML region.
double abs_detJ_2_function(const Vector &x, CartesianPML *pml)
void SetEpsilonAndMu(double epsilon_, double mu_)
void detJ_Jt_J_inv_i_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
Base class for Matrix Coefficients that optionally depend on time and space.
double detJ_r_function(const Vector &x, CartesianPML *pml)
PML stretching functions: See https://doi.org/10.1006/jcph.1994.1159.
Class for setting up a simple Cartesian PML region.
Class for integration point with weight.
const Array< int > & GetMarkedPMLElements()
Return Marker list for elements.
void Jt_J_detJinv_r_function(const Vector &x, CartesianPML *pml, DenseMatrix &M)
virtual void Eval(DenseMatrix &K, ElementTransformation &T, const IntegrationPoint &ip)
Evaluate the matrix coefficient in the element described by T at the point ip, storing the result in ...
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
PmlMatrixCoefficient(int dim, void(*F)(const Vector &, CartesianPML *, DenseMatrix &), CartesianPML *pml_)
void StretchFunction(const Vector &x, std::vector< std::complex< double >> &dxs)
PML complex stretching function.