Hipace
GetInitialMomentum.H
Go to the documentation of this file.
1 /* Copyright 2020-2021
2  *
3  * This file is part of HiPACE++.
4  *
5  * Authors: MaxThevenet, Severin Diederichs, Weiqun Zhang
6  * License: BSD-3-Clause-LBNL
7  */
8 #ifndef GETINTIALMOMENTUM_H_
9 #define GETINTIALMOMENTUM_H_
10 
12 #include <AMReX.H>
13 #include <AMReX_REAL.H>
14 #include <AMReX_RealVect.H>
15 
17 enum struct BeamMomentumType { Gaussian };
18 
22 {
25  GetInitialMomentum () = default;
26  GetInitialMomentum (const std::string& name);
27 
37  void operator() (amrex::Real& ux, amrex::Real& uy, amrex::Real& uz,
38  const amrex::RandomEngine& engine, const amrex::Real z=0.,
39  const amrex::Real duz_per_uz0_dzeta=0.) const
40  {
41  amrex::Real u[3] = {ux,uy,uz};
44  }
45  ux = u[0];
46  uy = u[1];
47  uz = u[2] + z*duz_per_uz0_dzeta*m_u_mean[2];
48  }
49 
53 };
54 
55 #endif // GETINTIALMOMENTUM_H_
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
BeamMomentumType
Beam profile type, currently only Gaussian.
Definition: GetInitialMomentum.H:17
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void get_gaussian_random_momentum(amrex::Real *u, const amrex::RealVect u_mean, const amrex::RealVect u_std, const amrex::RandomEngine &engine)
Definition: ParticleUtil.H:113
Functor gets the initial momentum for beam particles.
Definition: GetInitialMomentum.H:22
GetInitialMomentum()=default
BeamMomentumType m_momentum_profile
Definition: GetInitialMomentum.H:52
amrex::RealVect m_u_mean
Definition: GetInitialMomentum.H:50
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void operator()(amrex::Real &ux, amrex::Real &uy, amrex::Real &uz, const amrex::RandomEngine &engine, const amrex::Real z=0., const amrex::Real duz_per_uz0_dzeta=0.) const
Get the momentum for a beam particle.
Definition: GetInitialMomentum.H:37
amrex::RealVect m_u_std
Definition: GetInitialMomentum.H:51