20 FieldstrengthEz_m(NULL),
21 FieldstrengthEx_m(NULL),
22 FieldstrengthEy_m(NULL),
23 FieldstrengthBz_m(NULL),
24 FieldstrengthBx_m(NULL),
25 FieldstrengthBy_m(NULL)
28 std::string tmpString;
35 bool parsing_passed =
true;
37 parsing_passed = interpreteLine<std::string>(file, tmpString);
39 parsing_passed = interpreteLine<std::string, std::string>(file, tmpString, tmpString);
42 if (tmpString !=
"TRUE" &&
45 "The second string on the first line of 3D field "
46 "maps has to be either TRUE or FALSE");
51 parsing_passed = parsing_passed &&
53 parsing_passed = parsing_passed &&
55 parsing_passed = parsing_passed &&
57 parsing_passed = parsing_passed &&
61 parsing_passed = parsing_passed &&
62 interpreteLine<double>(file,
71 parsing_passed = parsing_passed &&
78 zend_m = zbegin_m - 1e-3;
80 "An error occured when reading the fieldmap '" +
Filename_m +
"'");
116 std::string tmpString;
136 interpreteLine<double>(in,
167 ii = index_x * deltaX + index_y * deltaY;
178 for(
unsigned long i = 0; i < totalSize; ++ i) {
192 std::vector<Vector_t> ef(num_gridpz_m *
num_gridpy_m * num_gridpx_m, 0.0);
193 std::vector<Vector_t> bf(ef);
196 const unsigned long index_z = k;
198 const unsigned long index_y = j * deltaY;
200 const unsigned long index = i * deltaX + index_y + index_z;
251 const unsigned int index_z = (int)
floor(
R(2) /
hz_m);
252 const double lever_z =
R(2) /
hz_m - index_z;
263 const unsigned int deltaZ = 1;
265 const unsigned long index1 = index_x * deltaX + index_y * deltaY + index_z * deltaZ;
267 E(0) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEx_m[index1 ]
268 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaX ]
269 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaY ]
270 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEx_m[index1 + deltaX + deltaY ]
271 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEx_m[index1 + deltaZ]
272 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEx_m[index1 + deltaX + deltaZ]
273 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEx_m[index1 + deltaY + deltaZ]
274 + lever_x * lever_y * lever_z *
FieldstrengthEx_m[index1 + deltaX + deltaY + deltaZ];
276 E(1) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEy_m[index1 ]
277 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaX ]
278 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaY ]
279 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEy_m[index1 + deltaX + deltaY ]
280 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEy_m[index1 + deltaZ]
281 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEy_m[index1 + deltaX + deltaZ]
282 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEy_m[index1 + deltaY + deltaZ]
283 + lever_x * lever_y * lever_z *
FieldstrengthEy_m[index1 + deltaX + deltaY + deltaZ];
285 E(2) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEz_m[index1 ]
286 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaX ]
287 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaY ]
288 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthEz_m[index1 + deltaX + deltaY ]
289 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthEz_m[index1 + deltaZ]
290 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthEz_m[index1 + deltaX + deltaZ]
291 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthEz_m[index1 + deltaY + deltaZ]
292 + lever_x * lever_y * lever_z *
FieldstrengthEz_m[index1 + deltaX + deltaY + deltaZ];
294 B(0) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBx_m[index1 ]
295 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaX ]
296 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaY ]
297 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBx_m[index1 + deltaX + deltaY ]
298 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBx_m[index1 + deltaZ]
299 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBx_m[index1 + deltaX + deltaZ]
300 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBx_m[index1 + deltaY + deltaZ]
301 + lever_x * lever_y * lever_z *
FieldstrengthBx_m[index1 + deltaX + deltaY + deltaZ];
303 B(1) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBy_m[index1 ]
304 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaX ]
305 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaY ]
306 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBy_m[index1 + deltaX + deltaY ]
307 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBy_m[index1 + deltaZ]
308 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBy_m[index1 + deltaX + deltaZ]
309 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBy_m[index1 + deltaY + deltaZ]
310 + lever_x * lever_y * lever_z *
FieldstrengthBy_m[index1 + deltaX + deltaY + deltaZ];
312 B(2) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBz_m[index1 ]
313 + lever_x * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaX ]
314 + (1.0 - lever_x) * lever_y * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaY ]
315 + lever_x * lever_y * (1.0 - lever_z) *
FieldstrengthBz_m[index1 + deltaX + deltaY ]
316 + (1.0 - lever_x) * (1.0 - lever_y) * lever_z *
FieldstrengthBz_m[index1 + deltaZ]
317 + lever_x * (1.0 - lever_y) * lever_z *
FieldstrengthBz_m[index1 + deltaX + deltaZ]
318 + (1.0 - lever_x) * lever_y * lever_z *
FieldstrengthBz_m[index1 + deltaY + deltaZ]
319 + lever_x * lever_y * lever_z *
FieldstrengthBz_m[index1 + deltaX + deltaY + deltaZ];
370 F[i].first =
hz_m * i;
375 if (opal->isOptimizerRun())
return;
381 out << std::setw(16) << std::setprecision(8) << F[i].first
382 << std::setw(16) << std::setprecision(8) << E(0)
383 << std::setw(16) << std::setprecision(8) << E(1)
384 << std::setw(16) << std::setprecision(8) << E(2)
385 << std::setw(16) << std::setprecision(8) << B(0)
386 << std::setw(16) << std::setprecision(8) << B(1)
387 << std::setw(16) << std::setprecision(8) << B(2) <<
"\n";
virtual void getFieldDimensions(double &zBegin, double &zEnd, double &rBegin, double &rEnd) const
virtual void setFrequency(double freq)
double * FieldstrengthBx_m
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
constexpr double e
The value of .
unsigned int num_gridpx_m
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &F)
constexpr double two_pi
The value of .
PETE_TUTree< FnCeil, typename T::PETE_Expr_t > ceil(const PETE_Expr< T > &l)
std::string toUpper(const std::string &str)
void disableFieldmapWarning()
static std::string typeset_msg(const std::string &msg, const std::string &title)
virtual void getInfo(Inform *msg)
unsigned int num_gridpz_m
double * FieldstrengthEy_m
static OpalData * getInstance()
constexpr double mu_0
The permeability of vacuum in Vs/Am.
double * FieldstrengthBy_m
bool interpreteEOF(std::ifstream &in)
virtual double getFrequency() const
Vektor< double, 3 > Vector_t
unsigned int num_gridpy_m
double * FieldstrengthEz_m
void getLine(std::ifstream &in, std::string &buffer)
Inform & level3(Inform &inf)
double * FieldstrengthBz_m
double * FieldstrengthEx_m
virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
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)
FM3DDynamic(std::string aFilename)
virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
Inform & endl(Inform &inf)