File cyclic_laplace.hxx

class LaplaceCyclic : public Laplacian
#include <cyclic_laplace.hxx>

Solves the 2D Laplacian equation using the CyclicReduce class.

Public Functions

LaplaceCyclic(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr)
void setCoefA(const Field2D &val)

Set coefficients for inversion. Re-builds matrices if necessary.

void setCoefC(const Field2D &val)
void setCoefC1(const Field2D &val)
void setCoefC2(const Field2D &val)
void setCoefD(const Field2D &val)
void setCoefEx(const Field2D &val)
void setCoefEz(const Field2D &val)
FieldPerp solve(const FieldPerp &b)
FieldPerp solve(const FieldPerp &b, const FieldPerp &x0)
Field3D solve(const Field3D &b)
Field3D solve(const Field3D &b, const Field3D &x0)

Performs the laplacian inversion y-slice by y-slice

x All the y-slices of x_slice in the equation A*x_slice = b_slice
  • b: All the y-slices of b_slice, which is the right hand side of the equation A*x_slice = b_slice
  • x0: All the y-slices of the variable eventually used to set BC

Private Members

Field2D Acoef
Field2D C1coef
Field2D C2coef
Field2D Dcoef
int nmode
int xs
int xe
Matrix<dcomplex> a
Matrix<dcomplex> b
Matrix<dcomplex> c
Matrix<dcomplex> bcmplx
Matrix<dcomplex> xcmplx
bool dst
CyclicReduce<dcomplex> *cr

Tridiagonal solver.