Trench Geometry

#include <psMakeTrench.hpp> 

The MakeTrench class is used to generate a new trench geometry extending in the z (3D) or y (2D) direction, centrally positioned at the origin with the total extent specified in the x and y directions. The trench configuration may include periodic boundaries in both the x and y directions. Users have the flexibility to define the trench’s width, depth, and incorporate tapering with a designated angle. Moreover, the trench can serve as a mask, applying the specified material exclusively to the bottom while the remaining portion adopts the mask material.

// namespace viennaps
MakeTrench(DomainType domain, 
           const NumericType gridDelta,
           const NumericType xExtent, 
           const NumericType yExtent,
           const NumericType trenchWidth,
           const NumericType trenchDepth,
           const NumericType taperingAngle = 0., // in degrees
           const NumericType baseHeight = 0.,
           const bool periodicBoundary = false,
           const bool makeMask = false,
           const Material material = Material::None)
Parameter Description Type
domain Specifies the type of domain for the trench geometry. SmartPointer<Domain<NumericType, D>>
gridDelta Represents the grid spacing or resolution used in the simulation. NumericType
xExtent Defines the extent of the trench geometry in the x-direction. NumericType
yExtent Specifies the extent of the trench geometry in the y-direction. NumericType
trenchWidth Sets the width of the trench. NumericType
trenchDepth Determines the depth of the trench. NumericType
taperingAngle (Optional) Specifies the angle of tapering for the trench geometry in degrees. Default is set to 0. NumericType
baseHeight (Optional) Sets the base height of the trench. Default is set to 0. NumericType
periodicBoundary (Optional) If set to true, enables periodic boundaries in both x and y directions (only applicable in 3D). Default is set to false. bool
makeMask (Optional) If set to true, allows the trench to function as a mask, with specified material applied only to the bottom. Default is set to false. bool
material (Optional) Specifies the material used for the trench. Default is set to Material_None. Material

Example usage:

C++

// namespace viennaps
auto domain = SmartPointer<Domain<NumericType, D>>::New();
MakeTrench<NumericType, D>(domain, 0.5, 10.0, 10.0, 5.0, 5.0, 10., 0.,
                            false, false, Material::Si)
    .apply();

Python

domain = vps.Domain()
vps.MakeTrench(domain=domain,
              gridDelta=0.5,
              xExtent=10.0,
              yExtent=10.0,
              trenchWidth=5.0,
              trenchDepth=5.0,
              taperingAngle=10.0,
              baseHeight=0.0,
              periodicBoundary=False,
              makeMask=False,
              material=vps.Material.Si,
             ).apply()