|
@@ -1108,23 +1108,23 @@ namespace nmie {
|
|
|
for (int n = 0; n < nmax_; n++) {
|
|
|
int n1 = n + 1;
|
|
|
|
|
|
- denomZeta = m1[l]*Zetaz[n1]*(D1z[n1] - D3z[n1]);
|
|
|
- denomPsi = m1[l]*Psiz[n1]*(D1z[n1] - D3z[n1]);
|
|
|
+ denomZeta = Zetaz[n1]*(D1z[n1] - D3z[n1]);
|
|
|
+ denomPsi = Psiz[n1]*(D1z[n1] - D3z[n1]);
|
|
|
|
|
|
T1 = aln_[l + 1][n]*Zetaz1[n1] - dln_[l + 1][n]*Psiz1[n1];
|
|
|
- T2 = bln_[l + 1][n]*Zetaz1[n1] - cln_[l + 1][n]*Psiz1[n1];
|
|
|
+ T2 = (bln_[l + 1][n]*Zetaz1[n1] - cln_[l + 1][n]*Psiz1[n1])*m[l]/m1[l];
|
|
|
|
|
|
- T3 = D1z1[n1]*dln_[l + 1][n]*Psiz1[n1] - D3z1[n1]*aln_[l + 1][n]*Zetaz1[n1];
|
|
|
+ T3 = (D1z1[n1]*dln_[l + 1][n]*Psiz1[n1] - D3z1[n1]*aln_[l + 1][n]*Zetaz1[n1])*m[l]/m1[l];
|
|
|
T4 = D1z1[n1]*cln_[l + 1][n]*Psiz1[n1] - D3z1[n1]*bln_[l + 1][n]*Zetaz1[n1];
|
|
|
|
|
|
// aln
|
|
|
- aln_[l][n] = (D1z[n1]*m1[l]*T1 + m[l]*T3)/denomZeta;
|
|
|
+ aln_[l][n] = (D1z[n1]*T1 + T3)/denomZeta;
|
|
|
// bln
|
|
|
- bln_[l][n] = (D1z[n1]*m[l]*T2 + m1[l]*T4)/denomZeta;
|
|
|
+ bln_[l][n] = (D1z[n1]*T2 + T4)/denomZeta;
|
|
|
// cln
|
|
|
- cln_[l][n] = (D3z[n1]*m[l]*T2 + m1[l]*T4)/denomPsi;
|
|
|
+ cln_[l][n] = (D3z[n1]*T2 + T4)/denomPsi;
|
|
|
// dln
|
|
|
- dln_[l][n] = (D3z[n1]*m1[l]*T1 + m[l]*T3)/denomPsi;
|
|
|
+ dln_[l][n] = (D3z[n1]*T1 + T3)/denomPsi;
|
|
|
|
|
|
//printf("aln_[%02i, %02i] = %g,%g; bln_[%02i, %02i] = %g,%g; cln_[%02i, %02i] = %g,%g; dln_[%02i, %02i] = %g,%g\n", l, n, real(aln_[l][n]), imag(aln_[l][n]), l, n, real(bln_[l][n]), imag(bln_[l][n]), l, n, real(cln_[l][n]), imag(cln_[l][n]), l, n, real(dln_[l][n]), imag(dln_[l][n]));
|
|
|
} // end of all n
|
|
@@ -1132,12 +1132,14 @@ namespace nmie {
|
|
|
|
|
|
// Check the result and change aln_[0][n] and aln_[0][n] for exact zero
|
|
|
for (int n = 0; n < nmax_; ++n) {
|
|
|
-// printf("n=%d, aln_=%g,%g, bln_=%g,%g \n", n, real(aln_[0][n]), imag(aln_[0][n]),
|
|
|
-// real(bln_[0][n]), imag(bln_[0][n]));
|
|
|
- if (std::abs(aln_[0][n]) < 1e-10) aln_[0][n] = 0.0;
|
|
|
- else throw std::invalid_argument("Unstable calculation of aln_[0][n]!");
|
|
|
- if (std::abs(bln_[0][n]) < 1e-10) bln_[0][n] = 0.0;
|
|
|
- else throw std::invalid_argument("Unstable calculation of bln_[0][n]!");
|
|
|
+ aln_[0][n] = 0.0;
|
|
|
+ bln_[0][n] = 0.0;
|
|
|
+ //printf("n=%d, aln_=%g,%g, bln_=%g,%g \n", n, real(aln_[0][n]), imag(aln_[0][n]),
|
|
|
+ // real(bln_[0][n]), imag(bln_[0][n]));
|
|
|
+ //if (std::abs(aln_[0][n]) < 1e-10) aln_[0][n] = 0.0;
|
|
|
+ //else throw std::invalid_argument("Unstable calculation of aln_[0][n]!");
|
|
|
+ //if (std::abs(bln_[0][n]) < 1e-10) bln_[0][n] = 0.0;
|
|
|
+ //else throw std::invalid_argument("Unstable calculation of bln_[0][n]!");
|
|
|
}
|
|
|
|
|
|
isExpCoeffsCalc_ = true;
|