14 for (
int i=0;
i<3;
i++ ) {
30 for (
int i=0; i<3; i++ ) input >>
m_n[
i];
32 for (
int i=0; i<3; i++ ) input >>
m_d[
i];
35 if (
m_n[0] == 0 )
return;
37 const double meter(1000.);
38 for (
int i=0;
i<3;
i++ ) {
45 for (
int i=0;
i<3;
i++ )
m_B[
i].resize(nxyz);
49 for (
int k=0;
k<nxyz;
k++ ) {
53 const double tesla(0.001);
54 for (
int i=0;
i<3;
i++ ) {
60 for (
int i=0;
i<3;
i++ ) {
64 int ixyz = j[0] +
m_n[0]*(j[1] +
m_n[1]*j[2]);
65 for (
int i=0;
i<3;
i++ ) {
70 for (
int i=0;
i<3;
i++ ) {
80 B[0] =
B[1] =
B[2] = 0.0;
81 if ( deriv !=
nullptr ) {
82 for (
int j = 0; j < 9; j++ ) deriv[j] = 0.0;
91 for (
int i=0;
i<3;
i++ ) {
99 ixyz[0] = j[0] +
m_n[0]*(j[1] +
m_n[1]*j[2]);
100 ixyz[1] = ixyz[0] + 1;
101 ixyz[2] = ixyz[0] +
m_n[0];
102 ixyz[3] = ixyz[2] + 1;
103 ixyz[4] = ixyz[0] +
m_n[0]*
m_n[1];
104 ixyz[5] = ixyz[4] + 1;
105 ixyz[6] = ixyz[4] +
m_n[0];
106 ixyz[7] = ixyz[6] + 1;
108 for (
int i=0;
i<3;
i++ ) {
109 B[
i] =
g[2]*(
g[1]*(
g[0]*
m_B[
i][ixyz[0]] +
f[0]*
m_B[
i][ixyz[1]] ) +
110 f[1]*(
g[0]*
m_B[
i][ixyz[2]] +
f[0]*
m_B[
i][ixyz[3]] ) ) +
111 f[2]*(
g[1]*(
g[0]*
m_B[
i][ixyz[4]] +
f[0]*
m_B[
i][ixyz[5]] ) +
112 f[1]*(
g[0]*
m_B[
i][ixyz[6]] +
f[0]*
m_B[
i][ixyz[7]] ) );
115 if ( deriv !=
nullptr ) {
116 for (
int i=0;
i<3;
i++ ) {
117 deriv[
i*3 ] = (
g[2]*(
g[1]*(
m_B[
i][ixyz[1]] -
m_B[
i][ixyz[0]] ) +
118 f[1]*(
m_B[
i][ixyz[3]] -
m_B[
i][ixyz[2]] ) ) +
119 f[2]*(
g[1]*(
m_B[
i][ixyz[5]] -
m_B[
i][ixyz[4]] ) +
120 f[1]*(
m_B[
i][ixyz[7]] -
m_B[
i][ixyz[6]] ) ) ) * invunit[0];
121 deriv[
i*3+1] = (
g[2]*(
g[0]*(
m_B[
i][ixyz[2]] -
m_B[
i][ixyz[0]] ) +
122 f[0]*(
m_B[
i][ixyz[3]] -
m_B[
i][ixyz[1]] ) ) +
123 f[2]*(
g[0]*(
m_B[
i][ixyz[6]] -
m_B[
i][ixyz[4]] ) +
124 f[0]*(
m_B[
i][ixyz[7]] -
m_B[
i][ixyz[5]] ) ) ) * invunit[1];
125 deriv[
i*3+2] = (
g[1]*(
g[0]*(
m_B[
i][ixyz[4]] -
m_B[
i][ixyz[0]] ) +
126 f[0]*(
m_B[
i][ixyz[5]] -
m_B[
i][ixyz[1]] ) ) +
127 f[1]*(
g[0]*(
m_B[
i][ixyz[6]] -
m_B[
i][ixyz[2]] ) +
128 f[0]*(
m_B[
i][ixyz[7]] -
m_B[
i][ixyz[3]] ) ) ) * invunit[2];
137 for (
int i=0;
i<3;
i++ ) {