WarpX
MultiFluidContainer.H
Go to the documentation of this file.
1 /* Copyright 2023 Grant Johnson, Remi Lehe
2  *
3  * This file is part of WarpX.
4  *
5  * License: BSD-3-Clause-LBNL
6  */
7 #ifndef WARPX_MultiFluidContainer_H_
8 #define WARPX_MultiFluidContainer_H_
9 #include "Evolve/WarpXDtType.H"
10 
12 
13 #include<AMReX_MultiFab.H>
14 #include <AMReX_Vector.H>
15 
16 #include <string>
17 
33 {
34 
35 public:
36 
37  MultiFluidContainer (int nlevs_max);
38 
39  ~MultiFluidContainer() = default;
40 
45 
46  [[nodiscard]] WarpXFluidContainer&
47  GetFluidContainer (int ispecies) const {return *allcontainers[ispecies];}
48 
49 #ifdef WARPX_USE_OPENPMD
50  std::unique_ptr<WarpXFluidContainer>& GetUniqueContainer(int ispecies) {
51  return allcontainers[ispecies];
52  }
53 #endif
54 
55  void AllocateLevelMFs (int lev, const amrex::BoxArray& ba, const amrex::DistributionMapping& dm);
56 
57  void InitData (int lev, amrex::Box init_box, amrex::Real cur_time);
58 
63  void Evolve (int lev,
64  const amrex::MultiFab& Ex, const amrex::MultiFab& Ey, const amrex::MultiFab& Ez,
65  const amrex::MultiFab& Bx, const amrex::MultiFab& By, const amrex::MultiFab& Bz,
67  amrex::Real cur_time, bool skip_deposition=false);
68 
69  [[nodiscard]] int nSpecies() const {return static_cast<int>(species_names.size());}
70 
71  void DepositCharge (int lev, amrex::MultiFab &rho);
72  void DepositCurrent (int lev,
74 
75 private:
76 
77  std::vector<std::string> species_names;
78 
79  // Vector of fluid species
81 
82 };
83 #endif /*WARPX_MultiFluidContainer_H_*/
Definition: MultiFluidContainer.H:33
MultiFluidContainer & operator=(MultiFluidContainer &&)=default
std::unique_ptr< WarpXFluidContainer > & GetUniqueContainer(int ispecies)
Definition: MultiFluidContainer.H:50
void InitData(int lev, amrex::Box init_box, amrex::Real cur_time)
Definition: MultiFluidContainer.cpp:38
int nSpecies() const
Definition: MultiFluidContainer.H:69
MultiFluidContainer(MultiFluidContainer const &)=delete
std::vector< std::string > species_names
Definition: MultiFluidContainer.H:77
void AllocateLevelMFs(int lev, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm)
Definition: MultiFluidContainer.cpp:30
MultiFluidContainer(MultiFluidContainer &&)=default
MultiFluidContainer & operator=(MultiFluidContainer const &)=delete
void DepositCurrent(int lev, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz)
Definition: MultiFluidContainer.cpp:55
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 *rho, amrex::MultiFab &jx, amrex::MultiFab &jy, amrex::MultiFab &jz, amrex::Real cur_time, bool skip_deposition=false)
Definition: MultiFluidContainer.cpp:64
WarpXFluidContainer & GetFluidContainer(int ispecies) const
Definition: MultiFluidContainer.H:47
void DepositCharge(int lev, amrex::MultiFab &rho)
Definition: MultiFluidContainer.cpp:47
MultiFluidContainer(int nlevs_max)
Definition: MultiFluidContainer.cpp:16
amrex::Vector< std::unique_ptr< WarpXFluidContainer > > allcontainers
Definition: MultiFluidContainer.H:80
~MultiFluidContainer()=default
Definition: WarpXFluidContainer.H:29