9#ifndef WARPX_INJECTOR_DENSITY_H_
10#define WARPX_INJECTOR_DENSITY_H_
33 getDensity (amrex::Real, amrex::Real, amrex::Real)
const noexcept
51 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
69 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
83 const double z_start =
p[0];
84 const double ramp_up =
p[1];
85 const double plateau =
p[2];
86 const double ramp_down =
p[3];
87 const double rc =
p[4];
88 const double n0 =
p[5];
94 if ((z-z_start)>=0 and
95 (z-z_start)<ramp_up ) {
97 }
else if ((z-z_start)>=ramp_up and
98 (z-z_start)< ramp_up+plateau ) {
100 }
else if ((z-z_start)>=ramp_up+plateau and
101 (z-z_start)< ramp_up+plateau+ramp_down) {
102 n = 0.5*(1.+std::cos(
MathConst::pi*((z-z_start)-ramp_up-plateau)/ramp_down));
107 n *= n0*(1.+4.*(x*x+y*y)/(kp*kp*rc*rc*rc*rc));
108 return static_cast<amrex::Real
>(n);
111 amrex::Abort(
"InjectorDensityPredefined: how did we get here?");
112 return amrex::Real(0.0);
132 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
134#if (AMREX_SPACEDIM < 3)
137#if (AMREX_SPACEDIM == 1)
139#elif defined(WARPX_DIM_RZ)
141#elif defined(WARPX_DIM_XZ)
205 getDensity (amrex::Real x, amrex::Real y, amrex::Real z)
const noexcept
211 return object.parser.getDensity(x,y,z);
215 return object.constant.getDensity(x,y,z);
219 return object.predefined.getDensity(x,y,z);
223 return object.fromfile.getDensity(x,y,z);
#define AMREX_GPU_HOST_DEVICE
Definition ExternalField.H:154
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:54
static constexpr auto q_e
elementary charge [C]
Definition constant.H:52
static constexpr amrex::Real pi
ratio of a circle's circumference to its diameter
Definition constant.H:23
__host__ __device__ void ignore_unused(const Ts &...)
void Abort(const std::string &msg)
Definition ExternalField.H:75
Definition InjectorDensity.H:27
InjectorDensityConstant(amrex::Real a_rho) noexcept
Definition InjectorDensity.H:28
amrex::Real m_rho
Definition InjectorDensity.H:39
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real, amrex::Real, amrex::Real) const noexcept
Definition InjectorDensity.H:33
Definition InjectorDensity.H:258
void operator()(InjectorDensity *p) const
Definition InjectorDensity.H:259
Definition InjectorDensity.H:124
ExternalFieldReader * m_external_field_reader
Definition InjectorDensity.H:150
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition InjectorDensity.H:132
void clear()
Definition InjectorDensity.cpp:84
InjectorDensityFromFile(std::string const &a_file_name)
Definition InjectorDensity.cpp:78
ExternalFieldView m_external_field_view
Definition InjectorDensity.H:149
Definition InjectorDensity.H:163
~InjectorDensity()=default
Type type
Definition InjectorDensity.H:235
InjectorDensity(InjectorDensityPredefined *t, std::string const &a_species_name)
Definition InjectorDensity.H:177
Type
Definition InjectorDensity.H:234
@ parser
Definition InjectorDensity.H:234
@ constant
Definition InjectorDensity.H:234
@ predefined
Definition InjectorDensity.H:234
@ fromfile
Definition InjectorDensity.H:234
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:205
InjectorDensity(InjectorDensityConstant *t, amrex::Real a_rho)
Definition InjectorDensity.H:165
Object object
Definition InjectorDensity.H:253
InjectorDensity(InjectorDensityParser *t, amrex::ParserExecutor< 3 > const &a_parser)
Definition InjectorDensity.H:171
InjectorDensity(InjectorDensityFromFile *t, std::string const &a_file_name)
Definition InjectorDensity.H:183
InjectorDensity(InjectorDensity const &)=delete
void clear()
Definition InjectorDensity.cpp:22
InjectorDensity(InjectorDensity &&)=delete
Definition InjectorDensity.H:44
InjectorDensityParser(amrex::ParserExecutor< 3 > const &a_parser) noexcept
Definition InjectorDensity.H:45
amrex::ParserExecutor< 3 > m_parser
Definition InjectorDensity.H:56
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition InjectorDensity.H:51
Definition InjectorDensity.H:61
Profile profile
Definition InjectorDensity.H:118
InjectorDensityPredefined(std::string const &a_species_name)
Definition InjectorDensity.cpp:45
Profile
Definition InjectorDensity.H:117
@ parabolic_channel
Definition InjectorDensity.H:117
@ null
Definition InjectorDensity.H:117
amrex::GpuArray< amrex::Real, 6 > p
Definition InjectorDensity.H:119
void clear()
Definition InjectorDensity.cpp:74
AMREX_GPU_HOST_DEVICE amrex::Real getDensity(amrex::Real x, amrex::Real y, amrex::Real z) const noexcept
Definition InjectorDensity.H:69
Definition InjectorDensity.H:239
InjectorDensityConstant constant
Definition InjectorDensity.H:248
Object(InjectorDensityParser *, amrex::ParserExecutor< 3 > const &a_parser) noexcept
Definition InjectorDensity.H:242
InjectorDensityPredefined predefined
Definition InjectorDensity.H:250
Object(InjectorDensityFromFile *, std::string const &a_file_name)
Definition InjectorDensity.H:246
InjectorDensityFromFile fromfile
Definition InjectorDensity.H:251
Object(InjectorDensityPredefined *, std::string const &a_species_name)
Definition InjectorDensity.H:244
InjectorDensityParser parser
Definition InjectorDensity.H:249
Object(InjectorDensityConstant *, amrex::Real a_rho) noexcept
Definition InjectorDensity.H:240