productquadrature.h 874 Bytes
Newer Older
jonas.kusch's avatar
jonas.kusch committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef PRODUCTQUADRATURE_H
#define PRODUCTQUADRATURE_H

#include "quadraturebase.h"

class ProductQuadrature : public QuadratureBase
{
    // Implementation is done accordingly to Kendall Atkinson 1981, Australian Matematical Society.
  private:
    double Pythag( const double a, const double b );
    std::pair<Vector, Matrix> ComputeEigenValTriDiagMatrix( const Matrix& mat );
    bool CheckOrder();

  public:
Steffen Schotthöfer's avatar
Steffen Schotthöfer committed
15
    ProductQuadrature( Config* settings );
jonas.kusch's avatar
jonas.kusch committed
16
    ProductQuadrature( unsigned order );
Steffen Schotthöfer's avatar
Steffen Schotthöfer committed
17

jonas.kusch's avatar
jonas.kusch committed
18
19
20
21
22
23
24
25
26
27
28
    virtual ~ProductQuadrature() {}

    inline void SetName() override { _name = "Product quadrature"; }
    inline void SetNq() override { _nq = 4 * pow( GetOrder(), 2 ); }
    void SetPointsAndWeights() override;
    void SetConnectivity() override;

    inline VectorVector GetPointsSphere() const override { return _pointsSphere; }
};

#endif    // PRODUCTQUADRATURE_H