WarpX
Toggle main menu visibility
Loading...
Searching...
No Matches
Source
AcceleratorLattice
LatticeElements
HardEdged_K.H
Go to the documentation of this file.
1
/* Copyright 2022 David Grote
2
*
3
* This file is part of WarpX.
4
*
5
* License: BSD-3-Clause-LBNL
6
*/
7
#ifndef WARPX_ACCELERATORLATTICE_LATTICEELEMENTS_HARDEDGED_K_H_
8
#define WARPX_ACCELERATORLATTICE_LATTICEELEMENTS_HARDEDGED_K_H_
9
10
#include "
Utils/WarpXConst.H
"
11
12
#include <
AMReX_REAL.H
>
13
24
AMREX_GPU_HOST_DEVICE
AMREX_FORCE_INLINE
25
amrex::ParticleReal
hard_edged_fraction
(
const
amrex::ParticleReal
z,
26
const
amrex::ParticleReal
zpvdt,
27
const
amrex::ParticleReal
zs,
28
const
amrex::ParticleReal
ze)
29
{
30
31
using namespace
amrex::literals
;
32
33
// This allows vz to be positive or negative
34
amrex::ParticleReal
const
zl = std::min(z, zpvdt);
35
amrex::ParticleReal
const
zr = std::max(z, zpvdt);
36
37
// Calculate the residence correction
38
// frac will be 1 if the step is completely inside the lens, between 0 and 1
39
// when entering or leaving the lens, and otherwise 0.
40
// This accounts for the case when particles step over the element without landing in it.
41
// This assumes that vzp != 0.
42
amrex::ParticleReal
const
zl_bounded = std::min(std::max(zl, zs), ze);
43
amrex::ParticleReal
const
zr_bounded = std::min(std::max(zr, zs), ze);
44
const
amrex::ParticleReal
frac = (zr_bounded - zl_bounded)/(zr - zl);
45
46
return
frac;
47
}
48
49
#endif
// WARPX_ACCELERATORLATTICE_LATTICEELEMENTS_HARDEDGED_K_H_
AMREX_FORCE_INLINE
#define AMREX_FORCE_INLINE
AMREX_GPU_HOST_DEVICE
#define AMREX_GPU_HOST_DEVICE
AMReX_REAL.H
hard_edged_fraction
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::ParticleReal hard_edged_fraction(const amrex::ParticleReal z, const amrex::ParticleReal zpvdt, const amrex::ParticleReal zs, const amrex::ParticleReal ze)
Calculate the residence correction, the fraction of the time step the particle spends inside of the h...
Definition
HardEdged_K.H:25
WarpXConst.H
amrex::ParticleReal
amrex_particle_real ParticleReal
amrex::literals
Generated by
1.17.0