diff --git a/FunctionSpace/TriLagrangeReferenceSpace.cpp b/FunctionSpace/TriLagrangeReferenceSpace.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ede923049f4adc316109471299c263bf8d2741e2 --- /dev/null +++ b/FunctionSpace/TriLagrangeReferenceSpace.cpp @@ -0,0 +1,58 @@ +#include "TriLagrangeReferenceSpace.h" +#include "MTriangle.h" + +using namespace std; + +TriLagrangeReferenceSpace::TriLagrangeReferenceSpace(unsigned int order){ + // Vertex Definition // + nVertex = 3; + + // Edge Definition // + nEdge = 3; + refEdge = new unsigned int*[nEdge]; + + for(unsigned int i = 0; i < nEdge; i++){ + refEdge[i] = new unsigned int[2]; + refEdge[i][0] = MTriangle::edges_tri(i, 0); + refEdge[i][1] = MTriangle::edges_tri(i, 1); + } + + // Face Definition // + nFace = 1; + refFace = new unsigned int*[nFace]; + refFace[0] = new unsigned int[3]; + + refFace[0][0] = 0; + refFace[0][1] = 1; + refFace[0][2] = 2; + + // Init ReferenceSpace (Tri Face) // + init(0); + + // Get Lagrange Node // + nNodePerEdge = 3 * (order - 1) / nEdge; + nNodePerFace = (order - 1) * (order - 2) / 2 / nFace; + nNodePerCell = 0; + + nNode = + nVertex + + nNodePerEdge * nEdge + + nNodePerFace * nFace + + nNodePerCell; + + getLagrangeNode(); +} + +TriLagrangeReferenceSpace::~TriLagrangeReferenceSpace(void){ + // Delete Ref Edge // + for(unsigned int i = 0; i < nEdge; i++) + delete[] refEdge[i]; + + delete[] refEdge; + + // Delete Ref Face // + for(unsigned int i = 0; i < nFace; i++) + delete[] refFace[i]; + + delete[] refFace; +} diff --git a/FunctionSpace/TriLagrangeReferenceSpace.h b/FunctionSpace/TriLagrangeReferenceSpace.h new file mode 100644 index 0000000000000000000000000000000000000000..bdd26b5cd3c887ad506839a9122bbde3b44d8bf0 --- /dev/null +++ b/FunctionSpace/TriLagrangeReferenceSpace.h @@ -0,0 +1,32 @@ +#ifndef _TRILAGRANGEREFERENCESPACE_H_ +#define _TRILAGRANGEREFERENCESPACE_H_ + +#include "ReferenceSpaceLagrange.h" + +/** + @class TriLagrangeReferenceSpace + @brief ReferenceSpaceLagrange for a Triangle + + This class implements a ReferenceSpaceLagrange + for a Triangle. + */ + +class TriLagrangeReferenceSpace: public ReferenceSpaceLagrange{ + public: + TriLagrangeReferenceSpace(unsigned int order); + virtual ~TriLagrangeReferenceSpace(void); +}; + +/** + @fn TriLagrangeReferenceSpace::TriLagrangeReferenceSpace + @param order A natural number + + Instatiate a new ReferenceLagrangeSpace for a Triangle + of the given order + ** + + @fn TriReferenceLagrangeSpace::~TriReferenceLagrangeSpace + Deletes this TriReferenceSpace +*/ + +#endif