123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #include <complex>
- #include <cstdio>
- #include <string>
- #include <iostream>
- #include "../src/nmie.hpp"
- #include "../src/nmie-impl.hpp"
- #include "../src/nmie-applied.hpp"
- #include "../src/nmie-applied-impl.hpp"
- #include "../src/shell-generator.hpp"
- int main(int argc, char *argv[]) {
- try {
- const double pi = 3.1415926535897932384626433832795;
- nmie::MultiLayerMieApplied<double> multi_layer_mie;
-
-
-
- const std::complex<double> index_Si(2.0);
-
- double WL=500;
- double outer_width = 67.91;
- auto shift = 0.0;
- shell_generator::ShellGenerator shell;
- shell.Init();
- for (int refines=0; refines<4; ++refines) {
- shell.Refine();
-
- for (int i=0; i<1; ++i) {
- auto integration_radius = 10+20*i;
- outer_width = 10;
- multi_layer_mie.ClearAllDesign();
- multi_layer_mie.AddTargetLayer(outer_width, index_Si);
- multi_layer_mie.SetWavelength(WL);
- multi_layer_mie.RunMieCalculation();
-
-
- double scale = 2.0*pi*(integration_radius)/WL*1.001;
-
-
-
- shell.Rescale(scale);
-
- std::cout << "rescale with scale factor: " << scale << std::endl;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- auto charge = 2.54;
- {
- shift = 0.0 * scale;
- auto F1 = shell.IntegrateGaussSimple(charge, shift);
- std::cout<<"charge: "<< charge << " integral_R: " << scale << " \tshift_centerX: " << shift << " \tcharge result: " <<F1 << std::endl;
- }
- {
- shift = 0.5 * scale;
- auto F1 = shell.IntegrateGaussSimple(charge, shift);
- std::cout<<"charge: "<< charge << " integral_R: " << scale << " \tshift_centerX: " << shift << " \tresult: " <<F1 << std::endl;
- }
- {
- shift = 0.9 * scale;
- auto F1 = shell.IntegrateGaussSimple(charge, shift);
- std::cout<<"charge: "<< charge << " integral_R: " << scale << " \tshift_centerX: " << shift << " \tresult: " <<F1 << std::endl;
- }
- }
- }
- } catch( const std::invalid_argument& ia ) {
-
- std::cerr << "Invalid argument: " << ia.what() << std::endl;
- return -1;
- }
- return 0;
- }
|