ImpactX
ImpactX.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, Chad Mitchell, Ji Qiang
8  * License: BSD-3-Clause-LBNL
9  */
10 #ifndef IMPACT_X_H
11 #define IMPACT_X_H
12 
14 #include "particles/elements/All.H"
15 
17 
18 #include <AMReX_REAL.H>
19 
20 #include <list>
21 #include <memory>
22 
23 
24 namespace impactx
25 {
30  class ImpactX
31  {
32  public:
35  ImpactX ();
36 
37  // removed constructors/assignments
38  ImpactX (ImpactX const&) = delete;
39  ImpactX (ImpactX &&) = delete;
40  void operator= (ImpactX const&) = delete;
41  void operator= (ImpactX &&) = delete;
42 
45  ~ImpactX ();
46 
49  void finalize ();
50 
56  void init_grids ();
57 
64 
71 
82  void
84  amrex::ParticleReal bunch_charge,
86  int npart
87  );
88 
91  void validate ();
92 
97  bool early_param_check ();
98 
101  void evolve ();
102 
107  void init_warning_logger ();
108 
113  std::unique_ptr<initialization::AmrCoreData> amr_data;
114 
120  void ResizeMesh ();
121 
123  std::list<KnownElements> m_lattice;
124 
131  bool initialized ()
132  {
133  return m_grids_initialized;
134  }
135 
136  private:
143  bool m_grids_initialized = false;
144  };
145 
146 } // namespace impactx
147 
148 #endif // IMPACT_X_H
Definition: ImpactX.H:31
bool initialized()
Definition: ImpactX.H:131
std::unique_ptr< initialization::AmrCoreData > amr_data
Definition: ImpactX.H:113
ImpactX(ImpactX const &)=delete
ImpactX()
Definition: ImpactX.cpp:34
void initBeamDistributionFromInputs()
Definition: InitDistribution.cpp:210
~ImpactX()
Definition: ImpactX.cpp:41
bool early_param_check()
Definition: Warnings.cpp:60
void initLatticeElementsFromInputs()
Definition: InitElement.cpp:412
void init_warning_logger()
Definition: Warnings.cpp:24
void ResizeMesh()
Definition: InitMeshRefinement.cpp:76
void init_grids()
Definition: ImpactX.cpp:63
void finalize()
Definition: ImpactX.cpp:46
bool m_grids_initialized
Definition: ImpactX.H:143
void operator=(ImpactX const &)=delete
void validate()
Definition: Validate.cpp:21
void evolve()
Definition: ImpactX.cpp:122
void add_particles(amrex::ParticleReal bunch_charge, distribution::KnownDistributions distr, int npart)
Definition: InitDistribution.cpp:36
ImpactX(ImpactX &&)=delete
std::list< KnownElements > m_lattice
Definition: ImpactX.H:123
std::variant< None, Gaussian, Kurth4D, Kurth6D, KVdist, Thermal, Triangle, Semigaussian, Waterbag > KnownDistributions
Definition: All.H:38
Definition: ImpactX.cpp:33