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,
55 ImplicitOptions const * implicit_options = nullptr) override;
56
57 void PushPX (WarpXParIter& pti,
58 amrex::FArrayBox const * exfab,
59 amrex::FArrayBox const * eyfab,
60 amrex::FArrayBox const * ezfab,
61 amrex::FArrayBox const * bxfab,
62 amrex::FArrayBox const * byfab,
63 amrex::FArrayBox const * bzfab,
64 amrex::IntVect ngEB, int /*e_is_nodal*/,
65 long offset,
66 long np_to_push,
67 int lev, int gather_lev,
68 amrex::Real dt, ScaleFields scaleFields,
69 SubcyclingHalf subcycling_half) override;
70
71 // Do nothing
72 void PushP (int /*lev*/,
73 amrex::Real /*dt*/,
74 const amrex::MultiFab& /*Ex*/,
75 const amrex::MultiFab& /*Ey*/,
76 const amrex::MultiFab& /*Ez*/,
77 const amrex::MultiFab& /*Bx*/,
78 const amrex::MultiFab& /*By*/,
79 const amrex::MultiFab& /*Bz*/) override {}
80
81
82 // DepositCharge should do nothing for photons
84 RealVector const & /*wp*/,
85 const int * const /*ion_lev*/,
86 amrex::MultiFab* /*rho*/,
87 int /*icomp*/,
88 const long /*offset*/,
89 const long /*np_to_deposit*/,
90 int /*thread_num*/,
91 int /*lev*/,
92 int /*depos_lev*/) override {}
93
94 // DepositCurrent should do nothing for photons
96 RealVector const & /*wp*/,
97 RealVector const & /*uxp*/,
98 RealVector const & /*uyp*/,
99 RealVector const & /*uzp*/,
100 int const * const /*ion_lev*/,
101 amrex::MultiFab * const /*jx*/,
102 amrex::MultiFab * const /*jy*/,
103 amrex::MultiFab * const /*jz*/,
104 long const /*offset*/,
105 long const /*np_to_deposit*/,
106 int const /*thread_num*/,
107 int const /*lev*/,
108 int const /*depos_lev*/,
109 amrex::Real const /*dt*/,
110 amrex::Real const /*relative_time*/,
111 PushType /*push_type*/) override {}
112};
113
114#endif // #ifndef WARPX_PhotonParticleContainer_H_
Array4< int const > offset
PushType
Particle push scheme.
Definition WarpXAlgorithmSelection.H:170
SubcyclingHalf
Subcycling half selector.
Definition WarpXAlgorithmSelection.H:166
@ None
Definition WarpXAlgorithmSelection.H:166
PhotonParticleContainer(PhotonParticleContainer const &)=delete
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, ImplicitOptions const *implicit_options=nullptr) override
Definition PhotonParticleContainer.cpp:237
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:83
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:95
PhotonParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition PhotonParticleContainer.cpp:46
~PhotonParticleContainer() override=default
void InitData() override
Definition PhotonParticleContainer.cpp:74
PhotonParticleContainer & operator=(PhotonParticleContainer const &)=delete
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) override
Definition PhotonParticleContainer.cpp:83
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:72
PhysicalParticleContainer(amrex::AmrCore *amr_core, int ispecies, const std::string &name)
Definition PhysicalParticleContainer.cpp:119
Definition WarpXParticleContainer.H:117
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