[cig-commits] r13192 - cs/cigma/trunk/src
luis at geodynamics.org
luis at geodynamics.org
Wed Oct 29 15:12:25 PDT 2008
Author: luis
Date: 2008-10-29 15:12:23 -0700 (Wed, 29 Oct 2008)
New Revision: 13192
Modified:
cs/cigma/trunk/src/Cell.h
cs/cigma/trunk/src/Quadrature.cpp
cs/cigma/trunk/src/Quadrature.h
cs/cigma/trunk/src/fe_hex8.cpp
cs/cigma/trunk/src/fe_hex8.h
cs/cigma/trunk/src/fe_quad4.cpp
cs/cigma/trunk/src/fe_quad4.h
cs/cigma/trunk/src/fe_tet4.cpp
cs/cigma/trunk/src/fe_tet4.h
cs/cigma/trunk/src/fe_tri3.cpp
cs/cigma/trunk/src/fe_tri3.h
cs/cigma/trunk/src/py_Cell.cpp
cs/cigma/trunk/src/py_Cell.h
cs/cigma/trunk/src/py_Quadrature.cpp
Log:
Consolidate default integration rules.
Instead of being scattered throughout the fe_*.cpp files,
now we only need to modify Quadrature::default_rule().
Modified: cs/cigma/trunk/src/Cell.h
===================================================================
--- cs/cigma/trunk/src/Cell.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/Cell.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -1,8 +1,8 @@
#ifndef __CIGMA_CELL_H__
#define __CIGMA_CELL_H__
+//#include "Quadrature.h"
#include <boost/shared_ptr.hpp>
-#include "Quadrature.h"
namespace cigma
{
@@ -49,7 +49,7 @@
static boost::shared_ptr<Cell> New(Cell::type cellType);
static boost::shared_ptr<Cell> New(const char *name);
- virtual boost::shared_ptr<Quadrature> default_quadrature() = 0; // XXX: move this out of Cell.h
+ //virtual boost::shared_ptr<Quadrature> default_quadrature() = 0; // XXX: move this out of Cell.h
virtual double volume() = 0;
Modified: cs/cigma/trunk/src/Quadrature.cpp
===================================================================
--- cs/cigma/trunk/src/Quadrature.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/Quadrature.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -1,20 +1,150 @@
#include <iostream>
#include <cassert>
#include "Quadrature.h"
-
using namespace cigma;
+using boost::shared_ptr;
// ----------------------------------------------------------------------------
+shared_ptr<Quadrature> Quadrature::default_rule(Cell::type cell_type)
+{
+ shared_ptr<Quadrature> Q;
+ if (cell_type == Cell::TET4)
+ {
+ // tet4_qr(3)
+ const int nno = 8;
+ const int celldim = 3;
+ double qpts[nno * celldim] = {
+ -0.68663473, -0.72789005, -0.75497035,
+ -0.83720867, -0.85864055, 0.08830369,
+ -0.86832263, 0.13186633, -0.75497035,
+ -0.93159441, -0.4120024 , 0.08830369,
+ 0.16949513, -0.72789005, -0.75497035,
+ -0.39245447, -0.85864055, 0.08830369,
+ -0.50857335, 0.13186633, -0.75497035,
+ -0.74470688, -0.4120024 , 0.08830369
+ };
+ double qwts[nno] = {
+ 0.29583885, 0.12821632, 0.16925605, 0.07335544, 0.29583885,
+ 0.12821632, 0.16925605, 0.07335544
+ };
+
+ for (int i = 0; i < nno; i++)
+ {
+ for (int j = 0; j < celldim; j++)
+ {
+ int n = celldim * i + j;
+ qpts[n] += 1;
+ qpts[n] *= 0.5;
+ }
+ // don't forget to adjust the integration weights
+ // to account for the reference domain transformation!
+ qwts[i] *= 0.125;
+ }
+
+ Q.reset(new Quadrature(nno, celldim));
+ Q->setData(qpts, qwts);
+ Q->setCellType(Cell::TET4);
+ return Q;
+ }
+ else if (cell_type == Cell::HEX8)
+ {
+ // hex8_qr(3)
+ const int nno = 8;
+ const int celldim = 3;
+ double qpts[nno * celldim] = {
+ -0.57735027, -0.57735027, -0.57735027,
+ 0.57735027, -0.57735027, -0.57735027,
+ 0.57735027, 0.57735027, -0.57735027,
+ -0.57735027, 0.57735027, -0.57735027,
+ -0.57735027, -0.57735027, 0.57735027,
+ 0.57735027, -0.57735027, 0.57735027,
+ 0.57735027, 0.57735027, 0.57735027,
+ -0.57735027, 0.57735027, 0.57735027
+ };
+ double qwts[nno] = { 1., 1., 1., 1., 1., 1., 1., 1. };
+
+ Q.reset(new Quadrature(nno, celldim));
+ Q->setData(qpts, qwts);
+ Q->setCellType(Cell::HEX8);
+ return Q;
+ }
+ else if (cell_type == Cell::QUAD4)
+ {
+ // quad4_qr(3)
+ const int nno = 4;
+ const int celldim = 2;
+ double qpts[nno*celldim] = {
+ -0.57735027, -0.57735027,
+ 0.57735027, -0.57735027,
+ 0.57735027, 0.57735027,
+ -0.57735027, 0.57735027
+ };
+ double qwts[nno] = {
+ 1., 1., 1., 1.
+ };
+
+ Q.reset(new Quadrature(nno, celldim));
+ Q->setData(qpts, qwts);
+ Q->setCellType(Cell::QUAD4);
+ return Q;
+ }
+ else if (cell_type == Cell::TRI3)
+ {
+ /*
+ // tri3_qr(5)
+ const int nno = 9;
+ const int celldim = 2;
+ double qpts[nno*celldim] = {
+ -0.79456469, -0.82282408,
+ -0.86689186, -0.18106627,
+ -0.95213774, 0.57531892,
+ -0.08858796, -0.82282408,
+ -0.40946686, -0.18106627,
+ -0.78765946, 0.57531892,
+ 0.61738877, -0.82282408,
+ 0.04795814, -0.18106627,
+ -0.62318119, 0.57531892
+ };
+ double qwts[nno] = {
+ 0.22325768, 0.25471234, 0.07758553, 0.35721229, 0.40753974,
+ 0.12413685, 0.22325768, 0.25471234, 0.07758553
+ }; // */
+
+ // tri_qr(3)
+ const int nno = 4;
+ const int celldim = 2;
+ double qpts[nno*celldim] = {
+ -0.64288254, -0.68989795,
+ -0.84993778, 0.28989795,
+ 0.33278049, -0.68989795,
+ -0.43996017, 0.28989795
+ };
+ double qwts[nno] = {
+ 0.63608276, 0.36391724, 0.63608276, 0.36391724
+ };
+
+ Q.reset(new Quadrature(nno, celldim));
+ Q->setData(qpts, qwts);
+ Q->setCellType(Cell::TRI3);
+ return Q;
+ }
+
+ return Q;
+}
+
+// ----------------------------------------------------------------------------
+
Quadrature::Quadrature()
{
npts = 0;
ndim = 0;
points = 0;
weights = 0;
+ cell_type = Cell::NONE;
}
-Quadrature::Quadrature(int npts, int ndim)
+Quadrature::Quadrature(int npts, int ndim) : cell_type(Cell::NONE)
{
this->npts = npts;
this->ndim = ndim;
@@ -30,6 +160,11 @@
}
}
+/*
+Quadrature::Quadrature(const Quadrature& other)
+{
+} // */
+
Quadrature::~Quadrature()
{
//std::cout << "Calling ~Quadrature()" << std::endl;
Modified: cs/cigma/trunk/src/Quadrature.h
===================================================================
--- cs/cigma/trunk/src/Quadrature.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/Quadrature.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -1,44 +1,69 @@
#ifndef __CIGMA_QUADRATURE_H__
#define __CIGMA_QUADRATURE_H__
+#include "Cell.h"
#include <boost/noncopyable.hpp>
+#include <boost/shared_ptr.hpp>
namespace cigma
{
class Quadrature;
}
+/**
+ * XXX: implement copy constructor and assignment operator
+ */
class cigma::Quadrature : private boost::noncopyable
{
public:
Quadrature();
Quadrature(int npts, int ndim);
+ //Quadrature(const Quadrature& other);
~Quadrature();
int n_points() const;
int n_dim() const;
+ Cell::type getCellType() const;
double getPoint(int q, int j) const;
double getWeight(int q) const;
+ void setCellType(Cell::type cell_type);
void setPoint(int q, int j, double val);
void setWeight(int q, double val);
void reinit(int npts, int ndim);
void setData(double *points, double *weights);
+ static boost::shared_ptr<Quadrature> default_rule(Cell::type cell_type);
+
public:
+ Cell::type cell_type;
int npts;
int ndim;
- double *points;
+ double *points; // XXX: use valarray?
double *weights;
};
inline int cigma::Quadrature::n_points() const { return npts; }
inline int cigma::Quadrature::n_dim() const { return ndim; }
+inline cigma::Cell::type cigma::Quadrature::getCellType() const { return cell_type; }
inline double cigma::Quadrature::getPoint(int q, int j) const { return points[q*ndim + j]; }
inline double cigma::Quadrature::getWeight(int q) const { return weights[q]; }
-inline void cigma::Quadrature::setPoint(int q, int j, double val) { points[q*ndim + j] = val; }
-inline void cigma::Quadrature::setWeight(int q, double val) { weights[q] = val; }
+inline void cigma::Quadrature::setPoint(int q, int j, double val)
+{
+ points[q*ndim + j] = val;
+}
+
+inline void cigma::Quadrature::setWeight(int q, double val)
+{
+ weights[q] = val;
+}
+
+inline void cigma::Quadrature::setCellType(cigma::Cell::type cell_type)
+{
+ this->cell_type = cell_type;
+}
+
#endif
Modified: cs/cigma/trunk/src/fe_hex8.cpp
===================================================================
--- cs/cigma/trunk/src/fe_hex8.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_hex8.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -86,6 +86,7 @@
}
+/*
boost::shared_ptr<Quadrature> hex8::default_quadrature()
{
// hex8_qr(3)
@@ -106,7 +107,7 @@
boost::shared_ptr<Quadrature> Q(new Quadrature(nno, celldim));
Q->setData(qpts, qwts);
return Q;
-}
+} */
/*
void hex8::qr_default(double **wts, double **pts, int *npts, int *ndim)
Modified: cs/cigma/trunk/src/fe_hex8.h
===================================================================
--- cs/cigma/trunk/src/fe_hex8.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_hex8.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -19,7 +19,7 @@
int n_celldim() const { return 3; }
Cell::type cell_type() const { return HEX8; }
- boost::shared_ptr<Quadrature> default_quadrature();
+ //boost::shared_ptr<Quadrature> default_quadrature();
void shape(int num, double *points, double *values);
void grad_shape(int num, double *points, double *values);
Modified: cs/cigma/trunk/src/fe_quad4.cpp
===================================================================
--- cs/cigma/trunk/src/fe_quad4.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_quad4.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -54,56 +54,61 @@
{
}
+/*
boost::shared_ptr<Quadrature> quad4::default_quadrature()
{
- // quad4_qr(7)
- /*
- const int nno = 16;
- const int celldim = 2;
- double qpts[nno*celldim] = {
- -0.86113631, -0.86113631,
- -0.33998104, -0.86113631,
- 0.33998104, -0.86113631,
- 0.86113631, -0.86113631,
- 0.86113631, -0.33998104,
- 0.86113631, 0.33998104,
- 0.86113631, 0.86113631,
- 0.33998104, 0.86113631,
- -0.33998104, 0.86113631,
- -0.86113631, 0.86113631,
- -0.86113631, 0.33998104,
- -0.86113631, -0.33998104,
- -0.33998104, -0.33998104,
- 0.33998104, -0.33998104,
- -0.33998104, 0.33998104,
- 0.33998104, 0.33998104
- };
- double qwts[nno] = {
- 0.12100299, 0.22685185, 0.22685185, 0.12100299, 0.22685185,
- 0.22685185, 0.12100299, 0.22685185, 0.22685185, 0.12100299,
- 0.22685185, 0.22685185, 0.4252933 , 0.4252933 , 0.4252933 ,
- 0.4252933
- }; */
+ if (false)
+ {
+ // quad4_qr(7)
+ const int nno = 16;
+ const int celldim = 2;
+ double qpts[nno*celldim] = {
+ -0.86113631, -0.86113631,
+ -0.33998104, -0.86113631,
+ 0.33998104, -0.86113631,
+ 0.86113631, -0.86113631,
+ 0.86113631, -0.33998104,
+ 0.86113631, 0.33998104,
+ 0.86113631, 0.86113631,
+ 0.33998104, 0.86113631,
+ -0.33998104, 0.86113631,
+ -0.86113631, 0.86113631,
+ -0.86113631, 0.33998104,
+ -0.86113631, -0.33998104,
+ -0.33998104, -0.33998104,
+ 0.33998104, -0.33998104,
+ -0.33998104, 0.33998104,
+ 0.33998104, 0.33998104
+ };
+ double qwts[nno] = {
+ 0.12100299, 0.22685185, 0.22685185, 0.12100299, 0.22685185,
+ 0.22685185, 0.12100299, 0.22685185, 0.22685185, 0.12100299,
+ 0.22685185, 0.22685185, 0.4252933 , 0.4252933 , 0.4252933 ,
+ 0.4252933
+ };
+ }
- // quad4_qr(5)
- /*
- const int nno = 9;
- const int celldim = 2;
- double qpts[nno*celldim] = {
- -7.74596669e-01, -7.74596669e-01,
- -2.46519033e-31, -7.74596669e-01,
- 7.74596669e-01, -7.74596669e-01,
- 7.74596669e-01, -2.46519033e-31,
- 7.74596669e-01, 7.74596669e-01,
- -2.46519033e-31, 7.74596669e-01,
- -7.74596669e-01, 7.74596669e-01,
- -7.74596669e-01, -2.46519033e-31,
- -2.46519033e-31, -2.46519033e-31
- };
- double qwts[nno] = {
- 0.30864198, 0.49382716, 0.30864198, 0.49382716, 0.30864198,
- 0.49382716, 0.30864198, 0.49382716, 0.79012346
- }; */
+ if (false)
+ {
+ // quad4_qr(5)
+ const int nno = 9;
+ const int celldim = 2;
+ double qpts[nno*celldim] = {
+ -7.74596669e-01, -7.74596669e-01,
+ -2.46519033e-31, -7.74596669e-01,
+ 7.74596669e-01, -7.74596669e-01,
+ 7.74596669e-01, -2.46519033e-31,
+ 7.74596669e-01, 7.74596669e-01,
+ -2.46519033e-31, 7.74596669e-01,
+ -7.74596669e-01, 7.74596669e-01,
+ -7.74596669e-01, -2.46519033e-31,
+ -2.46519033e-31, -2.46519033e-31
+ };
+ double qwts[nno] = {
+ 0.30864198, 0.49382716, 0.30864198, 0.49382716, 0.30864198,
+ 0.49382716, 0.30864198, 0.49382716, 0.79012346
+ };
+ }
// quad4_qr(3)
@@ -122,7 +127,7 @@
boost::shared_ptr<Quadrature> Q(new Quadrature(nno, celldim));
Q->setData(qpts, qwts);
return Q;
-}
+} */
// ---------------------------------------------------------------------------
Modified: cs/cigma/trunk/src/fe_quad4.h
===================================================================
--- cs/cigma/trunk/src/fe_quad4.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_quad4.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -19,7 +19,7 @@
int n_celldim() const { return 2; }
Cell::type cell_type() const { return QUAD4; }
- boost::shared_ptr<Quadrature> default_quadrature();
+ //boost::shared_ptr<Quadrature> default_quadrature();
void shape(int num, double *points, double *values);
void grad_shape(int num, double *points, double *values);
Modified: cs/cigma/trunk/src/fe_tet4.cpp
===================================================================
--- cs/cigma/trunk/src/fe_tet4.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_tet4.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -61,6 +61,7 @@
{
}
+/*
boost::shared_ptr<Quadrature> tet4::default_quadrature()
{
// tet4_qr(3)
@@ -97,7 +98,7 @@
boost::shared_ptr<Quadrature> Q(new Quadrature(nno, celldim));
Q->setData(qpts, qwts);
return Q;
-}
+} */
/*
void tet4::qr_default(double **wts, double **pts, int *npts, int *ndim)
Modified: cs/cigma/trunk/src/fe_tet4.h
===================================================================
--- cs/cigma/trunk/src/fe_tet4.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_tet4.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -19,7 +19,7 @@
int n_celldim() const { return 3; }
Cell::type cell_type() const { return TET4; }
- boost::shared_ptr<Quadrature> default_quadrature();
+ //boost::shared_ptr<Quadrature> default_quadrature();
void shape(int num, double *points, double *values);
void grad_shape(int num, double *points, double *values);
Modified: cs/cigma/trunk/src/fe_tri3.cpp
===================================================================
--- cs/cigma/trunk/src/fe_tri3.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_tri3.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -49,6 +49,7 @@
{
}
+/*
boost::shared_ptr<Quadrature> tri3::default_quadrature()
{
// tri3_qr(5)
@@ -73,7 +74,7 @@
boost::shared_ptr<Quadrature> Q(new Quadrature(nno, celldim));
Q->setData(qpts, qwts);
return Q;
-}
+} */
/*
void tri3::qr_default(double **wts, double **pts, int *npts, int *ndim)
Modified: cs/cigma/trunk/src/fe_tri3.h
===================================================================
--- cs/cigma/trunk/src/fe_tri3.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/fe_tri3.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -19,7 +19,7 @@
int n_celldim() const { return 2; }
Cell::type cell_type() const { return TRI3; }
- boost::shared_ptr<Quadrature> default_quadrature();
+ //boost::shared_ptr<Quadrature> default_quadrature();
void shape(int num, double *points, double *values);
void grad_shape(int num, double *points, double *values);
Modified: cs/cigma/trunk/src/py_Cell.cpp
===================================================================
--- cs/cigma/trunk/src/py_Cell.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/py_Cell.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -1,5 +1,5 @@
#include "py_Cell.h"
-#include "py_Quadrature.h"
+//#include "py_Quadrature.h"
#include <iostream>
using namespace cigma;
using namespace boost::python;
@@ -15,6 +15,7 @@
{
}
+/*
shared_ptr<pyQuadrature> py_hex8::default_rule()
{
shared_ptr<Quadrature> Q;
@@ -24,7 +25,7 @@
Q.reset();
return pyQ;
-}
+} // */
// ----------------------------------------------------------------------------
@@ -36,6 +37,7 @@
{
}
+/*
shared_ptr<pyQuadrature> py_tet4::default_rule()
{
shared_ptr<Quadrature> Q;
@@ -45,7 +47,7 @@
Q.reset();
return pyQ;
-}
+} // */
// ----------------------------------------------------------------------------
@@ -57,6 +59,7 @@
{
}
+/*
shared_ptr<pyQuadrature> py_quad4::default_rule()
{
shared_ptr<Quadrature> Q;
@@ -66,7 +69,7 @@
Q.reset();
return pyQ;
-}
+} // */
// ----------------------------------------------------------------------------
@@ -78,6 +81,7 @@
{
}
+/*
shared_ptr<pyQuadrature> py_tri3::default_rule()
{
shared_ptr<Quadrature> Q;
@@ -87,7 +91,7 @@
Q.reset();
return pyQ;
-}
+} // */
// ----------------------------------------------------------------------------
@@ -95,32 +99,33 @@
{
using namespace boost::python;
+ // XXX: export Cell::type enum
class_<py_hex8, boost::noncopyable>("hex8")
.def("n_nodes", &py_hex8::n_nodes)
.def("n_celldim", &py_hex8::n_celldim)
//.def("n_dim", &py_hex8::n_dim)
- .def("default_rule", &py_hex8::default_rule)
+ //.def("default_rule", &py_hex8::default_rule)
;
class_<py_tet4, boost::noncopyable>("tet4")
.def("n_nodes", &py_tet4::n_nodes)
.def("n_celldim", &py_tet4::n_celldim)
//.def("n_dim", &py_tet4::n_dim)
- .def("default_rule", &py_tet4::default_rule)
+ //.def("default_rule", &py_tet4::default_rule)
;
class_<py_quad4, boost::noncopyable>("quad4")
.def("n_nodes", &py_quad4::n_nodes)
.def("n_celldim", &py_quad4::n_celldim)
//.def("n_dim", &py_quad4::n_dim)
- .def("default_rule", &py_quad4::default_rule)
+ //.def("default_rule", &py_quad4::default_rule)
;
class_<py_tri3, boost::noncopyable>("tri3")
.def("n_nodes", &py_tri3::n_nodes)
.def("n_celldim", &py_tri3::n_celldim)
//.def("n_dim", &py_tri3::n_dim)
- .def("default_rule", &py_tri3::default_rule)
+ //.def("default_rule", &py_tri3::default_rule)
;
//register_ptr_to_python< shared_ptr<py_hex8> >();
Modified: cs/cigma/trunk/src/py_Cell.h
===================================================================
--- cs/cigma/trunk/src/py_Cell.h 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/py_Cell.h 2008-10-29 22:12:23 UTC (rev 13192)
@@ -8,14 +8,14 @@
#include "fe_tri3.h"
#include "numpy_util.h"
-#include "py_Quadrature.h"
+//#include "py_Quadrature.h"
struct py_hex8 : cigma::hex8
{
py_hex8();
~py_hex8();
- boost::shared_ptr<pyQuadrature> default_rule();
+ //boost::shared_ptr<pyQuadrature> default_rule();
public:
boost::python::numeric::array gv;
@@ -25,21 +25,21 @@
{
py_tet4();
~py_tet4();
- boost::shared_ptr<pyQuadrature> default_rule();
+ //boost::shared_ptr<pyQuadrature> default_rule();
};
struct py_quad4 : cigma::quad4
{
py_quad4();
~py_quad4();
- boost::shared_ptr<pyQuadrature> default_rule();
+ //boost::shared_ptr<pyQuadrature> default_rule();
};
struct py_tri3 : cigma::tri3
{
py_tri3();
~py_tri3();
- boost::shared_ptr<pyQuadrature> default_rule();
+ //boost::shared_ptr<pyQuadrature> default_rule();
};
Modified: cs/cigma/trunk/src/py_Quadrature.cpp
===================================================================
--- cs/cigma/trunk/src/py_Quadrature.cpp 2008-10-29 22:12:21 UTC (rev 13191)
+++ cs/cigma/trunk/src/py_Quadrature.cpp 2008-10-29 22:12:23 UTC (rev 13192)
@@ -148,6 +148,9 @@
using namespace boost::python;
typedef pyQuadrature pq;
+
+ //def("default_rule", &pq::default_rule);
+
class_<pyQuadrature, boost::noncopyable>("Quadrature", init<int,int>())
.def("n_points", &pq::n_points)
More information about the CIG-COMMITS
mailing list