Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0611d256b |
@@ -855,38 +855,6 @@ const IntegrationRule &GradientIntegrator::GetRule(const FiniteElement
|
||||
}
|
||||
|
||||
|
||||
/// Construct a diffusion integrator with coefficient Q = 1
|
||||
DiffusionIntegrator::DiffusionIntegrator(const IntegrationRule *ir)
|
||||
: BilinearFormIntegrator(ir),
|
||||
Q(nullptr), VQ(nullptr), MQ(nullptr), maps(nullptr), geom(nullptr)
|
||||
{
|
||||
static Kernels kernels;
|
||||
}
|
||||
|
||||
/// Construct a diffusion integrator with a scalar coefficient q
|
||||
DiffusionIntegrator::DiffusionIntegrator(Coefficient &q,
|
||||
const IntegrationRule *ir)
|
||||
: DiffusionIntegrator(ir)
|
||||
{
|
||||
Q = &q;
|
||||
}
|
||||
|
||||
/// Construct a diffusion integrator with a vector coefficient q
|
||||
DiffusionIntegrator::DiffusionIntegrator(VectorCoefficient &q,
|
||||
const IntegrationRule *ir)
|
||||
: DiffusionIntegrator(ir)
|
||||
{
|
||||
VQ = &q;
|
||||
}
|
||||
|
||||
/// Construct a diffusion integrator with a matrix coefficient q
|
||||
DiffusionIntegrator::DiffusionIntegrator(MatrixCoefficient &q,
|
||||
const IntegrationRule *ir)
|
||||
: DiffusionIntegrator(ir)
|
||||
{
|
||||
MQ = &q;
|
||||
}
|
||||
|
||||
void DiffusionIntegrator::AssembleElementMatrix
|
||||
( const FiniteElement &el, ElementTransformation &Trans,
|
||||
DenseMatrix &elmat )
|
||||
@@ -1342,18 +1310,6 @@ const IntegrationRule &DiffusionIntegrator::GetRule(
|
||||
return IntRules.Get(trial_fe.GetGeomType(), order);
|
||||
}
|
||||
|
||||
MassIntegrator::MassIntegrator(const IntegrationRule *ir)
|
||||
: BilinearFormIntegrator(ir), Q(nullptr), maps(nullptr), geom(nullptr)
|
||||
{
|
||||
static Kernels kernels;
|
||||
}
|
||||
|
||||
/// Construct a mass integrator with coefficient q
|
||||
MassIntegrator::MassIntegrator(Coefficient &q, const IntegrationRule *ir)
|
||||
: MassIntegrator(ir)
|
||||
{
|
||||
Q = &q;
|
||||
}
|
||||
|
||||
void MassIntegrator::AssembleElementMatrix
|
||||
( const FiniteElement &el, ElementTransformation &Trans,
|
||||
|
||||
+26
-8
@@ -2156,7 +2156,7 @@ public:
|
||||
|
||||
MFEM_REGISTER_KERNELS(ApplyPAKernels, ApplyKernelType, (int, int, int));
|
||||
MFEM_REGISTER_KERNELS(DiagonalPAKernels, DiagonalKernelType, (int, int, int));
|
||||
struct Kernels { Kernels(); };
|
||||
MFEM_EXPORT static struct Kernels { Kernels(); void EnsureInitialized(); } kernels;
|
||||
|
||||
protected:
|
||||
Coefficient *Q;
|
||||
@@ -2234,16 +2234,30 @@ private:
|
||||
|
||||
public:
|
||||
/// Construct a diffusion integrator with coefficient Q = 1
|
||||
DiffusionIntegrator(const IntegrationRule *ir = nullptr);
|
||||
DiffusionIntegrator(const IntegrationRule *ir = nullptr)
|
||||
: BilinearFormIntegrator(ir),
|
||||
Q(NULL), VQ(NULL), MQ(NULL), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/// Construct a diffusion integrator with a scalar coefficient q
|
||||
DiffusionIntegrator(Coefficient &q, const IntegrationRule *ir = nullptr);
|
||||
DiffusionIntegrator(Coefficient &q, const IntegrationRule *ir = nullptr)
|
||||
: BilinearFormIntegrator(ir),
|
||||
Q(&q), VQ(NULL), MQ(NULL), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/// Construct a diffusion integrator with a vector coefficient q
|
||||
DiffusionIntegrator(VectorCoefficient &q, const IntegrationRule *ir = nullptr);
|
||||
DiffusionIntegrator(VectorCoefficient &q,
|
||||
const IntegrationRule *ir = nullptr)
|
||||
: BilinearFormIntegrator(ir),
|
||||
Q(NULL), VQ(&q), MQ(NULL), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/// Construct a diffusion integrator with a matrix coefficient q
|
||||
DiffusionIntegrator(MatrixCoefficient &q, const IntegrationRule *ir = nullptr);
|
||||
DiffusionIntegrator(MatrixCoefficient &q,
|
||||
const IntegrationRule *ir = nullptr)
|
||||
: BilinearFormIntegrator(ir),
|
||||
Q(NULL), VQ(NULL), MQ(&q), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/** Given a particular Finite Element computes the element stiffness matrix
|
||||
elmat. */
|
||||
@@ -2346,13 +2360,17 @@ public:
|
||||
|
||||
MFEM_REGISTER_KERNELS(ApplyPAKernels, ApplyKernelType, (int, int, int));
|
||||
MFEM_REGISTER_KERNELS(DiagonalPAKernels, DiagonalKernelType, (int, int, int));
|
||||
struct Kernels { Kernels(); };
|
||||
MFEM_EXPORT static struct Kernels { Kernels(); void EnsureInitialized(); } kernels;
|
||||
|
||||
public:
|
||||
MassIntegrator(const IntegrationRule *ir = nullptr);
|
||||
MassIntegrator(const IntegrationRule *ir = NULL)
|
||||
: BilinearFormIntegrator(ir), Q(NULL), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/// Construct a mass integrator with coefficient q
|
||||
MassIntegrator(Coefficient &q, const IntegrationRule *ir = NULL);
|
||||
MassIntegrator(Coefficient &q, const IntegrationRule *ir = NULL)
|
||||
: BilinearFormIntegrator(ir), Q(&q), maps(NULL), geom(NULL)
|
||||
{ kernels.EnsureInitialized(); }
|
||||
|
||||
/** Given a particular Finite Element computes the element mass matrix
|
||||
elmat. */
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace mfem
|
||||
|
||||
// PA Diffusion Integrator
|
||||
|
||||
DiffusionIntegrator::Kernels DiffusionIntegrator::kernels;
|
||||
DiffusionIntegrator::Kernels::Kernels()
|
||||
{
|
||||
// 2D
|
||||
@@ -40,6 +41,8 @@ DiffusionIntegrator::Kernels::Kernels()
|
||||
DiffusionIntegrator::AddSpecialization<3,8,9>();
|
||||
}
|
||||
|
||||
void DiffusionIntegrator::Kernels::EnsureInitialized() { }
|
||||
|
||||
namespace internal
|
||||
{
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
namespace mfem
|
||||
{
|
||||
|
||||
MassIntegrator::Kernels MassIntegrator::kernels;
|
||||
MassIntegrator::Kernels::Kernels()
|
||||
{
|
||||
// 2D
|
||||
@@ -38,6 +39,8 @@ MassIntegrator::Kernels::Kernels()
|
||||
MassIntegrator::AddSpecialization<3,8,9>();
|
||||
}
|
||||
|
||||
void MassIntegrator::Kernels::EnsureInitialized() { }
|
||||
|
||||
namespace internal
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user