Gyselalib++
 
Loading...
Searching...
No Matches
qnsolver.hpp
1// SPDX-License-Identifier: MIT
2
3#pragma once
4#include "ddc_aliases.hpp"
5#include "ichargedensitycalculator.hpp"
6#include "ipoisson_solver.hpp"
7#include "iqnsolver.hpp"
8
21class QNSolver : public IQNSolver
22{
24 IdxRangeX,
25 IdxRangeX,
26 typename Kokkos::DefaultExecutionSpace::memory_space,
27 Kokkos::layout_right>;
28 PoissonSolver const& m_solve_poisson;
29 IChargeDensityCalculator const& m_compute_rho;
30
31public:
38 QNSolver(PoissonSolver const& solve_poisson, IChargeDensityCalculator const& compute_rho);
39
40 ~QNSolver() override = default;
41
50 DFieldX electrostatic_potential,
51 DFieldX electric_field,
52 DConstFieldSpXVx allfdistribu) const override;
53};
A class which calculates the charge density.
Definition ichargedensitycalculator.hpp:16
Definition ipoisson_solver.hpp:10
Base class for a Quasi-Neutrality solver.
Definition iqnsolver.hpp:13
An operator which solves the Quasi-Neutrality equation using a fast Fourier transform.
Definition qnsolver.hpp:22
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 FftQNSolver operator.