Skip to content

Silvaco tcad electric field

One class (SilvacoParser) to read simulated fields/potentials produced using Silvaco TCAD tools:

  • tools/mesh_converter/parsers/SilvacoParser.cpp
  • tools/mesh_converter/parsers/SilvacoParser.hpp

Region is hardcoded to be just silicon (SilvacoParser.cpp):

std::string region = "Silicon";

Observable is determined from the number of columns of the .dat file - see below - (SilvacoParser.cpp):

        // Determining data type from dimensions
        // dimension == 1 -> Scalar potential
        // dimension == 2 -> 2D electric field
        // dimension == 3 -> 3D electric field
        if(dimension == 1) {
            observable = "ElectrostaticPotential";
        } else if(dimension == 2) {
            observable = "ElectricField";
        } else if(dimension == 3) {
            observable = "ElectricField";
        } else {
            throw std::runtime_error("incorrect dimension of observable");
        }

The format of input files is as follows:

  • <filename>.conf: configuration file
  • <filename>.grd: grid points
  • <filename>.dat: field/potential file

(mimicking what is done for Synopsys)

The .grd and .dat files are plain txt files.

The new capability works with:

  • 2D geometry, both for 2D field and potential
  • 3D geometry, both for 3D field and potential

There is one caveat in the configuration file: the orientation of the axis for 3D geometry has to be the following:

xyz = x y -z

I would like to discuss this with @simonspa and @pschutze to make sure I understand why it has to be this way.

Happy to discuss with you all the details! And I can provide the files of the various tests I ran.

Cheers, Marco Bomben

Merge request reports