OPALX (Object Oriented Parallel Accelerator Library for Exascal) MINIorX
OPALX
TrackRun.h
Go to the documentation of this file.
1//
2// Class TrackRun
3// The RUN command.
4//
5// Copyright (c) 200x - 2022, Paul Scherrer Institut, Villigen PSI, Switzerland
6// All rights reserved
7//
8// This file is part of OPAL.
9//
10// OPAL is free software: you can redistribute it and/or modify
11// it under the terms of the GNU General Public License as published by
12// the Free Software Foundation, either version 3 of the License, or
13// (at your option) any later version.
14//
15// You should have received a copy of the GNU General Public License
16// along with OPAL. If not, see <https://www.gnu.org/licenses/>.
17//
18#ifndef OPAL_TrackRun_HH
19#define OPAL_TrackRun_HH
20
21#include "OPALTypes.h"
22
24#include "PartBunch/PartBunch.h"
26
28
29#include <boost/bimap.hpp>
30
31#include <string>
32#include <vector>
33
34class Beam;
35class OpalData;
36class DataSink;
37class Distribution;
38class H5PartWrapper;
39class Inform;
40class Tracker;
41
42class TrackRun : public Action {
43public:
45 TrackRun();
46
47 virtual ~TrackRun();
48
50 virtual TrackRun* clone(const std::string& name);
51
53 virtual void execute();
54
55 Inform& print(Inform& os) const;
56
57private:
58 enum class RunMethod : unsigned short { NONE, PARALLEL };
59
60 // Not implemented.
62 void operator=(const TrackRun&);
63
64 // Clone constructor.
65 TrackRun(const std::string& name, TrackRun* parent);
66
67 void setRunMethod();
68 std::string getRunMethodName() const;
69
70 void initDataSink();
71
73
74 double setupDistribution(Beam* beam);
75
77
78 std::shared_ptr<Distribution> dist_m;
79
80 std::vector<Distribution*> distrs_m;
81
82 std::shared_ptr<SamplingBase> sampler_m;
83
84 std::shared_ptr<FieldSolverCmd> fs_m;
85
87
89
91
92 /*
93
94 this is the ippl bunch
95 */
96
98 std::shared_ptr<bunch_type> bunch_m;
99
101
102 static const std::string defaultDistribution_m;
103
105 static const boost::bimap<RunMethod, std::string> stringMethod_s;
106
107 // macro mass / charge for simulation particles
110
111
112};
113
114inline Inform& operator<<(Inform& os, const TrackRun& b) {
115 return b.print(os);
116}
117
118#endif // OPAL_TrackRun_HH
Inform & operator<<(Inform &os, const TrackRun &b)
Definition TrackRun.h:114
PartBunch< PLayout_t< double, 3 >, double, 3 > PartBunch_t
Action(int size, const char *name, const char *help)
Constructor for exemplars.
Definition Action.cpp:54
The global OPAL structure.
Definition OpalData.h:45
Definition Beam.h:31
DataSink * ds_m
Definition TrackRun.h:86
RunMethod method_m
Definition TrackRun.h:104
void setupBoundaryGeometry()
Definition TrackRun.cpp:486
std::shared_ptr< SamplingBase > sampler_m
Definition TrackRun.h:82
H5PartWrapper * phaseSpaceSink_m
Definition TrackRun.h:88
virtual void execute()
Execute the command.
Definition TrackRun.cpp:163
std::vector< Distribution * > distrs_m
Definition TrackRun.h:80
void initDataSink()
Definition TrackRun.cpp:459
bool isFollowupTrack_m
Definition TrackRun.h:100
void setRunMethod()
Definition TrackRun.cpp:409
virtual ~TrackRun()
Definition TrackRun.cpp:155
double setupDistribution(Beam *beam)
std::shared_ptr< FieldSolverCmd > fs_m
Definition TrackRun.h:84
void operator=(const TrackRun &)
std::shared_ptr< Distribution > dist_m
Definition TrackRun.h:78
TrackRun(const TrackRun &)
TrackRun()
Exemplar constructor.
Definition TrackRun.cpp:83
double macromass_m
Definition TrackRun.h:108
OpalData * opal_m
Definition TrackRun.h:90
Tracker * itsTracker_m
Definition TrackRun.h:76
std::shared_ptr< bunch_type > bunch_m
Definition TrackRun.h:98
virtual TrackRun * clone(const std::string &name)
Make clone.
Definition TrackRun.cpp:159
static const std::string defaultDistribution_m
Definition TrackRun.h:102
std::string getRunMethodName() const
Definition TrackRun.cpp:421
double macrocharge_m
Definition TrackRun.h:109
Inform & print(Inform &os) const
Definition TrackRun.cpp:499
static const boost::bimap< RunMethod, std::string > stringMethod_s
Definition TrackRun.h:105
PartBunch_t bunch_type
Definition TrackRun.h:97