@@ -29,11 +29,11 @@ MieSimulation::~MieSimulation(void)
2929void MieSimulation::FarFieldSolutionForRealRefIndex (std::complex <double > *cS1,std::complex <double > *cS2,
3030 double *qSca,double xPara,double relRef,double mu)
3131{
32- double xstop;
33- double mx;
32+ double xstop;
3433 double dPCost0, dPCost1;
3534 double fac0, fac1, fac2, fac3, fac4;
36- double j_x0, j_x1, y_x0, y_x1;
35+ double j_x0, j_x1, y_x0, y_x1;
36+ double mx;
3737 double dervDn1, dervDn2;
3838 double sumQsca;
3939 std::complex <double > an, bn;
@@ -61,7 +61,7 @@ void MieSimulation::FarFieldSolutionForRealRefIndex(std::complex<double> *cS1,st
6161
6262 Dn_mx[nmx-1 ]=0 ;
6363 for (int N = nmx-1 ; N>0 ; N--)
64- Dn_mx[N-1 ] = (N /mx)-(1.0 /(Dn_mx[N]+N /mx));
64+ Dn_mx[N-1 ] = (double (N) /mx)-(1.0 /(Dn_mx[N]+double (N) /mx));
6565
6666 // Legendre Polynomials
6767 dPCost0 = 0.0 ; // pi0
@@ -109,8 +109,8 @@ void MieSimulation::FarFieldSolutionForRealRefIndex(std::complex<double> *cS1,st
109109
110110 // Calculate an and bn (According to Bohren and Huffman book)
111111 // Remark: GouGouesbet uses size parameter as "ka" instead of "kx"
112- dervDn1 = Dn_mx[n]/m +n/x ;
113- dervDn2 = m*Dn_mx[n] +n/x ;
112+ dervDn1 = ( Dn_mx[n]/m) + ( double (n)/x) ;
113+ dervDn2 = ( m*Dn_mx[n]) + ( double (n)/x) ;
114114
115115 an = (dervDn1*j_x[n]-j_x[n-1 ])/ (dervDn1*xi_x[n]-xi_x[n-1 ]);
116116 bn = (dervDn2*j_x[n]-j_x[n-1 ])/ (dervDn2*xi_x[n]-xi_x[n-1 ]);
@@ -145,22 +145,14 @@ void MieSimulation::FarFieldSolutionForRealRefIndex(std::complex<double> *cS1,st
145145void MieSimulation::FarFieldSolutionForComplexRefIndex (std::complex <double > *cS1, std::complex <double > *cS2,
146146 double *qSca, double xPara, std::complex <double > cRelRef,
147147 double mu)
148- {
149- int n;
150- int nstop, ymod, nmx, arraySize;
151- double xstop;
152- std::complex <double > mx;
148+ {
149+ double xstop;
153150 double dPCost0, dPCost1;
154151 double fac0, fac1, fac2, fac3, fac4;
155152 double j_x0, j_x1, y_x0, y_x1;
156- double *j_x;
157- double *y_x;
158- double *piCost;
159- double *tauCost;
160- std::complex <double > *Dn_mx;
153+ std::complex <double > mx;
161154 std::complex <double > dervDn1, dervDn2;
162155 double sumQSca;
163- std::complex <double > *xi_x;
164156 std::complex <double > an, bn;
165157 std::complex <double > tempS1, tempS2;
166158
@@ -172,21 +164,21 @@ void MieSimulation::FarFieldSolutionForComplexRefIndex(std::complex<double> *cS1
172164
173165 mx = m*x;
174166 xstop = x+4.0 *(pow (x,(1.0 /3.0 )))+2.0 ;
175- nstop = ceil (xstop);
176- ymod = ceil (util.ComplexAbs (mx));
177- nmx = max (xstop,ymod)+15 ;
178- arraySize = nstop+1 ;
179-
180- Dn_mx = new std::complex <double > [nmx];
181- j_x = new double [arraySize];
182- y_x = new double [arraySize];
183- piCost = new double [arraySize];
184- tauCost = new double [arraySize];
185- xi_x = new std::complex <double > [arraySize];
167+ int nstop = ceil (xstop);
168+ int ymod = ceil (util.ComplexAbs (mx));
169+ int nmx = max (xstop,ymod)+15 ;
170+ int arraySize = nstop+1 ;
171+
172+ std:: complex < double > * Dn_mx = new std::complex <double > [nmx];
173+ double * j_x = new double [arraySize];
174+ double * y_x = new double [arraySize];
175+ double * piCost = new double [arraySize];
176+ double * tauCost = new double [arraySize];
177+ std:: complex < double > * xi_x = new std::complex <double > [arraySize];
186178
187179 Dn_mx[nmx-1 ] = 0 ;
188- for (n = nmx-1 ; n >0 ; n --)
189- Dn_mx[n -1 ] = (double (n )/mx)-(1.0 /(Dn_mx[n]+( double (n )/mx) ));
180+ for (int N = nmx-1 ; N >0 ; N --)
181+ Dn_mx[N -1 ] = (double (N )/mx)-(1.0 /(Dn_mx[N]+ double (N )/mx));
190182
191183 // Legendre Polynomials
192184 dPCost0 = 0.0 ; // pi0
@@ -206,7 +198,7 @@ void MieSimulation::FarFieldSolutionForComplexRefIndex(std::complex<double> *cS1
206198 tempS2 = std::complex <double > (0.0 , 0.0 );
207199 sumQSca = 0.0 ;
208200
209- n=1 ;
201+ int n=1 ;
210202 while ((n-1 -nstop) < 0 )
211203 {
212204 fac0 = double (n); // n
@@ -239,7 +231,7 @@ void MieSimulation::FarFieldSolutionForComplexRefIndex(std::complex<double> *cS1
239231
240232 an = (dervDn1*j_x[n]-j_x[n-1 ])/ (dervDn1*xi_x[n]-xi_x[n-1 ]);
241233 bn = (dervDn2*j_x[n]-j_x[n-1 ])/ (dervDn2*xi_x[n]-xi_x[n-1 ]);
242- sumQSca += fac2*(util.ComplexAbs (an)*util.ComplexAbs (an) + util.ComplexAbs (bn)*util.ComplexAbs (bn));
234+ sumQSca += ( fac2/(x*x)) *(util.ComplexAbs (an)*util.ComplexAbs (an) + util.ComplexAbs (bn)*util.ComplexAbs (bn));
243235
244236 // Calculate cS1 and cS2
245237 tempS1 += fac4*(an*piCost[n-1 ]+bn*tauCost[n-1 ]);
@@ -248,7 +240,7 @@ void MieSimulation::FarFieldSolutionForComplexRefIndex(std::complex<double> *cS1
248240 n = n+1 ;
249241 }
250242
251- *qSca= ( 2.0 /(x*x))* sumQSca;
243+ *qSca= sumQSca;
252244 *cS1 = tempS1;
253245 *cS2 = tempS2;
254246
0 commit comments