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