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
90 void
92 amrex::ParticleReal bunch_charge,
94 amrex::Long npart,
95 std::optional<distribution::SpinvMF> spin_distr = std::nullopt
96 );
97
100 void validate ();
101
106 bool early_param_check ();
107
110 void evolve ();
111
114 void track_particles ();
115
120 void track_envelope ();
121
124 void track_reference (RefPart & ref);
125
130 void init_warning_logger ();
131
136 std::unique_ptr<initialization::AmrCoreData> amr_data;
137
143 void ResizeMesh ();
144
146 std::list<elements::KnownElements> m_lattice;
147
155 {
156 return m_grids_initialized;
157 }
158
167 void call_hook (std::string const & name);
168
169 std::unordered_map<
170 std::string,
171 std::function<void(ImpactX *)>
173
177
178 private:
186 };
187
188} // namespace impactx
189
190#endif // IMPACT_X_H
Definition ImpactX.H:34
bool initialized()
Definition ImpactX.H:154
std::unique_ptr< initialization::AmrCoreData > amr_data
Definition ImpactX.H:136
void track_envelope()
Definition envelope.cpp:34
ImpactX(ImpactX const &)=delete
void add_particles(amrex::ParticleReal bunch_charge, distribution::KnownDistributions distr, amrex::Long npart, std::optional< distribution::SpinvMF > spin_distr=std::nullopt)
Definition InitDistribution.cpp:279
std::list< elements::KnownElements > m_lattice
Definition ImpactX.H:146
void track_particles()
Definition particles.cpp:33
TrackingState m_tracking_state
hooks that users can call
Definition ImpactX.H:176
ImpactX()
Definition ImpactX.cpp:31
void initBeamDistributionFromInputs()
Definition InitDistribution.cpp:535
~ImpactX()
Definition ImpactX.cpp:38
bool early_param_check()
Definition Warnings.cpp:61
void initLatticeElementsFromInputs()
Definition InitElement.cpp:726
std::unordered_map< std::string, std::function< void(ImpactX *)> > m_hook
Definition ImpactX.H:172
void init_warning_logger()
Definition Warnings.cpp:25
void ResizeMesh()
Definition InitMeshRefinement.cpp:81
void init_grids()
Definition ImpactX.cpp:74
void track_reference(RefPart &ref)
Definition reference.cpp:30
void finalize()
Definition ImpactX.cpp:43
bool m_grids_initialized
Definition ImpactX.H:185
void operator=(ImpactX const &)=delete
void finalize_elements()
Definition ImpactX.cpp:63
void call_hook(std::string const &name)
Definition Hooks.cpp:17
void validate()
Definition Validate.cpp:22
void evolve()
Definition ImpactX.cpp:127
ImpactX(ImpactX &&)=delete
amrex_particle_real ParticleReal
amrex_long Long
std::variant< Empty, Gaussian, Kurth4D, Kurth6D, KVdist, Thermal, Triangle, Semigaussian, Waterbag > KnownDistributions
Definition All.H:30
Definition CovarianceMatrixMath.H:25
Definition ReferenceParticle.H:33
Definition TrackingState.H:24