Here we describe a set of functions that can be used to alter the geometry of material objects before the FDTD calculation. Typically they operate on a single material (controlled by index of material in the material file entered via MEDIUM_VECTOR directive) and they shrink or expand it, or add something to it.
Probably most useful function of this type is addition of roughness. This is done via ballistic deposition with limited diffusion, so it really simulates the process of random surface topography creation when a material is deposited (e.g. using evaporation). Simulation is performed within box defined by (i0 j0 k0 in jn kn) that can be eventually subsampled (parameter subsampling) to get better control over results. Particles are flying from box boundaries in random direction unless they leave box or get attached to the material. Materials that are not listed in this directive have no impact on the process (as they would be vacuum). Jump mobility is given in voxel units and controls maximum distance allowed for relaxation, jump probability controls probability of such process (in range of 0-1). Number of particles is typically in range of tens of thousands at least.
Sample parameter file: mod_grow.
A 200x200x200 computational domain with a sphere modified by growth.
Another possibility is to use vector displacement method, based on correlated noise that is used to alter object boundaries. This is using a spectral synthesis approach to create vector arrays of known variance and correlation length.
Sample parameter file: mod_spectral.
A 200x200x200 computational domain with a sphere modified by spectral synthesis based vector displacement.
The roughness can be also added by an alternative procedure similar to addition of correlated Gaussian noise to an image (but done in 3D). Here, the object position in the computational volume is represented by a probability of having the material on a certain place (1 means object, 0 no object at the beginning of calculation). 3D gaussians are added to random places in the computational volume and using thresholding the new object surface is determined.
Sample parameter file: mod_roughen.
A 200x200x200 computational domain with a sphere modified by roughen.
Finally, we can use some function to modify the object shape. Again using an example from lower dimensions, this is similar to adding e.g. small sine function signal to a 1D signal. Her, similarly to the MEDIUM_ROUGHEN directive, a probability map of finding material in a given voxel is created and then altered via an analytical expression given by user.
Sample parameter file: mod_expression.
A 200x200x200 computational domain with a sphere modified by expression.