A class that solves a Vlasov equation using Strang's splitting. More...
Public Member Functions | |
SplitVlasovSolver (IAdvectionSpatial< GeometryXVx, GridX > const &advec_x, IAdvectionVelocity< GeometryXVx, GridVx > const &advec_vx) | |
Creates an instance of the split vlasov solver class. | |
DFieldSpXVx | operator() (DFieldSpXVx allfdistribu, DConstFieldX electric_field, double dt) const override |
Solves a Vlasov equation on a timestep dt. | |
SplitVlasovSolver (IAdvectionSpatial< GeometryXYVxVy, GridX > const &advec_x, IAdvectionSpatial< GeometryXYVxVy, GridY > const &advec_y, IAdvectionVelocity< GeometryXYVxVy, GridVx > const &advec_vx, IAdvectionVelocity< GeometryXYVxVy, GridVy > const &advec_vy) | |
Creates an instance of the split vlasov solver class. | |
DFieldSpXYVxVy | operator() (DFieldSpXYVxVy allfdistribu, DConstFieldXY electric_field_x, DConstFieldXY electric_field_y, double dt) const override |
Solves a Vlasov equation on a timestep dt. | |
A class that solves a Vlasov equation using Strang's splitting.
The Vlasov equation is split between two advection equations along the X and Vx directions. The splitting involves solving the x-direction advection first on a time interval of length dt/2, then the vx-direction advection on a time dt, and then x-direction again on dt/2.
The Vlasov equation is split between four advection equations along the X, Y, Vx and Vy directions. The splitting involves solving the advections in the X, Y, and Vx directions first on a time interval of length dt/2, then the Vy-direction advection on a time dt, and finally the X, Y, and Vx directions again in reverse order on dt/2.
SplitVlasovSolver::SplitVlasovSolver | ( | IAdvectionSpatial< GeometryXVx, GridX > const & | advec_x, |
IAdvectionVelocity< GeometryXVx, GridVx > const & | advec_vx | ||
) |
Creates an instance of the split vlasov solver class.
[in] | advec_x | An advection operator along the x direction. |
[in] | advec_vx | An advection operator along the vx direction. |
SplitVlasovSolver::SplitVlasovSolver | ( | IAdvectionSpatial< GeometryXYVxVy, GridX > const & | advec_x, |
IAdvectionSpatial< GeometryXYVxVy, GridY > const & | advec_y, | ||
IAdvectionVelocity< GeometryXYVxVy, GridVx > const & | advec_vx, | ||
IAdvectionVelocity< GeometryXYVxVy, GridVy > const & | advec_vy | ||
) |
Creates an instance of the split vlasov solver class.
[in] | advec_x | An advection operator along the x direction. |
[in] | advec_y | An advection operator along the y direction. |
[in] | advec_vx | An advection operator along the vx direction. |
[in] | advec_vy | An advection operator along the vy direction. |
|
overridevirtual |
Solves a Vlasov equation on a timestep dt.
[in,out] | allfdistribu | On input : the initial value of the distribution function. On output : the value of the distribution function after solving the Vlasov equation. |
[in] | electric_field | The electric field computed at all spatial positions. |
[in] | dt | The timestep. |
Implements IBoltzmannSolver.
|
overridevirtual |
Solves a Vlasov equation on a timestep dt.
[in,out] | allfdistribu | On input : the initial value of the distribution function. On output : the value of the distribution function after solving the Vlasov equation. |
[in] | electric_field_x | The electric field in the x direction computed at all spatial positions. |
[in] | electric_field_y | The electric field in the y direction computed at all spatial positions. |
[in] | dt | The timestep. |
Implements IVlasovSolver.