Gyselalib++
 
Loading...
Searching...
No Matches
krook_source_adaptive.hpp
1// SPDX-License-Identifier: MIT
2#pragma once
3
4#include "geometry.hpp"
5#include "irighthandside.hpp"
6
25{
26private:
27 RhsType m_type;
28 double m_extent;
29 double m_stiffness;
30 double m_amplitude;
31 double m_density;
32 double m_temperature;
33 DFieldMemX m_mask;
34 DFieldMemVx m_ftarget;
35
36public:
51 IdxRangeX const& gridx,
52 IdxRangeVx const& gridvx,
53 RhsType const type,
54 double extent,
55 double stiffness,
56 double amplitude,
57 double density,
58 double temperature);
59
64
65 ~KrookSourceAdaptive() override = default;
66
78 DFieldSpXVx operator()(DFieldSpXVx allfdistribu, double dt) const override;
79
80public:
91 void get_amplitudes(DFieldSpX amplitudes, DConstFieldSpXVx allfdistribu) const;
92
103 void get_derivative(DFieldSpXVx df, DConstFieldSpXVx f, DConstFieldSpXVx f0) const;
104};
An abstract class representing a source in Boltzmann equation.
Definition irighthandside.hpp:16
A class that describes a source of particles.
Definition krook_source_adaptive.hpp:25
DFieldSpXVx operator()(DFieldSpXVx allfdistribu, double dt) const override
Update the distribution function following the KrookSourceAdaptive operator.
KrookSourceAdaptive(IdxRangeX const &gridx, IdxRangeVx const &gridvx, RhsType const type, double extent, double stiffness, double amplitude, double density, double temperature)
Creates an instance of the KrookSourceAdaptive class.
void get_derivative(DFieldSpXVx df, DConstFieldSpXVx f, DConstFieldSpXVx f0) const
Computes the expression of the time derivative of the distribution function.
KrookSourceAdaptive(KrookSourceAdaptive &&)=default
Creates an instance of the KrookSourceAdaptive class.
void get_amplitudes(DFieldSpX amplitudes, DConstFieldSpXVx allfdistribu) const
Computes the amplitude coefficient of the KrookSourceAdaptive operator.