Commit 2d95aab3 authored by Praetorius, Simon's avatar Praetorius, Simon

some openMP cleanup

parent 7659aef6
......@@ -156,11 +156,8 @@ namespace AMDiS {
rosenbrockMode(false)
{
init();
char number[5];
for (int i = 0; i < size; i++) {
sprintf(number, "[%d]", i);
scalContents[i] = new ScalContent(name + std::string(number));
}
for (int i = 0; i < size; i++)
scalContents[i] = new ScalContent(name + "[" + std::to_string(i) + "]");
}
/// Destructor.
......
......@@ -347,9 +347,20 @@ namespace AMDiS {
{
return problems[number];
}
virtual ProblemStatType const* getProblem(int number = 0) const
{
return problems[number];
}
/// Returns \ref meshes[i]
inline Mesh* getMesh(int number = 0)
Mesh* getMesh(int number = 0)
{
return meshes[number];
}
/// Returns \ref meshes[i]
Mesh const* getMesh(int number = 0) const
{
return meshes[number];
}
......
......@@ -215,10 +215,15 @@ namespace AMDiS {
TEST_EXIT(dofIndexed)("no dofIndexed\n");
if (dofIndexed->getSize() < size)
dofIndexed->resize(size);
dofIndexedList.push_back(dofIndexed);
#ifdef _OPENMP
#pragma omp critical (addDOFIndexed)
#endif
{
if (dofIndexed->getSize() < size)
dofIndexed->resize(size);
dofIndexedList.push_back(dofIndexed);
}
}
......@@ -226,18 +231,17 @@ namespace AMDiS {
{
FUNCNAME("DOFAdmin::removeDOFIndexed()");
bool removed = false;
std::list<DOFIndexedBase*>::iterator it;
std::list<DOFIndexedBase*>::iterator end = dofIndexedList.end();
for (it = dofIndexedList.begin(); it != end; ++it) {
if (*it == dofIndexed) {
dofIndexedList.erase(it);
removed = true;
break;
#ifdef _OPENMP
#pragma omp critical (removeDOFIndexed)
#endif
{
auto it = std::find(dofIndexedList.begin(), dofIndexedList.end(), dofIndexed);
if (it != dofIndexedList.end())
dofIndexedList.erase(it);
else {
ERROR_EXIT("DOFIndexed not in list!\n");
}
}
TEST_EXIT(removed)("DOFIndexed not in list!\n");
}
......@@ -255,16 +259,17 @@ namespace AMDiS {
{
FUNCNAME("DOFAdmin::removeDOFContainer()");
std::list<DOFContainer*>::iterator it;
std::list<DOFContainer*>::iterator end = dofContainerList.end();
for (it = dofContainerList.begin(); it != end; ++it) {
if (*it == cont) {
dofContainerList.erase(it);
return;
#ifdef _OPENMP
#pragma omp critical (removeDOFContainer)
#endif
{
auto it = std::find(dofContainerList.begin(), dofContainerList.end(), cont);
if (it != dofContainerList.end())
dofContainerList.erase(it);
else {
ERROR_EXIT("Container not in list!\n");
}
}
ERROR("Container not in list!\n");
}
......
......@@ -204,11 +204,16 @@ namespace AMDiS {
void Quad10::calculateElementMatrix(const ElInfo *elInfo, ElementMatrix& mat)
{
if (firstCall) {
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_GRD_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_PHI);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_GRD_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_PHI);
firstCall = false;
}
}
int nPoints = quadrature->getNumPoints();
......@@ -240,11 +245,16 @@ namespace AMDiS {
void Quad10::calculateElementVector(const ElInfo *elInfo, ElementVector& vec)
{
if (firstCall) {
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_GRD_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_PHI);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_GRD_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_PHI);
firstCall = false;
}
}
int nPoints = quadrature->getNumPoints();
......@@ -280,11 +290,16 @@ namespace AMDiS {
const double *values;
if (firstCall) {
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
}
const int **nEntries = q10->getNumberEntries();
......@@ -362,11 +377,16 @@ namespace AMDiS {
void Quad01::calculateElementMatrix(const ElInfo *elInfo, ElementMatrix& mat)
{
if (firstCall) {
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_GRD_PHI);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
const BasisFunction *basFcts = rowFeSpace->getBasisFcts();
psiFast = updateFastQuadrature(psiFast, basFcts, INIT_PHI);
basFcts = colFeSpace->getBasisFcts();
phiFast = updateFastQuadrature(phiFast, basFcts, INIT_GRD_PHI);
firstCall = false;
}
}
int nPoints = quadrature->getNumPoints();
......@@ -410,11 +430,16 @@ namespace AMDiS {
const double *values;
if (firstCall) {
q01 = Q01PsiPhi::provideQ01PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
q01 = Q01PsiPhi::provideQ01PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
}
const int **nEntries = q01->getNumberEntries();
......@@ -446,11 +471,16 @@ namespace AMDiS {
const double *values;
if (firstCall) {
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
#ifdef _OPENMP
#pragma omp critical
#endif
{
q10 = Q10PsiPhi::provideQ10PsiPhi(rowFeSpace->getBasisFcts(),
colFeSpace->getBasisFcts(),
quadrature);
q1 = Q1Psi::provideQ1Psi(rowFeSpace->getBasisFcts(), quadrature);
firstCall = false;
}
}
const int *nEntries = q1->getNumberEntries();
......
......@@ -280,25 +280,25 @@ namespace AMDiS {
bool cont = true;
while (cont) {
bool cont1;
#ifndef NDEBUG
// #ifndef NDEBUG
bool cont2;
#endif
// #endif
if (structure1->isLeafElement() == structure2->isLeafElement()) {
cont1 = structure1->nextElement(result);
#ifndef NDEBUG
// #ifndef NDEBUG
cont2 = structure2->nextElement();
#endif
// #endif
} else {
if (structure1->isLeafElement()) {
cont1 = structure1->nextElement();
#ifndef NDEBUG
// #ifndef NDEBUG
cont2 = structure2->skipBranch(result);
#endif
// #endif
} else {
cont1 = structure1->skipBranch(result);
#ifndef NDEBUG
// #ifndef NDEBUG
cont2 = structure2->nextElement();
#endif
// #endif
}
}
TEST_EXIT_DBG(cont1 == cont2)("Structures don't match!\n");
......
......@@ -75,6 +75,12 @@ namespace AMDiS {
* is managed by this master problem, the number hasn't to be given.
*/
virtual ProblemStatBase *getProblem(int number = 0) = 0;
// dirty hack
virtual ProblemStatBase const* getProblem(int number = 0) const
{
return const_cast<ProblemStatBase const*>(const_cast<ProblemIterationInterface*>(this)->getProblem(number));
}
/// Returns the problem with the given name.
virtual ProblemStatBase *getProblem(std::string name)
......
......@@ -317,6 +317,14 @@ namespace AMDiS {
("invalid component number\n");
return componentMeshes[comp];
}
Mesh const* getMesh(int comp = 0) const
{
FUNCNAME("ProblemStatSeq::getMesh()");
TEST_EXIT(comp < static_cast<int>(componentMeshes.size()) && comp >= 0)
("invalid component number\n");
return componentMeshes[comp];
}
/// Returns \ref meshes
inline std::vector<Mesh*> getMeshes()
......@@ -325,7 +333,7 @@ namespace AMDiS {
}
/// Returns \ref feSpace_.
inline const FiniteElemSpace* getFeSpace(int comp = 0)
inline const FiniteElemSpace* getFeSpace(int comp = 0) const
{
FUNCNAME("ProblemStatSeq::getFeSpace()");
TEST_EXIT(comp < static_cast<int>(componentSpaces.size()) && comp >= 0)
......@@ -726,6 +734,12 @@ namespace AMDiS {
{
return this;
}
/// Returns the problem with the given number.
virtual ProblemStatBase const* getProblem(int number = 0) const override
{
return this;
}
/// Determines the execution order of the single adaption steps. If adapt is
/// true, mesh adaption will be performed. This allows to avoid mesh adaption,
......
......@@ -34,21 +34,13 @@ namespace AMDiS {
int FastQuadrature::max_points = 0;
Quadrature::Quadrature(const Quadrature& q)
{
name = q.name;
degree = q.degree;
dim = q.dim;
n_points = q.n_points;
// copy barycentric coordinates
lambda = new VectorOfFixVecs<DimVec<double> >(*(q.lambda));
// copy weights
w = new double[n_points];
for (int i = 0; i < n_points; i++)
w[i] = q.w[i];
}
: name(q.name)
, degree(q.degree)
, dim(q.dim)
, n_points(q.n_points)
, lambda(new VectorOfFixVecs<DimVec<double> >(*(q.lambda)))
, w(q.w)
{}
/****************************************************************************/
/* initialize gradient values of a function f in local coordinates at the */
......@@ -115,76 +107,7 @@ namespace AMDiS {
}
Quadrature **Quadrature::quad_nd[4];
Quadrature *Quadrature::quad_0d[1];
Quadrature *Quadrature::quad_1d[20];
Quadrature *Quadrature::quad_2d[18];
Quadrature *Quadrature::quad_3d[8];
VectorOfFixVecs<DimVec<double> > *Quadrature::x_0d;
double *Quadrature::w_0d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x0_1d = NULL;
VectorOfFixVecs<DimVec<double> > *Quadrature::x1_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x2_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x3_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x4_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x5_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x6_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x7_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x8_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x9_1d;
double *Quadrature::w0_1d;
double *Quadrature::w1_1d;
double *Quadrature::w2_1d;
double *Quadrature::w3_1d;
double *Quadrature::w4_1d;
double *Quadrature::w5_1d;
double *Quadrature::w6_1d;
double *Quadrature::w7_1d;
double *Quadrature::w8_1d;
double *Quadrature::w9_1d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x1_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x2_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x3_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x4_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x5_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x7_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x8_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x9_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x10_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x11_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x12_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x17_2d;
double *Quadrature::w1_2d;
double *Quadrature::w2_2d;
double *Quadrature::w3_2d;
double *Quadrature::w4_2d;
double *Quadrature::w5_2d;
double *Quadrature::w7_2d;
double *Quadrature::w8_2d;
double *Quadrature::w9_2d;
double *Quadrature::w10_2d;
double *Quadrature::w11_2d;
double *Quadrature::w12_2d;
double *Quadrature::w17_2d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x1_3d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x2_3d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x3_3d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x4_3d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x5_3d;
VectorOfFixVecs<DimVec<double> > *Quadrature::x7_3d;
double *Quadrature::w1_3d;
double *Quadrature::w2_3d;
double *Quadrature::w3_3d;
double *Quadrature::w4_3d;
double *Quadrature::w5_3d;
double *Quadrature::w7_3d;
void Quadrature::initStaticQuadratures()
QuadratureFactory::QuadratureFactory()
{
TEST_EXIT(x0_1d == NULL)("static quadratures already initialized\n");
......@@ -201,7 +124,7 @@ namespace AMDiS {
w_0d = createAndInitArray(1, StdVol * 1.0);
Quadrature::quad_0d[0] = new Quadrature("0d", 0, 0, 1, Quadrature::x_0d, Quadrature::w_0d);
quad_0d[0].reset(new Quadrature("0d", 0, 0, 1, x_0d, w_0d));
/****************************************************************************/
/* 1d quadrature formulas using 2 barycentric coordinates */
......@@ -386,26 +309,26 @@ namespace AMDiS {
StdVol * 0.074725674575291,
StdVol * 0.033335672154344);
Quadrature::quad_1d[0]= new Quadrature("1d-Gauss: P_1", 1, 1, 1, Quadrature::x0_1d, Quadrature::w0_1d); /* P_0 */
Quadrature::quad_1d[1]= new Quadrature("1d-Gauss: P_1", 1, 1, 1, Quadrature::x0_1d, Quadrature::w0_1d); /* P_1 */
Quadrature::quad_1d[2]= new Quadrature("1d-Gauss: P_3", 3, 1, 2, Quadrature::x1_1d, Quadrature::w1_1d); /* P_2 */
Quadrature::quad_1d[3]= new Quadrature("1d-Gauss: P_3", 3, 1, 2, Quadrature::x1_1d, Quadrature::w1_1d); /* P_3 */
Quadrature::quad_1d[4]= new Quadrature("1d-Gauss: P_5", 5, 1, 3, Quadrature::x2_1d, Quadrature::w2_1d); /* P_4 */
Quadrature::quad_1d[5]= new Quadrature("1d-Gauss: P_5", 5, 1, 3, Quadrature::x2_1d, Quadrature::w2_1d); /* P_5 */
Quadrature::quad_1d[6]= new Quadrature("1d-Gauss: P_7", 7, 1, 4, Quadrature::x3_1d, Quadrature::w3_1d); /* P_6 */
Quadrature::quad_1d[7]= new Quadrature("1d-Gauss: P_7", 7, 1, 4, Quadrature::x3_1d, Quadrature::w3_1d); /* P_7 */
Quadrature::quad_1d[8]= new Quadrature("1d-Gauss: P_9", 9, 1, 5, Quadrature::x4_1d, Quadrature::w4_1d); /* P_8 */
Quadrature::quad_1d[9]= new Quadrature("1d-Gauss: P_9", 9, 1, 5, Quadrature::x4_1d, Quadrature::w4_1d); /* P_9 */
Quadrature::quad_1d[10]= new Quadrature("1d-Gauss: P_11", 11, 1, 6, Quadrature::x5_1d, Quadrature::w5_1d); /* P_10 */
Quadrature::quad_1d[11]= new Quadrature("1d-Gauss: P_11", 11, 1, 6, Quadrature::x5_1d, Quadrature::w5_1d); /* P_11 */
Quadrature::quad_1d[12]= new Quadrature("1d-Gauss: P_13", 13, 1, 7, Quadrature::x6_1d, Quadrature::w6_1d); /* P_12 */
Quadrature::quad_1d[13]= new Quadrature("1d-Gauss: P_13", 13, 1, 7, Quadrature::x6_1d, Quadrature::w6_1d); /* P_13 */
Quadrature::quad_1d[14]= new Quadrature("1d-Gauss: P_15", 15, 1, 8, Quadrature::x7_1d, Quadrature::w7_1d); /* P_14 */
Quadrature::quad_1d[15]= new Quadrature("1d-Gauss: P_15", 15, 1, 8, Quadrature::x7_1d, Quadrature::w7_1d); /* P_15 */
Quadrature::quad_1d[16]= new Quadrature("1d-Gauss: P_17", 17, 1, 9, Quadrature::x8_1d, Quadrature::w8_1d); /* P_16 */
Quadrature::quad_1d[17]= new Quadrature("1d-Gauss: P_17", 17, 1, 9, Quadrature::x8_1d, Quadrature::w8_1d); /* P_17 */
Quadrature::quad_1d[18]= new Quadrature("1d-Gauss: P_19", 19, 1, 10, Quadrature::x9_1d, Quadrature::w9_1d); /* P_18 */
Quadrature::quad_1d[19]= new Quadrature("1d-Gauss: P_19", 19, 1, 10, Quadrature::x9_1d, Quadrature::w9_1d);/* P_19 */
quad_1d[0].reset(new Quadrature("1d-Gauss: P_1", 1, 1, 1, x0_1d, w0_1d)); /* P_0 */
quad_1d[1].reset(new Quadrature("1d-Gauss: P_1", 1, 1, 1, x0_1d, w0_1d)); /* P_1 */
quad_1d[2].reset(new Quadrature("1d-Gauss: P_3", 3, 1, 2, x1_1d, w1_1d)); /* P_2 */
quad_1d[3].reset(new Quadrature("1d-Gauss: P_3", 3, 1, 2, x1_1d, w1_1d)); /* P_3 */
quad_1d[4].reset(new Quadrature("1d-Gauss: P_5", 5, 1, 3, x2_1d, w2_1d)); /* P_4 */
quad_1d[5].reset(new Quadrature("1d-Gauss: P_5", 5, 1, 3, x2_1d, w2_1d)); /* P_5 */
quad_1d[6].reset(new Quadrature("1d-Gauss: P_7", 7, 1, 4, x3_1d, w3_1d)); /* P_6 */
quad_1d[7].reset(new Quadrature("1d-Gauss: P_7", 7, 1, 4, x3_1d, w3_1d)); /* P_7 */
quad_1d[8].reset(new Quadrature("1d-Gauss: P_9", 9, 1, 5, x4_1d, w4_1d)); /* P_8 */
quad_1d[9].reset(new Quadrature("1d-Gauss: P_9", 9, 1, 5, x4_1d, w4_1d)); /* P_9 */
quad_1d[10].reset(new Quadrature("1d-Gauss: P_11", 11, 1, 6, x5_1d, w5_1d)); /* P_10 */
quad_1d[11].reset(new Quadrature("1d-Gauss: P_11", 11, 1, 6, x5_1d, w5_1d)); /* P_11 */
quad_1d[12].reset(new Quadrature("1d-Gauss: P_13", 13, 1, 7, x6_1d, w6_1d)); /* P_12 */
quad_1d[13].reset(new Quadrature("1d-Gauss: P_13", 13, 1, 7, x6_1d, w6_1d)); /* P_13 */
quad_1d[14].reset(new Quadrature("1d-Gauss: P_15", 15, 1, 8, x7_1d, w7_1d)); /* P_14 */
quad_1d[15].reset(new Quadrature("1d-Gauss: P_15", 15, 1, 8, x7_1d, w7_1d)); /* P_15 */
quad_1d[16].reset(new Quadrature("1d-Gauss: P_17", 17, 1, 9, x8_1d, w8_1d)); /* P_16 */
quad_1d[17].reset(new Quadrature("1d-Gauss: P_17", 17, 1, 9, x8_1d, w8_1d)); /* P_17 */
quad_1d[18].reset(new Quadrature("1d-Gauss: P_19", 19, 1, 10, x9_1d, w9_1d)); /* P_18 */
quad_1d[19].reset(new Quadrature("1d-Gauss: P_19", 19, 1, 10, x9_1d, w9_1d));/* P_19 */
#undef StdVol
/****************************************************************************/
......@@ -1131,24 +1054,24 @@ namespace AMDiS {
#undef w14
#undef w15
Quadrature::quad_2d[0] = new Quadrature("2d-P_1", 1, 2, N1, Quadrature::x1_2d, Quadrature::w1_2d); /* P 0 */
Quadrature::quad_2d[1] = new Quadrature("2d-P_1", 1, 2, N1, Quadrature::x1_2d, Quadrature::w1_2d); /* P 1 */
Quadrature::quad_2d[2] = new Quadrature("2d Stroud: P_2", 2, 2, N2, Quadrature::x2_2d, Quadrature::w2_2d); /* P 2 */
Quadrature::quad_2d[3] = new Quadrature("2d Stroud: P_3", 3, 2, N3, Quadrature::x3_2d, Quadrature::w3_2d); /* P 3 */
Quadrature::quad_2d[4] = new Quadrature("2d Dunavant: P_4", 4, 2, N4, Quadrature::x4_2d, Quadrature::w4_2d); /* P 4 */
Quadrature::quad_2d[5] = new Quadrature("2d Dunavant: P_5", 5, 2, N5, Quadrature::x5_2d, Quadrature::w5_2d); /* P 5 */
Quadrature::quad_2d[6] = new Quadrature("2d Gattermann: P_7", 7, 2, N7, Quadrature::x7_2d, Quadrature::w7_2d); /* P 6 */
Quadrature::quad_2d[7] = new Quadrature("2d Gattermann: P_7", 7, 2, N7, Quadrature::x7_2d, Quadrature::w7_2d); /* P 7 */
Quadrature::quad_2d[8] = new Quadrature("2d Dunavant: P_8", 8, 2, N8, Quadrature::x8_2d, Quadrature::w8_2d); /* P 8 */
Quadrature::quad_2d[9] = new Quadrature("2d Dunavant: P_9", 9, 2, N9, Quadrature::x9_2d, Quadrature::w9_2d); /* P 9 */
Quadrature::quad_2d[10] = new Quadrature("2d Dunavant: P_10", 10, 2, N10, Quadrature::x10_2d, Quadrature::w10_2d);/* P 10 */
Quadrature::quad_2d[11] = new Quadrature("2d Dunavant: P_11", 11, 2, N11, Quadrature::x11_2d, Quadrature::w11_2d);/* P 11 */
Quadrature::quad_2d[12] = new Quadrature("2d Dunavant: P_12", 12, 2, N12, Quadrature::x12_2d, Quadrature::w12_2d);/* P 12 */
Quadrature::quad_2d[13] = new Quadrature("2d Dunavant: P_17", 17, 2, N17, Quadrature::x17_2d, Quadrature::w17_2d);/* P 13 */
Quadrature::quad_2d[14] = new Quadrature("2d Dunavant: P_17", 17, 2, N17, Quadrature::x17_2d, Quadrature::w17_2d);/* P 14 */
Quadrature::quad_2d[15] = new Quadrature("2d Dunavant: P_17", 17, 2, N17, Quadrature::x17_2d, Quadrature::w17_2d);/* P 15 */
Quadrature::quad_2d[16] = new Quadrature("2d Dunavant: P_17", 17, 2, N17, Quadrature::x17_2d, Quadrature::w17_2d);/* P 16 */
Quadrature::quad_2d[17] = new Quadrature("2d Dunavant: P_17", 17, 2, N17, Quadrature::x17_2d, Quadrature::w17_2d); /* P 17 */
quad_2d[0].reset(new Quadrature("2d-P_1", 1, 2, N1, x1_2d, w1_2d)); /* P 0 */
quad_2d[1].reset(new Quadrature("2d-P_1", 1, 2, N1, x1_2d, w1_2d)); /* P 1 */
quad_2d[2].reset(new Quadrature("2d Stroud: P_2", 2, 2, N2, x2_2d, w2_2d)); /* P 2 */
quad_2d[3].reset(new Quadrature("2d Stroud: P_3", 3, 2, N3, x3_2d, w3_2d)); /* P 3 */
quad_2d[4].reset(new Quadrature("2d Dunavant: P_4", 4, 2, N4, x4_2d, w4_2d)); /* P 4 */
quad_2d[5].reset(new Quadrature("2d Dunavant: P_5", 5, 2, N5, x5_2d, w5_2d)); /* P 5 */
quad_2d[6].reset(new Quadrature("2d Gattermann: P_7", 7, 2, N7, x7_2d, w7_2d)); /* P 6 */
quad_2d[7].reset(new Quadrature("2d Gattermann: P_7", 7, 2, N7, x7_2d, w7_2d)); /* P 7 */
quad_2d[8].reset(new Quadrature("2d Dunavant: P_8", 8, 2, N8, x8_2d, w8_2d)); /* P 8 */
quad_2d[9].reset(new Quadrature("2d Dunavant: P_9", 9, 2, N9, x9_2d, w9_2d)); /* P 9 */
quad_2d[10].reset(new Quadrature("2d Dunavant: P_10", 10, 2, N10, x10_2d, w10_2d));/* P 10 */
quad_2d[11].reset(new Quadrature("2d Dunavant: P_11", 11, 2, N11, x11_2d, w11_2d));/* P 11 */
quad_2d[12].reset(new Quadrature("2d Dunavant: P_12", 12, 2, N12, x12_2d, w12_2d));/* P 12 */
quad_2d[13].reset(new Quadrature("2d Dunavant: P_17", 17, 2, N17, x17_2d, w17_2d));/* P 13 */
quad_2d[14].reset(new Quadrature("2d Dunavant: P_17", 17, 2, N17, x17_2d, w17_2d));/* P 14 */
quad_2d[15].reset(new Quadrature("2d Dunavant: P_17", 17, 2, N17, x17_2d, w17_2d));/* P 15 */
quad_2d[16].reset(new Quadrature("2d Dunavant: P_17", 17, 2, N17, x17_2d, w17_2d));/* P 16 */
quad_2d[17].reset(new Quadrature("2d Dunavant: P_17", 17, 2, N17, x17_2d, w17_2d)); /* P 17 */
#undef StdVol
......@@ -1401,14 +1324,14 @@ namespace AMDiS {
/* use that of degree (only on function evaluation also) */
/****************************************************************************/
Quadrature::quad_3d[0] = new Quadrature("3d Stroud: P_1", 1, 3, 1, Quadrature::x1_3d, Quadrature::w1_3d); /* P_0 */
Quadrature::quad_3d[1] = new Quadrature("3d Stroud: P_1", 1, 3, 1, Quadrature::x1_3d, Quadrature::w1_3d); /* P_1 */
Quadrature::quad_3d[2] = new Quadrature("3d Stroud: P_2", 2, 3, 4, Quadrature::x2_3d, Quadrature::w2_3d); /* P_2 */
Quadrature::quad_3d[3] = new Quadrature("3d Stroud: P_3", 3, 3, 8, Quadrature::x3_3d, Quadrature::w3_3d); /* P_3 */
Quadrature::quad_3d[4] = new Quadrature("3d ???: P_5", 5, 3, 15, Quadrature::x5_3d, Quadrature::w5_3d); /* P_4 */
Quadrature::quad_3d[5] = new Quadrature("3d ???: P_5", 5, 3, 15, Quadrature::x5_3d, Quadrature::w5_3d); /* P_5 */
Quadrature::quad_3d[6] = new Quadrature("3d ???: P_7", 7, 3, 64, Quadrature::x7_3d, Quadrature::w7_3d); /* P_6 */
Quadrature::quad_3d[7] = new Quadrature("3d ???: P_7", 7, 3, 64, Quadrature::x7_3d, Quadrature::w7_3d); /* P_7 */
quad_3d[0].reset(new Quadrature("3d Stroud: P_1", 1, 3, 1, x1_3d, w1_3d)); /* P_0 */
quad_3d[1].reset(new Quadrature("3d Stroud: P_1", 1, 3, 1, x1_3d, w1_3d)); /* P_1 */
quad_3d[2].reset(new Quadrature("3d Stroud: P_2", 2, 3, 4, x2_3d, w2_3d)); /* P_2 */
quad_3d[3].reset(new Quadrature("3d Stroud: P_3", 3, 3, 8, x3_3d, w3_3d)); /* P_3 */
quad_3d[4].reset(new Quadrature("3d ???: P_5", 5, 3, 15, x5_3d, w5_3d)); /* P_4 */
quad_3d[5].reset(new Quadrature("3d ???: P_5", 5, 3, 15, x5_3d, w5_3d)); /* P_5 */
quad_3d[6].reset(new Quadrature("3d ???: P_7", 7, 3, 64, x7_3d, w7_3d)); /* P_6 */
quad_3d[7].reset(new Quadrature("3d ???: P_7", 7, 3, 64, x7_3d, w7_3d)); /* P_7 */
#undef StdVol
......@@ -1417,16 +1340,17 @@ namespace AMDiS {
/* integration in different dimensions */
/****************************************************************************/