Gyselalib++
 
Loading...
Searching...
No Matches
SplitVlasovSolver Class Reference

A class that solves a Vlasov equation using Strang's splitting. More...

Inheritance diagram for SplitVlasovSolver:
IBoltzmannSolver IVlasovSolver

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.
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ SplitVlasovSolver() [1/2]

SplitVlasovSolver::SplitVlasovSolver ( IAdvectionSpatial< GeometryXVx, GridX > const &  advec_x,
IAdvectionVelocity< GeometryXVx, GridVx > const &  advec_vx 
)

Creates an instance of the split vlasov solver class.

Parameters
[in]advec_xAn advection operator along the x direction.
[in]advec_vxAn advection operator along the vx direction.

◆ SplitVlasovSolver() [2/2]

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.

Parameters
[in]advec_xAn advection operator along the x direction.
[in]advec_yAn advection operator along the y direction.
[in]advec_vxAn advection operator along the vx direction.
[in]advec_vyAn advection operator along the vy direction.

Member Function Documentation

◆ operator()() [1/2]

DFieldSpXVx SplitVlasovSolver::operator() ( DFieldSpXVx  allfdistribu,
DConstFieldX  electric_field,
double  dt 
) const
overridevirtual

Solves a Vlasov equation on a timestep dt.

Parameters
[in,out]allfdistribuOn input : the initial value of the distribution function. On output : the value of the distribution function after solving the Vlasov equation.
[in]electric_fieldThe electric field computed at all spatial positions.
[in]dtThe timestep.
Returns
The distribution function after solving the Vlasov equation.

Implements IBoltzmannSolver.

◆ operator()() [2/2]

DFieldSpXYVxVy SplitVlasovSolver::operator() ( DFieldSpXYVxVy  allfdistribu,
DConstFieldXY  electric_field_x,
DConstFieldXY  electric_field_y,
double  dt 
) const
overridevirtual

Solves a Vlasov equation on a timestep dt.

Parameters
[in,out]allfdistribuOn input : the initial value of the distribution function. On output : the value of the distribution function after solving the Vlasov equation.
[in]electric_field_xThe electric field in the x direction computed at all spatial positions.
[in]electric_field_yThe electric field in the y direction computed at all spatial positions.
[in]dtThe timestep.
Returns
The distribution function after solving the Vlasov equation.

Implements IVlasovSolver.


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