From 0a8b3631bb323a8c789c03d511f4a30f01fbd7be Mon Sep 17 00:00:00 2001 From: Nicolas Marsic <nicolas.marsic@gmail.com> Date: Wed, 29 May 2013 13:08:52 +0000 Subject: [PATCH] Lagrange Orientation -- Step 1 --- FunctionSpace/TriLagrangeReferenceSpace.cpp | 58 +++++++++++++++++++++ FunctionSpace/TriLagrangeReferenceSpace.h | 32 ++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 FunctionSpace/TriLagrangeReferenceSpace.cpp create mode 100644 FunctionSpace/TriLagrangeReferenceSpace.h diff --git a/FunctionSpace/TriLagrangeReferenceSpace.cpp b/FunctionSpace/TriLagrangeReferenceSpace.cpp new file mode 100644 index 0000000000..ede923049f --- /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 0000000000..bdd26b5cd3 --- /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 -- GitLab