9 #ifndef HIPACE_PlasmaParticleContainer_H_
10 #define HIPACE_PlasmaParticleContainer_H_
33 #ifdef HIPACE_USE_AB5_PUSH
34 Fx1, Fx2, Fx3, Fx4, Fx5,
35 Fy1, Fy2, Fy3, Fy4, Fy5,
36 Fux1, Fux2, Fux3, Fux4, Fux5,
37 Fuy1, Fuy2, Fuy3, Fuy4, Fuy5,
38 Fpsi1, Fpsi2, Fpsi3, Fpsi4, Fpsi5,
81 const amrex::Real a_radius,
82 const amrex::Real a_hollow_core_radius);
91 const amrex::Real background_density_SI);
103 const amrex::Real background_density_SI);
121 const bool to_prev=
false);
162 amrex::Real
m_radius {std::numeric_limits<amrex::Real>::infinity()};
amrex::MFItInfo DfltMfi
Definition: GPUUtil.H:183
Main class handling all field data structures and operations.
Definition: Fields.H:85
Container for particles of 1 plasma species.
Definition: PlasmaParticleContainer.H:51
amrex::RealVect GetUStd() const
Definition: PlasmaParticleContainer.H:127
amrex::Real m_mass
Definition: PlasmaParticleContainer.H:177
amrex::Gpu::DeviceVector< amrex::Real > m_adk_exp_prefactor
Definition: PlasmaParticleContainer.H:187
amrex::Real m_charge
Definition: PlasmaParticleContainer.H:178
amrex::IntVect m_reorder_idx_type
Definition: PlasmaParticleContainer.H:193
amrex::Array< int, 2 > m_ppc
Definition: PlasmaParticleContainer.H:170
void InSituComputeDiags(int islice)
Definition: PlasmaParticleContainer.cpp:453
amrex::Vector< amrex::Real > m_insitu_rdata
Definition: PlasmaParticleContainer.H:205
amrex::Array< int, 2 > m_ppc_fine
Definition: PlasmaParticleContainer.H:171
amrex::RealVect GetUMean() const
Definition: PlasmaParticleContainer.H:124
amrex::Real m_temperature_in_ev
Definition: PlasmaParticleContainer.H:174
amrex::Real m_min_density
Definition: PlasmaParticleContainer.H:154
PlasmaParticleContainer(std::string name)
Definition: PlasmaParticleContainer.H:54
std::map< amrex::Real, std::string > m_density_table
Definition: PlasmaParticleContainer.H:157
amrex::ParserExecutor< 3 > m_density_func
Definition: PlasmaParticleContainer.H:153
int m_reorder_period
Definition: PlasmaParticleContainer.H:191
void InitParticles(const amrex::RealVect &a_thermal_momentum_std, const amrex::RealVect &a_thermal_momentum_mean, const amrex::Real a_radius, const amrex::Real a_hollow_core_radius)
Definition: PlasmaParticleContainerInit.cpp:19
bool m_do_symmetrize
Definition: PlasmaParticleContainer.H:158
int m_insitu_period
Definition: PlasmaParticleContainer.H:196
amrex::Gpu::DeviceVector< amrex::Real > m_adk_prefactor
Definition: PlasmaParticleContainer.H:185
amrex::Vector< amrex::Real > m_insitu_sum_rdata
Definition: PlasmaParticleContainer.H:209
void InSituWriteToFile(int step, amrex::Real time, const amrex::Geometry &geom)
Definition: PlasmaParticleContainer.cpp:539
bool m_use_fine_patch
Definition: PlasmaParticleContainer.H:166
int m_nslices
Definition: PlasmaParticleContainer.H:199
std::string m_name
Definition: PlasmaParticleContainer.H:198
amrex::Real m_radius
Definition: PlasmaParticleContainer.H:162
bool m_use_density_table
Definition: PlasmaParticleContainer.H:155
std::string m_product_name
Definition: PlasmaParticleContainer.H:182
amrex::Real m_insitu_radius
Definition: PlasmaParticleContainer.H:164
amrex::RealVect m_u_std
Definition: PlasmaParticleContainer.H:173
PlasmaParticleContainer * m_product_pc
Definition: PlasmaParticleContainer.H:183
static constexpr int m_insitu_nip
Definition: PlasmaParticleContainer.H:203
void InitData(const amrex::Geometry &geom)
Definition: PlasmaParticleContainer.cpp:173
bool m_can_ionize
Definition: PlasmaParticleContainer.H:181
void InitIonizationModule(const amrex::Geometry &geom, PlasmaParticleContainer *product_pc, const amrex::Real background_density_SI)
Definition: PlasmaParticleContainerInit.cpp:396
int m_n_subcycles
Definition: PlasmaParticleContainer.H:180
amrex::RealVect m_u_mean
Definition: PlasmaParticleContainer.H:172
int m_init_ion_lev
Definition: PlasmaParticleContainer.H:179
amrex::Vector< int > m_insitu_idata
Definition: PlasmaParticleContainer.H:207
amrex::Vector< int > m_insitu_sum_idata
Definition: PlasmaParticleContainer.H:211
amrex::Real m_hollow_core_radius
Definition: PlasmaParticleContainer.H:165
int m_fine_transition_cells
Definition: PlasmaParticleContainer.H:167
const std::string & GetName() const
Definition: PlasmaParticleContainer.H:139
void TagByLevel(const int current_N_level, amrex::Vector< amrex::Geometry > const &geom3D, const bool to_prev=false)
Store the finest level of every plasma particle in the cpu() attribute.
Definition: PlasmaParticleContainer.cpp:214
amrex::Parser m_parser
Definition: PlasmaParticleContainer.H:152
amrex::Real m_max_qsa_weighting_factor
Definition: PlasmaParticleContainer.H:161
void ReadParameters()
Definition: PlasmaParticleContainer.cpp:28
amrex::Parser m_parser_fine_patch
Definition: PlasmaParticleContainer.H:168
bool m_neutralize_background
Definition: PlasmaParticleContainer.H:176
static constexpr int m_insitu_nrp
Definition: PlasmaParticleContainer.H:201
amrex::Real GetCharge() const
Definition: PlasmaParticleContainer.H:133
void IonizationModule(const int lev, const amrex::Geometry &geom, const Fields &fields, const amrex::Real background_density_SI)
Definition: PlasmaParticleContainer.cpp:270
amrex::ParserExecutor< 2 > m_fine_patch_func
Definition: PlasmaParticleContainer.H:169
std::string m_insitu_file_prefix
Definition: PlasmaParticleContainer.H:213
void UpdateDensityFunction(const amrex::Real pos_z)
Definition: PlasmaParticleContainer.cpp:205
amrex::Gpu::DeviceVector< amrex::Real > m_adk_power
Definition: PlasmaParticleContainer.H:189
amrex::Real GetMass() const
Definition: PlasmaParticleContainer.H:136
void ReorderParticles(const int islice)
Definition: PlasmaParticleContainer.cpp:196
Iterator over boxes in a particle container.
Definition: PlasmaParticleContainer.H:218
PlasmaParticleIterator(ContainerType &pc)
Definition: PlasmaParticleContainer.H:221
ParIter_impl< SoAParticle< T_NArrayReal, T_NArrayInt >, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > ParIterSoA
ParticleContainer_impl< SoAParticle< T_NArrayReal, T_NArrayInt >, T_NArrayReal, T_NArrayInt, Allocator, CellAssignor > ParticleContainerPureSoA
Map names and indices for plasma particles attributes (SoA data)
Definition: PlasmaParticleContainer.H:22
@ int_nattribs
Definition: PlasmaParticleContainer.H:44
@ ion_lev
Definition: PlasmaParticleContainer.H:43
@ y
Definition: PlasmaParticleContainer.H:24
@ x_prev
Definition: PlasmaParticleContainer.H:28
@ ux_half_step
Definition: PlasmaParticleContainer.H:30
@ w
Definition: PlasmaParticleContainer.H:25
@ psi_half_step
Definition: PlasmaParticleContainer.H:32
@ real_nattribs
Definition: PlasmaParticleContainer.H:40
@ uy_half_step
Definition: PlasmaParticleContainer.H:31
@ y_prev
Definition: PlasmaParticleContainer.H:28
@ ux
Definition: PlasmaParticleContainer.H:26
@ x
Definition: PlasmaParticleContainer.H:24
@ psi
Definition: PlasmaParticleContainer.H:27
@ uy
Definition: PlasmaParticleContainer.H:26