Field propagator
ImplicitDiffusion
Advances phi.
What it solves
Weak, implicit discretization of the diffusion (or heat) equation (can be used as a Poisson solver too).
Find such that
where are real-valued functions and is a positive diffusion matrix. Boundary terms from integration by parts are assumed to vanish. The equation is discretized as
where and are WeightedMassOperators
and are artificial parameters that can be tuned to
change the model (see Notes).
Variables it advances
The variables this step updates over a time step dt, and the discrete spaces each one accepts.
| Name | Kind | Accepted spaces |
|---|---|---|
phi | FEECVariable | H1 |
Options
Set these on the propagator in a parameter file, for example ImplicitDiffusion.Options(sigma_1=...).
| Option | Default | Choices | Description |
|---|---|---|---|
sigma_1 | 1 | float | Coefficient multiplying the stabilization/mass contribution on the left-hand side. With divide_by_dt=True it is interpreted as sigma_1 / dt in the assembled linear system. |
sigma_2 | 0 | float | Coefficient multiplying the previous solution contribution stab_mat * phi^n on the right-hand side. With divide_by_dt=True it is interpreted as sigma_2 / dt. |
sigma_3 | 1 | float | Coefficient multiplying the source terms rho on the right-hand side. With divide_by_dt=True it is interpreted as sigma_3 / dt. |
divide_by_dt | False | bool | If True, divide sigma_1, sigma_2 and sigma_3 by the time step passed to __call__(dt) before assembling the system. |
stab_mat | M0 | M0M0adId | Stabilization operator used in the term weighted by sigma_1 and sigma_2. |
diffusion_mat | M1 | M1M1perp | Diffusion metric in the bilinear form grad.T @ diffusion_mat @ grad. You can pass the name of a pre-built operator in mass_ops or a custom WeightedMassOperator compatible with the codomain of grad. |
x0 | None | StencilVector | Initial guess for the iterative linear solver. |
solver | pcg | pcgcg | Name of the symmetric iterative solver passed to inverse. |
precond | MassMatrixPreconditioner | MassMatrixPreconditionerMassMatrixDiagonalPreconditionerNone | Name of the preconditioner configuration. Currently this class sets pc=None internally, so this option is reserved for compatibility and future extensions. |
solver_params | None | SolverParameters | Iterative-solver controls (for example tol, maxiter, verbose, info, recycle). If None, defaults to SolverParameters(). |
filter_params | None | dict | If not None, specifies a filter to the accumulation of a specific variable. Keyed by the pic_variable of the corresponding ParticlesToGrid source in rho. |
Used by
No model in the catalogue currently composes this propagator — it is available for building new models.