Skip to content
Snippets Groups Projects
Commit 9bcaf261 authored by Tuomas Karna's avatar Tuomas Karna
Browse files

python interface: all std::vector<> in element constructors are declared as...

python interface: all std::vector<> in element constructors are declared as const, allows easy python binding
parent dbd5a700
Branches
Tags
No related merge requests found
...@@ -59,12 +59,16 @@ namespace std { ...@@ -59,12 +59,16 @@ namespace std {
%template(IntVector) vector<int>; %template(IntVector) vector<int>;
%template(DoubleVector) vector<double, std::allocator<double> >; %template(DoubleVector) vector<double, std::allocator<double> >;
%template(StringVector) vector<std::string, std::allocator<std::string> >; %template(StringVector) vector<std::string, std::allocator<std::string> >;
%template(GEntityVector) vector<GEntity*, std::allocator<GEntity*> >;
%template(GVertexVector) vector<GVertex*, std::allocator<GVertex*> >; %template(GVertexVector) vector<GVertex*, std::allocator<GVertex*> >;
%template(GEdgeVector) vector<GEdge*, std::allocator<GEdge*> >; %template(GEdgeVector) vector<GEdge*, std::allocator<GEdge*> >;
%template(GFaceVector) vector<GFace*, std::allocator<GFace*> >; %template(GFaceVector) vector<GFace*, std::allocator<GFace*> >;
%template(GRegionVector) vector<GRegion*, std::allocator<GRegion*> >; %template(GRegionVector) vector<GRegion*, std::allocator<GRegion*> >;
%template(MVertexVector) vector< MVertex *,std::allocator< MVertex * > >;
%template(MElementVector) vector< MElement *,std::allocator< MElement * > >;
%template(VectorFunctionConst) vector<const function*, std::allocator<const function*> >; %template(VectorFunctionConst) vector<const function*, std::allocator<const function*> >;
%template(GEdgeVectorVector) vector< std::vector< GEdge *,std::allocator< GEdge * > >,std::allocator< std::vector< GEdge *,std::allocator< GEdge * > > > >; %template(GEdgeVectorVector) vector< std::vector< GEdge *,std::allocator< GEdge * > >,std::allocator< std::vector< GEdge *,std::allocator< GEdge * > > > >;
%template(GFaceList) list<GFace*, std::allocator<GFace*> >;
} }
%include "fullMatrix.h" %include "fullMatrix.h"
......
...@@ -22,7 +22,7 @@ class MFace { ...@@ -22,7 +22,7 @@ class MFace {
public: public:
MFace() {} MFace() {}
MFace(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3=0); MFace(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3=0);
MFace(std::vector<MVertex*> v); MFace(const std::vector<MVertex*> v);
inline int getNumVertices() const { return _v.size(); } inline int getNumVertices() const { return _v.size(); }
inline MVertex *getVertex(const int i) const { return _v[i]; } inline MVertex *getVertex(const int i) const { return _v[i]; }
inline MVertex *getSortedVertex(const int i) const { return _v[int(_si[i])]; } inline MVertex *getSortedVertex(const int i) const { return _v[int(_si[i])]; }
......
...@@ -48,7 +48,7 @@ class MHexahedron : public MElement { ...@@ -48,7 +48,7 @@ class MHexahedron : public MElement {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3;
_v[4] = v4; _v[5] = v5; _v[6] = v6; _v[7] = v7; _v[4] = v4; _v[5] = v5; _v[6] = v6; _v[7] = v7;
} }
MHexahedron(std::vector<MVertex*> &v, int num=0, int part=0) MHexahedron(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 8; i++) _v[i] = v[i]; for(int i = 0; i < 8; i++) _v[i] = v[i];
...@@ -239,7 +239,7 @@ class MHexahedron20 : public MHexahedron { ...@@ -239,7 +239,7 @@ class MHexahedron20 : public MHexahedron {
_vs[10] = v18; _vs[11] = v19; _vs[10] = v18; _vs[11] = v19;
for(int i = 0; i < 12; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 12; i++) _vs[i]->setPolynomialOrder(2);
} }
MHexahedron20(std::vector<MVertex*> &v, int num=0, int part=0) MHexahedron20(const std::vector<MVertex*> &v, int num=0, int part=0)
: MHexahedron(v, num, part) : MHexahedron(v, num, part)
{ {
for(int i = 0; i < 12; i++) _vs[i] = v[8 + i]; for(int i = 0; i < 12; i++) _vs[i] = v[8 + i];
...@@ -385,7 +385,7 @@ class MHexahedron27 : public MHexahedron { ...@@ -385,7 +385,7 @@ class MHexahedron27 : public MHexahedron {
_vs[15] = v23; _vs[16] = v24; _vs[17] = v25; _vs[18] = v26; _vs[15] = v23; _vs[16] = v24; _vs[17] = v25; _vs[18] = v26;
for(int i = 0; i < 19; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 19; i++) _vs[i]->setPolynomialOrder(2);
} }
MHexahedron27(std::vector<MVertex*> &v, int num=0, int part=0) MHexahedron27(const std::vector<MVertex*> &v, int num=0, int part=0)
: MHexahedron(v, num, part) : MHexahedron(v, num, part)
{ {
for(int i = 0; i < 19; i++) _vs[i] = v[8 + i]; for(int i = 0; i < 19; i++) _vs[i] = v[8 + i];
......
...@@ -28,7 +28,7 @@ class MLine : public MElement { ...@@ -28,7 +28,7 @@ class MLine : public MElement {
{ {
_v[0] = v0; _v[1] = v1; _v[0] = v0; _v[1] = v1;
} }
MLine(std::vector<MVertex*> &v, int num=0, int part=0) MLine(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 2; i++) _v[i] = v[i]; for(int i = 0; i < 2; i++) _v[i] = v[i];
...@@ -98,7 +98,7 @@ class MLine3 : public MLine { ...@@ -98,7 +98,7 @@ class MLine3 : public MLine {
_vs[0] = v2; _vs[0] = v2;
_vs[0]->setPolynomialOrder(2); _vs[0]->setPolynomialOrder(2);
} }
MLine3(std::vector<MVertex*> &v, int num=0, int part=0) MLine3(const std::vector<MVertex*> &v, int num=0, int part=0)
: MLine(v, num, part) : MLine(v, num, part)
{ {
_vs[0] = v[2]; _vs[0] = v[2];
......
...@@ -21,7 +21,7 @@ class MPoint : public MElement { ...@@ -21,7 +21,7 @@ class MPoint : public MElement {
{ {
_v[0] = v0; _v[0] = v0;
} }
MPoint(std::vector<MVertex*> &v, int num=0, int part=0) MPoint(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
_v[0] = v[0]; _v[0] = v[0];
......
...@@ -55,7 +55,7 @@ class MPrism : public MElement { ...@@ -55,7 +55,7 @@ class MPrism : public MElement {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3;
_v[4] = v4; _v[5] = v5; _v[4] = v4; _v[5] = v5;
} }
MPrism(std::vector<MVertex*> &v, int num=0, int part=0) MPrism(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 6; i++) _v[i] = v[i]; for(int i = 0; i < 6; i++) _v[i] = v[i];
...@@ -239,7 +239,7 @@ class MPrism15 : public MPrism { ...@@ -239,7 +239,7 @@ class MPrism15 : public MPrism {
_vs[5] = v11; _vs[6] = v12; _vs[7] = v13; _vs[8] = v14; _vs[5] = v11; _vs[6] = v12; _vs[7] = v13; _vs[8] = v14;
for(int i = 0; i < 9; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 9; i++) _vs[i]->setPolynomialOrder(2);
} }
MPrism15(std::vector<MVertex*> &v, int num=0, int part=0) MPrism15(const std::vector<MVertex*> &v, int num=0, int part=0)
: MPrism(v, num, part) : MPrism(v, num, part)
{ {
for(int i = 0; i < 9; i++) _vs[i] = v[6 + i]; for(int i = 0; i < 9; i++) _vs[i] = v[6 + i];
...@@ -367,7 +367,7 @@ class MPrism18 : public MPrism { ...@@ -367,7 +367,7 @@ class MPrism18 : public MPrism {
_vs[10] = v16; _vs[11] = v17; _vs[10] = v16; _vs[11] = v17;
for(int i = 0; i < 12; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 12; i++) _vs[i]->setPolynomialOrder(2);
} }
MPrism18(std::vector<MVertex*> &v, int num=0, int part=0) MPrism18(const std::vector<MVertex*> &v, int num=0, int part=0)
: MPrism(v, num, part) : MPrism(v, num, part)
{ {
for(int i = 0; i < 12; i++) _vs[i] = v[6 + i]; for(int i = 0; i < 12; i++) _vs[i] = v[6 + i];
......
...@@ -58,7 +58,7 @@ class MPyramid : public MElement { ...@@ -58,7 +58,7 @@ class MPyramid : public MElement {
{ {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[4] = v4; _v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[4] = v4;
} }
MPyramid(std::vector<MVertex*> &v, int num=0, int part=0) MPyramid(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 5; i++) _v[i] = v[i]; for(int i = 0; i < 5; i++) _v[i] = v[i];
...@@ -238,7 +238,7 @@ class MPyramid13 : public MPyramid { ...@@ -238,7 +238,7 @@ class MPyramid13 : public MPyramid {
_vs[5] = v10; _vs[6] = v11; _vs[7] = v12; _vs[5] = v10; _vs[6] = v11; _vs[7] = v12;
for(int i = 0; i < 8; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 8; i++) _vs[i]->setPolynomialOrder(2);
} }
MPyramid13(std::vector<MVertex*> &v, int num=0, int part=0) MPyramid13(const std::vector<MVertex*> &v, int num=0, int part=0)
: MPyramid(v, num, part) : MPyramid(v, num, part)
{ {
for(int i = 0; i < 8; i++) _vs[i] = v[5 + i]; for(int i = 0; i < 8; i++) _vs[i] = v[5 + i];
...@@ -355,7 +355,7 @@ class MPyramid14 : public MPyramid { ...@@ -355,7 +355,7 @@ class MPyramid14 : public MPyramid {
_vs[5] = v10; _vs[6] = v11; _vs[7] = v12; _vs[8] = v13; _vs[5] = v10; _vs[6] = v11; _vs[7] = v12; _vs[8] = v13;
for(int i = 0; i < 9; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 9; i++) _vs[i]->setPolynomialOrder(2);
} }
MPyramid14(std::vector<MVertex*> &v, int num=0, int part=0) MPyramid14(const std::vector<MVertex*> &v, int num=0, int part=0)
: MPyramid(v, num, part) : MPyramid(v, num, part)
{ {
for(int i = 0; i < 9; i++) _vs[i] = v[5 + i]; for(int i = 0; i < 9; i++) _vs[i] = v[5 + i];
......
...@@ -45,7 +45,7 @@ class MQuadrangle : public MElement { ...@@ -45,7 +45,7 @@ class MQuadrangle : public MElement {
{ {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3;
} }
MQuadrangle(std::vector<MVertex*> &v, int num=0, int part=0) MQuadrangle(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 4; i++) _v[i] = v[i]; for(int i = 0; i < 4; i++) _v[i] = v[i];
...@@ -180,7 +180,7 @@ class MQuadrangle8 : public MQuadrangle { ...@@ -180,7 +180,7 @@ class MQuadrangle8 : public MQuadrangle {
_vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7;
for(int i = 0; i < 4; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 4; i++) _vs[i]->setPolynomialOrder(2);
} }
MQuadrangle8(std::vector<MVertex*> &v, int num=0, int part=0) MQuadrangle8(const std::vector<MVertex*> &v, int num=0, int part=0)
: MQuadrangle(v, num, part) : MQuadrangle(v, num, part)
{ {
for(int i = 0; i < 4; i++) _vs[i] = v[4 + i]; for(int i = 0; i < 4; i++) _vs[i] = v[4 + i];
...@@ -263,7 +263,7 @@ class MQuadrangle9 : public MQuadrangle { ...@@ -263,7 +263,7 @@ class MQuadrangle9 : public MQuadrangle {
_vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8; _vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8;
for(int i = 0; i < 5; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 5; i++) _vs[i]->setPolynomialOrder(2);
} }
MQuadrangle9(std::vector<MVertex*> &v, int num=0, int part=0) MQuadrangle9(const std::vector<MVertex*> &v, int num=0, int part=0)
: MQuadrangle(v, num, part) : MQuadrangle(v, num, part)
{ {
for(int i = 0; i < 5; i++) _vs[i] = v[4 + i]; for(int i = 0; i < 5; i++) _vs[i] = v[4 + i];
...@@ -334,12 +334,12 @@ class MQuadrangleN : public MQuadrangle { ...@@ -334,12 +334,12 @@ class MQuadrangleN : public MQuadrangle {
const char _order; const char _order;
public: public:
MQuadrangleN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MQuadrangleN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3,
std::vector<MVertex*> &v, char order, int num=0, int part=0) const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MQuadrangle(v0, v1, v2, v3, num, part), _vs(v), _order(order) : MQuadrangle(v0, v1, v2, v3, num, part), _vs(v), _order(order)
{ {
for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order); for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order);
} }
MQuadrangleN(std::vector<MVertex*> &v, char order, int num=0, int part=0) MQuadrangleN(const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MQuadrangle(v[0], v[1], v[2], v[3], num, part), _order(order) : MQuadrangle(v[0], v[1], v[2], v[3], num, part), _order(order)
{ {
for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]); for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]);
......
...@@ -51,7 +51,7 @@ class MTetrahedron : public MElement { ...@@ -51,7 +51,7 @@ class MTetrahedron : public MElement {
{ {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3; _v[0] = v0; _v[1] = v1; _v[2] = v2; _v[3] = v3;
} }
MTetrahedron(std::vector<MVertex*> &v, int num=0, int part=0) MTetrahedron(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 4; i++) _v[i] = v[i]; for(int i = 0; i < 4; i++) _v[i] = v[i];
...@@ -198,7 +198,7 @@ class MTetrahedron10 : public MTetrahedron { ...@@ -198,7 +198,7 @@ class MTetrahedron10 : public MTetrahedron {
_vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8; _vs[5] = v9; _vs[0] = v4; _vs[1] = v5; _vs[2] = v6; _vs[3] = v7; _vs[4] = v8; _vs[5] = v9;
for(int i = 0; i < 6; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 6; i++) _vs[i]->setPolynomialOrder(2);
} }
MTetrahedron10(std::vector<MVertex*> &v, int num=0, int part=0) MTetrahedron10(const std::vector<MVertex*> &v, int num=0, int part=0)
: MTetrahedron(v, num, part) : MTetrahedron(v, num, part)
{ {
for(int i = 0; i < 6; i++) _vs[i] = v[4 + i]; for(int i = 0; i < 6; i++) _vs[i] = v[4 + i];
...@@ -314,12 +314,12 @@ class MTetrahedronN : public MTetrahedron { ...@@ -314,12 +314,12 @@ class MTetrahedronN : public MTetrahedron {
double _disto; double _disto;
public: public:
MTetrahedronN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3, MTetrahedronN(MVertex *v0, MVertex *v1, MVertex *v2, MVertex *v3,
std::vector<MVertex*> &v, char order, int num=0, int part=0) const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MTetrahedron(v0, v1, v2, v3, num, part) , _vs (v), _order(order),_disto(-1.e22) : MTetrahedron(v0, v1, v2, v3, num, part) , _vs (v), _order(order),_disto(-1.e22)
{ {
for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order); for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order);
} }
MTetrahedronN(std::vector<MVertex*> &v, char order, int num=0, int part=0) MTetrahedronN(const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MTetrahedron(v[0], v[1], v[2], v[3], num, part) , _order(order),_disto(-1.e22) : MTetrahedron(v[0], v[1], v[2], v[3], num, part) , _order(order),_disto(-1.e22)
{ {
for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]); for(unsigned int i = 4; i < v.size(); i++) _vs.push_back(v[i]);
......
...@@ -43,7 +43,7 @@ class MTriangle : public MElement { ...@@ -43,7 +43,7 @@ class MTriangle : public MElement {
{ {
_v[0] = v0; _v[1] = v1; _v[2] = v2; _v[0] = v0; _v[1] = v1; _v[2] = v2;
} }
MTriangle(std::vector<MVertex*> &v, int num=0, int part=0) MTriangle(const std::vector<MVertex*> &v, int num=0, int part=0)
: MElement(num, part) : MElement(num, part)
{ {
for(int i = 0; i < 3; i++) _v[i] = v[i]; for(int i = 0; i < 3; i++) _v[i] = v[i];
...@@ -174,7 +174,7 @@ class MTriangle6 : public MTriangle { ...@@ -174,7 +174,7 @@ class MTriangle6 : public MTriangle {
_vs[0] = v3; _vs[1] = v4; _vs[2] = v5; _vs[0] = v3; _vs[1] = v4; _vs[2] = v5;
for(int i = 0; i < 3; i++) _vs[i]->setPolynomialOrder(2); for(int i = 0; i < 3; i++) _vs[i]->setPolynomialOrder(2);
} }
MTriangle6(std::vector<MVertex*> &v, int num=0, int part=0) MTriangle6(const std::vector<MVertex*> &v, int num=0, int part=0)
: MTriangle(v, num, part) : MTriangle(v, num, part)
{ {
for(int i = 0; i < 3; i++) _vs[i] = v[3 + i]; for(int i = 0; i < 3; i++) _vs[i] = v[3 + i];
...@@ -250,12 +250,12 @@ class MTriangleN : public MTriangle { ...@@ -250,12 +250,12 @@ class MTriangleN : public MTriangle {
const char _order; const char _order;
public: public:
MTriangleN(MVertex *v0, MVertex *v1, MVertex *v2, MTriangleN(MVertex *v0, MVertex *v1, MVertex *v2,
std::vector<MVertex*> &v, char order, int num=0, int part=0) const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MTriangle(v0, v1, v2, num, part), _vs(v), _order(order) : MTriangle(v0, v1, v2, num, part), _vs(v), _order(order)
{ {
for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order); for(unsigned int i = 0; i < _vs.size(); i++) _vs[i]->setPolynomialOrder(_order);
} }
MTriangleN(std::vector<MVertex*> &v, char order, int num=0, int part=0) MTriangleN(const std::vector<MVertex*> &v, char order, int num=0, int part=0)
: MTriangle(v[0], v[1], v[2], num, part), _order(order) : MTriangle(v[0], v[1], v[2], num, part), _order(order)
{ {
for(unsigned int i = 3; i < v.size(); i++) _vs.push_back(v[i]); for(unsigned int i = 3; i < v.size(); i++) _vs.push_back(v[i]);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment