|
@@ -73,6 +73,10 @@ int main(int argc, char *argv[]) {
|
|
|
std::vector<double> x, Theta;
|
|
|
std::vector<std::complex<double> > m, S1, S2;
|
|
|
double Qext, Qabs, Qsca, Qbk, Qpr, g, Albedo;
|
|
|
+
|
|
|
+ std::vector<std::complex<double> > mw, S1w, S2w;
|
|
|
+ double Qextw, Qabsw, Qscaw, Qbkw, Qprw, gw, Albedow;
|
|
|
+
|
|
|
double ti = 0.0, tf = 90.0;
|
|
|
int nt = 0;
|
|
|
if (argc < 5) throw std::invalid_argument(error_msg);
|
|
@@ -157,6 +161,8 @@ int main(int argc, char *argv[]) {
|
|
|
Theta.resize(nt);
|
|
|
S1.resize(nt);
|
|
|
S2.resize(nt);
|
|
|
+ S1w.resize(nt);
|
|
|
+ S2w.resize(nt);
|
|
|
continue;
|
|
|
}
|
|
|
//} else if (strcmp(argv[i], "-t") == 0) {
|
|
@@ -205,12 +211,15 @@ int main(int argc, char *argv[]) {
|
|
|
|
|
|
|
|
|
nMie(L, x, m, nt, Theta, &Qext, &Qsca, &Qabs, &Qbk, &Qpr, &g, &Albedo, S1, S2);
|
|
|
+ nmie::nMie_wrapper(L, x, m, nt, Theta, &Qextw, &Qscaw, &Qabsw, &Qbkw, &Qprw, &gw, &Albedow, S1w, S2w);
|
|
|
|
|
|
|
|
|
if (has_comment) {
|
|
|
printf("%6s, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e\n", comment.c_str(), Qext, Qsca, Qabs, Qbk, Qpr, g, Albedo);
|
|
|
+ printf("%6s, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", comment.c_str(), Qextw, Qscaw, Qabsw, Qbkw, Qprw, gw, Albedow);
|
|
|
} else {
|
|
|
printf("%+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e\n", Qext, Qsca, Qabs, Qbk, Qpr, g, Albedo);
|
|
|
+ printf("%+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", Qextw, Qscaw, Qabsw, Qbkw, Qprw, gw, Albedow);
|
|
|
}
|
|
|
|
|
|
if (nt > 0) {
|
|
@@ -218,25 +227,10 @@ int main(int argc, char *argv[]) {
|
|
|
|
|
|
for (i = 0; i < nt; i++) {
|
|
|
printf("%6.2f, %+.5e, %+.5e, %+.5e, %+.5e\n", Theta[i]*180.0/PI, S1[i].real(), S1[i].imag(), S2[i].real(), S2[i].imag());
|
|
|
+ printf("%6.2f, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", Theta[i]*180.0/PI, S1w[i].real(), S1w[i].imag(), S2w[i].real(), S2w[i].imag());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- Qext = 0.0; Qsca = 0.0; Qabs = 0.0; Qbk = 0.0;
|
|
|
- nmie::nMie_wrapper(L, x, m, nt, Theta, &Qext, &Qsca, &Qabs, &Qbk, &Qpr, &g, &Albedo, S1, S2);
|
|
|
-
|
|
|
- if (has_comment) {
|
|
|
- printf("%6s, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", comment.c_str(), Qext, Qsca, Qabs, Qbk, Qpr, g, Albedo);
|
|
|
- } else {
|
|
|
- printf("%+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", Qext, Qsca, Qabs, Qbk, Qpr, g, Albedo);
|
|
|
- }
|
|
|
-
|
|
|
- if (nt > 0) {
|
|
|
- printf(" Theta, S1.r, S1.i, S2.r, S2.i wrapper\n");
|
|
|
-
|
|
|
- for (i = 0; i < nt; i++) {
|
|
|
- printf("%6.2f, %+.5e, %+.5e, %+.5e, %+.5e wrapper\n", Theta[i]*180.0/PI, S1[i].real(), S1[i].imag(), S2[i].real(), S2[i].imag());
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
} catch( const std::invalid_argument& ia ) {
|
|
|
// Will catch if multi_layer_mie fails or other errors.
|