#include <stdio.h> #include <math.h> #include <stdlib.h> #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vector> using namespace std; int main( int argc, const char* argv[] ) { double pi=2.0*asin(1.0); double sx=100.0,sy=100.0,Om=0.5,dOm=0.1; int Nsources=100,isources; double source_i=-25.0,source_f=25.0,dsource,source; double ang,source_x,source_y; ang = 0.0*(pi/180.0); ofstream myfile100;myfile100.open ("c004.ctl"); myfile100 << "(define-param sx " << sx << ")" << "\n"; myfile100 << "(define-param sy " << sy << ")" << "\n"; myfile100 << "(define-param Om " << Om << ")" << "\n"; myfile100 << "(set! geometry-lattice" << "\n"; myfile100 << " (make lattice (size sx sy no-size))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(set! geometry " << "\n"; myfile100 << " (list " << "\n"; myfile100 << " (make block " << "\n"; myfile100 << " (center -49 -49)" << "\n"; myfile100 << " (size 0.1 0.1 infinity) " << "\n"; myfile100 << " (material (make medium (epsilon 1.1))) " << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // -> sources myfile100 << "(set! sources" << "\n"; myfile100 << " (list" << "\n"; dsource=(source_f-source_i)/float(Nsources); for (isources=0 ; isources<=Nsources ; isources++) { source = source_i+float(isources)*dsource; if(source<0) { source_x=+sin(ang)*abs(source); source_y=-cos(ang)*abs(source); } if(source>=0) { source_x=-sin(ang)*abs(source); source_y=+cos(ang)*abs(source); } cout<<isources<<" "<<source<<" "<<source_x<<" "<<source_y <<" \n"; myfile100 << " (make source" << "\n"; // myfile100 << " (src (make continuous-src (frequency 0.5)))"<< "\n"; myfile100 << " (src " << "\n"; myfile100 << " (make gaussian-src" << "\n"; myfile100 << " (frequency "<<Om<<") " << "\n"; myfile100 << " (fwidth "<<dOm<<") " << "\n"; myfile100 << " ) " << "\n"; myfile100 << " ) " << "\n"; myfile100 << " (component Ez)" << "\n"; myfile100 << " (center "<<source_x<<" "<<source_y<<")" << "\n"; // myfile100 << " (size 0 0.1)" << "\n"; // myfile100 << " (amplitude +1.0)" << "\n"; myfile100 << " )" << "\n"; } myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // <- sources myfile100 << "(set! pml-layers" << "\n"; myfile100 << " (list (make pml (thickness 1.0)))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(set! resolution 10)" << "\n"; // -> detectores myfile100 << "(define det01" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.4*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det02" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.3*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det03" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.2*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det04" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.1*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det05" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.0*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det06" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.1*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det07" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.2*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det08" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.3*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det09" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.4*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // <- detectores myfile100 << "(run-until 200" << "\n"; myfile100 << " (at-beginning output-epsilon)" << "\n"; myfile100 << " (to-appended \"ez\"" << "\n"; myfile100 << " (at-every 1.0 output-efield-z))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(display-fluxes det01 det02 det03 det04 det05" << "\n"; myfile100 << " det06 det07 det08 det09)" << "\n"; myfile100.close(); //system("meep a001.ctl > a001.out"); //system("h5topng -t 0:99 -R -Zc dkbluered -a yarg -A a001-eps-000000.00.h5 a001-ez.h5"); //system("convert a001*.png a001.gif"); }c004
set terminal pdf set output "c004.pdf" plot "c004.dat" u 2:3 w l,'' u 2:4 w l,'' u 2:5 w l,'' u 2:6 w l,'' u 2:7 w l,\ '' u 2:8 w l,'' u 2:9 w l,'' u 2:10 w l,'' u 2:11 w l
————————————– 30 grados y gaussiana
c004-1Onda monocromatica
c004-2#include <stdio.h> #include <math.h> #include <stdlib.h> #include <iostream> #include <fstream> #include <string> #include <sstream> #include <vector> using namespace std; int main( int argc, const char* argv[] ) { double pi=2.0*asin(1.0); double sx=100.0,sy=100.0,Om=0.5,dOm=0.1; int Nsources=100,isources; double source_i=-25.0,source_f=25.0,dsource,source; double ang,source_x,source_y; ang = 0.0*(pi/180.0); ofstream myfile100;myfile100.open ("c004.ctl"); myfile100 << "(define-param sx " << sx << ")" << "\n"; myfile100 << "(define-param sy " << sy << ")" << "\n"; myfile100 << "(define-param Om " << Om << ")" << "\n"; myfile100 << "(set! geometry-lattice" << "\n"; myfile100 << " (make lattice (size sx sy no-size))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(set! geometry " << "\n"; myfile100 << " (list " << "\n"; myfile100 << " (make block " << "\n"; myfile100 << " (center -49 -49)" << "\n"; myfile100 << " (size 0.1 0.1 infinity) " << "\n"; myfile100 << " (material (make medium (epsilon 1.1))) " << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // -> sources myfile100 << "(set! sources" << "\n"; myfile100 << " (list" << "\n"; dsource=(source_f-source_i)/float(Nsources); for (isources=0 ; isources<=Nsources ; isources++) { source = source_i+float(isources)*dsource; if(source<0) { source_x=+sin(ang)*abs(source); source_y=-cos(ang)*abs(source); } if(source>=0) { source_x=-sin(ang)*abs(source); source_y=+cos(ang)*abs(source); } cout<<isources<<" "<<source<<" "<<source_x<<" "<<source_y <<" \n"; myfile100 << " (make source" << "\n"; myfile100 << " (src (make continuous-src (frequency 0.5)))"<< "\n"; // myfile100 << " (src " << "\n"; // myfile100 << " (make gaussian-src" << "\n"; // myfile100 << " (frequency "<<Om<<") " << "\n"; // myfile100 << " (fwidth "<<dOm<<") " << "\n"; // myfile100 << " ) " << "\n"; // myfile100 << " ) " << "\n"; myfile100 << " (component Ez)" << "\n"; myfile100 << " (center "<<source_x<<" "<<source_y<<")" << "\n"; // myfile100 << " (size 0 0.1)" << "\n"; // myfile100 << " (amplitude +1.0)" << "\n"; myfile100 << " )" << "\n"; } myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // <- sources myfile100 << "(set! pml-layers" << "\n"; myfile100 << " (list (make pml (thickness 1.0)))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(set! resolution 10)" << "\n"; // -> detectores myfile100 << "(define det01" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.4*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det02" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.3*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det03" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.2*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det04" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<<-0.1*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det05" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.0*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det06" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.1*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det07" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.2*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det08" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.3*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(define det09" << "\n"; myfile100 << " (add-flux "<<Om<<" "<<0.2<<" "<<100 << "\n"; myfile100 << " (make flux-region" << "\n"; myfile100 << " (center "<<0.4*sx<<" "<< 0.4*sy<<") " << "\n"; myfile100 << " (size 0 0.1)" << "\n"; myfile100 << " )" << "\n"; myfile100 << " )" << "\n"; myfile100 << ")" << "\n"; // <- detectores myfile100 << "(run-until 200" << "\n"; myfile100 << " (at-beginning output-epsilon)" << "\n"; myfile100 << " (to-appended \"ez\"" << "\n"; myfile100 << " (at-every 1.0 output-efield-z))" << "\n"; myfile100 << ")" << "\n"; myfile100 << "(display-fluxes det01 det02 det03 det04 det05" << "\n"; myfile100 << " det06 det07 det08 det09)" << "\n"; myfile100.close(); //system("meep a001.ctl > a001.out"); //system("h5topng -t 0:99 -R -Zc dkbluered -a yarg -A a001-eps-000000.00.h5 a001-ez.h5"); //system("convert a001*.png a001.gif"); }