14 const double x =
xyz[0];
15 const double y =
xyz[1];
16 const double z =
xyz[2];
19 const double gz = 1.0 - fz;
21 const double gr = 1.0 - fr;
24 for (
int i = 0; i < 2; ++i) {
25 const double* field =
m_field[i];
26 Bzr[i] = gz * (
gr * field[0] + fr * field[1]) +
27 fz * (
gr * field[2] + fr * field[3]);
36 const double c(
x * invr);
37 const double s(
y * invr);
44 std::array<double, 2> dBdz{};
45 std::array<double, 2> dBdr{};
46 for (
int j = 0; j < 2; ++j) {
47 const double* field =
m_field[j];
49 m_invz * (
gr * (field[2] - field[0]) + fr * (field[3] - field[1]));
51 m_invr * (gz * (field[1] - field[0]) + fz * (field[3] - field[2]));
54 const double cc = c * c;
55 const double cs = c * s;
56 const double ss = s * s;
57 const double sinvr = s * invr;
58 const double cinvr = c * invr;
59 deriv[0] = cc * dBdr[1] + sinvr * B[1];
60 deriv[1] = cs * dBdr[1] - cinvr * B[1];
61 deriv[2] = c * dBdz[1];
62 deriv[3] = cs * dBdr[1] - sinvr * B[0];
63 deriv[4] =
ss * dBdr[1] + cinvr * B[0];
64 deriv[5] = s * dBdz[1];
65 deriv[6] = c * dBdr[0];
66 deriv[7] = s * dBdr[0];