ImpactX
AmrCoreData.H
Go to the documentation of this file.
1 /* Copyright 2022-2023 The Regents of the University of California, through Lawrence
2  * Berkeley National Laboratory (subject to receipt of any required
3  * approvals from the U.S. Dept. of Energy). All rights reserved.
4  *
5  * This file is part of ImpactX.
6  *
7  * Authors: Axel Huebl
8  * License: BSD-3-Clause-LBNL
9  */
10 #ifndef IMPACTX_AMR_CORE_DATA_H
11 #define IMPACTX_AMR_CORE_DATA_H
12 
13 #include "AmrCoreData_fwd.H"
15 
16 #include <AMReX_AmrCore.H>
17 #include <AMReX_AmrMesh.H>
18 #include <AMReX_BoxArray.H>
20 #include <AMReX_Geometry.H>
21 #include <AMReX_MultiFab.H>
22 #include <AMReX_REAL.H>
23 #include <AMReX_TagBox.H>
24 
25 #include <string>
26 #include <unordered_map>
27 
28 
30 {
40  class AmrCoreData final
41  : public amrex::AmrCore
42  {
43  public:
44  AmrCoreData (
45  amrex::Geometry const& level_0_geom,
46  amrex::AmrInfo const& amr_info
47  );
48  AmrCoreData (
49  amrex::RealBox const & rb,
50  int max_level_in,
51  amrex::Vector<int> const & n_cell_in,
52  int coord,
53  amrex::Vector<amrex::IntVect> const & ref_ratios,
55  );
56 
57  AmrCoreData (AmrCoreData&& rhs) = default;
58  AmrCoreData& operator= (AmrCoreData&& rhs) = default;
59 
60  AmrCoreData (const AmrCoreData& rhs) = delete;
61  AmrCoreData& operator= (const AmrCoreData& rhs) = delete;
62 
63  ~AmrCoreData() = default;
64 
66  std::unique_ptr<impactx::ImpactXParticleContainer> m_particle_container;
67 
69  std::unique_ptr<impactx::ImpactXParticleContainer> m_particles_lost;
70 
72  std::unordered_map<int, amrex::MultiFab> m_rho;
74  std::unordered_map<int, amrex::MultiFab> m_phi;
76  std::unordered_map<int, std::unordered_map<std::string, amrex::MultiFab> > m_space_charge_field;
77 
78  void ErrorEst (
79  [[maybe_unused]] int lev,
80  [[maybe_unused]] amrex::TagBoxArray& tags,
81  [[maybe_unused]] amrex::Real time,
82  [[maybe_unused]] int ngrow) override;
83 
85  [[maybe_unused]] int lev,
86  [[maybe_unused]] amrex::Real time,
87  [[maybe_unused]] const amrex::BoxArray& ba,
88  [[maybe_unused]] const amrex::DistributionMapping& dm) override;
89 
91  [[maybe_unused]] int lev,
92  [[maybe_unused]] amrex::Real time,
93  [[maybe_unused]] const amrex::BoxArray& ba,
94  [[maybe_unused]] const amrex::DistributionMapping& dm) override;
95 
96  void RemakeLevel (
97  [[maybe_unused]] int lev,
98  [[maybe_unused]] amrex::Real time,
99  [[maybe_unused]] const amrex::BoxArray& ba,
100  [[maybe_unused]] const amrex::DistributionMapping& dm) override;
101 
102  void ClearLevel ([[maybe_unused]] int lev) override;
103  };
104 
105 } // namespace impactx::initialization
106 
107 #endif // IMPACTX_AMR_CORE_DATA_H
Definition: AmrCoreData.H:42
AmrCoreData(AmrCoreData &&rhs)=default
std::unordered_map< int, amrex::MultiFab > m_rho
Definition: AmrCoreData.H:72
std::unique_ptr< impactx::ImpactXParticleContainer > m_particle_container
Definition: AmrCoreData.H:66
AmrCoreData(amrex::Geometry const &level_0_geom, amrex::AmrInfo const &amr_info)
Definition: AmrCoreData.cpp:19
void ErrorEst([[maybe_unused]] int lev, [[maybe_unused]] amrex::TagBoxArray &tags, [[maybe_unused]] amrex::Real time, [[maybe_unused]] int ngrow) override
Definition: AmrCoreData.cpp:40
std::unordered_map< int, amrex::MultiFab > m_phi
Definition: AmrCoreData.H:74
AmrCoreData(const AmrCoreData &rhs)=delete
std::unique_ptr< impactx::ImpactXParticleContainer > m_particles_lost
Definition: AmrCoreData.H:69
void ClearLevel([[maybe_unused]] int lev) override
Definition: AmrCoreData.cpp:195
void MakeNewLevelFromScratch([[maybe_unused]] int lev, [[maybe_unused]] amrex::Real time, [[maybe_unused]] const amrex::BoxArray &ba, [[maybe_unused]] const amrex::DistributionMapping &dm) override
Definition: AmrCoreData.cpp:112
std::unordered_map< int, std::unordered_map< std::string, amrex::MultiFab > > m_space_charge_field
Definition: AmrCoreData.H:76
AmrCoreData & operator=(AmrCoreData &&rhs)=default
void MakeNewLevelFromCoarse([[maybe_unused]] int lev, [[maybe_unused]] amrex::Real time, [[maybe_unused]] const amrex::BoxArray &ba, [[maybe_unused]] const amrex::DistributionMapping &dm) override
Definition: AmrCoreData.cpp:175
void RemakeLevel([[maybe_unused]] int lev, [[maybe_unused]] amrex::Real time, [[maybe_unused]] const amrex::BoxArray &ba, [[maybe_unused]] const amrex::DistributionMapping &dm) override
Definition: AmrCoreData.cpp:185
std::array< T, N > Array
Definition: AmrCoreData.cpp:18