WarpX
Loading...
Searching...
No Matches
PhotonParticleContainer.H
Go to the documentation of this file.
1/* Copyright 2019 Andrew Myers, David Grote, Luca Fedeli
2 * Maxence Thevenet, Weiqun Zhang
3 *
4 * This file is part of WarpX.
5 *
6 * License: BSD-3-Clause-LBNL
7 */
8#ifndef WARPX_PhotonParticleContainer_H_
9#define WARPX_PhotonParticleContainer_H_
10
13
16
17#include <AMReX_Particles.H>
18#include <AMReX_REAL.H>
19
20#include <AMReX_BaseFwd.H>
21#include <AMReX_AmrCoreFwd.H>
22
23#include <string>
24
34{
35public:
37 int ispecies,
38 const std::string& name);
39 ~PhotonParticleContainer () override = default;
40
45
46 void InitData() override;
47
49 int lev,
50 const std::string& current_fp_string,
51 amrex::Real t,
52 amrex::Real dt,
54 bool skip_deposition=false,
57 ImplicitOptions const * implicit_options = nullptr) override;
58
59 void PushPX (WarpXParIter& pti,
60 amrex::FArrayBox const * exfab,
61 amrex::FArrayBox const * eyfab,
62 amrex::FArrayBox const * ezfab,
63 amrex::FArrayBox const * bxfab,
64 amrex::FArrayBox const * byfab,
65 amrex::FArrayBox const * bzfab,
66 amrex::IntVect ngEB, int /*e_is_nodal*/,
67 long offset,
68 long np_to_push,
69 int lev, int gather_lev,
70 amrex::Real dt, ScaleFields scaleFields,
71 SubcyclingHalf subcycling_half,
73 MomentumPushType momentum_push_type=MomentumPushType::Full) override;
74
75 // Do nothing
76 void PushP (int /*lev*/,
77 amrex::Real /*dt*/,
78 const amrex::MultiFab& /*Ex*/,
79 const amrex::MultiFab& /*Ey*/,
80 const amrex::MultiFab& /*Ez*/,
81 const amrex::MultiFab& /*Bx*/,
82 const amrex::MultiFab& /*By*/,
83 const amrex::MultiFab& /*Bz*/) override {}
84
85
86 // DepositCharge should do nothing for photons
88 RealVector const & /*wp*/,
89 const int * const /*ion_lev*/,
90 amrex::MultiFab* /*rho*/,
91 int /*icomp*/,
92 const long /*offset*/,
93 const long /*np_to_deposit*/,
94 int /*thread_num*/,
95 int /*lev*/,
96 int /*depos_lev*/) override {}
97
98 // DepositCurrent should do nothing for photons
100 RealVector const & /*wp*/,
101 RealVector const & /*uxp*/,
102 RealVector const & /*uyp*/,
103 RealVector const & /*uzp*/,
104 int const * const /*ion_lev*/,
105 amrex::MultiFab * const /*jx*/,
106 amrex::MultiFab * const /*jy*/,
107 amrex::MultiFab * const /*jz*/,
108 long const /*offset*/,
109 long const /*np_to_deposit*/,
110 int const /*thread_num*/,
111 int const /*lev*/,
112 int const /*depos_lev*/,
113 amrex::Real const /*dt*/,
114 amrex::Real const /*relative_time*/,
115 PushType /*push_type*/) override {}
116};
117
118#endif // #ifndef WARPX_PhotonParticleContainer_H_
Array4< int const > offset
PushType
Particle push scheme.
Definition WarpXAlgorithmSelection.H:170
PositionPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:181
@ Full
Definition WarpXAlgorithmSelection.H:181
MomentumPushType
For advanced collision algorithms that split the particle push in substeps.
Definition WarpXAlgorithmSelection.H:189
@ Full
Definition WarpXAlgorithmSelection.H:189
SubcyclingHalf
Subcycling half selector.
Definition WarpXAlgorithmSelection.H:166
@ None
Definition WarpXAlgorithmSelection.H:166
PhotonParticleContainer(PhotonParticleContainer const &)=delete
PhotonParticleContainer(PhotonParticleContainer &&)=default
void DepositCharge(WarpXParIter &, RealVector const &, const int *const, amrex::MultiFab *, int, const long, const long, int, int, int) override
Definition PhotonParticleContainer.H:87
void DepositCurrent(WarpXParIter &, RealVector const &, RealVector const &, RealVector const &, RealVector const &, int const *const, amrex::MultiFab *const, amrex::MultiFab *const, amrex::MultiFab *const, long const, long const, int const, int const, int const, amrex::Real const, amrex::Real const, PushType) override
Definition PhotonParticleContainer.H:99
PhotonParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition PhotonParticleContainer.cpp:46
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, amrex::IntVect ngEB, int, long offset, long np_to_push, int lev, int gather_lev, amrex::Real dt, ScaleFields scaleFields, SubcyclingHalf subcycling_half, PositionPushType position_push_type=PositionPushType::Full, MomentumPushType momentum_push_type=MomentumPushType::Full) override
Gather fields and push particles in one fused kernel.
Definition PhotonParticleContainer.cpp:83
~PhotonParticleContainer() override=default
void Evolve(ablastr::fields::MultiFabRegister &fields, int lev, const std::string &current_fp_string, amrex::Real t, amrex::Real dt, SubcyclingHalf subcycling_half=SubcyclingHalf::None, bool skip_deposition=false, PositionPushType position_push_type=PositionPushType::Full, MomentumPushType momentum_push_type=MomentumPushType::Full, ImplicitOptions const *implicit_options=nullptr) override
Pure virtual function to advance particles (typically by one time step).
Definition PhotonParticleContainer.cpp:244
void InitData() override
Definition PhotonParticleContainer.cpp:74
PhotonParticleContainer & operator=(PhotonParticleContainer const &)=delete
void PushP(int, amrex::Real, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &, const amrex::MultiFab &) override
Definition PhotonParticleContainer.H:76
PhysicalParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition PhysicalParticleContainer.cpp:119
Definition WarpXParticleContainer.H:112
Definition EffectivePotentialPoissonSolver.H:63
IntVectND< 3 > IntVect
Definition ImplicitOptions.H:7
Functor that scales E and B by a factor before pushing the particles. This is used for rigid injectio...
Definition ScaleFields.H:14
Definition MultiFabRegister.H:262