File serial_tri.hxx#
-
class LaplaceSerialTri : public Laplacian#
Public Functions
-
LaplaceSerialTri(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr)#
-
inline ~LaplaceSerialTri()#
-
inline virtual void setCoefA(const Field2D &val) override#
Set coefficients for inversion. Re-builds matrices if necessary.
-
virtual FieldPerp solve(const FieldPerp &b, const FieldPerp &x0) override#
Solve Ax=b for x given b
This function will
Take the fourier transform of the y-slice given in the input
For each fourier mode a) Set up the tridiagonal matrix b) Call the solver which inverts the matrix Ax_mode = b_mode
Collect all the modes in a 2D array
Back transform the y-slice
Input:
- Parameters:
b – [in] A 2D variable that will be fourier decomposed, each fourier mode of this variable is going to be the right hand side of the equation Ax = b
x0 – [in] Variable used to set BC (if the right flags are set, see the user manual)
- Returns:
The inverted variable.
-
void setCoefA(const Field2D &val) = 0
Set coefficients for inversion. Re-builds matrices if necessary.
-
void setCoefC(const Field2D &val) = 0
-
void setCoefD(const Field2D &val) = 0
-
void setCoefEx(const Field2D &val) = 0
-
void setCoefEz(const Field2D &val) = 0
-
Field3D solve(const Field3D &b, const Field3D &x0)#
Performs the laplacian inversion y-slice by y-slice
- Parameters:
b – [in] All the y-slices of b_slice, which is the right hand side of the equation A*x_slice = b_slice
x0 – [in] All the y-slices of the variable eventually used to set BC
- Returns:
x All the y-slices of x_slice in the equation A*x_slice = b_slice
-
LaplaceSerialTri(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr)#