Stack Geometry
#include <geometries/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
// with DomainSetup configured (v3.3.0)
MakeStack(psDomainType domain,
int numLayers,
NumericType layerHeight,
NumericType substrateHeight,
NumericType holeRadius,
NumericType trenchWidth,
NumericType maskHeight,
NumericType taperAngle,
bool halfStack = false,
Material maskMaterial = Material::Mask)
MakeStack(DomainType domain,
NumericType gridDelta,
NumericType xExtent,
NumericType yExtent,
int numLayers,
NumericType layerHeight,
NumericType substrateHeight,
NumericType holeRadius,
NumericType trenchWidth,
NumericType maskHeight,
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()