Creating 2D Conductivity from Permittivity Data

trobertstroberts Ansys Employee Posts: 11
edited March 22 in Photonics

In order to speed up the simulation, very thin metals can be considered a 2D sheet, and use surface conductivity. This example shows how to convert permittivity data to conductivity data which can be used by 2D rectangles and 2D polygon objects.


When thickness of the metal layers is much smaller than the wavelength of light, we can represent the metal as a 2D structure with a specified bulk conductivity and thickness. The sampled 2D data material model can be used.

The advantage of this is that compared to using a 3D rectangle object with a specified permittivity, we can use a coarser mesh compared to the 3D rectangle where it would be necessary to set the mesh to be fine enough to includes at least 2 mesh cells over the layer thickness to resolve the layer thickness. Using a coarser mesh can significantly speed up the simulation running time and reduce memory requirements.


The following script file takes existing sampled 3D data for the permittivity of gold from the “Au (Gold) – CRC” material in the material database and calculates the equivalent bulk conductivity using the formula:


f is frequency,
ϵr is the relative permittivity when frequency is infinite;
ϵ0 is the permittivity of free space.

The script then sets up a new sampled 2D data type material in the material database using the calculated conductivity and specified material thickness of 1 nm. The script can be modified to generate the material conductivity data for different materials and layer thicknesses.


Layer thickness (m): This is the effective thickness of the 2D material that has the same optical response as the 3D physical material with permittivity defined. Users should make sure that this value is set such that the simulation results using 2D material will be the same as the simulation results when material with permittivity is defined.

# User specied variables
material = "Au (Gold) - CRC"; # name of existing material with permittivity data
thickness = 1e-9; # effective layer thickness in meters
newmaterial = "Au (Gold) - "+num2str(thickness*1e9)+"nm thick"; # name of new sampled 2D data material to generate
eps_r = 1; # background permittivity, eps_r = 1 if background is air

# Get relative permittivity data
M = getmaterial(material,"sampled 3d data");
f = real( pinch(M,2,1) );
eps = pinch(M,2,2);

# Create bulk conductivity
sigma = -1i*(eps-eps_r)*(2*pi*f)*eps0;

# Add new material if it doesn't already exist
if(!materialexists(newmaterial)) {
tempname = addmaterial("Sampled 2D data");

# assign properties and thickness to the material
setmaterial(newmaterial,"sampled data",[f,sigma]);
setmaterial(newmaterial,"layer thickness enabled",true);
setmaterial(newmaterial,"layer thickness",thickness);
Sign In or Register to comment.