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

An operator which solves the Quasi-Neutrality equation using a fast Fourier transform. More...

Inheritance diagram for QNSolver:
IQNSolver IQNSolver

Public Member Functions

 QNSolver (PoissonSolver const &solve_poisson, IChargeDensityCalculator const &compute_rho)
 Construct the FftQNSolver operator.
 
void operator() (DFieldX electrostatic_potential, DFieldX electric_field, DConstFieldSpXVx allfdistribu) const override
 The operator which solves the equation using the method described by the class.
 
 QNSolver (PoissonSolver const &solve_poisson, IChargeDensityCalculator const &compute_rho)
 Construct the QNSolver operator.
 
void operator() (DFieldXY electrostatic_potential, DFieldXY electric_field_x, DFieldXY electric_field_y, DConstFieldSpXYVxVy allfdistribu) const override
 The operator which solves the equation using the method described by the class.
 
- Public Member Functions inherited from IQNSolver
virtual void operator() (host_t< DFieldRTheta > electrostatic_potential, host_t< DVectorFieldRTheta< X, Y > > electric_field, host_t< DConstFieldRTheta > allfdistribu) const =0
 Compute the electrical potential and the electric field from the Quasi-Neutrality equation.
 

Detailed Description

An operator which solves the Quasi-Neutrality equation using a fast Fourier transform.

An operator which solves the Quasi-Neutrality equation: \( - \frac{d^2 \phi}{dx^2} = \rho \) using a fast Fourier transform on a periodic index range. This operator only works for equidistant points.

The electric field, \( \frac{d \phi}{dx} \) is calculated using a spline interpolation implemented in ElectricField.

Constructor & Destructor Documentation

◆ QNSolver() [1/2]

QNSolver::QNSolver ( PoissonSolver const &  solve_poisson,
IChargeDensityCalculator const &  compute_rho 
)

Construct the FftQNSolver operator.

Parameters
solve_poissonThe operator which solves the Poisson solver.
compute_rhoThe operator which calculates the charge density, the right hand side of the equation.

◆ QNSolver() [2/2]

QNSolver::QNSolver ( PoissonSolver const &  solve_poisson,
IChargeDensityCalculator const &  compute_rho 
)

Construct the QNSolver operator.

Parameters
solve_poissonThe operator which solves the Poisson solver.
compute_rhoThe operator which calculates the charge density, the right hand side of the equation.

Member Function Documentation

◆ operator()() [1/2]

void QNSolver::operator() ( DFieldX  electrostatic_potential,
DFieldX  electric_field,
DConstFieldSpXVx  allfdistribu 
) const
overridevirtual

The operator which solves the equation using the method described by the class.

Parameters
[out]electrostatic_potentialThe electrostatic potential, the result of the poisson solver.
[out]electric_fieldThe electric field, the derivative of the electrostatic potential.
[in]allfdistribuThe distribution function.

Implements IQNSolver.

◆ operator()() [2/2]

void QNSolver::operator() ( DFieldXY  electrostatic_potential,
DFieldXY  electric_field_x,
DFieldXY  electric_field_y,
DConstFieldSpXYVxVy  allfdistribu 
) const
overridevirtual

The operator which solves the equation using the method described by the class.

Parameters
[out]electrostatic_potentialThe electrostatic potential, the result of the poisson solver.
[out]electric_field_xThe x-component of the electric field, the gradient of the electrostatic potential.
[out]electric_field_yThe y-component of the electric field, the gradient of the electrostatic potential.
[in]allfdistribuThe distribution function.

Implements IQNSolver.


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