10 #ifndef IMPACTX_REFERENCE_PARTICLE_H 11 #define IMPACTX_REFERENCE_PARTICLE_H 31 amrex::ParticleReal
s = 0.0;
32 amrex::ParticleReal
x = 0.0;
33 amrex::ParticleReal
y = 0.0;
34 amrex::ParticleReal
z = 0.0;
35 amrex::ParticleReal
t = 0.0;
36 amrex::ParticleReal
px = 0.0;
37 amrex::ParticleReal
py = 0.0;
38 amrex::ParticleReal
pz = 0.0;
39 amrex::ParticleReal
pt = 0.0;
40 amrex::ParticleReal
mass = 0.0;
43 amrex::ParticleReal
sedge = 0.0;
54 amrex::ParticleReal
const ref_gamma = -
pt;
66 using namespace amrex::literals;
68 amrex::ParticleReal
const ref_gamma = -
pt;
69 amrex::ParticleReal
const ref_beta =
sqrt(1.0_prt - 1.0_prt/
pow(ref_gamma,2));
81 using namespace amrex::literals;
83 amrex::ParticleReal
const ref_gamma = -
pt;
84 amrex::ParticleReal
const ref_betagamma =
sqrt(
pow(ref_gamma, 2) - 1.0_prt);
96 using namespace amrex::literals;
99 return amrex::ParticleReal(mass * inv_MeV_invc2);
110 using namespace amrex::literals;
113 "set_mass_MeV: Mass cannot be zero!");
121 pz =
sqrt(
pow(pt, 2) - 1.0_prt);
135 using namespace amrex::literals;
137 amrex::ParticleReal
const ref_gamma = -
pt;
138 amrex::ParticleReal
const ref_energy =
mass_MeV() * (ref_gamma - 1.0_prt);
150 using namespace amrex::literals;
153 "set_energy_MeV: Set mass first!");
157 pt = -energy /
mass_MeV() - 1.0_prt;
158 pz =
sqrt(
pow(pt, 2) - 1.0_prt);
171 using namespace amrex::literals;
174 return amrex::ParticleReal(charge * inv_qe);
185 using namespace amrex::literals;
200 return charge /
mass;
206 #endif // IMPACTX_REFERENCE_PARTICLE_H amrex::ParticleReal x
horizontal position x, in meters
Definition: ReferenceParticle.H:32
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal energy_MeV() const
Definition: ReferenceParticle.H:133
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal mass_MeV() const
Definition: ReferenceParticle.H:94
amrex::ParticleReal pz
momentum in z, normalized to proper velocity
Definition: ReferenceParticle.H:38
static constexpr auto q_e
amrex::ParticleReal z
longitudinal position y, in meters
Definition: ReferenceParticle.H:34
amrex::ParticleReal py
momentum in y, normalized to proper velocity
Definition: ReferenceParticle.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal charge_qe() const
Definition: ReferenceParticle.H:169
Definition: ImpactX.cpp:31
amrex::ParticleReal px
momentum in x, normalized to proper velocity
Definition: ReferenceParticle.H:36
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal qm_qeeV() const
Definition: ReferenceParticle.H:198
amrex::ParticleReal pt
energy deviation, normalized by rest energy
Definition: ReferenceParticle.H:39
#define AMREX_ASSERT_WITH_MESSAGE(EX, MSG)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_charge_qe(amrex::ParticleReal const charge_qe)
Definition: ReferenceParticle.H:183
static constexpr auto MeV_invc2
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex::ParticleReal t
clock time * c in meters
Definition: ReferenceParticle.H:35
amrex::ParticleReal s
integrated orbit path length, in meters
Definition: ReferenceParticle.H:31
amrex::Array2D< amrex::ParticleReal, 1, 6, 1, 6 > map
linearized map
Definition: ReferenceParticle.H:44
amrex::ParticleReal sedge
value of s at entrance of the current beamline element
Definition: ReferenceParticle.H:43
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_mass_MeV(amrex::ParticleReal const massE)
Definition: ReferenceParticle.H:108
Definition: ReferenceParticle.H:29
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > pow(const GpuComplex< T > &a_z, const T &a_y) noexcept
amrex::ParticleReal mass
reference rest mass, in kg
Definition: ReferenceParticle.H:40
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE RefPart & set_energy_MeV(amrex::ParticleReal const energy)
Definition: ReferenceParticle.H:148
amrex::ParticleReal charge
reference charge, in C
Definition: ReferenceParticle.H:41
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal beta_gamma() const
Definition: ReferenceParticle.H:79
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal beta() const
Definition: ReferenceParticle.H:64
amrex::ParticleReal y
vertical position y, in meters
Definition: ReferenceParticle.H:33
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE GpuComplex< T > sqrt(const GpuComplex< T > &a_z) noexcept
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal gamma() const
Definition: ReferenceParticle.H:52