reconstructor.h 1.67 KB
Newer Older
1
2
3
4
5
6
7
8
/*!
 * @file: reconstructor.h
 * @brief: Class to create second order (in space) schemes for the advection solver.
 *         This class is currently unused. But in the future, the second order capabilities of the code
 *         may be stored here.
 * @author: T. Xiao
 */

9
10
11
#ifndef RECONSTRUCTOR_H
#define RECONSTRUCTOR_H

12
13
14
#include <string>

class Config;
15
16
17

class Reconstructor
{
18
19
20
  protected:
    unsigned _reconsOrder;

21
  public:
22
23
24
25
    /**
     * @brief Reconstruction
     * @param settings
     */
26
    Reconstructor( Config* settings );
27
28
29
    static Reconstructor* Create( Config* settings );

    unsigned inline GetReconsOrder() { return _reconsOrder; }
30

31
    /*! Method 1: structured developing
vavrines's avatar
vavrines committed
32
     * @brief Slope of angular flux psi inside a given cell
33
34
35
36
37
38
     * @param Omega fixed ordinate for flux computation
     * @param psiL left solution state
     * @param psiR right solution state
     * @param n scaled normal vector of given edge
     * @return reconstructed slope
     */
vavrines's avatar
vavrines committed
39
40
41
42
43
44
45
46
47
48
49

    /** Method 2: unstructured developing
     * @brief Slope of angular flux psi inside a given cell
     * @param Omega fixed ordinate for flux computation
     * @param psiL left solution state
     * @param psiR right solution state
     * @param n scaled normal vector of given edge
     * @return reconstructed slope
     */

    virtual double ReconstructSlopeStruct( double uL, double uC, double uR, double dxL, double dxR, std::string limiter ) const;
50
51
};

52
#endif    // RECONSTRUCTOR_H
vavrines's avatar
vavrines committed
53

54
55
56
57
58
59
double FortSign( double a, double b );
double LMinMod( double sL, double sR );
double LVanLeer( double sL, double sR );
double LSuperBee( double sL, double sR );
double LVanAlbaba( double sL, double sR );
double LWENOJS( double x );