28 const std::vector<DirichletBC>& bcs,
44 static constexpr double MU0 = 1.2566370614e-6;
static VectorField3D gradient(const ScalarField3D &phi)
Compute .
static SolverResult solve_var_poisson(ScalarField3D &phi, const ScalarField3D &coeff, const std::vector< DirichletBC > &bcs, double tol=1e-6, int max_iter=500)
Solve with Dirichlet data.
static SolverResult solve_poisson(ScalarField3D &phi, const ScalarField3D &source, double tol=1e-6, int max_iter=500)
Solve with zero Dirichlet boundaries.
static VectorField3D curl(const VectorField3D &A)
Compute .
static ScalarField3D divergence(const VectorField3D &f)
Compute .
static VectorField3D solve_magnetic_field(const VectorField3D &J, double tol=1e-6, int max_iter=500)
static VectorField3D current_density(const ScalarField3D &sigma, const ScalarField3D &phi)
Compute current density J = -sigma*grad(phi) [A/m^2].
static constexpr double MU0
mu_0 [H/m]
3D scalar and vector fields on uniform Cartesian grids.
constexpr real phi
Golden ratio.
Umbrella include for all linear solvers.
Dirichlet boundary condition: fix phi = value at grid node flat_idx.
int flat_idx
k*ny*nx + j*nx + i