17 FieldstrengthEz_m(nullptr),
18 FieldstrengthEx_m(nullptr),
19 FieldstrengthEy_m(nullptr),
20 FieldstrengthBz_m(nullptr),
21 FieldstrengthBx_m(nullptr),
22 FieldstrengthBy_m(nullptr)
25 std::string tmpString;
32 bool parsing_passed =
true;
34 parsing_passed = interpretLine<std::string>(file, tmpString);
36 parsing_passed = interpretLine<std::string, std::string>(file, tmpString, tmpString);
39 if (tmpString !=
"TRUE" &&
42 "The second string on the first line of 3D field "
43 "maps has to be either TRUE or FALSE");
48 parsing_passed = parsing_passed &&
50 parsing_passed = parsing_passed &&
52 parsing_passed = parsing_passed &&
54 parsing_passed = parsing_passed &&
58 parsing_passed = parsing_passed &&
59 interpretLine<double>(file,
68 parsing_passed = parsing_passed &&
75 zend_m = zbegin_m - 1e-3;
77 "An error occured when reading the fieldmap '" +
Filename_m +
"'");
118 std::string tmpString;
138 interpretLine<double>(in,
169 ii = index_x * deltaX + index_y * deltaY;
180 for(
unsigned long i = 0; i < totalSize; ++ i) {
194 std::vector<Vector_t> ef(num_gridpz_m *
num_gridpy_m * num_gridpx_m, 0.0);
195 std::vector<Vector_t> bf(ef);
198 const unsigned long index_z = k;
200 const unsigned long index_y = j * deltaY;
202 const unsigned long index = i * deltaX + index_y + index_z;
262 const unsigned int deltaZ = 1;
264 const unsigned long index1 = index_x * deltaX + index_y * deltaY + index_z * deltaZ;
266 E(0) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEx_m[index1 ]
267 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaX ]
268 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaY ]
269 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaX + deltaY ]
270 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEx_m[index1 + deltaZ]
271 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEx_m[index1 + deltaX + deltaZ]
272 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEx_m[index1 + deltaY + deltaZ]
273 + lever_x * lever_y * lever_z *
FieldstrengthEx_m[index1 + deltaX + deltaY + deltaZ];
275 E(1) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEy_m[index1 ]
276 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaX ]
277 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaY ]
278 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaX + deltaY ]
279 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEy_m[index1 + deltaZ]
280 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEy_m[index1 + deltaX + deltaZ]
281 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEy_m[index1 + deltaY + deltaZ]
282 + lever_x * lever_y * lever_z *
FieldstrengthEy_m[index1 + deltaX + deltaY + deltaZ];
284 E(2) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEz_m[index1 ]
285 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaX ]
286 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaY ]
287 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaX + deltaY ]
288 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEz_m[index1 + deltaZ]
289 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEz_m[index1 + deltaX + deltaZ]
290 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEz_m[index1 + deltaY + deltaZ]
291 + lever_x * lever_y * lever_z *
FieldstrengthEz_m[index1 + deltaX + deltaY + deltaZ];
293 B(0) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBx_m[index1 ]
294 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaX ]
295 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaY ]
296 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaX + deltaY ]
297 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBx_m[index1 + deltaZ]
298 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBx_m[index1 + deltaX + deltaZ]
299 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBx_m[index1 + deltaY + deltaZ]
300 + lever_x * lever_y * lever_z *
FieldstrengthBx_m[index1 + deltaX + deltaY + deltaZ];
302 B(1) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBy_m[index1 ]
303 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaX ]
304 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaY ]
305 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaX + deltaY ]
306 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBy_m[index1 + deltaZ]
307 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBy_m[index1 + deltaX + deltaZ]
308 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBy_m[index1 + deltaY + deltaZ]
309 + lever_x * lever_y * lever_z *
FieldstrengthBy_m[index1 + deltaX + deltaY + deltaZ];
311 B(2) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBz_m[index1 ]
312 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaX ]
313 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaY ]
314 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaX + deltaY ]
315 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBz_m[index1 + deltaZ]
316 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBz_m[index1 + deltaX + deltaZ]
317 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBz_m[index1 + deltaY + deltaZ]
318 + lever_x * lever_y * lever_z *
FieldstrengthBz_m[index1 + deltaX + deltaY + deltaZ];
367 F[i].first =
hz_m * i;
372 if (opal->isOptimizerRun())
return;
375 opal->getAuxiliaryOutputDirectory(),
378 std::ofstream out(fname);
382 out << std::setw(16) << std::setprecision(8) << F[i].first
383 << std::setw(16) << std::setprecision(8) << E(0)
384 << std::setw(16) << std::setprecision(8) << E(1)
385 << std::setw(16) << std::setprecision(8) << E(2)
386 << std::setw(16) << std::setprecision(8) << B(0)
387 << std::setw(16) << std::setprecision(8) << B(1)
388 << std::setw(16) << std::setprecision(8) << B(2) <<
"\n";
double * FieldstrengthBy_m
static OpalData * getInstance()
virtual void getFieldDimensions(double &zBegin, double &zEnd) const
std::shared_ptr< _FM3DDynamic > FM3DDynamic
constexpr double MVpm2Vpm
constexpr double two_pi
The value of .
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
double * FieldstrengthEy_m
unsigned int num_gridpz_m
Vektor< double, 3 > Vector_t
double * FieldstrengthEz_m
static std::string typeset_msg(const std::string &msg, const std::string &title)
virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const
std::string toUpper(const std::string &str)
Inform & endl(Inform &inf)
bool interpreteEOF(std::ifstream &in)
virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
virtual void setFrequency(double freq)
void write3DField(unsigned int nx, unsigned int ny, unsigned int nz, const std::pair< double, double > &xrange, const std::pair< double, double > &yrange, const std::pair< double, double > &zrange, const std::vector< Vector_t > &ef, const std::vector< Vector_t > &bf)
constexpr double mu_0
The permeability of vacuum in Vs/Am.
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &F)
unsigned int num_gridpx_m
unsigned int num_gridpy_m
double * FieldstrengthBx_m
void disableFieldmapWarning()
static FM3DDynamic create(const std::string &filename)
virtual void getInfo(Inform *msg)
std::string combineFilePath(std::initializer_list< std::string > ilist)
void getLine(std::ifstream &in, std::string &buffer)
Inform & level3(Inform &inf)
constexpr double e
The value of .
PETE_TUTree< FnCeil, typename T::PETE_Expr_t > ceil(const PETE_Expr< T > &l)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
double * FieldstrengthBz_m
_FM3DDynamic(const std::string &filename)
double * FieldstrengthEx_m
virtual double getFrequency() const