29 #ifndef OOMPH_INTEGRAL_HEADER
30 #define OOMPH_INTEGRAL_HEADER
35 #include <oomph-lib-config.h>
67 virtual double knot(
const unsigned&
i,
const unsigned&
j)
const = 0;
72 throw OomphLibError(
"Not implemented for this integration scheme (yet?).",
78 virtual double weight(
const unsigned&
i)
const = 0;
108 double knot(
const unsigned&
i,
const unsigned&
j)
const
110 throw OomphLibError(
"Local coordinate vector is of size zero, so this "
111 "should never be called.",
143 template<
unsigned DIM,
unsigned NPTS_1D>
162 static const unsigned Npts = 2;
164 static const double Knot[2][1],
Weight[2];
183 double knot(
const unsigned&
i,
const unsigned&
j)
const
208 static const unsigned Npts = 3;
210 static const double Knot[3][1],
Weight[3];
229 double knot(
const unsigned&
i,
const unsigned&
j)
const
254 static const unsigned Npts = 4;
256 static const double Knot[4][1],
Weight[4];
275 double knot(
const unsigned&
i,
const unsigned&
j)
const
300 static const unsigned Npts = 4;
302 static const double Knot[4][2],
Weight[4];
321 double knot(
const unsigned&
i,
const unsigned&
j)
const
346 static const unsigned Npts = 9;
348 static const double Knot[9][2],
Weight[9];
367 double knot(
const unsigned&
i,
const unsigned&
j)
const
392 static const unsigned Npts = 16;
394 static const double Knot[16][2],
Weight[16];
414 double knot(
const unsigned&
i,
const unsigned&
j)
const
439 static const unsigned Npts = 8;
441 static const double Knot[8][3],
Weight[8];
460 double knot(
const unsigned&
i,
const unsigned&
j)
const
485 static const unsigned Npts = 27;
487 static const double Knot[27][3],
Weight[27];
506 double knot(
const unsigned&
i,
const unsigned&
j)
const
531 static const unsigned Npts = 64;
533 static const double Knot[64][3],
Weight[64];
552 double knot(
const unsigned&
i,
const unsigned&
j)
const
569 template<
unsigned DIM,
unsigned NPTS_1D>
594 double knot(
const unsigned&
i,
const unsigned&
j)
const
624 template<
unsigned DIM,
unsigned NPTS_1D>
643 static const unsigned Npts = 2;
646 static const double Knot[2][1],
Weight[2];
665 double knot(
const unsigned&
i,
const unsigned&
j)
const
690 static const unsigned Npts = 3;
692 static const double Knot[3][1],
Weight[3];
711 double knot(
const unsigned&
i,
const unsigned&
j)
const
737 static const unsigned Npts = 4;
739 static const double Knot[4][1],
Weight[4];
758 double knot(
const unsigned&
i,
const unsigned&
j)
const
776 static const unsigned Npts = 5;
778 static const double Knot[5][1],
Weight[5];
797 double knot(
const unsigned&
i,
const unsigned&
j)
const
823 static const unsigned Npts = 3;
826 static const double Knot[3][2],
Weight[3];
845 double knot(
const unsigned&
i,
const unsigned&
j)
const
870 static const unsigned Npts = 7;
872 static const double Knot[7][2],
Weight[7];
891 double knot(
const unsigned&
i,
const unsigned&
j)
const
917 static const unsigned Npts = 13;
919 static const double Knot[13][2],
Weight[13];
938 double knot(
const unsigned&
i,
const unsigned&
j)
const
961 static const unsigned Npts = 37;
963 static const double Knot[37][2],
Weight[37];
982 double knot(
const unsigned&
i,
const unsigned&
j)
const
1006 static const unsigned Npts = 19;
1027 double knot(
const unsigned&
i,
const unsigned&
j)
const
1054 static const unsigned Npts = 52;
1075 double knot(
const unsigned&
i,
const unsigned&
j)
const
1098 static const unsigned Npts = 64;
1119 double knot(
const unsigned&
i,
const unsigned&
j)
const
1144 static const unsigned Npts = 4;
1165 double knot(
const unsigned&
i,
const unsigned&
j)
const
1192 static const unsigned Npts = 11;
1213 double knot(
const unsigned&
i,
const unsigned&
j)
const
1240 static const unsigned Npts = 45;
1261 double knot(
const unsigned&
i,
const unsigned&
j)
const
1279 template<
unsigned DIM,
unsigned NPTS_1D>
1287 template<
unsigned NPTS_1D>
1292 static const unsigned Npts = NPTS_1D;
1308 double knot(
const unsigned&
i,
const unsigned&
j)
const
1325 template<
unsigned NPTS_1D>
1333 for (
unsigned i = 0;
i < NPTS_1D;
i++)
1344 template<
unsigned NPTS_1D>
1349 static const unsigned long int Npts = NPTS_1D * NPTS_1D;
1352 double Knot[NPTS_1D * NPTS_1D][2],
1367 double knot(
const unsigned&
i,
const unsigned&
j)
const
1384 template<
unsigned NPTS_1D>
1391 int i_fast = 0, i_slow = 0;
1392 for (
unsigned i = 0;
i < NPTS_1D * NPTS_1D;
i++)
1394 if (i_fast == NPTS_1D)
1399 Knot[
i][0] =
s[i_fast];
1400 Knot[
i][1] =
s[i_slow];
1410 template<
unsigned NPTS_1D>
1415 static const unsigned long int Npts = NPTS_1D * NPTS_1D * NPTS_1D;
1418 double Knot[NPTS_1D * NPTS_1D * NPTS_1D][3],
1433 double knot(
const unsigned&
i,
const unsigned&
j)
const
1450 template<
unsigned NPTS_1D>
1457 for (
unsigned k = 0;
k < NPTS_1D;
k++)
1459 for (
unsigned j = 0;
j < NPTS_1D;
j++)
1461 for (
unsigned i = 0;
i < NPTS_1D;
i++)
1463 unsigned index = NPTS_1D * NPTS_1D *
k + NPTS_1D *
j +
i;
1464 Knot[index][0] =
s[
i];
1465 Knot[index][1] =
s[
j];
1466 Knot[index][2] =
s[
k];
1483 template<
unsigned DIM,
unsigned NPTS_1D>
1491 template<
unsigned NPTS_1D>
1496 static const unsigned Npts = NPTS_1D;
1512 double knot(
const unsigned&
i,
const unsigned&
j)
const
1529 template<
unsigned NPTS_1D>
1537 for (
unsigned i = 0;
i < NPTS_1D;
i++)
1548 template<
unsigned NPTS_1D>
1553 static const unsigned long int Npts = NPTS_1D * NPTS_1D;
1556 double Knot[NPTS_1D * NPTS_1D][2],
1571 double knot(
const unsigned&
i,
const unsigned&
j)
const
1588 template<
unsigned NPTS_1D>
1595 int i_fast = 0, i_slow = 0;
1596 for (
unsigned i = 0;
i < NPTS_1D * NPTS_1D;
i++)
1598 if (i_fast == NPTS_1D)
1603 Knot[
i][0] =
s[i_fast];
1604 Knot[
i][1] =
s[i_slow];
1614 template<
unsigned NPTS_1D>
1619 static const unsigned long int Npts = NPTS_1D * NPTS_1D * NPTS_1D;
1622 double Knot[NPTS_1D * NPTS_1D * NPTS_1D][3],
1637 double knot(
const unsigned&
i,
const unsigned&
j)
const
1654 template<
unsigned NPTS_1D>
1661 for (
unsigned k = 0;
k < NPTS_1D;
k++)
1663 for (
unsigned j = 0;
j < NPTS_1D;
j++)
1665 for (
unsigned i = 0;
i < NPTS_1D;
i++)
1667 unsigned index = NPTS_1D * NPTS_1D *
k + NPTS_1D *
j +
i;
1668 Knot[index][0] =
s[
i];
1669 Knot[index][1] =
s[
j];
1670 Knot[index][2] =
s[
k];
int i
Definition: BiCGSTAB_step_by_step.cpp:9
RowVector3d w
Definition: Matrix_resize_int.cpp:3
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1518
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1512
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1506
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1565
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1577
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1571
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1631
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1643
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1637
Definition: integral.h:1485
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1314
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1302
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1308
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1361
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1373
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1367
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1439
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:1433
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1427
Definition: integral.h:1281
Gauss()
Default constructor (empty)
Definition: integral.h:168
void operator=(const Gauss &)=delete
Broken assignment operator.
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:177
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:183
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:189
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:235
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] (j=0) of integration point i.
Definition: integral.h:229
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:223
Gauss()
Default constructor (empty)
Definition: integral.h:214
void operator=(const Gauss &)=delete
Broken assignment operator.
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
void operator=(const Gauss &)=delete
Broken assignment operator.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:269
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:281
Gauss()
Default constructor (empty)
Definition: integral.h:260
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] (j=0) of integration point i.
Definition: integral.h:275
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:321
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:327
void operator=(const Gauss &)=delete
Broken assignment operator.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:315
Gauss()
Default constructor (empty)
Definition: integral.h:306
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] of integration point i.
Definition: integral.h:367
void operator=(const Gauss &)=delete
Broken assignment operator.
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:373
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:361
Gauss()
Default constructor (empty)
Definition: integral.h:352
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
Gauss()
Default constructor (empty)
Definition: integral.h:399
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] of integration point i.
Definition: integral.h:414
void operator=(const Gauss &)=delete
Broken assignment operator.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:408
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:420
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:454
double knot(const unsigned &i, const unsigned &j) const
Return coordinate s[j] of integration point i.
Definition: integral.h:460
void operator=(const Gauss &)=delete
Broken assignment operator.
Gauss()
Default constructor (empty)
Definition: integral.h:445
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:466
void operator=(const Gauss &)=delete
Broken assignment operator.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:512
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:506
Gauss()
Default constructor (empty)
Definition: integral.h:491
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:500
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
Gauss()
Default constructor (empty)
Definition: integral.h:537
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:546
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:552
void operator=(const Gauss &)=delete
Broken assignment operator.
Gauss(const Gauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:558
Definition: integral.h:571
void operator=(const Gauss_Rescaled &)=delete
Broken assignment operator.
double Lower
Store for the lower and upper limits of integration and the range.
Definition: integral.h:574
Gauss_Rescaled()
Default constructor (empty)
Definition: integral.h:578
double knot(const unsigned &i, const unsigned &j) const
Return the rescaled knot values s[j] at integration point i.
Definition: integral.h:594
double Range
Definition: integral.h:574
Gauss_Rescaled(double lower, double upper)
The constructor in this case takes the lower and upper arguments.
Definition: integral.h:587
double Upper
Definition: integral.h:574
double weight(const unsigned &i) const
Return the rescaled weight at integration point i.
Definition: integral.h:600
Gauss_Rescaled(const Gauss_Rescaled &dummy)=delete
Broken copy constructor.
Definition: integral.h:145
Definition: integral.h:49
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
Integral(const Integral &dummy)=delete
Broken copy constructor.
virtual Vector< double > knot(const unsigned &i) const
Return local coordinates of i-th intergration point. Broken virtual.
Definition: integral.h:70
virtual ~Integral()
Virtual destructor (empty)
Definition: integral.h:61
Integral()
Default constructor (empty)
Definition: integral.h:52
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
void operator=(const Integral &)=delete
Broken assignment operator.
Definition: oomph_definitions.h:222
Definition: integral.h:89
double knot(const unsigned &i, const unsigned &j) const
Definition: integral.h:108
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:101
PointIntegral(const PointIntegral &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:120
PointIntegral()
Default constructor (empty)
Definition: integral.h:92
void operator=(const PointIntegral &)=delete
Broken assignment operator.
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:671
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:659
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:665
TGauss()
Default constructor (empty)
Definition: integral.h:650
void operator=(const TGauss &)=delete
Broken assignment operator.
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:711
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:717
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:696
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:705
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:758
TGauss()
Default constructor (empty)
Definition: integral.h:743
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
void operator=(const TGauss &)=delete
Broken assignment operator.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:752
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:764
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:803
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:797
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:782
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:791
TGauss()
Default constructor (empty)
Definition: integral.h:967
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:988
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:976
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
void operator=(const TGauss &)=delete
Broken assignment operator.
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:982
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1075
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1069
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:1060
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1081
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:845
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:851
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:839
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:830
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:885
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:891
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:897
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
TGauss()
Default constructor (empty)
Definition: integral.h:876
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:944
TGauss()
Default constructor (empty)
Definition: integral.h:923
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:932
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:938
void operator=(const TGauss &)=delete
Broken assignment operator.
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1119
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1113
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1125
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:1104
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1027
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1021
TGauss()
Default constructor (empty)
Definition: integral.h:1012
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1033
void operator=(const TGauss &)=delete
Broken assignment operator.
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:1150
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1171
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1165
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1159
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1219
void operator=(const TGauss &)=delete
Broken assignment operator.
TGauss()
Default constructor (empty)
Definition: integral.h:1198
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1207
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1213
void operator=(const TGauss &)=delete
Broken assignment operator.
unsigned nweight() const
Number of integration points of the scheme.
Definition: integral.h:1255
double knot(const unsigned &i, const unsigned &j) const
Return coordinate x[j] of integration point i.
Definition: integral.h:1261
TGauss(const TGauss &dummy)=delete
Broken copy constructor.
double weight(const unsigned &i) const
Return weight of integration point i.
Definition: integral.h:1267
TGauss()
Default constructor (empty)
Definition: integral.h:1246
Definition: integral.h:626
RealScalar s
Definition: level1_cplx_impl.h:130
char char char int int * k
Definition: level2_impl.h:374
#define DIM
Definition: linearised_navier_stokes_elements.h:44
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
double Weight
NOTE: WE IMPOSE EITHER THESE ...
Definition: heated_linear_solid_contact_with_gravity.cc:2838
std::string lower(std::string s)
returns the input string after converting upper-case characters to lower case
Definition: StringHelpers.cc:11
void gl_nodes(const unsigned &Nnode, Vector< double > &x)
Definition: orthpoly.cc:105
void gll_nodes(const unsigned &Nnode, Vector< double > &x)
Calculates the Gauss Lobatto Legendre abscissas for degree p = NNode-1.
Definition: orthpoly.cc:33
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2