Gyselalib++
 
Loading...
Searching...
No Matches
singlemodeperturbinitialization.hpp
1// SPDX-License-Identifier: MIT
2
3#pragma once
4
5#include <paraconf.h>
6
7#include "geometry.hpp"
8#include "iinitialization.hpp"
9#include "paraconfpp.hpp"
10#include "species_info.hpp"
11
20{
21 DConstFieldSpVx m_fequilibrium;
22
23 host_t<IFieldMemSp> m_init_perturb_mode;
24
25 host_t<DFieldMemSp> m_init_perturb_amplitude;
26
27public:
37 DFieldX perturbation,
38 int const perturb_mode,
39 double const perturb_amplitude) const;
40
48 DConstFieldSpVx fequilibrium,
49 host_t<IFieldMemSp> init_perturb_mode,
50 host_t<DFieldMemSp> init_perturb_amplitude);
51
52 ~SingleModePerturbInitialization() override = default;
53
63 DConstFieldSpVx allfequilibrium,
64 IdxRangeSp idx_range_kinsp,
65 PC_tree_t const& yaml_input_file);
66
72 DFieldSpXVx operator()(DFieldSpXVx allfdistribu) const override;
73};
An abstract class that allows for initializing a distribution function.
Definition iinitialization.hpp:11
A class that initializes the distribution function as a perturbed Maxwellian.
Definition singlemodeperturbinitialization.hpp:20
static SingleModePerturbInitialization init_from_input(DConstFieldSpVx allfequilibrium, IdxRangeSp idx_range_kinsp, PC_tree_t const &yaml_input_file)
Read init_perturb_mode and init_perturb amplitude in a YAML input file to initialize the perturbation...
SingleModePerturbInitialization(DConstFieldSpVx fequilibrium, host_t< IFieldMemSp > init_perturb_mode, host_t< DFieldMemSp > init_perturb_amplitude)
Creates an instance of the SingleModePerturbInitialization class.
void perturbation_initialization(DFieldX perturbation, int const perturb_mode, double const perturb_amplitude) const
Initialization of the perturbation.
DFieldSpXVx operator()(DFieldSpXVx allfdistribu) const override
Initializes the distribution function as as a perturbed Maxwellian.