39 std::default_random_engine&
rand;
105 v =
r(
rand) * 2. * M_PI;
108 sqrt(1-u*u) * sin(v),
114 std::uniform_real_distribution<Real>
r;
131 Kappa6(std::default_random_engine& _rand,
double _mass,
double _charge,
double _w0,
double _maxw0)
132 :
Kappa(_rand,_mass,_charge,_w0,_maxw0){
135 Kappa6(std::default_random_engine& _rand);
139 double prefix = (512. *
sqrt(2./3.))/(63.*M_PI);
143 double under = vkappa*vkappa + 6.;
145 lookup.push_back( prefix*(-23328.*vkappa/(pow(under,6.))
146 + 1944. * vkappa/(5. *pow(under,5.))
147 + 729. * vkappa/(10.*pow(under,4.))
148 + 567. * vkappa/(40.*pow(under,3.))
149 + 189. * vkappa/(64.*under*under)
150 + 189. * vkappa/(256.*under)
151 + (63. *
sqrt(3./2.)) * atan2(vkappa,
sqrt(6.))/256.));
161 Kappa2(std::default_random_engine& _rand,
double _mass,
double _charge,
double _w0,
double _maxw0)
162 :
Kappa(_rand,_mass,_charge,_w0,_maxw0){
165 Kappa2(std::default_random_engine& _rand);
169 double prefix = 4./M_PI *
sqrt(2.);
173 double under = vkappa*vkappa + 2.;
175 lookup.push_back( prefix*(
176 - 2. * vkappa/(under*under)
178 + atan2(vkappa,
sqrt(2.))/(2.*
sqrt(2.))
sqrt(1.0+vA *vA/(c *c))) % Ion-acoustic wave cS
std::default_random_engine & rand
virtual Particle next_particle()=0
Distribution(std::default_random_engine &_rand, Real _mass, Real _charge)
virtual void generate_lookup()
Kappa2(std::default_random_engine &_rand, double _mass, double _charge, double _w0, double _maxw0)
virtual void generate_lookup()
Kappa6(std::default_random_engine &_rand, double _mass, double _charge, double _w0, double _maxw0)
virtual void generate_lookup()=0
std::vector< Real > lookup
Real find_v_for_r(Real rand)
std::uniform_real_distribution< Real > r
virtual Particle next_particle()
static const int lookup_size
Kappa(std::default_random_engine &_rand, Real _mass, Real _charge, Real _w0, Real _maxw0)
Kappa(std::default_random_engine &_rand)
Maxwell_Boltzmann(std::default_random_engine &_rand, Real _mass, Real _charge, Real kT)
std::normal_distribution< Real > velocity_distribution
virtual Particle next_particle()
virtual Particle next_particle()
Monoenergetic(std::default_random_engine &_rand, Real _mass, Real _charge, Real _vel)
std::uniform_real_distribution< Real > direction_random
Distribution * createDistribution(std::default_random_engine &rand)