WarpX
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 
12 #include <AMReX_Vector.H>
13 
23 {
24 public:
25  PhotonParticleContainer (amrex::AmrCore* amr_core,
26  int ispecies,
27  const std::string& name);
29 
30  virtual void InitData() override;
31 
32  virtual void Evolve (int lev,
33  const amrex::MultiFab& Ex,
34  const amrex::MultiFab& Ey,
35  const amrex::MultiFab& Ez,
36  const amrex::MultiFab& Bx,
37  const amrex::MultiFab& By,
38  const amrex::MultiFab& Bz,
39  const amrex::MultiFab& Ex_avg,
40  const amrex::MultiFab& Ey_avg,
41  const amrex::MultiFab& Ez_avg,
42  const amrex::MultiFab& Bx_avg,
43  const amrex::MultiFab& By_avg,
44  const amrex::MultiFab& Bz_avg,
45  amrex::MultiFab& jx,
46  amrex::MultiFab& jy,
47  amrex::MultiFab& jz,
48  amrex::MultiFab* cjx,
49  amrex::MultiFab* cjy,
50  amrex::MultiFab* cjz,
51  amrex::MultiFab* rho,
52  amrex::MultiFab* crho,
53  const amrex::MultiFab* cEx,
54  const amrex::MultiFab* cEy,
55  const amrex::MultiFab* cEz,
56  const amrex::MultiFab* cBx,
57  const amrex::MultiFab* cBy,
58  const amrex::MultiFab* cBz,
59  amrex::Real t,
60  amrex::Real dt,
61  DtType a_dt_type=DtType::Full) override;
62 
63  virtual void PushPX(WarpXParIter& pti,
64  amrex::FArrayBox const * exfab,
65  amrex::FArrayBox const * eyfab,
66  amrex::FArrayBox const * ezfab,
67  amrex::FArrayBox const * bxfab,
68  amrex::FArrayBox const * byfab,
69  amrex::FArrayBox const * bzfab,
70  const int ngE, const int /*e_is_nodal*/,
71  const long offset,
72  const long np_to_push,
73  int lev, int gather_lev,
74  amrex::Real dt, ScaleFields scaleFields,
75  DtType a_dt_type) override;
76 
77  // Do nothing
78  virtual void PushP (int /*lev*/,
79  amrex::Real /*dt*/,
80  const amrex::MultiFab& /*Ex*/,
81  const amrex::MultiFab& /*Ey*/,
82  const amrex::MultiFab& /*Ez*/,
83  const amrex::MultiFab& /*Bx*/,
84  const amrex::MultiFab& /*By*/,
85  const amrex::MultiFab& /*Bz*/) override {}
86 
87 
88  // DepositCurrent should do nothing for photons
89  virtual void DepositCurrent(WarpXParIter& /*pti*/,
90  RealVector& /*wp*/,
91  RealVector& /*uxp*/,
92  RealVector& /*uyp*/,
93  RealVector& /*uzp*/,
94  const int * const /*ion_lev*/,
95  amrex::MultiFab* /*jx*/,
96  amrex::MultiFab* /*jy*/,
97  amrex::MultiFab* /*jz*/,
98  const long /*offset*/,
99  const long /*np_to_depose*/,
100  int /*thread_num*/,
101  int /*lev*/,
102  int /*depos_lev*/,
103  amrex::Real /*dt*/) override {}
104 };
105 
106 #endif // #ifndef WARPX_PhotonParticleContainer_H_
DtType
Definition: WarpXDtType.H:10
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
Definition: PhotonParticleContainer.H:78
Functor that scales E and B by a factor before pushing the particles. This is used for rigid injectio...
Definition: ScaleFields.H:13
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...
Definition: PhotonParticleContainer.cpp:194
Definition: PhysicalParticleContainer.H:39
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
Definition: PhotonParticleContainer.H:89
PhotonParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition: PhotonParticleContainer.cpp:30
virtual void InitData() override
Definition: PhotonParticleContainer.cpp:59
virtual ~PhotonParticleContainer()
Definition: PhotonParticleContainer.H:28
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
Definition: PhotonParticleContainer.cpp:68
name
Definition: run_automated.py:204
Definition: PhotonParticleContainer.H:21
Definition: WarpXParticleContainer.H:76