open source FDTD solver with GPU support
Different materials can be placed in the volume where we run the FDTD algorithm. If we review the literature, we can see that it can be nearly everything, unfortunately only small subset of it is now implemented in GSvit.
A simplest material is of course vacuum, which means to place nothing in the computational volume. The slightly more complex material is dielectrics or a poor conductor, that can directly go into the Maxwell's equations via its four parameters: electric permittivity, electric conductivity, magnetic permeability and magnetic conductivity. There are two ways how to introduce such material to GSvit:
Sample parameter file: voxel-by-voxel medium (MEDIUM_LINEAR).
A 200x200x200 computational domain with TSF planar source and graded permittivity profile. A simple C program that generated the input data for the voxel-by-voxel material parameters is attached as well.
Sample parameter file: medium represented by objects (MEDIUM_VECTOR).
A 200x200x200 computational domain with TSF planar source and a dielectric sphere.
A special case is MEDIUM_VECTOR with tabulated material (material type 1), where we say to Gsvit that there are only few materials in our computational volume and therefore GSvit does not need to allocate material parameter fields for every voxel. This can save some memory (a quarter of it, approximately), however all the calculations remain the same. See the parameter file documentation for more details.
If we want to address materials that are dispersive (and nearly everything is) we can run calculations for every wavelength separately, which can be useful if we want to use really measured values of optical parameters, given for every wavelength separately. To speed up the calculation of spectral properties significantly, it is however useful to run calculation with source containing multiple frequencies and analysing the spectral dependence of result. In this case we need to use some dispersive model for the material (e.g. Lorenz material). From many models and algorithms available for FDTD in the literature the recursive convolution method is implemented in Gsvit at present.
A more complex case is also simulation of real metals, where we cannot use the standard Yee's algorithm as well as the wavelengh in the metal would become extremely small and the algorithm would be unstable. Here again we can use the dispersive material approach, e.g. recursive convolution method. If we are satisfied with use of a perfect electric conductor (PEC) only, instead of a real metal, the situation is much simpler. We simply null the values of tangential of components of the electric field at the PEC/material boundary.
In Gsvit you can define any of the above mentioned materials individually, for standard material using MEDIUM_LINEAR or MEDIUM_VECTOR approach and for all the advanced materials using MEDIUM_VECTOR approach. You can also use a database of optical properties installed with GSvit, that allows you to pick a material by its name. Note that there are multiple choices for some materials and that some optical models won't work for every wavelength. Typically for metals the measured spectra cannot be directly used in FDTD and a dispersive model needs to be used for recursive convolution method (e.g. critical points model).