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

#include <fields.hpp>

Static Public Member Functions

static SolverResult solve_poisson (ScalarField3D &phi, const ScalarField3D &source, double tol=1e-6, int max_iter=500)
 
static VectorField3D gradient (const ScalarField3D &phi)
 Compute ∇φ via central finite differences (one-sided at boundaries).
 
static ScalarField3D divergence (const VectorField3D &f)
 Compute ∇·f via central finite differences.
 
static VectorField3D curl (const VectorField3D &A)
 Compute ∇×A via central finite differences (one-sided at boundaries).
 

Detailed Description

Definition at line 73 of file fields.hpp.

Member Function Documentation

◆ curl()

VectorField3D num::FieldSolver::curl ( const VectorField3D A)
static

Compute ∇×A via central finite differences (one-sided at boundaries).

Definition at line 109 of file fields.cpp.

References num::curl_3d(), and num::ipow().

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

◆ divergence()

ScalarField3D num::FieldSolver::divergence ( const VectorField3D f)
static

Compute ∇·f via central finite differences.

Definition at line 102 of file fields.cpp.

References num::divergence_3d(), and num::ipow().

◆ gradient()

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

Compute ∇φ via central finite differences (one-sided at boundaries).

Definition at line 95 of file fields.cpp.

References num::gradient_3d(), num::ipow(), and num::phi.

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

◆ solve_poisson()

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

Solve ∆φ = source with φ=0 on all boundaries (Dirichlet). φ is both the initial guess and the output solution. Internally solves the SPD system (−∆)φ = −source via matrix-free CG.

Definition at line 68 of file fields.cpp.

References num::cg_matfree(), num::ScalarField3D::grid(), num::ipow(), num::matvec(), num::neg_laplacian_3d(), num::Grid3D::nx(), and num::phi.

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


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