Skip to content
Snippets Groups Projects
Commit fc05d1b4 authored by Bastien Gorissen's avatar Bastien Gorissen
Browse files

Added Legendre polynomials (preparation for Bergot basis for pyramids)

parent 8f9c9ae0
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ set(SRC ...@@ -9,6 +9,7 @@ set(SRC
polynomialBasis.cpp polynomialBasis.cpp
JacobianBasis.cpp JacobianBasis.cpp
jacobiPolynomials.cpp jacobiPolynomials.cpp
legendrePolynomials.cpp
GaussIntegration.cpp GaussIntegration.cpp
GaussQuadratureLin.cpp GaussQuadratureLin.cpp
GaussQuadratureTri.cpp GaussQuadratureTri.cpp
......
#include "legendrePolynomials.h"
LegendrePolynomials::LegendrePolynomials(int o): n(o) {}
LegendrePolynomials::~LegendrePolynomials() {;}
void LegendrePolynomials::f(double u, double *val) const {
val[0] = 1;
for (int i=0;i<n;i++) {
double a1i = i+1;
double a3i = 2.*i+1;
double a4i = i;
val[i+1] = a3i * u * val[i];
if (i>0) val[i+1] -= a4i * val[i-1];
val[i+1] /= a1i;
}
}
void LegendrePolynomials::df(double u, double *val) const {
double tmp[n+1];
f(u,tmp);
val[0] = 0;
double g2 = (1.-u*u);
for (int i=1;i<=n;i++) {
double g1 = - u*i;
double g0 = (double) i;
val[i] = (g1 * tmp[i] + g0 * tmp[i-1])/g2;
}
}
#ifndef LEGENDREPOLYNOMIALS_H
#define LEGENDREPOLYNOMIALS_H
#include "fullMatrix.h"
class LegendrePolynomials {
public:
LegendrePolynomials(int o);
~LegendrePolynomials();
void f(double u, double *val) const;
void df(double u, double *val) const;
private:
int n;
};
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment