OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
DumpFields.h
Go to the documentation of this file.
1 //
2 // Class DumpFields
3 // DumpFields dumps the static magnetic field of a Ring in a user-defined grid
4 //
5 // Copyright (c) 2016, Chris Rogers
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_DUMPFIELDS_HH
19 #define OPAL_DUMPFIELDS_HH
20 
21 #include "AbsBeamline/Component.h"
22 #include "AbstractObjects/Action.h"
23 
24 #include <string>
25 #include <unordered_set>
26 
27 namespace interpolation {
28  class ThreeDGrid;
29 }
30 
31 class Component;
32 
54 class DumpFields: public Action {
55 
56 public:
58  enum {
61  DX,
64  DY,
67  DZ,
70  };
71 
73  DumpFields();
74 
76  DumpFields(const std::string& name, DumpFields* parent);
77 
79  virtual ~DumpFields();
80 
86  virtual DumpFields* clone(const std::string& name);
87 
94  virtual void execute();
95 
111  static void writeFields(Component* field);
112 
114  void print(std::ostream& os) const;
115 
116 private:
117  virtual void writeFieldThis(Component* field);
118  virtual void buildGrid();
119 
121 
122  std::string filename_m;
123 
124  static std::unordered_set<DumpFields*> dumpsSet_m;
125 
126  DumpFields(const DumpFields& dump); // disabled
127  DumpFields& operator=(const DumpFields& dump); // disabled
128 };
129 
130 inline std::ostream& operator<<(std::ostream& os, const DumpFields& b) {
131  b.print(os);
132  return os;
133 }
134 
135 #endif // ifdef OPAL_DUMPFIELDS_HH
virtual void writeFieldThis(Component *field)
Definition: DumpFields.cpp:135
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
Definition: Attribute.cpp:169
static void writeFields(Component *field)
Definition: DumpFields.cpp:128
virtual ~DumpFields()
Definition: DumpFields.cpp:77
virtual DumpFields * clone(const std::string &name)
Definition: DumpFields.cpp:82
static std::unordered_set< DumpFields * > dumpsSet_m
Definition: DumpFields.h:124
DumpFields & operator=(const DumpFields &dump)
virtual void buildGrid()
Definition: DumpFields.cpp:103
void print(std::ostream &os) const
Definition: DumpFields.cpp:191
const std::string name
std::string filename_m
Definition: DumpFields.h:122
Interface for a single beam element.
Definition: Component.h:50
virtual void execute()
Definition: DumpFields.cpp:94
The base class for all OPAL actions.
Definition: Action.h:30
interpolation::ThreeDGrid * grid_m
Definition: DumpFields.h:120