|
| | PhotonParticleContainer (amrex::AmrCore *amr_core, int ispecies, const std::string &name) |
| |
| virtual | ~PhotonParticleContainer () |
| |
| virtual void | InitData () override |
| |
| virtual void | Evolve (int lev, const amrex::MultiFab &Ex, const amrex::MultiFab &Ey, const amrex::MultiFab &Ez, const amrex::MultiFab &Bx, const amrex::MultiFab &By, const amrex::MultiFab &Bz, const amrex::MultiFab &Ex_avg, const amrex::MultiFab &Ey_avg, const amrex::MultiFab &Ez_avg, const amrex::MultiFab &Bx_avg, const amrex::MultiFab &By_avg, const amrex::MultiFab &Bz_avg, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz, amrex::MultiFab *cjx, amrex::MultiFab *cjy, amrex::MultiFab *cjz, amrex::MultiFab *rho, amrex::MultiFab *crho, const amrex::MultiFab *cEx, const amrex::MultiFab *cEy, const amrex::MultiFab *cEz, const amrex::MultiFab *cBx, const amrex::MultiFab *cBy, const amrex::MultiFab *cBz, amrex::Real t, amrex::Real dt, DtType a_dt_type=DtType::Full) override |
| | Evolve is the central function PhysicalParticleContainer that advances plasma particles for a time dt (typically one timestep). More...
|
| |
| virtual void | PushPX (WarpXParIter &pti, amrex::FArrayBox const *exfab, amrex::FArrayBox const *eyfab, amrex::FArrayBox const *ezfab, amrex::FArrayBox const *bxfab, amrex::FArrayBox const *byfab, amrex::FArrayBox const *bzfab, const int ngE, const int, const long offset, const long np_to_push, int lev, int gather_lev, amrex::Real dt, ScaleFields scaleFields, DtType a_dt_type) override |
| |
| virtual void | PushP (int, amrex::Real, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &) override |
| |
| virtual void | DepositCurrent (WarpXParIter &, RealVector &, RealVector &, RealVector &, RealVector &, const int *const, amrex::MultiFab *, amrex::MultiFab *, amrex::MultiFab *, const long, const long, int, int, int, amrex::Real) override |
| |
Public Member Functions inherited from PhysicalParticleContainer |
| | PhysicalParticleContainer (amrex::AmrCore *amr_core, int ispecies, const std::string &name) |
| |
| | PhysicalParticleContainer (amrex::AmrCore *amr_core) |
| |
| void | BackwardCompatibility () |
| |
| virtual | ~PhysicalParticleContainer () |
| |
| void | InitIonizationModule () |
| |
| void | PartitionParticlesInBuffers (long &nfine_current, long &nfine_gather, long const np, WarpXParIter &pti, int const lev, amrex::iMultiFab const *current_masks, amrex::iMultiFab const *gather_masks, RealVector &uxp, RealVector &uyp, RealVector &uzp, RealVector &wp) |
| |
| virtual void | PostRestart () final |
| |
| void | SplitParticles (int lev) |
| |
| IonizationFilterFunc | getIonizationFunc (const WarpXParIter &pti, int lev, int ngE, const amrex::FArrayBox &Ex, const amrex::FArrayBox &Ey, const amrex::FArrayBox &Ez, const amrex::FArrayBox &Bx, const amrex::FArrayBox &By, const amrex::FArrayBox &Bz) |
| |
| virtual void | AddParticles (int lev) |
| |
| void | AddPlasma (int lev, amrex::RealBox part_realbox=amrex::RealBox()) |
| |
| void | MapParticletoBoostedFrame (amrex::Real &x, amrex::Real &y, amrex::Real &z, std::array< amrex::Real, 3 > &u) |
| |
| void | AddGaussianBeam (const amrex::Real x_m, const amrex::Real y_m, const amrex::Real z_m, const amrex::Real x_rms, const amrex::Real y_rms, const amrex::Real z_rms, const amrex::Real x_cut, const amrex::Real y_cut, const amrex::Real z_cut, const amrex::Real q_tot, long npart, const int do_symmetrize) |
| |
| void | AddPlasmaFromFile (amrex::ParticleReal q_tot, amrex::ParticleReal z_shift) |
| |
| void | CheckAndAddParticle (amrex::Real x, amrex::Real y, amrex::Real z, std::array< amrex::Real, 3 > u, amrex::Real weight, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_x, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_y, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_z, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_ux, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_uy, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_uz, amrex::Gpu::HostVector< amrex::ParticleReal > &particle_w) |
| |
| virtual void | GetParticleSlice (const int direction, const amrex::Real z_old, const amrex::Real z_new, const amrex::Real t_boost, const amrex::Real t_lab, const amrex::Real dt, DiagnosticParticles &diagnostic_particles) final |
| |
| virtual void | ConvertUnits (ConvertDirection convert_dir) override |
| |
| void | applyNCIFilter (int lev, const amrex::Box &box, amrex::Elixir &exeli, amrex::Elixir &eyeli, amrex::Elixir &ezeli, amrex::Elixir &bxeli, amrex::Elixir &byeli, amrex::Elixir &bzeli, amrex::FArrayBox &filtered_Ex, amrex::FArrayBox &filtered_Ey, amrex::FArrayBox &filtered_Ez, amrex::FArrayBox &filtered_Bx, amrex::FArrayBox &filtered_By, amrex::FArrayBox &filtered_Bz, const amrex::FArrayBox &Ex, const amrex::FArrayBox &Ey, const amrex::FArrayBox &Ez, const amrex::FArrayBox &Bx, const amrex::FArrayBox &By, const amrex::FArrayBox &Bz, amrex::FArrayBox const *&exfab, amrex::FArrayBox const *&eyfab, amrex::FArrayBox const *&ezfab, amrex::FArrayBox const *&bxfab, amrex::FArrayBox const *&byfab, amrex::FArrayBox const *&bzfab) |
| | Apply NCI Godfrey filter to all components of E and B before gather. More...
|
| |
| void | resample (const int timestep) override final |
| | This function determines if resampling should be done for the current species, and if so, performs the resampling. More...
|
| |
| bool | has_quantum_sync () const override |
| |
| bool | has_breit_wheeler () const override |
| |
| void | set_breit_wheeler_engine_ptr (std::shared_ptr< BreitWheelerEngine > ptr) override |
| |
| void | set_quantum_sync_engine_ptr (std::shared_ptr< QuantumSynchrotronEngine > ptr) override |
| |
| PhotonEmissionFilterFunc | getPhotonEmissionFilterFunc () |
| |
| PairGenerationFilterFunc | getPairGenerationFilterFunc () |
| |
Public Member Functions inherited from WarpXParticleContainer |
| | WarpXParticleContainer (amrex::AmrCore *amr_core, int ispecies) |
| |
| virtual | ~WarpXParticleContainer () |
| |
| void | AllocData () |
| |
| void | PushX (amrex::Real dt) |
| |
| void | PushX (int lev, amrex::Real dt) |
| |
| void | DepositCharge (amrex::Vector< std::unique_ptr< amrex::MultiFab > > &rho, bool local=false, bool reset=false, bool do_rz_volume_scaling=false) |
| |
| std::unique_ptr< amrex::MultiFab > | GetChargeDensity (int lev, bool local=false) |
| |
| virtual void | DepositCharge (WarpXParIter &pti, RealVector &wp, const int *const ion_lev, amrex::MultiFab *rho, int icomp, const long offset, const long np_to_depose, int thread_num, int lev, int depos_lev) |
| |
| virtual void | UpdateContinuousInjectionPosition (amrex::Real) |
| |
| amrex::Real | sumParticleCharge (bool local=false) |
| |
| std::array< amrex::Real, 3 > | meanParticleVelocity (bool local=false) |
| |
| amrex::Real | maxParticleVelocity (bool local=false) |
| |
| void | AddNParticles (int lev, int n, const amrex::ParticleReal *x, const amrex::ParticleReal *y, const amrex::ParticleReal *z, const amrex::ParticleReal *vx, const amrex::ParticleReal *vy, const amrex::ParticleReal *vz, int nattr, const amrex::ParticleReal *attr, int uniqueparticles, amrex::Long id=-1) |
| |
| virtual void | ReadHeader (std::istream &is) |
| |
| virtual void | WriteHeader (std::ostream &os) const |
| |
| void | ApplyBoundaryConditions (ParticleBC boundary_conditions) |
| | Apply particle BC. More...
|
| |
| void | AddRealComp (const std::string &name, bool comm=true) |
| |
| void | AddIntComp (const std::string &name, bool comm=true) |
| |
| int | doBackTransformedDiagnostics () const |
| |
| std::map< std::string, int > | getParticleComps () const noexcept |
| |
| std::map< std::string, int > | getParticleiComps () const noexcept |
| |
| std::map< std::string, int > | getParticleRuntimeComps () const noexcept |
| |
| std::map< std::string, int > | getParticleRuntimeiComps () const noexcept |
| |
| amrex::ParticleReal | getCharge () const |
| |
| amrex::ParticleReal | getMass () const |
| |
| int | DoFieldIonization () const |
| |
| int | DoQED () const |
| |
| template<PhysicalSpecies PhysSpec> |
| bool | AmIA () const noexcept |
| |
| amrex::Array< amrex::Real, 3 > | get_v_galilean () |
| |
|
Public Types inherited from PhysicalParticleContainer |
| enum | PhysicalParticleType { electron,
positron,
photon,
other
} |
| |
Public Types inherited from WarpXParticleContainer |
| using | DiagnosticParticleData = amrex::StructOfArrays< DiagIdx::nattribs, 0 > |
| |
| using | DiagnosticParticles = amrex::Vector< std::map< std::pair< int, int >, DiagnosticParticleData > > |
| |
| using | PairIndex = std::pair< int, int > |
| |
| using | TmpParticleTile = std::array< amrex::Gpu::DeviceVector< amrex::ParticleReal >, TmpIdx::nattribs > |
| |
| using | TmpParticles = amrex::Vector< std::map< PairIndex, TmpParticleTile > > |
| |
Static Public Member Functions inherited from WarpXParticleContainer |
| static void | ReadParameters () |
| |
| static void | BackwardCompatibility () |
| |
Public Attributes inherited from WarpXParticleContainer |
| friend | MultiParticleContainer |
| |
| bool | do_splitting = false |
| |
| bool | initialize_self_fields = false |
| |
| amrex::Real | self_fields_required_precision = 1.e-11 |
| |
| int | split_type = 0 |
| |
| bool | m_do_random_filter = false |
| |
| bool | m_do_uniform_filter = false |
| |
| bool | m_do_parser_filter = false |
| |
| amrex::Real | m_random_fraction = 1.0 |
| |
| int | m_uniform_stride = 1 |
| |
| std::unique_ptr< ParserWrapper< 7 > > | m_particle_filter_parser |
| |
Protected Member Functions inherited from PhysicalParticleContainer |
| void | ContinuousInjection (const amrex::RealBox &injection_box) override |
| |
Protected Member Functions inherited from WarpXParticleContainer |
| void | defineAllParticleTiles () noexcept |
| |
Protected Attributes inherited from PhysicalParticleContainer |
| std::string | species_name |
| |
| std::unique_ptr< PlasmaInjector > | plasma_injector |
| |
| bool | boost_adjust_transverse_positions = false |
| |
| bool | do_backward_propagation = false |
| |
| Resampling | m_resampler |
| |
| bool | do_classical_radiation_reaction = false |
| |
| bool | m_do_qed_quantum_sync = false |
| |
| bool | m_do_qed_breit_wheeler = false |
| |
| std::shared_ptr< QuantumSynchrotronEngine > | m_shr_p_qs_engine |
| |
| std::shared_ptr< BreitWheelerEngine > | m_shr_p_bw_engine |
| |
Protected Attributes inherited from WarpXParticleContainer |
| amrex::Array< amrex::Real, 3 > | m_v_galilean = {{0}} |
| |
| std::map< std::string, int > | particle_comps |
| |
| std::map< std::string, int > | particle_icomps |
| |
| std::map< std::string, int > | particle_runtime_comps |
| |
| std::map< std::string, int > | particle_runtime_icomps |
| |
| int | species_id |
| |
| amrex::Real | charge |
| |
| amrex::Real | mass |
| |
| PhysicalSpecies | physical_species |
| |
| bool | m_deposit_on_main_grid = false |
| | instead of depositing (current, charge) on the finest patch level, deposit to the coarsest grid More...
|
| |
| bool | m_gather_from_main_grid = false |
| | instead of gathering fields from the finest patch level, gather from the coarsest More...
|
| |
| int | do_not_push = 0 |
| |
| int | do_not_deposit = 0 |
| |
| int | do_not_gather = 0 |
| |
| int | do_continuous_injection = 0 |
| |
| int | do_field_ionization = 0 |
| |
| int | ionization_product |
| |
| std::string | ionization_product_name |
| |
| int | ion_atomic_number |
| |
| int | ionization_initial_level = 0 |
| |
| amrex::Gpu::DeviceVector< amrex::Real > | ionization_energies |
| |
| amrex::Gpu::DeviceVector< amrex::Real > | adk_power |
| |
| amrex::Gpu::DeviceVector< amrex::Real > | adk_prefactor |
| |
| amrex::Gpu::DeviceVector< amrex::Real > | adk_exp_prefactor |
| |
| std::string | physical_element |
| |
| int | do_resampling = 0 |
| |
| int | do_back_transformed_diagnostics = 1 |
| |
| bool | m_do_qed = false |
| |
| int | m_qed_breit_wheeler_ele_product |
| |
| std::string | m_qed_breit_wheeler_ele_product_name |
| |
| int | m_qed_breit_wheeler_pos_product |
| |
| std::string | m_qed_breit_wheeler_pos_product_name |
| |
| int | m_qed_quantum_sync_phot_product |
| |
| std::string | m_qed_quantum_sync_phot_product_name |
| |
| amrex::Vector< amrex::FArrayBox > | local_rho |
| |
| amrex::Vector< amrex::FArrayBox > | local_jx |
| |
| amrex::Vector< amrex::FArrayBox > | local_jy |
| |
| amrex::Vector< amrex::FArrayBox > | local_jz |
| |
| TmpParticles | tmp_particle_data |
| |
Photon particles have no mass, they deposit no charge, and see specific QED effects. For these reasons, they are stored in the separate particle container PhotonParticleContainer, that inherts from PhysicalParticleContainer. The particle pusher and current deposition, in particular, are overriden in this container.