DP Langevin
Loading...
Searching...
No Matches
langevin_integrate_euler.cpp
Go to the documentation of this file.
1
5
6#include "langevin_types.hpp"
7#include "langevin_base.hpp"
8
11{
12 mean_density = 0.0;
13 for (auto i=0; i<n_cells; i++)
14 {
15 double f = nonlinear_rhs(i, density_grid);
16 aux_grid1[i] = density_grid[i] + f*dt;
19 aux_grid1[i]= gamma_sampler(rng);
21 }
22 mean_density /= static_cast<double>(n_cells);
23 // Update density field grid with result of integration
25}
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.
int n_cells
Total number of cells in n-D 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...
grid_t aux_grid1
Temporary density grid used to perform an integration step.
double mean_density
Grid-average of density field.
void integrate_euler(rng_t &rng)
Explicit Euler + stochastic integration + grid update.
gamma_dist_t gamma_sampler
Function generating gamma variates.
Base class for Langevin equation integrator.
Type definitions for BaseLangevin integrator.
std::gamma_distribution< double > gamma_dist_t
Type for function generating gamma variates.
std::poisson_distribution< int > poisson_dist_t
Type for function generating Poisson variates.
std::mt19937 rng_t
Use Mersenne Twister random number generator.