36 "The \"DUMPFIELDS\" statement dumps a field map to a user-defined "
37 "field file, for checking that fields are read in correctly "
38 "from disk. The fields are written out on a Cartesian grid.") {
41 (
"FILE_NAME",
"Name of the file to which field data is dumped");
44 (
"X_START",
"Start point in the grid in x [m]");
47 (
"DX",
"Grid step size in x [m]");
50 (
"X_STEPS",
"Number of steps in x");
53 (
"Y_START",
"Start point in the grid in y [m]");
56 (
"DY",
"Grid step size in y [m]");
59 (
"Y_STEPS",
"Number of steps in y");
62 (
"Z_START",
"Start point in the grid in z [m]");
65 (
"DZ",
"Grid step size in z [m]");
68 (
"Z_STEPS",
"Number of steps in z");
131 (*it)->writeFieldThis(field);
138 "The grid was nullptr; there was a problem with the DumpFields initialisation.");
140 if (field ==
nullptr) {
142 "The field to be written was nullptr.");
148 if (std::filesystem::path(
filename_m).is_absolute() ==
true) {
160 std::ofstream fout(fname.c_str(), std::ofstream::out);
163 "Failed to open DumpFields file " +
filename_m);
167 fout << 1 <<
" x [m]\n";
168 fout << 2 <<
" y [m]\n";
169 fout << 3 <<
" z [m]\n";
170 fout << 4 <<
" Bx [kGauss]\n";
171 fout << 5 <<
" By [kGauss]\n";
172 fout << 6 <<
" Bz [kGauss]\n";
179 it.getPosition(&point[0]);
180 field->
apply(point, centroid, time, E, B);
181 fout << point[0] <<
" " << point[1] <<
" " << point[2] <<
" ";
182 fout << B[0] <<
" " << B[1] <<
" " << B[2] <<
"\n";
186 "Something went wrong during writing " +
filename_m);
192 os <<
"* ************* D U M P F I E L D S *********************************************** " <<
std::endl;
203 os <<
"* ********************************************************************************** " <<
std::endl;
PartBunchBase< T, Dim >::ConstIterator end(PartBunchBase< T, Dim > const &bunch)
Inform & endl(Inform &inf)
double getReal(const Attribute &attr)
Return real value.
Attribute makeReal(const std::string &name, const std::string &help)
Make real attribute.
std::string getString(const Attribute &attr)
Get string value.
Attribute makeString(const std::string &name, const std::string &help)
Make string attribute.
std::string::iterator iterator
std::string combineFilePath(std::initializer_list< std::string > ilist)
void checkInt(double real, std::string name, double tolerance)
The base class for all OPAL actions.
void registerOwnership(const AttributeHandler::OwnerType &itsClass) const
std::vector< Attribute > itsAttr
The object attributes.
static OpalData * getInstance()
std::string getAuxiliaryOutputDirectory() const
get the name of the the additional data directory
DumpFields dumps the static magnetic field of a Ring in a user-defined grid.
virtual void writeFieldThis(Component *field)
void print(std::ostream &os) const
Print the attributes of DumpFields to standard out.
static void writeFields(Component *field)
Write the fields for all defined DumpFields objects.
static std::unordered_set< DumpFields * > dumpsSet_m
interpolation::ThreeDGrid * grid_m
virtual void execute()
Builds the grid but does not write the field map.
virtual DumpFields * clone(const std::string &name)
Make a clone (overloadable copy-constructor).
virtual ~DumpFields()
Destructor deletes grid_m and if in the dumps set, take it out.
Interface for a single beam element.
virtual bool apply(const size_t &i, const double &t, Vector_t &E, Vector_t &B)
Used to loop over some, or all, points in the mesh, as in stl Enables e.g.
int toInteger() const
Return an integer representation of the iterator.
ThreeDGrid holds grid information for a rectangular grid used in e.g.
Mesh::Iterator begin() const
Return an iterator pointing at the first element in the ThreeDGrid.
Mesh::Iterator end() const
Return an iterator pointing at the last+1 element in the ThreeDGrid.
ThreeDGrid * clone()
Deep copy the grid.
The base class for all OPAL exceptions.