Compare commits

...
Author SHA1 Message Date
Tzanio 967908029f make style 2021-09-13 10:51:52 -07:00
AMCBRIDGE\ahudym 8560248ea4 revert make file 2021-09-13 18:42:10 +03:00
AMCBRIDGE\ahudym fa85cf2471 fix style 2021-09-13 18:41:43 +03:00
AMCBRIDGE\ahudym 8b34881d46 change #elif with #else 2021-09-13 11:39:22 +03:00
AMCBRIDGE\ahudym de0cad550d cast to SOCKET only for WIN32 platform 2021-09-13 11:34:44 +03:00
AMCBRIDGE\ahudym 1f7f84d7a2 1. Remove "static" keyword from functions used as lambdas on "device"
2. Add _USE_MATH_DEFINES to CmakeLists.txt (without this change VS doesn't "see" this preprocessor in config.hpp)
3. Remove asm definition - asm is not allowed in VS anymore
4. Convert "const double Epsilon" to constexpr (fixes CUDA compilation error)
2021-09-03 11:59:51 +03:00
36 changed files with 4258 additions and 3913 deletions
+4
View File
@@ -175,6 +175,10 @@ else()
set(MFEM_DEBUG OFF) set(MFEM_DEBUG OFF)
endif() endif()
if (WIN32)
add_definitions(-D_USE_MATH_DEFINES)
endif()
# MPI -> hypre; PETSc (optional) # MPI -> hypre; PETSc (optional)
if (MFEM_USE_MPI) if (MFEM_USE_MPI)
find_package(MPI REQUIRED) find_package(MPI REQUIRED)
+1 -1
View File
@@ -92,7 +92,7 @@ class PMLDiagMatrixCoefficient : public VectorCoefficient
{ {
private: private:
CartesianPML * pml = nullptr; CartesianPML * pml = nullptr;
void (*Function)(const Vector &, CartesianPML * , Vector &); void (*Function)(const Vector &, CartesianPML *, Vector &);
public: public:
PMLDiagMatrixCoefficient(int dim, void(*F)(const Vector &, CartesianPML *, PMLDiagMatrixCoefficient(int dim, void(*F)(const Vector &, CartesianPML *,
Vector &), Vector &),
+1 -1
View File
@@ -92,7 +92,7 @@ class PMLDiagMatrixCoefficient : public VectorCoefficient
{ {
private: private:
CartesianPML * pml = nullptr; CartesianPML * pml = nullptr;
void (*Function)(const Vector &, CartesianPML * , Vector &); void (*Function)(const Vector &, CartesianPML *, Vector &);
public: public:
PMLDiagMatrixCoefficient(int dim, void(*F)(const Vector &, CartesianPML *, PMLDiagMatrixCoefficient(int dim, void(*F)(const Vector &, CartesianPML *,
Vector &), Vector &),
+24 -24
View File
@@ -17,14 +17,14 @@ namespace mfem
{ {
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAConvectionAssemble1D(const int NE, void EAConvectionAssemble1D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -69,14 +69,14 @@ static void EAConvectionAssemble1D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAConvectionAssemble2D(const int NE, void EAConvectionAssemble2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -146,14 +146,14 @@ static void EAConvectionAssemble2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAConvectionAssemble3D(const int NE, void EAConvectionAssemble3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+18 -18
View File
@@ -21,13 +21,13 @@ namespace mfem
// PA Convection Integrator // PA Convection Integrator
// PA Convection Assemble 2D kernel // PA Convection Assemble 2D kernel
static void PAConvectionSetup2D(const int NQ, void PAConvectionSetup2D(const int NQ,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &vel, const Vector &vel,
const double alpha, const double alpha,
Vector &op) Vector &op)
{ {
constexpr int DIM = 2; constexpr int DIM = 2;
@@ -60,13 +60,13 @@ static void PAConvectionSetup2D(const int NQ,
} }
// PA Convection Assemble 3D kernel // PA Convection Assemble 3D kernel
static void PAConvectionSetup3D(const int NQ, void PAConvectionSetup3D(const int NQ,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &vel, const Vector &vel,
const double alpha, const double alpha,
Vector &op) Vector &op)
{ {
constexpr int DIM = 3; constexpr int DIM = 3;
constexpr int SDIM = DIM; constexpr int SDIM = DIM;
@@ -135,7 +135,7 @@ static void PAConvectionSetup(const int dim,
} }
// PA Convection Apply 2D kernel // PA Convection Apply 2D kernel
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PAConvectionApply2D(const int ne, void PAConvectionApply2D(const int ne,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
@@ -254,7 +254,7 @@ void PAConvectionApply2D(const int ne,
} }
// Optimized PA Convection Apply 2D kernel // Optimized PA Convection Apply 2D kernel
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> static template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
void SmemPAConvectionApply2D(const int ne, void SmemPAConvectionApply2D(const int ne,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
@@ -382,7 +382,7 @@ void SmemPAConvectionApply2D(const int ne,
} }
// PA Convection Apply 3D kernel // PA Convection Apply 3D kernel
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PAConvectionApply3D(const int ne, void PAConvectionApply3D(const int ne,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
@@ -563,7 +563,7 @@ void PAConvectionApply3D(const int ne,
} }
// Optimized PA Convection Apply 3D kernel // Optimized PA Convection Apply 3D kernel
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void SmemPAConvectionApply3D(const int ne, void SmemPAConvectionApply3D(const int ne,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
+41 -41
View File
@@ -16,12 +16,12 @@
namespace mfem namespace mfem
{ {
static void EADGTraceAssemble1DInt(const int NF, void EADGTraceAssemble1DInt(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_int, Vector &eadata_int,
Vector &eadata_ext, Vector &eadata_ext,
const bool add) const bool add)
{ {
auto D = Reshape(padata.Read(), 2, 2, NF); auto D = Reshape(padata.Read(), 2, 2, NF);
auto A_int = Reshape(eadata_int.ReadWrite(), 2, NF); auto A_int = Reshape(eadata_int.ReadWrite(), 2, NF);
@@ -50,11 +50,11 @@ static void EADGTraceAssemble1DInt(const int NF,
}); });
} }
static void EADGTraceAssemble1DBdr(const int NF, void EADGTraceAssemble1DBdr(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_bdr, Vector &eadata_bdr,
const bool add) const bool add)
{ {
auto D = Reshape(padata.Read(), 2, 2, NF); auto D = Reshape(padata.Read(), 2, 2, NF);
auto A_bdr = Reshape(eadata_bdr.ReadWrite(), NF); auto A_bdr = Reshape(eadata_bdr.ReadWrite(), NF);
@@ -72,14 +72,14 @@ static void EADGTraceAssemble1DBdr(const int NF,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADGTraceAssemble2DInt(const int NF, void EADGTraceAssemble2DInt(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_int, Vector &eadata_int,
Vector &eadata_ext, Vector &eadata_ext,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -128,13 +128,13 @@ static void EADGTraceAssemble2DInt(const int NF,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADGTraceAssemble2DBdr(const int NF, void EADGTraceAssemble2DBdr(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_bdr, Vector &eadata_bdr,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -170,14 +170,14 @@ static void EADGTraceAssemble2DBdr(const int NF,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADGTraceAssemble3DInt(const int NF, void EADGTraceAssemble3DInt(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_int, Vector &eadata_int,
Vector &eadata_ext, Vector &eadata_ext,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -268,13 +268,13 @@ static void EADGTraceAssemble3DInt(const int NF,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADGTraceAssemble3DBdr(const int NF, void EADGTraceAssemble3DBdr(const int NF,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata_bdr, Vector &eadata_bdr,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+26 -26
View File
@@ -19,16 +19,16 @@ using namespace std;
namespace mfem namespace mfem
{ {
// PA DG Trace Integrator // PA DG Trace Integrator
static void PADGTraceSetup2D(const int Q1D, void PADGTraceSetup2D(const int Q1D,
const int NF, const int NF,
const Array<double> &w, const Array<double> &w,
const Vector &det, const Vector &det,
const Vector &nor, const Vector &nor,
const Vector &rho, const Vector &rho,
const Vector &vel, const Vector &vel,
const double alpha, const double alpha,
const double beta, const double beta,
Vector &op) Vector &op)
{ {
const int VDIM = 2; const int VDIM = 2;
@@ -61,16 +61,16 @@ static void PADGTraceSetup2D(const int Q1D,
}); });
} }
static void PADGTraceSetup3D(const int Q1D, void PADGTraceSetup3D(const int Q1D,
const int NF, const int NF,
const Array<double> &w, const Array<double> &w,
const Vector &det, const Vector &det,
const Vector &nor, const Vector &nor,
const Vector &rho, const Vector &rho,
const Vector &vel, const Vector &vel,
const double alpha, const double alpha,
const double beta, const double beta,
Vector &op) Vector &op)
{ {
const int VDIM = 3; const int VDIM = 3;
@@ -301,7 +301,7 @@ void DGTraceIntegrator::AssemblePABoundaryFaces(const FiniteElementSpace& fes)
} }
// PA DGTrace Apply 2D kernel for Gauss-Lobatto/Bernstein // PA DGTrace Apply 2D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PADGTraceApply2D(const int NF, void PADGTraceApply2D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
@@ -392,7 +392,7 @@ void PADGTraceApply2D(const int NF,
} }
// PA DGTrace Apply 3D kernel for Gauss-Lobatto/Bernstein // PA DGTrace Apply 3D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PADGTraceApply3D(const int NF, void PADGTraceApply3D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
@@ -537,7 +537,7 @@ void PADGTraceApply3D(const int NF,
} }
// Optimized PA DGTrace Apply 3D kernel for Gauss-Lobatto/Bernstein // Optimized PA DGTrace Apply 3D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> static template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
void SmemPADGTraceApply3D(const int NF, void SmemPADGTraceApply3D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
@@ -701,7 +701,7 @@ static void PADGTraceApply(const int dim,
} }
// PA DGTrace Apply 2D kernel for Gauss-Lobatto/Bernstein // PA DGTrace Apply 2D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PADGTraceApplyTranspose2D(const int NF, void PADGTraceApplyTranspose2D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
@@ -797,7 +797,7 @@ void PADGTraceApplyTranspose2D(const int NF,
} }
// PA DGTrace Apply Transpose 3D kernel for Gauss-Lobatto/Bernstein // PA DGTrace Apply Transpose 3D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0> static template<int T_D1D = 0, int T_Q1D = 0>
void PADGTraceApplyTranspose3D(const int NF, void PADGTraceApplyTranspose3D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
@@ -953,7 +953,7 @@ void PADGTraceApplyTranspose3D(const int NF,
} }
// Optimized PA DGTrace Apply Transpose 3D kernel for Gauss-Lobatto/Bernstein // Optimized PA DGTrace Apply Transpose 3D kernel for Gauss-Lobatto/Bernstein
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> static template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
void SmemPADGTraceApplyTranspose3D(const int NF, void SmemPADGTraceApplyTranspose3D(const int NF,
const Array<double> &b, const Array<double> &b,
const Array<double> &bt, const Array<double> &bt,
+24 -24
View File
@@ -17,14 +17,14 @@ namespace mfem
{ {
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADiffusionAssemble1D(const int NE, void EADiffusionAssemble1D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -68,14 +68,14 @@ static void EADiffusionAssemble1D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADiffusionAssemble2D(const int NE, void EADiffusionAssemble2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -145,14 +145,14 @@ static void EADiffusionAssemble2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EADiffusionAssemble3D(const int NE, void EADiffusionAssemble3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+71 -71
View File
@@ -496,14 +496,14 @@ void DiffusionIntegrator::AssemblePA(const FiniteElementSpace &fes)
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PADiffusionDiagonal2D(const int NE, void PADiffusionDiagonal2D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -562,14 +562,14 @@ static void PADiffusionDiagonal2D(const int NE,
// Shared memory PA Diffusion Diagonal 2D kernel // Shared memory PA Diffusion Diagonal 2D kernel
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
static void SmemPADiffusionDiagonal2D(const int NE, void SmemPADiffusionDiagonal2D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Vector &d_, const Vector &d_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -656,14 +656,14 @@ static void SmemPADiffusionDiagonal2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PADiffusionDiagonal3D(const int NE, void PADiffusionDiagonal3D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int DIM = 3; constexpr int DIM = 3;
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
@@ -757,14 +757,14 @@ static void PADiffusionDiagonal3D(const int NE,
// Shared memory PA Diffusion Diagonal 3D kernel // Shared memory PA Diffusion Diagonal 3D kernel
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void SmemPADiffusionDiagonal3D(const int NE, void SmemPADiffusionDiagonal3D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Vector &d_, const Vector &d_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int DIM = 3; constexpr int DIM = 3;
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
@@ -1034,17 +1034,17 @@ static void OccaPADiffusionApply3D(const int D1D,
// PA Diffusion Apply 2D kernel // PA Diffusion Apply 2D kernel
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PADiffusionApply2D(const int NE, void PADiffusionApply2D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Array<double> &bt_, const Array<double> &bt_,
const Array<double> &gt_, const Array<double> &gt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -1156,15 +1156,15 @@ static void PADiffusionApply2D(const int NE,
// Shared memory PA Diffusion Apply 2D kernel // Shared memory PA Diffusion Apply 2D kernel
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
static void SmemPADiffusionApply2D(const int NE, void SmemPADiffusionApply2D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -1314,16 +1314,16 @@ static void SmemPADiffusionApply2D(const int NE,
// PA Diffusion Apply 3D kernel // PA Diffusion Apply 3D kernel
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PADiffusionApply3D(const int NE, void PADiffusionApply3D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Array<double> &gt, const Array<double> &gt,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
int d1d = 0, int q1d = 0) int d1d = 0, int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -1533,15 +1533,15 @@ static MFEM_HOST_DEVICE inline double sign(const int q, const int d)
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void SmemPADiffusionApply3D(const int NE, void SmemPADiffusionApply3D(const int NE,
const bool symmetric, const bool symmetric,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+72 -72
View File
@@ -21,12 +21,12 @@ namespace mfem
// PA Divergence Integrator // PA Divergence Integrator
// PA Divergence Assemble 2D kernel // PA Divergence Assemble 2D kernel
static void PADivergenceSetup2D(const int Q1D, void PADivergenceSetup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const double COEFF, const double COEFF,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -51,12 +51,12 @@ static void PADivergenceSetup2D(const int Q1D,
} }
// PA Divergence Assemble 3D kernel // PA Divergence Assemble 3D kernel
static void PADivergenceSetup3D(const int Q1D, void PADivergenceSetup3D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const double COEFF, const double COEFF,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -160,16 +160,16 @@ void VectorDivergenceIntegrator::AssemblePA(const FiniteElementSpace &trial_fes,
// PA Divergence Apply 2D kernel // PA Divergence Apply 2D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void PADivergenceApply2D(const int NE, void PADivergenceApply2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -281,16 +281,16 @@ static void PADivergenceApply2D(const int NE,
// Shared memory PA Divergence Apply 2D kernel // Shared memory PA Divergence Apply 2D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0, template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0,
const int T_NBZ = 0> const int T_NBZ = 0>
static void SmemPADivergenceApply2D(const int NE, void SmemPADivergenceApply2D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
// TODO // TODO
MFEM_ASSERT(false, "SHARED MEM NOT PROGRAMMED YET"); MFEM_ASSERT(false, "SHARED MEM NOT PROGRAMMED YET");
@@ -298,16 +298,16 @@ static void SmemPADivergenceApply2D(const int NE,
// PA Divergence Apply 2D kernel transpose // PA Divergence Apply 2D kernel transpose
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void PADivergenceApplyTranspose2D(const int NE, void PADivergenceApplyTranspose2D(const int NE,
const Array<double> &bt, const Array<double> &bt,
const Array<double> &gt, const Array<double> &gt,
const Array<double> &b, const Array<double> &b,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -414,16 +414,16 @@ static void PADivergenceApplyTranspose2D(const int NE,
// PA Vector Divergence Apply 3D kernel // PA Vector Divergence Apply 3D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void PADivergenceApply3D(const int NE, void PADivergenceApply3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
int tr_d1d = 0, int tr_d1d = 0,
int te_d1d = 0, int te_d1d = 0,
int q1d = 0) int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -597,16 +597,16 @@ static void PADivergenceApply3D(const int NE,
// PA Vector Divergence Apply 3D kernel // PA Vector Divergence Apply 3D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void PADivergenceApplyTranspose3D(const int NE, void PADivergenceApplyTranspose3D(const int NE,
const Array<double> &bt, const Array<double> &bt,
const Array<double> &gt, const Array<double> &gt,
const Array<double> &b, const Array<double> &b,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
int tr_d1d = 0, int tr_d1d = 0,
int te_d1d = 0, int te_d1d = 0,
int q1d = 0) int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -775,16 +775,16 @@ static void PADivergenceApplyTranspose3D(const int NE,
// Shared memory PA Vector Divergence Apply 3D kernel // Shared memory PA Vector Divergence Apply 3D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void SmemPADivergenceApply3D(const int NE, void SmemPADivergenceApply3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &q_, const Vector &q_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
+42 -42
View File
@@ -70,12 +70,12 @@ namespace mfem
the \b MFEM_SHARED keyword for local arrays. */ the \b MFEM_SHARED keyword for local arrays. */
// PA Gradient Assemble 2D kernel // PA Gradient Assemble 2D kernel
static void PAGradientSetup2D(const int Q1D, void PAGradientSetup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &c, const Vector &c,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -105,12 +105,12 @@ static void PAGradientSetup2D(const int Q1D,
} }
// PA Gradient Assemble 3D kernel // PA Gradient Assemble 3D kernel
static void PAGradientSetup3D(const int Q1D, void PAGradientSetup3D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &c, const Vector &c,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -254,16 +254,16 @@ void GradientIntegrator::AssemblePA(const FiniteElementSpace &trial_fes,
// PA Gradient Apply 2D kernel // PA Gradient Apply 2D kernel
template<int T_TR_D1D = 0, int T_TE_D1D = 0, int T_Q1D = 0> template<int T_TR_D1D = 0, int T_TE_D1D = 0, int T_Q1D = 0>
static void PAGradientApply2D(const int NE, void PAGradientApply2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -384,16 +384,16 @@ static void PAGradientApplyTranspose2D(const int NE,
// PA Gradient Apply 3D kernel // PA Gradient Apply 3D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void PAGradientApply3D(const int NE, void PAGradientApply3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
int tr_d1d = 0, int tr_d1d = 0,
int te_d1d = 0, int te_d1d = 0,
int q1d = 0) int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
@@ -579,16 +579,16 @@ static void PAGradientApplyTranspose3D(const int NE,
// Shared memory PA Gradient Apply 3D kernel // Shared memory PA Gradient Apply 3D kernel
template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0> template<const int T_TR_D1D = 0, const int T_TE_D1D = 0, const int T_Q1D = 0>
static void SmemPAGradientApply3D(const int NE, void SmemPAGradientApply3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int tr_d1d = 0, const int tr_d1d = 0,
const int te_d1d = 0, const int te_d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d; const int TR_D1D = T_TR_D1D ? T_TR_D1D : tr_d1d;
const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d; const int TE_D1D = T_TE_D1D ? T_TE_D1D : te_d1d;
+194 -194
View File
@@ -791,12 +791,12 @@ void SmemPAHcurlMassApply3D(const int D1D,
} }
// PA H(curl) curl-curl assemble 2D kernel // PA H(curl) curl-curl assemble 2D kernel
static void PACurlCurlSetup2D(const int Q1D, void PACurlCurlSetup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
Vector &coeff, Vector &coeff,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -818,13 +818,13 @@ static void PACurlCurlSetup2D(const int Q1D,
} }
// PA H(curl) curl-curl assemble 3D kernel // PA H(curl) curl-curl assemble 3D kernel
static void PACurlCurlSetup3D(const int Q1D, void PACurlCurlSetup3D(const int Q1D,
const int coeffDim, const int coeffDim,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
Vector &coeff, Vector &coeff,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
const bool symmetric = (coeffDim != 9); const bool symmetric = (coeffDim != 9);
@@ -1045,16 +1045,16 @@ void CurlCurlIntegrator::AssemblePA(const FiniteElementSpace &fes)
} }
} }
static void PACurlCurlApply2D(const int D1D, void PACurlCurlApply2D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &gc, const Array<double> &gc,
const Array<double> &gct, const Array<double> &gct,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_D1D = HCURL_MAX_D1D; constexpr static int MAX_D1D = HCURL_MAX_D1D;
@@ -1166,19 +1166,19 @@ static void PACurlCurlApply2D(const int D1D,
} }
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void PACurlCurlApply3D(const int D1D, void PACurlCurlApply3D(const int D1D,
const int Q1D, const int Q1D,
const bool symmetric, const bool symmetric,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &bct, const Array<double> &bct,
const Array<double> &gc, const Array<double> &gc,
const Array<double> &gct, const Array<double> &gct,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -1677,19 +1677,19 @@ static void PACurlCurlApply3D(const int D1D,
} }
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void SmemPACurlCurlApply3D(const int D1D, void SmemPACurlCurlApply3D(const int D1D,
const int Q1D, const int Q1D,
const bool symmetric, const bool symmetric,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &bct, const Array<double> &bct,
const Array<double> &gc, const Array<double> &gc,
const Array<double> &gct, const Array<double> &gct,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -2032,13 +2032,13 @@ void CurlCurlIntegrator::AddMultPA(const Vector &x, Vector &y) const
} }
} }
static void PACurlCurlAssembleDiagonal2D(const int D1D, void PACurlCurlAssembleDiagonal2D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
Vector &diag) Vector &diag)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_Q1D = HCURL_MAX_Q1D; constexpr static int MAX_Q1D = HCURL_MAX_Q1D;
@@ -2087,16 +2087,16 @@ static void PACurlCurlAssembleDiagonal2D(const int D1D,
} }
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void PACurlCurlAssembleDiagonal3D(const int D1D, void PACurlCurlAssembleDiagonal3D(const int D1D,
const int Q1D, const int Q1D,
const bool symmetric, const bool symmetric,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &go, const Array<double> &go,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
Vector &diag) Vector &diag)
{ {
constexpr static int VDIM = 3; constexpr static int VDIM = 3;
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
@@ -2273,16 +2273,16 @@ static void PACurlCurlAssembleDiagonal3D(const int D1D,
} }
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void SmemPACurlCurlAssembleDiagonal3D(const int D1D, void SmemPACurlCurlAssembleDiagonal3D(const int D1D,
const int Q1D, const int Q1D,
const bool symmetric, const bool symmetric,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &go, const Array<double> &go,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
Vector &diag) Vector &diag)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -2955,18 +2955,18 @@ void MixedVectorCurlIntegrator::AssemblePA(const FiniteElementSpace &trial_fes,
// Apply to x corresponding to DOF's in H(curl) (trial), whose curl is // Apply to x corresponding to DOF's in H(curl) (trial), whose curl is
// integrated against H(curl) test functions corresponding to y. // integrated against H(curl) test functions corresponding to y.
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void PAHcurlL2Apply3D(const int D1D, void PAHcurlL2Apply3D(const int D1D,
const int Q1D, const int Q1D,
const int coeffDim, const int coeffDim,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &bct, const Array<double> &bct,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -3297,16 +3297,16 @@ static void PAHcurlL2Apply3D(const int D1D,
// Apply to x corresponding to DOF's in H(curl) (trial), whose curl is // Apply to x corresponding to DOF's in H(curl) (trial), whose curl is
// integrated against H(curl) test functions corresponding to y. // integrated against H(curl) test functions corresponding to y.
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void SmemPAHcurlL2Apply3D(const int D1D, void SmemPAHcurlL2Apply3D(const int D1D,
const int Q1D, const int Q1D,
const int coeffDim, const int coeffDim,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -3585,18 +3585,18 @@ static void SmemPAHcurlL2Apply3D(const int D1D,
// Apply to x corresponding to DOF's in H(curl) (trial), whose curl is // Apply to x corresponding to DOF's in H(curl) (trial), whose curl is
// integrated against H(div) test functions corresponding to y. // integrated against H(div) test functions corresponding to y.
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void PAHcurlHdivApply3D(const int D1D, void PAHcurlHdivApply3D(const int D1D,
const int D1Dtest, const int D1Dtest,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &bct, const Array<double> &bct,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -4071,18 +4071,18 @@ void MixedVectorWeakCurlIntegrator::AssemblePA(const FiniteElementSpace
// Apply to x corresponding to DOF's in H(curl) (trial), integrated against curl // Apply to x corresponding to DOF's in H(curl) (trial), integrated against curl
// of H(curl) test functions corresponding to y. // of H(curl) test functions corresponding to y.
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void PAHcurlL2Apply3DTranspose(const int D1D, void PAHcurlL2Apply3DTranspose(const int D1D,
const int Q1D, const int Q1D,
const int coeffDim, const int coeffDim,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &bot, const Array<double> &bot,
const Array<double> &bct, const Array<double> &bct,
const Array<double> &gct, const Array<double> &gct,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
// See PAHcurlL2Apply3D for comments. // See PAHcurlL2Apply3D for comments.
@@ -4413,16 +4413,16 @@ static void PAHcurlL2Apply3DTranspose(const int D1D,
} }
template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D> template<int MAX_D1D = HCURL_MAX_D1D, int MAX_Q1D = HCURL_MAX_Q1D>
static void SmemPAHcurlL2Apply3DTranspose(const int D1D, void SmemPAHcurlL2Apply3DTranspose(const int D1D,
const int Q1D, const int Q1D,
const int coeffDim, const int coeffDim,
const int NE, const int NE,
const Array<double> &bo, const Array<double> &bo,
const Array<double> &bc, const Array<double> &bc,
const Array<double> &gc, const Array<double> &gc,
const Vector &pa_data, const Vector &pa_data,
const Vector &x, const Vector &x,
Vector &y) Vector &y)
{ {
MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D"); MFEM_VERIFY(D1D <= MAX_D1D, "Error: D1D > MAX_D1D");
MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D"); MFEM_VERIFY(Q1D <= MAX_Q1D, "Error: Q1D > MAX_Q1D");
@@ -4675,13 +4675,13 @@ void MixedVectorWeakCurlIntegrator::AddMultPA(const Vector &x, Vector &y) const
// Apply to x corresponding to DOFs in H^1 (domain) the (topological) gradient // Apply to x corresponding to DOFs in H^1 (domain) the (topological) gradient
// to get a dof in H(curl) (range). You can think of the range as the "test" space // to get a dof in H(curl) (range). You can think of the range as the "test" space
// and the domain as the "trial" space, but there's no integration. // and the domain as the "trial" space, but there's no integration.
static void PAHcurlApplyGradient2D(const int c_dofs1D, void PAHcurlApplyGradient2D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto B = Reshape(B_.Read(), c_dofs1D, c_dofs1D); auto B = Reshape(B_.Read(), c_dofs1D, c_dofs1D);
auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D); auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D);
@@ -4753,12 +4753,12 @@ static void PAHcurlApplyGradient2D(const int c_dofs1D,
} }
// Specialization of PAHcurlApplyGradient2D to the case where B is identity // Specialization of PAHcurlApplyGradient2D to the case where B is identity
static void PAHcurlApplyGradient2DBId(const int c_dofs1D, void PAHcurlApplyGradient2DBId(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D); auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D);
@@ -4822,7 +4822,7 @@ static void PAHcurlApplyGradient2DBId(const int c_dofs1D,
}); });
} }
static void PAHcurlApplyGradientTranspose2D( void PAHcurlApplyGradientTranspose2D(
const int c_dofs1D, const int o_dofs1D, const int NE, const int c_dofs1D, const int o_dofs1D, const int NE,
const Array<double> &B_, const Array<double> &G_, const Array<double> &B_, const Array<double> &G_,
const Vector &x_, Vector &y_) const Vector &x_, Vector &y_)
@@ -4898,7 +4898,7 @@ static void PAHcurlApplyGradientTranspose2D(
// Specialization of PAHcurlApplyGradientTranspose2D to the case where // Specialization of PAHcurlApplyGradientTranspose2D to the case where
// B is identity // B is identity
static void PAHcurlApplyGradientTranspose2DBId( void PAHcurlApplyGradientTranspose2DBId(
const int c_dofs1D, const int o_dofs1D, const int NE, const int c_dofs1D, const int o_dofs1D, const int NE,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, Vector &y_) const Vector &x_, Vector &y_)
@@ -4965,13 +4965,13 @@ static void PAHcurlApplyGradientTranspose2DBId(
}); });
} }
static void PAHcurlApplyGradient3D(const int c_dofs1D, void PAHcurlApplyGradient3D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto B = Reshape(B_.Read(), c_dofs1D, c_dofs1D); auto B = Reshape(B_.Read(), c_dofs1D, c_dofs1D);
auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D); auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D);
@@ -5154,12 +5154,12 @@ static void PAHcurlApplyGradient3D(const int c_dofs1D,
} }
// Specialization of PAHcurlApplyGradient3D to the case where // Specialization of PAHcurlApplyGradient3D to the case where
static void PAHcurlApplyGradient3DBId(const int c_dofs1D, void PAHcurlApplyGradient3DBId(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D); auto G = Reshape(G_.Read(), o_dofs1D, c_dofs1D);
@@ -5322,7 +5322,7 @@ static void PAHcurlApplyGradient3DBId(const int c_dofs1D,
}); });
} }
static void PAHcurlApplyGradientTranspose3D( void PAHcurlApplyGradientTranspose3D(
const int c_dofs1D, const int o_dofs1D, const int NE, const int c_dofs1D, const int o_dofs1D, const int NE,
const Array<double> &B_, const Array<double> &G_, const Array<double> &B_, const Array<double> &G_,
const Vector &x_, Vector &y_) const Vector &x_, Vector &y_)
@@ -5507,7 +5507,7 @@ static void PAHcurlApplyGradientTranspose3D(
} }
// Specialization of PAHcurlApplyGradientTranspose3D to the case where // Specialization of PAHcurlApplyGradientTranspose3D to the case where
static void PAHcurlApplyGradientTranspose3DBId( void PAHcurlApplyGradientTranspose3DBId(
const int c_dofs1D, const int o_dofs1D, const int NE, const int c_dofs1D, const int o_dofs1D, const int NE,
const Array<double> &G_, const Array<double> &G_,
const Vector &x_, Vector &y_) const Vector &x_, Vector &y_)
@@ -5789,14 +5789,14 @@ void GradientInterpolator::AddMultTransposePA(const Vector &x, Vector &y) const
} }
} }
static void PAHcurlVecH1IdentityApply3D(const int c_dofs1D, void PAHcurlVecH1IdentityApply3D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &Bclosed, const Array<double> &Bclosed,
const Array<double> &Bopen, const Array<double> &Bopen,
const Vector &pa_data, const Vector &pa_data,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D); auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D);
auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D); auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D);
@@ -6002,14 +6002,14 @@ static void PAHcurlVecH1IdentityApply3D(const int c_dofs1D,
}); });
} }
static void PAHcurlVecH1IdentityApplyTranspose3D(const int c_dofs1D, void PAHcurlVecH1IdentityApplyTranspose3D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &Bclosed, const Array<double> &Bclosed,
const Array<double> &Bopen, const Array<double> &Bopen,
const Vector &pa_data, const Vector &pa_data,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D); auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D);
auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D); auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D);
@@ -6228,14 +6228,14 @@ static void PAHcurlVecH1IdentityApplyTranspose3D(const int c_dofs1D,
}); });
} }
static void PAHcurlVecH1IdentityApply2D(const int c_dofs1D, void PAHcurlVecH1IdentityApply2D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &Bclosed, const Array<double> &Bclosed,
const Array<double> &Bopen, const Array<double> &Bopen,
const Vector &pa_data, const Vector &pa_data,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D); auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D);
auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D); auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D);
@@ -6327,14 +6327,14 @@ static void PAHcurlVecH1IdentityApply2D(const int c_dofs1D,
}); });
} }
static void PAHcurlVecH1IdentityApplyTranspose2D(const int c_dofs1D, void PAHcurlVecH1IdentityApplyTranspose2D(const int c_dofs1D,
const int o_dofs1D, const int o_dofs1D,
const int NE, const int NE,
const Array<double> &Bclosed, const Array<double> &Bclosed,
const Array<double> &Bopen, const Array<double> &Bopen,
const Vector &pa_data, const Vector &pa_data,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D); auto Bc = Reshape(Bclosed.Read(), c_dofs1D, c_dofs1D);
auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D); auto Bo = Reshape(Bopen.Read(), o_dofs1D, c_dofs1D);
+116 -116
View File
@@ -539,12 +539,12 @@ void PAHdivMassApply3D(const int D1D,
// PA H(div) div-div assemble 2D kernel // PA H(div) div-div assemble 2D kernel
// NOTE: this is identical to PACurlCurlSetup3D // NOTE: this is identical to PACurlCurlSetup3D
static void PADivDivSetup2D(const int Q1D, void PADivDivSetup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
Vector &coeff_, Vector &coeff_,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -565,12 +565,12 @@ static void PADivDivSetup2D(const int Q1D,
}); });
} }
static void PADivDivSetup3D(const int Q1D, void PADivDivSetup3D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
Vector &coeff_, Vector &coeff_,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -599,16 +599,16 @@ static void PADivDivSetup3D(const int Q1D,
}); });
} }
static void PADivDivApply2D(const int D1D, void PADivDivApply2D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_D1D = HDIV_MAX_D1D; constexpr static int MAX_D1D = HDIV_MAX_D1D;
@@ -718,16 +718,16 @@ static void PADivDivApply2D(const int D1D,
}); // end of element loop }); // end of element loop
} }
static void PADivDivApply3D(const int D1D, void PADivDivApply3D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D"); MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D");
MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D"); MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D");
@@ -967,13 +967,13 @@ void DivDivIntegrator::AddMultPA(const Vector &x, Vector &y) const
} }
} }
static void PADivDivAssembleDiagonal2D(const int D1D, void PADivDivAssembleDiagonal2D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Vector &op_, const Vector &op_,
Vector &diag_) Vector &diag_)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_Q1D = HDIV_MAX_Q1D; constexpr static int MAX_Q1D = HDIV_MAX_Q1D;
@@ -1023,13 +1023,13 @@ static void PADivDivAssembleDiagonal2D(const int D1D,
}); });
} }
static void PADivDivAssembleDiagonal3D(const int D1D, void PADivDivAssembleDiagonal3D(const int D1D,
const int Q1D, const int Q1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Vector &op_, const Vector &op_,
Vector &diag_) Vector &diag_)
{ {
MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D"); MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D");
MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D"); MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D");
@@ -1104,11 +1104,11 @@ void DivDivIntegrator::AssembleDiagonalPA(Vector& diag)
} }
// PA H(div)-L2 (div u, p) assemble 2D kernel // PA H(div)-L2 (div u, p) assemble 2D kernel
static void PADivL2Setup2D(const int Q1D, void PADivL2Setup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
Vector &coeff_, Vector &coeff_,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -1123,11 +1123,11 @@ static void PADivL2Setup2D(const int Q1D,
}); });
} }
static void PADivL2Setup3D(const int Q1D, void PADivL2Setup3D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
Vector &coeff_, Vector &coeff_,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -1225,16 +1225,16 @@ VectorFEDivergenceIntegrator::AssemblePA(const FiniteElementSpace &trial_fes,
// Apply to x corresponding to DOF's in H(div) (trial), whose divergence is // Apply to x corresponding to DOF's in H(div) (trial), whose divergence is
// integrated against L_2 test functions corresponding to y. // integrated against L_2 test functions corresponding to y.
static void PAHdivL2Apply3D(const int D1D, void PAHdivL2Apply3D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Array<double> &L2Bot_, const Array<double> &L2Bot_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D"); MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D");
MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D"); MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D");
@@ -1388,16 +1388,16 @@ static void PAHdivL2Apply3D(const int D1D,
// Apply to x corresponding to DOF's in H(div) (trial), whose divergence is // Apply to x corresponding to DOF's in H(div) (trial), whose divergence is
// integrated against L_2 test functions corresponding to y. // integrated against L_2 test functions corresponding to y.
static void PAHdivL2Apply2D(const int D1D, void PAHdivL2Apply2D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &Bo_, const Array<double> &Bo_,
const Array<double> &Gc_, const Array<double> &Gc_,
const Array<double> &L2Bot_, const Array<double> &L2Bot_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_D1D = HDIV_MAX_D1D; constexpr static int MAX_D1D = HDIV_MAX_D1D;
@@ -1494,16 +1494,16 @@ static void PAHdivL2Apply2D(const int D1D,
}); // end of element loop }); // end of element loop
} }
static void PAHdivL2ApplyTranspose3D(const int D1D, void PAHdivL2ApplyTranspose3D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &L2Bo_, const Array<double> &L2Bo_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D"); MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D");
MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D"); MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D");
@@ -1656,16 +1656,16 @@ static void PAHdivL2ApplyTranspose3D(const int D1D,
}); // end of element loop }); // end of element loop
} }
static void PAHdivL2ApplyTranspose2D(const int D1D, void PAHdivL2ApplyTranspose2D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &L2Bo_, const Array<double> &L2Bo_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_) Vector &y_)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
constexpr static int MAX_D1D = HDIV_MAX_D1D; constexpr static int MAX_D1D = HDIV_MAX_D1D;
@@ -1791,16 +1791,16 @@ void VectorFEDivergenceIntegrator::AddMultTransposePA(const Vector &x,
} }
} }
static void PAHdivL2AssembleDiagonal_ADAt_3D(const int D1D, void PAHdivL2AssembleDiagonal_ADAt_3D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &L2Bo_, const Array<double> &L2Bo_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Vector &op_, const Vector &op_,
const Vector &D_, const Vector &D_,
Vector &diag_) Vector &diag_)
{ {
MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D"); MFEM_VERIFY(D1D <= HDIV_MAX_D1D, "Error: D1D > HDIV_MAX_D1D");
MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D"); MFEM_VERIFY(Q1D <= HDIV_MAX_Q1D, "Error: Q1D > HDIV_MAX_Q1D");
@@ -1916,16 +1916,16 @@ static void PAHdivL2AssembleDiagonal_ADAt_3D(const int D1D,
}); // end of element loop }); // end of element loop
} }
static void PAHdivL2AssembleDiagonal_ADAt_2D(const int D1D, void PAHdivL2AssembleDiagonal_ADAt_2D(const int D1D,
const int Q1D, const int Q1D,
const int L2D1D, const int L2D1D,
const int NE, const int NE,
const Array<double> &L2Bo_, const Array<double> &L2Bo_,
const Array<double> &Gct_, const Array<double> &Gct_,
const Array<double> &Bot_, const Array<double> &Bot_,
const Vector &op_, const Vector &op_,
const Vector &D_, const Vector &D_,
Vector &diag_) Vector &diag_)
{ {
constexpr static int VDIM = 2; constexpr static int VDIM = 2;
+21 -21
View File
@@ -17,13 +17,13 @@ namespace mfem
{ {
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAMassAssemble1D(const int NE, void EAMassAssemble1D(const int NE,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -67,13 +67,13 @@ static void EAMassAssemble1D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAMassAssemble2D(const int NE, void EAMassAssemble2D(const int NE,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -139,13 +139,13 @@ static void EAMassAssemble2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void EAMassAssemble3D(const int NE, void EAMassAssemble3D(const int NE,
const Array<double> &basis, const Array<double> &basis,
const Vector &padata, const Vector &padata,
Vector &eadata, Vector &eadata,
const bool add, const bool add,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+56 -56
View File
@@ -155,12 +155,12 @@ void MassIntegrator::AssemblePA(const FiniteElementSpace &fes)
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAMassAssembleDiagonal2D(const int NE, void PAMassAssembleDiagonal2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -201,12 +201,12 @@ static void PAMassAssembleDiagonal2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
static void SmemPAMassAssembleDiagonal2D(const int NE, void SmemPAMassAssembleDiagonal2D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Vector &d_, const Vector &d_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -267,12 +267,12 @@ static void SmemPAMassAssembleDiagonal2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAMassAssembleDiagonal3D(const int NE, void PAMassAssembleDiagonal3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -336,12 +336,12 @@ static void PAMassAssembleDiagonal3D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void SmemPAMassAssembleDiagonal3D(const int NE, void SmemPAMassAssembleDiagonal3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Vector &d_, const Vector &d_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -569,14 +569,14 @@ static void OccaPAMassApply3D(const int D1D,
#endif // MFEM_USE_OCCA #endif // MFEM_USE_OCCA
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAMassApply2D(const int NE, void PAMassApply2D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -661,14 +661,14 @@ static void PAMassApply2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0> template<int T_D1D = 0, int T_Q1D = 0, int T_NBZ = 0>
static void SmemPAMassApply2D(const int NE, void SmemPAMassApply2D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
MFEM_CONTRACT_VAR(bt_); MFEM_CONTRACT_VAR(bt_);
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
@@ -784,14 +784,14 @@ static void SmemPAMassApply2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAMassApply3D(const int NE, void PAMassApply3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -925,14 +925,14 @@ static void PAMassApply3D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void SmemPAMassApply3D(const int NE, void SmemPAMassApply3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &bt_, const Array<double> &bt_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
MFEM_CONTRACT_VAR(bt_); MFEM_CONTRACT_VAR(bt_);
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
+28 -28
View File
@@ -22,12 +22,12 @@ namespace mfem
// PA Vector Diffusion Integrator // PA Vector Diffusion Integrator
// PA Diffusion Assemble 2D kernel // PA Diffusion Assemble 2D kernel
static void PAVectorDiffusionSetup2D(const int Q1D, void PAVectorDiffusionSetup2D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &c, const Vector &c,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D; const int NQ = Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -59,12 +59,12 @@ static void PAVectorDiffusionSetup2D(const int Q1D,
} }
// PA Diffusion Assemble 3D kernel // PA Diffusion Assemble 3D kernel
static void PAVectorDiffusionSetup3D(const int Q1D, void PAVectorDiffusionSetup3D(const int Q1D,
const int NE, const int NE,
const Array<double> &w, const Array<double> &w,
const Vector &j, const Vector &j,
const Vector &c, const Vector &c,
Vector &op) Vector &op)
{ {
const int NQ = Q1D*Q1D*Q1D; const int NQ = Q1D*Q1D*Q1D;
auto W = w.Read(); auto W = w.Read();
@@ -251,7 +251,7 @@ void VectorDiffusionIntegrator::AssemblePA(const FiniteElementSpace &fes)
} }
// PA Diffusion Apply 2D kernel // PA Diffusion Apply 2D kernel
template<int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0> static template<int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0>
void PAVectorDiffusionApply2D(const int NE, void PAVectorDiffusionApply2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
@@ -374,7 +374,7 @@ void PAVectorDiffusionApply2D(const int NE,
// PA Diffusion Apply 3D kernel // PA Diffusion Apply 3D kernel
template<const int T_D1D = 0, template<const int T_D1D = 0,
const int T_Q1D = 0> static const int T_Q1D = 0>
void PAVectorDiffusionApply3D(const int NE, void PAVectorDiffusionApply3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
@@ -606,13 +606,13 @@ void VectorDiffusionIntegrator::AddMultPA(const Vector &x, Vector &y) const
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAVectorDiffusionDiagonal2D(const int NE, void PAVectorDiffusionDiagonal2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -673,13 +673,13 @@ static void PAVectorDiffusionDiagonal2D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAVectorDiffusionDiagonal3D(const int NE, void PAVectorDiffusionDiagonal3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Vector &d, const Vector &d,
Vector &y, Vector &y,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int DIM = 3; constexpr int DIM = 3;
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
+30 -30
View File
@@ -104,14 +104,14 @@ void VectorMassIntegrator::AssemblePA(const FiniteElementSpace &fes)
template<const int T_D1D = 0, template<const int T_D1D = 0,
const int T_Q1D = 0> const int T_Q1D = 0>
static void PAVectorMassApply2D(const int NE, void PAVectorMassApply2D(const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &Bt_, const Array<double> &Bt_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -201,14 +201,14 @@ static void PAVectorMassApply2D(const int NE,
template<const int T_D1D = 0, template<const int T_D1D = 0,
const int T_Q1D = 0> const int T_Q1D = 0>
static void PAVectorMassApply3D(const int NE, void PAVectorMassApply3D(const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &Bt_, const Array<double> &Bt_,
const Vector &op_, const Vector &op_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -379,13 +379,13 @@ void VectorMassIntegrator::AddMultPA(const Vector &x, Vector &y) const
} }
template<const int T_D1D = 0, const int T_Q1D = 0> template<const int T_D1D = 0, const int T_Q1D = 0>
static void PAVectorMassAssembleDiagonal2D(const int NE, void PAVectorMassAssembleDiagonal2D(const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &Bt_, const Array<double> &Bt_,
const Vector &op_, const Vector &op_,
Vector &diag_, Vector &diag_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -431,13 +431,13 @@ static void PAVectorMassAssembleDiagonal2D(const int NE,
} }
template<const int T_D1D = 0, const int T_Q1D = 0> template<const int T_D1D = 0, const int T_Q1D = 0>
static void PAVectorMassAssembleDiagonal3D(const int NE, void PAVectorMassAssembleDiagonal3D(const int NE,
const Array<double> &B_, const Array<double> &B_,
const Array<double> &Bt_, const Array<double> &Bt_,
const Vector &op_, const Vector &op_,
Vector &diag_, Vector &diag_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+26 -26
View File
@@ -116,15 +116,15 @@ void VectorConvectionNLFIntegrator::AssemblePA(const FiniteElementSpace &fes)
// PA Convection NL 2D kernel // PA Convection NL 2D kernel
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAConvectionNLApply2D(const int NE, void PAConvectionNLApply2D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &q_, const Vector &q_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -252,15 +252,15 @@ static void PAConvectionNLApply2D(const int NE,
// PA Convection NL 3D kernel // PA Convection NL 3D kernel
template<int T_D1D = 0, int T_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0>
static void PAConvectionNLApply3D(const int NE, void PAConvectionNLApply3D(const int NE,
const Array<double> &b, const Array<double> &b,
const Array<double> &g, const Array<double> &g,
const Array<double> &bt, const Array<double> &bt,
const Vector &q_, const Vector &q_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int VDIM = 3; constexpr int VDIM = 3;
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
@@ -558,14 +558,14 @@ static void PAConvectionNLApply3D(const int NE,
} }
template<int T_D1D = 0, int T_Q1D = 0, int T_MAX_D1D =0, int T_MAX_Q1D =0> template<int T_D1D = 0, int T_Q1D = 0, int T_MAX_D1D =0, int T_MAX_Q1D =0>
static void SmemPAConvectionNLApply3D(const int NE, void SmemPAConvectionNLApply3D(const int NE,
const Array<double> &b_, const Array<double> &b_,
const Array<double> &g_, const Array<double> &g_,
const Vector &d_, const Vector &d_,
const Vector &x_, const Vector &x_,
Vector &y_, Vector &y_,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int VDIM = 3; constexpr int VDIM = 3;
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
+17 -17
View File
@@ -27,14 +27,14 @@ namespace quadrature_interpolator
{ {
template<int T_D1D = 0, int T_Q1D = 0, int MAX_D1D = 0, int MAX_Q1D = 0> template<int T_D1D = 0, int T_Q1D = 0, int MAX_D1D = 0, int MAX_Q1D = 0>
static void Det2D(const int NE, void Det2D(const int NE,
const double *b, const double *b,
const double *g, const double *g,
const double *x, const double *x,
double *y, double *y,
const int vdim = 1, const int vdim = 1,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
constexpr int DIM = 2; constexpr int DIM = 2;
static constexpr int NBZ = 1; static constexpr int NBZ = 1;
@@ -79,15 +79,15 @@ static void Det2D(const int NE,
template<int T_D1D = 0, int T_Q1D = 0, int MAX_D1D = 0, int MAX_Q1D = 0, template<int T_D1D = 0, int T_Q1D = 0, int MAX_D1D = 0, int MAX_Q1D = 0,
bool SMEM = true> bool SMEM = true>
static void Det3D(const int NE, void Det3D(const int NE,
const double *b, const double *b,
const double *g, const double *g,
const double *x, const double *x,
double *y, double *y,
const int vdim = 1, const int vdim = 1,
const int d1d = 0, const int d1d = 0,
const int q1d = 0, const int q1d = 0,
Vector *d_buff = nullptr) // used only with SMEM = false Vector *d_buff = nullptr) // used only with SMEM = false
{ {
constexpr int DIM = 3; constexpr int DIM = 3;
static constexpr int MQ1 = T_Q1D ? T_Q1D : MAX_Q1D; static constexpr int MQ1 = T_Q1D ? T_Q1D : MAX_Q1D;
+14 -14
View File
@@ -31,13 +31,13 @@ namespace quadrature_interpolator
template<QVectorLayout Q_LAYOUT, template<QVectorLayout Q_LAYOUT,
int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0,
int T_NBZ = 1, int MAX_D1D = 0, int MAX_Q1D = 0> int T_NBZ = 1, int MAX_D1D = 0, int MAX_Q1D = 0>
static void Values2D(const int NE, void Values2D(const int NE,
const double *b_, const double *b_,
const double *x_, const double *x_,
double *y_, double *y_,
const int vdim = 0, const int vdim = 0,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
static constexpr int NBZ = T_NBZ ? T_NBZ : 1; static constexpr int NBZ = T_NBZ ? T_NBZ : 1;
@@ -95,13 +95,13 @@ static void Values2D(const int NE,
template<QVectorLayout Q_LAYOUT, template<QVectorLayout Q_LAYOUT,
int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0,
int MAX_D1D = 0, int MAX_Q1D = 0> int MAX_D1D = 0, int MAX_Q1D = 0>
static void Values3D(const int NE, void Values3D(const int NE,
const double *b_, const double *b_,
const double *x_, const double *x_,
double *y_, double *y_,
const int vdim = 0, const int vdim = 0,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+18 -18
View File
@@ -31,15 +31,15 @@ namespace quadrature_interpolator
template<QVectorLayout Q_LAYOUT, bool GRAD_PHYS, template<QVectorLayout Q_LAYOUT, bool GRAD_PHYS,
int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0,
int T_NBZ = 1, int MAX_D1D = 0, int MAX_Q1D = 0> int T_NBZ = 1, int MAX_D1D = 0, int MAX_Q1D = 0>
static void Derivatives2D(const int NE, void Derivatives2D(const int NE,
const double *b_, const double *b_,
const double *g_, const double *g_,
const double *j_, const double *j_,
const double *x_, const double *x_,
double *y_, double *y_,
const int vdim = 0, const int vdim = 0,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
@@ -139,15 +139,15 @@ static void Derivatives2D(const int NE,
template<QVectorLayout Q_LAYOUT, bool GRAD_PHYS, template<QVectorLayout Q_LAYOUT, bool GRAD_PHYS,
int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0, int T_VDIM = 0, int T_D1D = 0, int T_Q1D = 0,
int MAX_D1D = 0, int MAX_Q1D = 0> int MAX_D1D = 0, int MAX_Q1D = 0>
static void Derivatives3D(const int NE, void Derivatives3D(const int NE,
const double *b_, const double *b_,
const double *g_, const double *g_,
const double *j_, const double *j_,
const double *x_, const double *x_,
double *y_, double *y_,
const int vdim = 0, const int vdim = 0,
const int d1d = 0, const int d1d = 0,
const int q1d = 0) const int q1d = 0)
{ {
const int D1D = T_D1D ? T_D1D : d1d; const int D1D = T_D1D ? T_D1D : d1d;
const int Q1D = T_Q1D ? T_Q1D : q1d; const int Q1D = T_Q1D ? T_Q1D : q1d;
+20 -20
View File
@@ -61,16 +61,16 @@ namespace quadrature_interpolator
// * assumes 'e_vec' is using ElementDofOrdering::NATIVE, // * assumes 'e_vec' is using ElementDofOrdering::NATIVE,
// * assumes 'maps.mode == FULL'. // * assumes 'maps.mode == FULL'.
template<const int T_VDIM, const int T_ND, const int T_NQ> template<const int T_VDIM, const int T_ND, const int T_NQ>
static void Eval2D(const int NE, void Eval2D(const int NE,
const int vdim, const int vdim,
const QVectorLayout q_layout, const QVectorLayout q_layout,
const GeometricFactors *geom, const GeometricFactors *geom,
const DofToQuad &maps, const DofToQuad &maps,
const Vector &e_vec, const Vector &e_vec,
Vector &q_val, Vector &q_val,
Vector &q_der, Vector &q_der,
Vector &q_det, Vector &q_det,
const int eval_flags) const int eval_flags)
{ {
using QI = QuadratureInterpolator; using QI = QuadratureInterpolator;
@@ -209,16 +209,16 @@ static void Eval2D(const int NE,
// * assumes 'e_vec' is using ElementDofOrdering::NATIVE, // * assumes 'e_vec' is using ElementDofOrdering::NATIVE,
// * assumes 'maps.mode == FULL'. // * assumes 'maps.mode == FULL'.
template<const int T_VDIM, const int T_ND, const int T_NQ> template<const int T_VDIM, const int T_ND, const int T_NQ>
static void Eval3D(const int NE, void Eval3D(const int NE,
const int vdim, const int vdim,
const QVectorLayout q_layout, const QVectorLayout q_layout,
const GeometricFactors *geom, const GeometricFactors *geom,
const DofToQuad &maps, const DofToQuad &maps,
const Vector &e_vec, const Vector &e_vec,
Vector &q_val, Vector &q_val,
Vector &q_der, Vector &q_der,
Vector &q_det, Vector &q_det,
const int eval_flags) const int eval_flags)
{ {
using QI = QuadratureInterpolator; using QI = QuadratureInterpolator;
+1 -1
View File
@@ -1306,7 +1306,7 @@ namespace internal
// MFEM_FORALL-based copy kernel -- used by protected methods below. // MFEM_FORALL-based copy kernel -- used by protected methods below.
// Needed as a workaround for the nvcc restriction that methods with MFEM_FORALL // Needed as a workaround for the nvcc restriction that methods with MFEM_FORALL
// in them must to be public. // in them must to be public.
static inline void device_copy(double *d_dest, const double *d_src, int size) inline void device_copy(double *d_dest, const double *d_src, int size)
{ {
MFEM_FORALL(i, size, d_dest[i] = d_src[i];); MFEM_FORALL(i, size, d_dest[i] = d_src[i];);
} }
+1 -1
View File
@@ -234,7 +234,7 @@ void TMOPRefinerEstimator::SetTriIntRules()
// Reftype = 0 // original element // Reftype = 0 // original element
const int Nvert = 3, NEsplit = 1; const int Nvert = 3, NEsplit = 1;
Mesh meshsplit(2, Nvert, NEsplit, 0 ,2); Mesh meshsplit(2, Nvert, NEsplit, 0,2);
const double tri_v[3][2] = const double tri_v[3][2] =
{ {
{0, 0}, {1, 0}, {0, 1} {0, 0}, {1, 0}, {0, 1}
+7 -1
View File
@@ -164,7 +164,13 @@ __device__ void abort_msg(T & msg)
#endif #endif
// Abort inside a device kernel // Abort inside a device kernel
#if defined(__CUDA_ARCH__) #if defined(__CUDA_ARCH__) && defined(_WIN32)
#define MFEM_ABORT_KERNEL(msg) \
{ \
printf(msg); \
__debugbreak(); \
}
#elif defined(__CUDA_ARCH__)
#define MFEM_ABORT_KERNEL(msg) \ #define MFEM_ABORT_KERNEL(msg) \
{ \ { \
printf(msg); \ printf(msg); \
+7 -1
View File
@@ -79,7 +79,13 @@ int isockstream::establish()
int on=1; int on=1;
setsockopt(port, SOL_SOCKET, SO_REUSEADDR, (char *)(&on), sizeof(on)); setsockopt(port, SOL_SOCKET, SO_REUSEADDR, (char *)(&on), sizeof(on));
if (bind(port,(const sockaddr*)&sa,(socklen_t)sizeof(struct sockaddr_in)) < 0) if (bind(
#ifdef _WIN32
(SOCKET)port
#else
port
#endif
,(const sockaddr*)&sa,(socklen_t)sizeof(struct sockaddr_in)) < 0)
{ {
mfem::err << "isockstream::establish(): bind() failed!" << endl; mfem::err << "isockstream::establish(): bind() failed!" << endl;
close(port); close(port);
+3325 -2996
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -378,7 +378,7 @@ void Swap(T &a, T &b)
b = tmp; b = tmp;
} }
const double Epsilon = std::numeric_limits<double>::epsilon(); constexpr double Epsilon = std::numeric_limits<double>::epsilon();
/// Utility function used in CalcSingularvalue<3>. /// Utility function used in CalcSingularvalue<3>.
MFEM_HOST_DEVICE static inline MFEM_HOST_DEVICE static inline
+1 -1
View File
@@ -1677,7 +1677,7 @@ int KINSolver::GradientMult(N_Vector v, N_Vector Jv, N_Vector u,
// Wrapper for evaluating linear systems J u = b // Wrapper for evaluating linear systems J u = b
int KINSolver::LinSysSetup(N_Vector u, N_Vector, SUNMatrix J, int KINSolver::LinSysSetup(N_Vector u, N_Vector, SUNMatrix J,
void *, N_Vector , N_Vector ) void *, N_Vector, N_Vector )
{ {
const SundialsNVector mfem_u(u); const SundialsNVector mfem_u(u);
KINSolver *self = static_cast<KINSolver*>(GET_CONTENT(J)); KINSolver *self = static_cast<KINSolver*>(GET_CONTENT(J));
+27 -27
View File
@@ -2850,14 +2850,14 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
y = sfc[3*k + 1]; y = sfc[3*k + 1];
z = sfc[3*k + 2]; z = sfc[3*k + 2];
ind[0] = VTX(x , y , z ); ind[0] = VTX(x, y, z );
ind[1] = VTX(x+1, y , z ); ind[1] = VTX(x+1, y, z );
ind[2] = VTX(x+1, y+1, z ); ind[2] = VTX(x+1, y+1, z );
ind[3] = VTX(x , y+1, z ); ind[3] = VTX(x, y+1, z );
ind[4] = VTX(x , y , z+1); ind[4] = VTX(x, y, z+1);
ind[5] = VTX(x+1, y , z+1); ind[5] = VTX(x+1, y, z+1);
ind[6] = VTX(x+1, y+1, z+1); ind[6] = VTX(x+1, y+1, z+1);
ind[7] = VTX(x , y+1, z+1); ind[7] = VTX(x, y+1, z+1);
AddHex(ind, 1); AddHex(ind, 1);
} }
@@ -2870,12 +2870,12 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (x = 0; x < nx; x++) for (x = 0; x < nx; x++)
{ {
ind[0] = VTX(x , y , z ); ind[0] = VTX(x, y, z );
ind[1] = VTX(x+1, y , z ); ind[1] = VTX(x+1, y, z );
ind[2] = VTX(x+1, y+1, z ); ind[2] = VTX(x+1, y+1, z );
ind[3] = VTX(x , y+1, z ); ind[3] = VTX(x, y+1, z );
ind[4] = VTX(x , y , z+1); ind[4] = VTX(x, y, z+1);
ind[5] = VTX(x+1, y , z+1); ind[5] = VTX(x+1, y, z+1);
ind[6] = VTX(x+1, y+1, z+1); ind[6] = VTX(x+1, y+1, z+1);
ind[7] = VTX( x, y+1, z+1); ind[7] = VTX( x, y+1, z+1);
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
@@ -2906,10 +2906,10 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (x = 0; x < nx; x++) for (x = 0; x < nx; x++)
{ {
ind[0] = VTX(x , y , 0); ind[0] = VTX(x, y, 0);
ind[1] = VTX(x , y+1, 0); ind[1] = VTX(x, y+1, 0);
ind[2] = VTX(x+1, y+1, 0); ind[2] = VTX(x+1, y+1, 0);
ind[3] = VTX(x+1, y , 0); ind[3] = VTX(x+1, y, 0);
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
{ {
AddBdrQuadAsTriangles(ind, 1); AddBdrQuadAsTriangles(ind, 1);
@@ -2929,10 +2929,10 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (x = 0; x < nx; x++) for (x = 0; x < nx; x++)
{ {
ind[0] = VTX(x , y , nz); ind[0] = VTX(x, y, nz);
ind[1] = VTX(x+1, y , nz); ind[1] = VTX(x+1, y, nz);
ind[2] = VTX(x+1, y+1, nz); ind[2] = VTX(x+1, y+1, nz);
ind[3] = VTX(x , y+1, nz); ind[3] = VTX(x, y+1, nz);
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
{ {
AddBdrQuadAsTriangles(ind, 6); AddBdrQuadAsTriangles(ind, 6);
@@ -2952,10 +2952,10 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (y = 0; y < ny; y++) for (y = 0; y < ny; y++)
{ {
ind[0] = VTX(0 , y , z ); ind[0] = VTX(0, y, z );
ind[1] = VTX(0 , y , z+1); ind[1] = VTX(0, y, z+1);
ind[2] = VTX(0 , y+1, z+1); ind[2] = VTX(0, y+1, z+1);
ind[3] = VTX(0 , y+1, z ); ind[3] = VTX(0, y+1, z );
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
{ {
AddBdrQuadAsTriangles(ind, 5); AddBdrQuadAsTriangles(ind, 5);
@@ -2971,10 +2971,10 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (y = 0; y < ny; y++) for (y = 0; y < ny; y++)
{ {
ind[0] = VTX(nx, y , z ); ind[0] = VTX(nx, y, z );
ind[1] = VTX(nx, y+1, z ); ind[1] = VTX(nx, y+1, z );
ind[2] = VTX(nx, y+1, z+1); ind[2] = VTX(nx, y+1, z+1);
ind[3] = VTX(nx, y , z+1); ind[3] = VTX(nx, y, z+1);
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
{ {
AddBdrQuadAsTriangles(ind, 3); AddBdrQuadAsTriangles(ind, 3);
@@ -2990,10 +2990,10 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (z = 0; z < nz; z++) for (z = 0; z < nz; z++)
{ {
ind[0] = VTX(x , 0, z ); ind[0] = VTX(x, 0, z );
ind[1] = VTX(x+1, 0, z ); ind[1] = VTX(x+1, 0, z );
ind[2] = VTX(x+1, 0, z+1); ind[2] = VTX(x+1, 0, z+1);
ind[3] = VTX(x , 0, z+1); ind[3] = VTX(x, 0, z+1);
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
{ {
AddBdrQuadAsTriangles(ind, 2); AddBdrQuadAsTriangles(ind, 2);
@@ -3009,8 +3009,8 @@ void Mesh::Make3D(int nx, int ny, int nz, Element::Type type,
{ {
for (z = 0; z < nz; z++) for (z = 0; z < nz; z++)
{ {
ind[0] = VTX(x , ny, z ); ind[0] = VTX(x, ny, z );
ind[1] = VTX(x , ny, z+1); ind[1] = VTX(x, ny, z+1);
ind[2] = VTX(x+1, ny, z+1); ind[2] = VTX(x+1, ny, z+1);
ind[3] = VTX(x+1, ny, z ); ind[3] = VTX(x+1, ny, z );
if (type == Element::TETRAHEDRON) if (type == Element::TETRAHEDRON)
+1 -1
View File
@@ -612,7 +612,7 @@ int NCMesh::NewSegment(int n0, int n1, int attr, int vattr1, int vattr2)
// get (degenerate) faces and assign face attributes // get (degenerate) faces and assign face attributes
int v0 = el.node[0], v1 = el.node[1]; int v0 = el.node[0], v1 = el.node[1];
faces.Get(v0, v0, v0, v0)->attribute = vattr1; faces.Get(v0, v0, v0, v0)->attribute = vattr1;
faces.Get(v1, v1, v1 ,v1)->attribute = vattr2; faces.Get(v1, v1, v1,v1)->attribute = vattr2;
return new_id; return new_id;
} }
+2 -2
View File
@@ -1159,8 +1159,8 @@ static double u0(const Vector &x) { return sin(3.0 * PI * (x[1] + x[0])); }
enum {NORM, AREA}; enum {NORM, AREA};
static double qf(const int order, const int ker, Mesh &m, double qf(const int order, const int ker, Mesh &m,
FiniteElementSpace &fes, GridFunction &u) FiniteElementSpace &fes, GridFunction &u)
{ {
const Geometry::Type type = m.GetElementBaseGeometry(0); const Geometry::Type type = m.GetElementBaseGeometry(0);
const IntegrationRule &ir(IntRules.Get(type, order)); const IntegrationRule &ir(IntRules.Get(type, order));
+5 -5
View File
@@ -483,11 +483,11 @@ void ScreenedPoisson::AssembleElementVector(const FiniteElement &el,
pval=shapef*elfun; pval=shapef*elfun;
if (fval>0.0) if (fval>0.0)
{ {
elvect.Add( -w , shapef); elvect.Add( -w, shapef);
} }
else if (fval<0.0) else if (fval<0.0)
{ {
elvect.Add( w , shapef); elvect.Add( w, shapef);
} }
} }
} }
@@ -523,7 +523,7 @@ void ScreenedPoisson::AssembleElementGrad(const FiniteElement &el,
el.CalcPhysDShape(trans, B); el.CalcPhysDShape(trans, B);
el.CalcPhysShape(trans,shapef); el.CalcPhysShape(trans,shapef);
AddMult_a_VVt(w , shapef, elmat); AddMult_a_VVt(w, shapef, elmat);
AddMult_a_AAt(w * diffcoef, B, elmat); AddMult_a_AAt(w * diffcoef, B, elmat);
} }
} }
@@ -683,11 +683,11 @@ void PUMPLaplacian::AssembleElementVector(const FiniteElement &el,
// add the external load -1 if tval > 0.0; 1 if tval < 0.0; // add the external load -1 if tval > 0.0; 1 if tval < 0.0;
if (tval>0.0) if (tval>0.0)
{ {
elvect.Add( -w*fval , shapef); elvect.Add( -w*fval, shapef);
} }
else if (tval<0.0) else if (tval<0.0)
{ {
elvect.Add( w*fval , shapef); elvect.Add( w*fval, shapef);
} }
} }
} }
+5 -5
View File
@@ -117,7 +117,7 @@ int main(int argc, char *argv[])
MPI_Finalize(); MPI_Finalize();
return 1; return 1;
} }
if (prob >3 || prob <0) prob = 0; // default problem = H1 if (prob >3 || prob <0) { prob = 0; } // default problem = H1
if (prob == 3) if (prob == 3)
{ {
if (kappa < 0) if (kappa < 0)
@@ -221,7 +221,7 @@ int main(int argc, char *argv[])
gradu = new VectorFunctionCoefficient(dim,gradu_exact); gradu = new VectorFunctionCoefficient(dim,gradu_exact);
b.AddDomainIntegrator(new DomainLFIntegrator(*f)); b.AddDomainIntegrator(new DomainLFIntegrator(*f));
b.AddBdrFaceIntegrator( b.AddBdrFaceIntegrator(
new DGDirichletLFIntegrator(*scalar_u, one, sigma, kappa)); new DGDirichletLFIntegrator(*scalar_u, one, sigma, kappa));
a.AddDomainIntegrator(new DiffusionIntegrator(one)); a.AddDomainIntegrator(new DiffusionIntegrator(one));
a.AddInteriorFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa)); a.AddInteriorFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa));
a.AddBdrFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa)); a.AddBdrFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa));
@@ -291,8 +291,8 @@ int main(int argc, char *argv[])
x = *X; x = *X;
JumpScaling js(1.0, jump_scaling_type == 2 ? JumpScaling::P_SQUARED_OVER_H JumpScaling js(1.0, jump_scaling_type == 2 ? JumpScaling::P_SQUARED_OVER_H
: jump_scaling_type == 1 ? JumpScaling::ONE_OVER_H : jump_scaling_type == 1 ? JumpScaling::ONE_OVER_H
: JumpScaling::CONSTANT); : JumpScaling::CONSTANT);
switch (prob) switch (prob)
{ {
case 0: rates.AddH1GridFunction(&x,scalar_u,gradu); break; case 0: rates.AddH1GridFunction(&x,scalar_u,gradu); break;
@@ -305,7 +305,7 @@ int main(int argc, char *argv[])
delete B; delete B;
delete A; delete A;
if (l==pr) break; if (l==pr) { break; }
pmesh->UniformRefinement(); pmesh->UniformRefinement();
fespace->Update(); fespace->Update();
+5 -5
View File
@@ -104,7 +104,7 @@ int main(int argc, char *argv[])
args.PrintUsage(cout); args.PrintUsage(cout);
return 1; return 1;
} }
if (prob >3 || prob <0) prob = 0; // default problem = H1 if (prob >3 || prob <0) { prob = 0; } // default problem = H1
if (prob == 3) if (prob == 3)
{ {
if (kappa < 0) if (kappa < 0)
@@ -194,7 +194,7 @@ int main(int argc, char *argv[])
gradu = new VectorFunctionCoefficient(dim,gradu_exact); gradu = new VectorFunctionCoefficient(dim,gradu_exact);
b.AddDomainIntegrator(new DomainLFIntegrator(*f)); b.AddDomainIntegrator(new DomainLFIntegrator(*f));
b.AddBdrFaceIntegrator( b.AddBdrFaceIntegrator(
new DGDirichletLFIntegrator(*scalar_u, one, sigma, kappa)); new DGDirichletLFIntegrator(*scalar_u, one, sigma, kappa));
a.AddDomainIntegrator(new DiffusionIntegrator(one)); a.AddDomainIntegrator(new DiffusionIntegrator(one));
a.AddInteriorFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa)); a.AddInteriorFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa));
a.AddBdrFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa)); a.AddBdrFaceIntegrator(new DGDiffusionIntegrator(one, sigma, kappa));
@@ -224,8 +224,8 @@ int main(int argc, char *argv[])
} }
JumpScaling js(1.0, jump_scaling_type == 2 ? JumpScaling::P_SQUARED_OVER_H JumpScaling js(1.0, jump_scaling_type == 2 ? JumpScaling::P_SQUARED_OVER_H
: jump_scaling_type == 1 ? JumpScaling::ONE_OVER_H : jump_scaling_type == 1 ? JumpScaling::ONE_OVER_H
: JumpScaling::CONSTANT); : JumpScaling::CONSTANT);
switch (prob) switch (prob)
{ {
@@ -235,7 +235,7 @@ int main(int argc, char *argv[])
case 3: rates.AddL2GridFunction(&x,scalar_u,gradu,&one,js); break; case 3: rates.AddL2GridFunction(&x,scalar_u,gradu,&one,js); break;
} }
if (l==sr) break; if (l==sr) { break; }
mesh->UniformRefinement(); mesh->UniformRefinement();
fespace->Update(); fespace->Update();
+6 -6
View File
@@ -98,7 +98,7 @@ TEST_CASE("DoF Transformation Classes",
double uAv = A.InnerProduct(v, u); double uAv = A.InnerProduct(v, u);
REQUIRE(fabs(uAv - At.InnerProduct(vt, u )) < tol * fabs(uAv)); REQUIRE(fabs(uAv - At.InnerProduct(vt, u )) < tol * fabs(uAv));
REQUIRE(fabs(uAv - tA.InnerProduct(v , ut)) < tol * fabs(uAv)); REQUIRE(fabs(uAv - tA.InnerProduct(v, ut)) < tol * fabs(uAv));
REQUIRE(fabs(uAv - tAt.InnerProduct(vt, ut)) < tol * fabs(uAv)); REQUIRE(fabs(uAv - tAt.InnerProduct(vt, ut)) < tol * fabs(uAv));
} }
SECTION("Inner product of a primal vector and a dual vector") SECTION("Inner product of a primal vector and a dual vector")
@@ -119,7 +119,7 @@ TEST_CASE("DoF Transformation Classes",
double fAv = A.InnerProduct(v, f); double fAv = A.InnerProduct(v, f);
REQUIRE(fabs(fAv - At.InnerProduct(vt, f )) < tol * fabs(fAv)); REQUIRE(fabs(fAv - At.InnerProduct(vt, f )) < tol * fabs(fAv));
REQUIRE(fabs(fAv - tA.InnerProduct(v , ft)) < tol * fabs(fAv)); REQUIRE(fabs(fAv - tA.InnerProduct(v, ft)) < tol * fabs(fAv));
REQUIRE(fabs(fAv - tAt.InnerProduct(vt, ft)) < tol * fabs(fAv)); REQUIRE(fabs(fAv - tAt.InnerProduct(vt, ft)) < tol * fabs(fAv));
} }
} }
@@ -185,9 +185,9 @@ TEST_CASE("DoF Transformation Functions",
double fAv = A.InnerProduct(v, f); double fAv = A.InnerProduct(v, f);
REQUIRE(fabs(fAv - nAn.InnerProduct(v , f )) < tol * fabs(fAv)); REQUIRE(fabs(fAv - nAn.InnerProduct(v, f )) < tol * fabs(fAv));
REQUIRE(fabs(fAv - At.InnerProduct(vt, f )) < tol * fabs(fAv)); REQUIRE(fabs(fAv - At.InnerProduct(vt, f )) < tol * fabs(fAv));
REQUIRE(fabs(fAv - tA.InnerProduct(v , ft)) < tol * fabs(fAv)); REQUIRE(fabs(fAv - tA.InnerProduct(v, ft)) < tol * fabs(fAv));
REQUIRE(fabs(fAv - tAt.InnerProduct(vt, ft)) < tol * fabs(fAv)); REQUIRE(fabs(fAv - tAt.InnerProduct(vt, ft)) < tol * fabs(fAv));
} }
SECTION("TransformDual") SECTION("TransformDual")
@@ -217,9 +217,9 @@ TEST_CASE("DoF Transformation Functions",
double uAv = A.InnerProduct(v, u); double uAv = A.InnerProduct(v, u);
REQUIRE(fabs(uAv - nAn.InnerProduct(v , u )) < tol * fabs(uAv)); REQUIRE(fabs(uAv - nAn.InnerProduct(v, u )) < tol * fabs(uAv));
REQUIRE(fabs(uAv - At.InnerProduct(vt, u )) < tol * fabs(uAv)); REQUIRE(fabs(uAv - At.InnerProduct(vt, u )) < tol * fabs(uAv));
REQUIRE(fabs(uAv - tA.InnerProduct(v , ut)) < tol * fabs(uAv)); REQUIRE(fabs(uAv - tA.InnerProduct(v, ut)) < tol * fabs(uAv));
REQUIRE(fabs(uAv - tAt.InnerProduct(vt, ut)) < tol * fabs(uAv)); REQUIRE(fabs(uAv - tAt.InnerProduct(vt, ut)) < tol * fabs(uAv));
} }
} }