numerics 0.1.0
Loading...
Searching...
No Matches
num::FieldSolver Class Reference

#include <field_solver.hpp>

Classes

struct  DirichletBC
 Dirichlet boundary condition: fix phi = value at grid node flat_idx. More...
 

Static Public Member Functions

static SolverResult solve_poisson (ScalarField3D &phi, const ScalarField3D &source, double tol=1e-6, int max_iter=500)
 Solve \(\Delta\phi=s\) with zero Dirichlet boundaries.
 
static SolverResult solve_var_poisson (ScalarField3D &phi, const ScalarField3D &coeff, const std::vector< DirichletBC > &bcs, double tol=1e-6, int max_iter=500)
 Solve \(\nabla\cdot(c\nabla\phi)=0\) with Dirichlet data.
 
static VectorField3D gradient (const ScalarField3D &phi)
 Compute \(\nabla\phi\).
 
static ScalarField3D divergence (const VectorField3D &f)
 Compute \(\nabla\cdot f\).
 
static VectorField3D curl (const VectorField3D &A)
 Compute \(\nabla\times A\).
 

Detailed Description

Definition at line 11 of file field_solver.hpp.

Member Function Documentation

◆ curl()

◆ divergence()

◆ gradient()

VectorField3D num::FieldSolver::gradient ( const ScalarField3D phi)
static

◆ solve_poisson()

SolverResult num::FieldSolver::solve_poisson ( ScalarField3D phi,
const ScalarField3D source,
double  tol = 1e-6,
int  max_iter = 500 
)
static

Solve \(\Delta\phi=s\) with zero Dirichlet boundaries.

Definition at line 12 of file field_solver.cpp.

References num::operators::assume_spd(), num::cg(), num::operators::make_op(), num::neg_laplacian_3d(), num::phi, and num::BasicVector< T >::vec().

Referenced by num::MagneticSolver::solve_magnetic_field().

◆ solve_var_poisson()

SolverResult num::FieldSolver::solve_var_poisson ( ScalarField3D phi,
const ScalarField3D coeff,
const std::vector< DirichletBC > &  bcs,
double  tol = 1e-6,
int  max_iter = 500 
)
static

Solve \(\nabla\cdot(c\nabla\phi)=0\) with Dirichlet data.

Definition at line 35 of file field_solver.cpp.

References num::operators::assume_spd(), num::cg(), num::e, num::operators::make_op(), num::matvec(), num::phi, and num::BasicVector< T >::vec().


The documentation for this class was generated from the following files: