9 #ifndef HIPACE_BeamParticleContainer_H_
10 #define HIPACE_BeamParticleContainer_H_
99 #ifdef HIPACE_USE_OPENPMD
103 amrex::Real InitBeamFromFileHelper (
const std::string input_file,
104 const bool coordinates_specified,
108 const int num_iteration,
109 const std::string species_name,
110 const bool species_specified);
115 template<
typename input_type>
116 amrex::Real InitBeamFromFile (
const std::string input_file,
117 const bool coordinates_specified,
121 const int num_iteration,
122 const std::string species_name,
123 const bool species_specified);
144 const int which_slice);
182 void resize (
int which_slice,
int num_particles,
int num_slipped_particles);
203 std::array<BeamTile, WhichBeamSlice::N>
m_slices {};
237 amrex::Real
m_zmin = -std::numeric_limits<amrex::Real>::infinity();
239 amrex::Real
m_zmax = std::numeric_limits<amrex::Real>::infinity();
240 amrex::Real
m_radius {std::numeric_limits<amrex::Real>::infinity()};
class handling the adaptive time step
Definition: AdaptiveTimeStep.H:18
Container for particles of 1 beam species.
Definition: BeamParticleContainer.H:68
bool m_do_symmetrize
Definition: BeamParticleContainer.H:280
std::string get_name() const
Definition: BeamParticleContainer.H:159
int numIntComponents() const
Definition: BeamParticleContainer.H:195
amrex::Parser m_pos_mean_x_parser
Definition: BeamParticleContainer.H:263
amrex::IntVect m_reorder_idx_type
Definition: BeamParticleContainer.H:247
void InitBeamFixedPPC3D()
Definition: BeamParticleContainerInit.cpp:103
std::array< BeamTile, WhichBeamSlice::N > m_slices
Definition: BeamParticleContainer.H:203
void TagByLevel(const int current_N_level, amrex::Vector< amrex::Geometry > const &geom3D, const int which_slice)
Store the finest level of every beam particle on which_slice in the cpu() attribute.
Definition: BeamParticleContainer.cpp:301
int m_reorder_period
Definition: BeamParticleContainer.H:245
std::array< int, WhichBeamSlice::N > m_num_particles_without_slipped
Definition: BeamParticleContainer.H:204
amrex::Real m_density
Definition: BeamParticleContainer.H:279
amrex::ParserExecutor< 1 > m_pos_mean_y_func
Definition: BeamParticleContainer.H:269
amrex::RealVect m_position_std
Definition: BeamParticleContainer.H:273
bool communicateRealComponent(int rcomp) const
Definition: BeamParticleContainer.H:198
amrex::RealVect m_position_mean
Definition: BeamParticleContainer.H:252
amrex::Real m_plasma_density
Definition: BeamParticleContainer.H:302
amrex::Array< std::string, AMREX_SPACEDIM > m_file_coordinates_xyz
Definition: BeamParticleContainer.H:305
amrex::Array< amrex::ParserExecutor< 1 >, 6 > m_pdf_u_func
Definition: BeamParticleContainer.H:295
amrex::Real m_radius
Definition: BeamParticleContainer.H:240
amrex::Real m_total_weight
Definition: BeamParticleContainer.H:288
const BeamTile & getBeamSlice(int which_slice) const
Definition: BeamParticleContainer.H:170
amrex::ParserExecutor< 1 > m_pdf_func
Definition: BeamParticleContainer.H:289
void ReadParameters()
Definition: BeamParticleContainer.cpp:42
bool communicateIdCpuComponent() const
Definition: BeamParticleContainer.H:197
amrex::Parser m_density_parser
Definition: BeamParticleContainer.H:257
BeamTileInit & getBeamInitSlice()
Definition: BeamParticleContainer.H:184
amrex::Vector< amrex::Real > m_insitu_rdata
Definition: BeamParticleContainer.H:317
amrex::Vector< unsigned int > m_num_particles_slice
Definition: BeamParticleContainer.H:291
void InitBeamFixedWeightSlice(const int islice, const int which_beam_slice)
Definition: BeamParticleContainerInit.cpp:364
bool m_initialize_on_cpu
Definition: BeamParticleContainer.H:219
std::string m_input_file
Definition: BeamParticleContainer.H:303
int m_pdf_ref_ratio
Definition: BeamParticleContainer.H:287
uint64_t m_total_num_particles
Definition: BeamParticleContainer.H:208
std::string m_species_name
Definition: BeamParticleContainer.H:307
amrex::Array< amrex::ParserExecutor< 1 >, 4 > m_pdf_pos_func
Definition: BeamParticleContainer.H:293
int m_num_iteration
Definition: BeamParticleContainer.H:306
GetInitialMomentum m_get_momentum
Definition: BeamParticleContainer.H:243
amrex::Real m_zmin
Definition: BeamParticleContainer.H:237
friend AdaptiveTimeStep
Definition: BeamParticleContainer.H:328
int m_insitu_period
Definition: BeamParticleContainer.H:222
amrex::ParserExecutor< 1 > m_pos_mean_x_func
Definition: BeamParticleContainer.H:265
bool m_use_external_fields
Definition: BeamParticleContainer.H:224
uint64_t getTotalNumParticles() const
Definition: BeamParticleContainer.H:190
static constexpr int m_insitu_nip
Definition: BeamParticleContainer.H:315
amrex::Real m_z_foc
Definition: BeamParticleContainer.H:275
void InSituComputeDiags(int islice)
Definition: BeamParticleContainer.cpp:444
static constexpr int m_insitu_nrp
Definition: BeamParticleContainer.H:313
void ReorderParticles(int beam_slice, int step, amrex::Geometry &slice_geom)
Reorder beam particles to speed-up push and current deposition.
Definition: BeamParticleContainer.cpp:400
amrex::Real m_pos_mean_z
Definition: BeamParticleContainer.H:271
void InitBeamFixedWeightPDF3D()
Definition: BeamParticleContainerInit.cpp:458
amrex::GpuArray< amrex::ParserExecutor< 4 >, 6 > m_external_fields
Definition: BeamParticleContainer.H:226
void InitBeamFixedPPCSlice(const int islice, const int which_beam_slice)
Definition: BeamParticleContainerInit.cpp:182
amrex::Vector< amrex::Parser > m_pdf_parsers
Definition: BeamParticleContainer.H:297
amrex::Real m_min_density
Definition: BeamParticleContainer.H:253
bool communicateIntComponent(int icomp) const
Definition: BeamParticleContainer.H:199
uint64_t m_id64
Definition: BeamParticleContainer.H:235
std::array< int, WhichBeamSlice::N > m_num_particles_with_slipped
Definition: BeamParticleContainer.H:205
amrex::Real m_duz_per_uz0_dzeta
Definition: BeamParticleContainer.H:276
int getNumParticles(int which_slice) const
Definition: BeamParticleContainer.H:174
void intializeSlice(int slice, int which_slice)
Definition: BeamParticleContainer.cpp:350
void InitBeamFixedWeightPDFSlice(int slice, int which_slice)
Definition: BeamParticleContainerInit.cpp:563
amrex::Real m_mass
Definition: BeamParticleContainer.H:211
bool m_do_reset_id_init
Definition: BeamParticleContainer.H:218
std::string m_name
Definition: BeamParticleContainer.H:232
amrex::Parser m_pos_mean_y_parser
Definition: BeamParticleContainer.H:267
bool m_peak_density_is_specified
Definition: BeamParticleContainer.H:286
bool m_do_salame
Definition: BeamParticleContainer.H:216
amrex::Vector< int > m_insitu_sum_idata
Definition: BeamParticleContainer.H:323
amrex::IntVect m_random_ppc
Definition: BeamParticleContainer.H:254
bool m_do_spin_tracking
Definition: BeamParticleContainer.H:230
amrex::Long m_num_particles
Definition: BeamParticleContainer.H:277
std::string m_insitu_file_prefix
Definition: BeamParticleContainer.H:325
amrex::Real m_charge
Definition: BeamParticleContainer.H:210
amrex::PODVector< amrex::Real, amrex::PolymorphicArenaAllocator< amrex::Real > > m_z_array
Definition: BeamParticleContainer.H:282
BeamParticleContainer(std::string name)
Definition: BeamParticleContainer.H:71
int m_n_subcycles
Definition: BeamParticleContainer.H:213
amrex::Real GetCharge() const
Definition: BeamParticleContainer.H:154
bool m_can_profile
Definition: BeamParticleContainer.H:261
int m_slice_permutation
Definition: BeamParticleContainer.H:202
int numRealComponents() const
Definition: BeamParticleContainer.H:194
void shiftBeamSlices()
Definition: BeamParticleContainer.H:161
BeamTile & getBeamSlice(int which_slice)
Definition: BeamParticleContainer.H:166
amrex::Real m_insitu_radius
Definition: BeamParticleContainer.H:242
bool m_do_radiation_reaction
Definition: BeamParticleContainer.H:214
amrex::Vector< amrex::Real > m_insitu_sum_rdata
Definition: BeamParticleContainer.H:321
amrex::Array< amrex::Parser, 6 > m_external_fields_parser
Definition: BeamParticleContainer.H:228
void InitBeamFixedWeight3D()
Definition: BeamParticleContainerInit.cpp:330
GetInitialDensity m_get_density
Definition: BeamParticleContainer.H:255
amrex::Real InitData(const amrex::Geometry &geom)
Allocate beam particle data and initialize particles with requested beam profile.
Definition: BeamParticleContainer.cpp:109
int m_nslices
Definition: BeamParticleContainer.H:311
void resize(int which_slice, int num_particles, int num_slipped_particles)
Definition: BeamParticleContainer.cpp:389
amrex::Real m_zmax
Definition: BeamParticleContainer.H:239
amrex::Real m_total_charge
Definition: BeamParticleContainer.H:278
void InSituWriteToFile(int step, amrex::Real time, const amrex::Geometry &geom)
Definition: BeamParticleContainer.cpp:527
bool m_do_z_push
Definition: BeamParticleContainer.H:212
std::string m_injection_type
Definition: BeamParticleContainer.H:234
BoxSorter m_init_sorter
Definition: BeamParticleContainer.H:207
BeamTileInit m_init_slice
Definition: BeamParticleContainer.H:206
amrex::Vector< int > m_insitu_idata
Definition: BeamParticleContainer.H:319
int getNumParticlesIncludingSlipped(int which_slice) const
Definition: BeamParticleContainer.H:178
amrex::IntVect m_ppc
Definition: BeamParticleContainer.H:251
amrex::Real GetMass() const
Definition: BeamParticleContainer.H:157
slice
Definition: MultiLaser.H:73
Map names and indices for beam particles attributes (SoA data)
Definition: BeamParticleContainer.H:24
@ int_nattribs
Definition: BeamParticleContainer.H:38
@ nsubcycles
Definition: BeamParticleContainer.H:37
@ int_nattribs_in_buffer
Definition: BeamParticleContainer.H:34
@ z
Definition: BeamParticleContainer.H:26
@ ux
Definition: BeamParticleContainer.H:28
@ real_nattribs_in_buffer
Definition: BeamParticleContainer.H:29
@ uz
Definition: BeamParticleContainer.H:28
@ uy
Definition: BeamParticleContainer.H:28
@ x
Definition: BeamParticleContainer.H:26
@ w
Definition: BeamParticleContainer.H:27
@ y
Definition: BeamParticleContainer.H:26
@ real_nattribs
Definition: BeamParticleContainer.H:30
Functor gets the initial density for beam particles for a given position.
Definition: GetInitialDensity.H:22
Functor gets the initial momentum for beam particles.
Definition: GetInitialMomentum.H:22
Definition: BeamParticleContainer.H:42
beam_slice
Definition: BeamParticleContainer.H:43
@ This
Definition: BeamParticleContainer.H:43
@ Next
Definition: BeamParticleContainer.H:43
@ N
Definition: BeamParticleContainer.H:43