onda plana

        #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-1

Onda 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");
        }