Spectral FFT PoissonΒΆ
Use FFT Poisson for uniform periodic meshes. It is a solver descriptor, not a runtime string selector.
from pops.fields import PoissonProblem
from pops.fields.bcs import Periodic
from pops.fields.rhs import ChargeDensity
from pops.math import laplacian
from pops.solvers.elliptic import FFT
poisson = PoissonProblem(
name="phi",
unknown="phi",
equation=(-laplacian("phi") == ChargeDensity.from_blocks("plasma")),
bcs=(Periodic(),),
solver=FFT(),
)
FFT requires a uniform periodic layout:
from pops.mesh import CartesianMesh
from pops.mesh.layouts import Uniform
layout = Uniform(CartesianMesh(n=256, L=1.0, periodic=True))
For AMR or non-periodic physical boundaries, choose a compatible solver such as
GeometricMG().