ImpactX
Loading...
Searching...
No Matches
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
13#include "elements/All.H"
17
18#include <AMReX_REAL.H>
19
20#include <functional>
21#include <list>
22#include <memory>
23#include <string>
24#include <unordered_map>
25
26
27namespace impactx
28{
33 class ImpactX
34 {
35 public:
38 ImpactX ();
39
40 // removed constructors/assignments
41 ImpactX (ImpactX const&) = delete;
42 ImpactX (ImpactX &&) = delete;
43 void operator= (ImpactX const&) = delete;
44 void operator= (ImpactX &&) = delete;
45
48 ~ImpactX ();
49
52 void finalize ();
53
56 void finalize_elements ();
57
63 void init_grids ();
64
71
78
89 void
91 amrex::ParticleReal bunch_charge,
93 amrex::Long npart
94 );
95
98 void validate ();
99
104 bool early_param_check ();
105
108 void evolve ();
109
112 void track_particles ();
113
118 void track_envelope ();
119
122 void track_reference (RefPart & ref);
123
128 void init_warning_logger ();
129
134 std::unique_ptr<initialization::AmrCoreData> amr_data;
135
141 void ResizeMesh ();
142
144 std::list<elements::KnownElements> m_lattice;
145
153 {
154 return m_grids_initialized;
155 }
156
165 void call_hook (std::string const & name);
166
167 std::unordered_map<
168 std::string,
169 std::function<void(ImpactX *)>
171
175
176 private:
184 };
185
186} // namespace impactx
187
188#endif // IMPACT_X_H
Definition ImpactX.H:34
bool initialized()
Definition ImpactX.H:152
std::unique_ptr< initialization::AmrCoreData > amr_data
Definition ImpactX.H:134
void track_envelope()
Definition envelope.cpp:34
ImpactX(ImpactX const &)=delete
std::list< elements::KnownElements > m_lattice
Definition ImpactX.H:144
void track_particles()
Definition particles.cpp:32
TrackingState m_tracking_state
hooks that users can call
Definition ImpactX.H:174
ImpactX()
Definition ImpactX.cpp:30
void add_particles(amrex::ParticleReal bunch_charge, distribution::KnownDistributions distr, amrex::Long npart)
Definition InitDistribution.cpp:295
void initBeamDistributionFromInputs()
Definition InitDistribution.cpp:523
~ImpactX()
Definition ImpactX.cpp:37
bool early_param_check()
Definition Warnings.cpp:61
void initLatticeElementsFromInputs()
Definition InitElement.cpp:691
std::unordered_map< std::string, std::function< void(ImpactX *)> > m_hook
Definition ImpactX.H:170
void init_warning_logger()
Definition Warnings.cpp:25
void ResizeMesh()
Definition InitMeshRefinement.cpp:81
void init_grids()
Definition ImpactX.cpp:73
void track_reference(RefPart &ref)
Definition reference.cpp:30
void finalize()
Definition ImpactX.cpp:42
bool m_grids_initialized
Definition ImpactX.H:183
void operator=(ImpactX const &)=delete
void finalize_elements()
Definition ImpactX.cpp:62
void call_hook(std::string const &name)
Definition Hooks.cpp:17
void validate()
Definition Validate.cpp:22
void evolve()
Definition ImpactX.cpp:126
ImpactX(ImpactX &&)=delete
std::variant< Empty, Gaussian, Kurth4D, Kurth6D, KVdist, Thermal, Triangle, Semigaussian, Waterbag > KnownDistributions
Definition All.H:28
Definition CovarianceMatrixMath.H:25
Definition ReferenceParticle.H:31
Definition TrackingState.H:24