Stack Geometry
#include <psMakeStack.hpp>
The MakeStack
generates a stack of alternating SiO2/Si3N4 layers featuring an optionally etched hole (3D) or trench (2D) at the center. The stack emerges in the positive z direction (3D) or y direction (2D) and is centered around the origin, with its x/y extent specified. Users have the flexibility to introduce periodic boundaries in the x and y directions. Additionally, the stack can incorporate a top mask with a central hole of a specified radius or a trench with a designated width. This versatile functionality enables users to create diverse and customized structures for simulation scenarios.
// namespace viennaps
MakeStack(DomainType domain,
const NumericType gridDelta,
const NumericType xExtent,
const NumericType yExtent,
const int numLayers,
const NumericType layerHeight,
const NumericType substrateHeight,
const NumericType holeRadius,
const NumericType trenchWidth,
const NumericType maskHeight,
const bool periodicBoundary = false)
Parameter | Description | Type |
---|---|---|
domain | Specifies the domain type for the stack geometry. | SmartPointer<Domain<NumericType, D>> |
gridDelta | Represents the grid spacing or resolution used in the simulation. | NumericType |
xExtent | Defines the extent of the stack geometry in the x-direction. | NumericType |
yExtent | Specifies the extent of the stack geometry in the y-direction. | NumericType |
numLayers | Sets the number of layers in the stack. | int |
layerHeight | Determines the height of each layer in the stack. | NumericType |
substrateHeight | Specifies the height of the substrate. | NumericType |
holeRadius | Sets the radius of the hole. | NumericType |
trenchWidth | Determines the width of the trench. | NumericType |
maskHeight | Specifies the height of the mask. | NumericType |
periodicBoundary | (Optional) If set to true, enables periodic boundaries. Default is set to false. | bool |
trenchWidth
andholeRadius
can only be used mutually exclusive. I.e., if one is set, the other has to be set to 0.
Example usage:
C++
// namespace viennaps
auto domain = SmartPointer<Domain<NumericType, D>>::New();
MakeStack<NumericType, D>(domain, 0.5, 10.0, 10.0, 5, 5.0, 10., 0.0, 5.0,
0.0, false)
.apply();
Python
domain = vps.Domain()
vps.MakeStack(domain=domain,
gridDelta=0.5,
xExtent=10.0,
yExtent=10.0,
numLayers=5,
layerHeight=5.0,
substrateHeight=10.0,
holeRadius=0.0,
trenchWidth=5.0,
maskHeight=0.0,
periodicBoundary=False,
).apply()