Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

app-pkauf/Brillouin.hh
Go to the documentation of this file.
00001 #ifndef BRILLOUIN_HH_
00002 #define BRILLOUIN_HH_
00003 
00004 #include <fstream>
00005 #include <memory>
00006 #include <vector>
00007 #include <complex>
00008 #include "basics/outputMatlab.hh"
00009 #include "basics/exceptions.hh"
00010 //#include "basics/
00011 #include "hp2D/spacePreBuilder.hh"
00012 #include "geometry/meshImport2Dgeneral.hh"
00013 #include "graphics/matlab.hh"
00014 #include "basics/outputMatlab.hh"
00015 #include "basics/exceptions.hh"
00016 #include "hp2D/hpAdaptiveSpaceH1.hh"
00017 #include "hp2D/bilinearForm.hh"
00018 #include "operator/sparseMatrix.hh"
00019 #include "operator/denseMatrix.hh"
00020 //#include "graphics.hh"
00021 #include "operator/superLU.hh"
00022 #include "eigensolver/ARPACK.hh"
00023 #include "space/formula.hh"
00024 #include "toolbox/resourceMonitor.hh"
00025 
00026 namespace phc{
00027 
00028   using concepts::Real;
00029   using concepts::Cmplx;
00030   
00031   // ********************************************************** Brillouin_Base **
00032   /* Derive from this class to implement a new Brillouin zone.
00033      @param i The number of points per line  on the boundary of the irreducible 
00034      Brillouin zone used in the computation of the band structure.
00035   */
00036   class Brillouin_Base {
00037   public:
00038     virtual ~Brillouin_Base(){}
00039     // This returns the array of k-vectors:
00040     virtual concepts::Array<concepts::Real2d*> get_k(uint i) = 0;
00041     /* These are the lattice vectors. Be carefull to match this with the 
00042        space building in PHC4: For v_1 you need the vector pointing to the 
00043        corner of spc3_ and for v_2 the one pointing to the corner of spc2_.
00044     */
00045     virtual concepts::Array<Real> get_v_1() = 0;
00046     virtual concepts::Array<Real> get_v_2() = 0;
00047     
00048   };
00049   
00050   // ************************************************************** Brillouin1 **
00051   
00052   class Brillouin1 : public Brillouin_Base {
00053   public:
00054     virtual concepts::Array<concepts::Real2d*> get_k(uint i);
00055     virtual concepts::Array<Real> get_v_1();
00056     virtual concepts::Array<Real> get_v_2();
00057   };
00058   
00059     // ************************************************************** Brillouin2 **
00060   
00061   class Brillouin2 : public Brillouin_Base {
00062   public:
00063     virtual concepts::Array<concepts::Real2d*> get_k(uint i);
00064     virtual concepts::Array<Real> get_v_1();
00065     virtual concepts::Array<Real> get_v_2();
00066   };
00067   
00068 } // namespace phc
00069 
00070 #endif /*BRILLOUIN_HH_*/
00071 

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)