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