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 
11 #include "Evolve/WarpXDtType.H"
14 
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 {
35 public:
37  int ispecies,
38  const std::string& name);
39  ~PhotonParticleContainer () override {}
40 
45 
46  void InitData() override;
47 
48  void Evolve (int lev,
49  const amrex::MultiFab& Ex,
50  const amrex::MultiFab& Ey,
51  const amrex::MultiFab& Ez,
52  const amrex::MultiFab& Bx,
53  const amrex::MultiFab& By,
54  const amrex::MultiFab& Bz,
55  amrex::MultiFab& jx,
56  amrex::MultiFab& jy,
57  amrex::MultiFab& jz,
58  amrex::MultiFab* cjx,
59  amrex::MultiFab* cjy,
60  amrex::MultiFab* cjz,
61  amrex::MultiFab* rho,
62  amrex::MultiFab* crho,
63  const amrex::MultiFab* cEx,
64  const amrex::MultiFab* cEy,
65  const amrex::MultiFab* cEz,
66  const amrex::MultiFab* cBx,
67  const amrex::MultiFab* cBy,
68  const amrex::MultiFab* cBz,
69  amrex::Real t,
70  amrex::Real dt,
71  DtType a_dt_type=DtType::Full,
72  bool skip_deposition=false) override;
73 
74  void PushPX(WarpXParIter& pti,
75  amrex::FArrayBox const * exfab,
76  amrex::FArrayBox const * eyfab,
77  amrex::FArrayBox const * ezfab,
78  amrex::FArrayBox const * bxfab,
79  amrex::FArrayBox const * byfab,
80  amrex::FArrayBox const * bzfab,
81  amrex::IntVect ngEB, int /*e_is_nodal*/,
82  long offset,
83  long np_to_push,
84  int lev, int gather_lev,
85  amrex::Real dt, ScaleFields scaleFields,
86  DtType a_dt_type) override;
87 
88  // Do nothing
89  void PushP (int /*lev*/,
90  amrex::Real /*dt*/,
91  const amrex::MultiFab& /*Ex*/,
92  const amrex::MultiFab& /*Ey*/,
93  const amrex::MultiFab& /*Ez*/,
94  const amrex::MultiFab& /*Bx*/,
95  const amrex::MultiFab& /*By*/,
96  const amrex::MultiFab& /*Bz*/) override {}
97 
98 
99  // DepositCharge should do nothing for photons
100  void DepositCharge (WarpXParIter& /*pti*/,
101  RealVector const & /*wp*/,
102  const int * const /*ion_lev*/,
103  amrex::MultiFab* /*rho*/,
104  int /*icomp*/,
105  const long /*offset*/,
106  const long /*np_to_depose*/,
107  int /*thread_num*/,
108  int /*lev*/,
109  int /*depos_lev*/) override {}
110 
111  // DepositCurrent should do nothing for photons
112  void DepositCurrent (WarpXParIter& /*pti*/,
113  RealVector const & /*wp*/,
114  RealVector const & /*uxp*/,
115  RealVector const & /*uyp*/,
116  RealVector const & /*uzp*/,
117  int const * const /*ion_lev*/,
118  amrex::MultiFab * const /*jx*/,
119  amrex::MultiFab * const /*jy*/,
120  amrex::MultiFab * const /*jz*/,
121  long const /*offset*/,
122  long const /*np_to_depose*/,
123  int const /*thread_num*/,
124  int const /*lev*/,
125  int const /*depos_lev*/,
126  amrex::Real const /*dt*/,
127  amrex::Real const /*relative_time*/) override {}
128 };
129 
130 #endif // #ifndef WARPX_PhotonParticleContainer_H_
DtType
Definition: WarpXDtType.H:11
Definition: PhotonParticleContainer.H:34
PhotonParticleContainer & operator=(PhotonParticleContainer const &)=delete
PhotonParticleContainer(PhotonParticleContainer const &)=delete
PhotonParticleContainer(PhotonParticleContainer &&)=default
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, DtType a_dt_type) override
Definition: PhotonParticleContainer.cpp:83
void DepositCharge(WarpXParIter &, RealVector const &, const int *const, amrex::MultiFab *, int, const long, const long, int, int, int) override
Definition: PhotonParticleContainer.H:100
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, 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, bool skip_deposition=false) override
Definition: PhotonParticleContainer.cpp:224
PhotonParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition: PhotonParticleContainer.cpp:46
void InitData() override
Definition: PhotonParticleContainer.cpp:74
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) override
Definition: PhotonParticleContainer.H:112
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:89
~PhotonParticleContainer() override
Definition: PhotonParticleContainer.H:39
Definition: PhysicalParticleContainer.H:46
Definition: WarpXParticleContainer.H:52
typename SoA::RealVector RealVector
name
Definition: run_automated.py:229
float dt
Definition: stencil.py:442
Functor that scales E and B by a factor before pushing the particles. This is used for rigid injectio...
Definition: ScaleFields.H:14