9 #ifndef WARPX_INJECTOR_DENSITY_H_
10 #define WARPX_INJECTOR_DENSITY_H_
32 getDensity (amrex::Real, amrex::Real, amrex::Real)
const noexcept
50 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
68 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
82 const double z_start =
p[0];
83 const double ramp_up =
p[1];
84 const double plateau =
p[2];
85 const double ramp_down =
p[3];
86 const double rc =
p[4];
87 const double n0 =
p[5];
93 if ((z-z_start)>=0 and
94 (z-z_start)<ramp_up ) {
95 n = 0.5*(1.-std::cos(MathConst::pi*(z-z_start)/ramp_up));
96 }
else if ((z-z_start)>=ramp_up and
97 (z-z_start)< ramp_up+plateau ) {
99 }
else if ((z-z_start)>=ramp_up+plateau and
100 (z-z_start)< ramp_up+plateau+ramp_down) {
101 n = 0.5*(1.+std::cos(MathConst::pi*((z-z_start)-ramp_up-plateau)/ramp_down));
106 n *= n0*(1.+4.*(
x*
x+y*y)/(kp*kp*rc*rc*rc*rc));
107 return static_cast<amrex::Real
>(n);
110 amrex::Abort(
"InjectorDensityPredefined: how did we get here?");
111 return amrex::Real(0.0);
166 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
172 return object.parser.getDensity(
x,y,z);
176 return object.constant.getDensity(
x,y,z);
180 return object.predefined.getDensity(
x,y,z);
#define AMREX_GPU_HOST_DEVICE
static constexpr auto c
vacuum speed of light [m/s]
Definition: constant.H:44
static constexpr auto ep0
vacuum permittivity: dielectric permittivity of vacuum [F/m]
Definition: constant.H:46
static constexpr auto m_e
electron mass [kg]
Definition: constant.H:52
static constexpr auto q_e
elementary charge [C]
Definition: constant.H:50
void Abort(const std::string &msg)
Definition: InjectorDensity.H:26
InjectorDensityConstant(amrex::Real a_rho) noexcept
Definition: InjectorDensity.H:27
amrex::Real m_rho
Definition: InjectorDensity.H:38
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real, amrex::Real, amrex::Real) const noexcept
Definition: InjectorDensity.H:32
Definition: InjectorDensity.H:212
void operator()(InjectorDensity *p) const
Definition: InjectorDensity.H:213
Definition: InjectorDensity.H:130
~InjectorDensity()=default
Type type
Definition: InjectorDensity.H:192
InjectorDensity(InjectorDensityPredefined *t, std::string const &a_species_name)
Definition: InjectorDensity.H:144
Type
Definition: InjectorDensity.H:191
void operator=(InjectorDensity const &)=delete
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorDensity.H:166
InjectorDensity(InjectorDensityConstant *t, amrex::Real a_rho)
Definition: InjectorDensity.H:132
Object object
Definition: InjectorDensity.H:207
InjectorDensity(InjectorDensityParser *t, amrex::ParserExecutor< 3 > const &a_parser)
Definition: InjectorDensity.H:138
InjectorDensity(InjectorDensity const &)=delete
void clear()
Definition: InjectorDensity.cpp:22
InjectorDensity(InjectorDensity &&)=delete
Definition: InjectorDensity.H:43
InjectorDensityParser(amrex::ParserExecutor< 3 > const &a_parser) noexcept
Definition: InjectorDensity.H:44
amrex::ParserExecutor< 3 > m_parser
Definition: InjectorDensity.H:55
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorDensity.H:50
Definition: InjectorDensity.H:60
InjectorDensityPredefined(std::string const &a_species_name) noexcept
Definition: InjectorDensity.cpp:40
Profile profile
Definition: InjectorDensity.H:117
Profile
Definition: InjectorDensity.H:116
amrex::GpuArray< amrex::Real, 6 > p
Definition: InjectorDensity.H:118
void clear()
Definition: InjectorDensity.cpp:69
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition: InjectorDensity.H:68
Definition: InjectorDensity.H:196
InjectorDensityConstant constant
Definition: InjectorDensity.H:203
Object(InjectorDensityParser *, amrex::ParserExecutor< 3 > const &a_parser) noexcept
Definition: InjectorDensity.H:199
InjectorDensityPredefined predefined
Definition: InjectorDensity.H:205
InjectorDensityParser parser
Definition: InjectorDensity.H:204
Object(InjectorDensityPredefined *, std::string const &a_species_name) noexcept
Definition: InjectorDensity.H:201
Object(InjectorDensityConstant *, amrex::Real a_rho) noexcept
Definition: InjectorDensity.H:197