diff --git a/FunctionSpace/TetEdgeBasis.cpp b/FunctionSpace/TetEdgeBasis.cpp index 2b546f000fbda362cb8aa7ff39e98a802066a789..afffb7e2fe982f0b8f3e7fd7ae5a6c468c6d61f5 100644 --- a/FunctionSpace/TetEdgeBasis.cpp +++ b/FunctionSpace/TetEdgeBasis.cpp @@ -86,7 +86,7 @@ TetEdgeBasis::TetEdgeBasis(unsigned int order){ tmp2[1].sub(tmp1[1]); tmp2[2].sub(tmp1[2]); - basis[s][i] = new vector<Polynomial>(tmp1); + basis[s][i] = new vector<Polynomial>(tmp2); } // High Order diff --git a/FunctionSpace/TriEdgeBasis.cpp b/FunctionSpace/TriEdgeBasis.cpp index 73e4f83ab36bd0cbd779efe00259dc596d22221d..3ec8a5993a2937790ec0857a4ede7ca328d55971 100644 --- a/FunctionSpace/TriEdgeBasis.cpp +++ b/FunctionSpace/TriEdgeBasis.cpp @@ -14,7 +14,7 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ // Set Basis Type // this->order = order; - + type = 1; dim = 2; @@ -38,10 +38,10 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ Legendre::intScaled(intLegendre, orderPlus); // Lagrange // - const Polynomial lagrange[3] = + const Polynomial lagrange[3] = { - Polynomial(Polynomial(1, 0, 0, 0) - - Polynomial(1, 1, 0, 0) - + Polynomial(Polynomial(1, 0, 0, 0) - + Polynomial(1, 1, 0, 0) - Polynomial(1, 0, 1, 0)), Polynomial(Polynomial(1, 1, 0, 0)), @@ -61,34 +61,34 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ for(int e = 0; e < 3; e++){ for(int l = 0; l < orderPlus; l++){ - // Nedelec + // Nedelec if(l == 0){ vector<Polynomial> tmp1 = lagrange[(*(*edgeV[s])[e])[1]].gradient(); vector<Polynomial> tmp2 = lagrange[(*(*edgeV[s])[e])[0]].gradient(); - + tmp1[0].mul(lagrange[(*(*edgeV[s])[e])[0]]); tmp1[1].mul(lagrange[(*(*edgeV[s])[e])[0]]); tmp1[2].mul(lagrange[(*(*edgeV[s])[e])[0]]); - - + + tmp2[0].mul(lagrange[(*(*edgeV[s])[e])[1]]); tmp2[1].mul(lagrange[(*(*edgeV[s])[e])[1]]); - tmp2[2].mul(lagrange[(*(*edgeV[s])[e])[1]]); - + tmp2[2].mul(lagrange[(*(*edgeV[s])[e])[1]]); + tmp2[0].sub(tmp1[0]); tmp2[1].sub(tmp1[1]); tmp2[2].sub(tmp1[2]); - + basis[s][i] = new vector<Polynomial>(tmp2); } // High Order else{ - basis[s][i] = + basis[s][i] = new vector<Polynomial> ((intLegendre[l].compose(lagrange[(*(*edgeV[s])[e])[0]] - lagrange[(*(*edgeV[s])[e])[1]] - , + , lagrange[(*(*edgeV[s])[e])[1]] + lagrange[(*(*edgeV[s])[e])[0]])).gradient()); } @@ -99,11 +99,11 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ // Cell Based // - // Preliminaries + // Preliminaries const Polynomial p = lagrange[2] * 2 - Polynomial(1, 0, 0, 0); - + for(int l = 0; l < orderPlus; l++){ - u[l] = intLegendre[l].compose(lagrange[1] - lagrange[0], + u[l] = intLegendre[l].compose(lagrange[1] - lagrange[0], lagrange[0] + lagrange[1]); v[l] = legendre[l].compose(p); v[l].mul(lagrange[2]); @@ -111,17 +111,17 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ vector<Polynomial> gradL1 = lagrange[0].gradient(); vector<Polynomial> gradL2 = lagrange[1].gradient(); - + vector<Polynomial> l2GradL1(gradL1); l2GradL1[0].mul(lagrange[1]); l2GradL1[1].mul(lagrange[1]); l2GradL1[2].mul(lagrange[1]); - + vector<Polynomial> l1GradL2(gradL2); l1GradL2[0].mul(lagrange[0]); l1GradL2[1].mul(lagrange[0]); l1GradL2[2].mul(lagrange[0]); - + vector<Polynomial> subGradL1L2(l2GradL1); subGradL1L2[0].sub(l1GradL2[0]); subGradL1L2[1].sub(l1GradL2[1]); @@ -129,7 +129,7 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ for(unsigned int s = 0; s < nRefSpace; s++){ unsigned int i = nEdge; - + // Type 1 for(unsigned int l1 = 1; l1 < order; l1++){ for(int l2 = 0; l2 + (int)l1 - 1 < orderMinus; l2++){ @@ -143,35 +143,35 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ tmp2[0].mul(v[l2]); tmp2[1].mul(v[l2]); tmp2[2].mul(v[l2]); - + tmp2[0].add(tmp1[0]); tmp2[1].add(tmp1[1]); tmp2[2].add(tmp1[2]); - + basis[s][i] = new vector<Polynomial>(tmp2); i++; } } - + // Type 2 for(unsigned int l1 = 1; l1 < order; l1++){ for(int l2 = 0; l2 + (int)l1 - 1 < orderMinus; l2++){ vector<Polynomial> tmp1 = v[l2].gradient(); vector<Polynomial> tmp2 = u[l1].gradient(); - + tmp1[0].mul(u[l1]); tmp1[1].mul(u[l1]); tmp1[2].mul(u[l1]); - + tmp2[0].mul(v[l2]); tmp2[1].mul(v[l2]); tmp2[2].mul(v[l2]); - + tmp2[0].sub(tmp1[0]); tmp2[1].sub(tmp1[1]); tmp2[2].sub(tmp1[2]); - + basis[s][i] = new vector<Polynomial>(tmp2); i++; @@ -181,16 +181,16 @@ TriEdgeBasis::TriEdgeBasis(unsigned int order){ // Type 3 for(int l = 0; l < orderMinus; l++){ vector<Polynomial> subGradL1L2V(subGradL1L2); - + subGradL1L2V[0].mul(v[l]); subGradL1L2V[1].mul(v[l]); subGradL1L2V[2].mul(v[l]); - + basis[s][i] = new vector<Polynomial>(subGradL1L2V); - + i++; } - } + } // Free Temporary Sapce // delete[] legendre; diff --git a/FunctionSpace/TriNedelecBasis.cpp b/FunctionSpace/TriNedelecBasis.cpp index 6ce5cd4f4bae873828bc35181d7a1f6c5a04c9e5..066bd34d8cc4eb6a4aae7ebc0b6a57233ea98bb6 100644 --- a/FunctionSpace/TriNedelecBasis.cpp +++ b/FunctionSpace/TriNedelecBasis.cpp @@ -24,10 +24,10 @@ TriNedelecBasis::TriNedelecBasis(void){ nFunction = 3; // Lagrange // - const Polynomial lagrange[3] = + const Polynomial lagrange[3] = { - Polynomial(Polynomial(1, 0, 0, 0) - - Polynomial(1, 1, 0, 0) - + Polynomial(Polynomial(1, 0, 0, 0) - + Polynomial(1, 1, 0, 0) - Polynomial(1, 0, 1, 0)), Polynomial(Polynomial(1, 1, 0, 0)), @@ -50,12 +50,12 @@ TriNedelecBasis::TriNedelecBasis(void){ tmp1[0].mul(lagrange[(*(*edgeV[s])[e])[0]]); tmp1[1].mul(lagrange[(*(*edgeV[s])[e])[0]]); tmp1[2].mul(lagrange[(*(*edgeV[s])[e])[0]]); - - + + tmp2[0].mul(lagrange[(*(*edgeV[s])[e])[1]]); tmp2[1].mul(lagrange[(*(*edgeV[s])[e])[1]]); - tmp2[2].mul(lagrange[(*(*edgeV[s])[e])[1]]); - + tmp2[2].mul(lagrange[(*(*edgeV[s])[e])[1]]); + tmp2[0].sub(tmp1[0]); tmp2[1].sub(tmp1[1]); tmp2[2].sub(tmp1[2]);