DP Langevin
Loading...
Searching...
No Matches
langevin_base.hpp
Go to the documentation of this file.
1
5
6#ifndef BASE_HPP
7#define BASE_HPP
8
11
16{
17protected:
24
26 double dt;
28 double dx;
31
38
44 double lambda;
47
58
59public:
61 BaseLangevin() = default;
63 bool construct_grid(const Parameters parameters);
65 bool construct_1D_grid(const Parameters parameters);
67 bool construct_2D_grid(const Parameters parameters);
69 bool initialize_grid(const Parameters parameters, rng_t& rng);
71 void prepare(const Coefficients& coefficients);
73 bool check_boundary_conditions(const Parameters parameters);
75 void apply_boundary_conditions(const Parameters parameters, int i_epoch);
77 void integrate_rungekutta(rng_t& rng);
79 void integrate_euler(rng_t& rng);
80 double get_density_grid_value(const int) const;
82 double get_mean_density() const;
84 double get_poisson_mean() const;
85
87 virtual void set_nonlinear_coefficients(const Coefficients& coefficients) {};
89 virtual double nonlinear_rhs(const int i_cell, const grid_t& field) const
90 { return 0; };
91};
92
93#endif
poisson_dist_t poisson_sampler
Function generating Poisson variates.
grid_t density_grid
Density field grid.
double lambda
Dornic method stochastic-step variable.
double dt
Time step, i.e, epoch-to-epoch Δt.
bool construct_2D_grid(const Parameters parameters)
Build 2d Langevin density field grid & mixed topology.
bool initialize_grid(const Parameters parameters, rng_t &rng)
Initial condition for density field: uniformly random.
int n_cells
Total number of cells in n-D grid.
bool check_boundary_conditions(const Parameters parameters)
Check we have 2N boundary conditions for an N-dimensional grid.
double lambda_on_explcdt
Dornic method stochastic-step variable.
virtual double nonlinear_rhs(const int i_cell, const grid_t &field) const
Method to set nonlinear RHS of Langevin equation for deterministic integration step: to be defined by...
double noise_coefficient
Dornic method coefficient.
double get_poisson_mean() const
Compute Poisson RNG mean.
grid_t aux_grid1
Temporary density grid used to perform an integration step.
double linear_coefficient
Dornic method coefficient.
double get_mean_density() const
Expose mean density.
bool construct_grid(const Parameters parameters)
Construct Langevin density field grid of appropriate n-D dimension.
double mean_density
Grid-average of density field.
void integrate_rungekutta(rng_t &rng)
Runge-Kutta + stochastic integration + grid update.
double get_density_grid_value(const int) const
Return the Langevin density field grid value at a given "node".
void integrate_euler(rng_t &rng)
Explicit Euler + stochastic integration + grid update.
grid_wiring_t grid_wiring
Neighorhood topology for all grid cells.
BaseLangevin()=default
Default constructor.
grid_t aux_grid2
Temporary density grid used to perform an integration step.
void apply_boundary_conditions(const Parameters parameters, int i_epoch)
Set density field values only the grid edges per bc specs.
gaussian_dist_t gaussian_sampler
Function generating normal variates.
grid_t k1_grid
Runge-Kutta variable grid #1.
virtual void set_nonlinear_coefficients(const Coefficients &coefficients)
Method to set nonlinear coefficients for deterministic integration step: to be defined by application...
void prepare(const Coefficients &coefficients)
Set initial condition of Langevin density field grid.
grid_t k2_grid
Runge-Kutta variable grid #2.
gamma_dist_t gamma_sampler
Function generating gamma variates.
grid_t k3_grid
Runge-Kutta variable grid #3.
bool construct_1D_grid(const Parameters parameters)
Build 1d Langevin density field grid & topology.
double dx
Grid spacing, i.e., spacing Δx between cell centers in all directions.
Container for nonlinear Langevin equation coefficients.
Container for BaseLangevin integrator parameters.
std::gamma_distribution< double > gamma_dist_t
Type for function generating gamma variates.
std::vector< double > grid_t
Type for density grid.
std::poisson_distribution< int > poisson_dist_t
Type for function generating Poisson variates.
std::vector< neighborhood_t > grid_wiring_t
Type for grid-cell neighborhood connections.
std::normal_distribution< double > gaussian_dist_t
Type for function generating Gaussian variates.
std::mt19937 rng_t
Use Mersenne Twister random number generator.
Container for nonlinear Langevin equation coefficients.
Container for BaseLangevin integrator parameters.