Developer

The source code of MESH is in src/ folder, which consists of the following files and folders:

  • arma/: the folder contains all the headers from armadillo.
  • luawrapper/: the Lua wrapper for C++ classes and MPI.
  • mathlib/: some mathematical functions such as Bessel functions, and Gauss-legendre integral method.
  • utility/: templates for smart points as well as exception handling.
  • Cubature.c: a fast adaptive integration method for high dimensional functions, adoptted from the original code.
  • Fmm.cpp: file computing the Fourier transform for different geometries.
  • Gsel.cpp: file containing functions to select G vectors.
  • Rcwa.cpp: file computing the RCWA and Poynting vector.
  • System.cpp: file containing material, layer and structure classes and their methods.
  • Mesh.cpp: file containing different types of simulations and C++ API.
  • main_lua.cpp: file implementing Lua API.
  • main_python.cpp: file implementing Python API.

The class structure is illustrated in the following figure

code structure

There are few features that need to be implemented in MESH:

  • A correct and fast implementation of Fourier transform over dielectric functions.
  • Improved ways of doing and integral other than the current naive summation method.
  • Computing more physical quantities, such as energy density and Casimir force.