Nanocpp is our homemade Finite Difference Time Domain (FDTD) solver. It is entirely written in C++ with the following features:
- 2D/3D geometries
- TFSF and point sources
- Arbitrary geometrical primitives objects and mathematical operations such as 2D/3D rotations are provided
- Unconditionally stable Dispersion model that can represent any experiental material with perfect accuracy and arbitrary number of poles
- Unconditionally stable Maxwell-Bloch model for 4 level gain media with independent vectorial transitions
- Casimir force calculation
- Arbitrary primitive objects (including planes, volumes, cuboid) for calculations of electromagnetic quantities
- Proprietary designed Fano-Feshback partitionaning and projection algorithms for the exact calculations of density of states and other multi-modal related quantities of nanoresonators
Nanocpp is heavily written with template metaprogramming and the code is self-assembled according to the user preferences without the use of any if statement. The code scales up to millions of processors and is 35% faster than Lumerical, and 38% faster than comsol. It can accomodate geometries with millions of objects in high performance supercomputers in few seconds (both Lumerical and Comsol failed to represents the same set of complex objects and crashed).
Read more details in J. S. T. Gongora and A. Fratalocchi, “Ab-Initio Techniques for Light Matter Interaction at the Nanoscale“ of “Computational Chemistry Methodology in Structural Biology and Materials Sciences” Book, edited by Taylor and Francis (2017).