Fin Geometry

#include <psMakeFin.hpp>

The MakeFin class generates a fin geometry extending in the z (3D) or y (2D) direction, centered at the origin with specified dimensions in the x and y directions. The fin may incorporate periodic boundaries in the x and y directions (limited to 3D). Users can define the width and height of the fin, and it can function as a mask, with the specified material exclusively applied to the bottom of the fin, while the upper portion adopts the mask material.

// namespace viennaps
MakeFin(DomainType domain,
        const NumericType gridDelta,
        const NumericType xExtent, 
        const NumericType yExtent,
        const NumericType finWidth,
        const NumericType finHeight,
        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 fin geometry. SmartPointer<Domain<NumericType, D>
gridDelta Represents the grid spacing or resolution used in the simulation. NumericType
xExtent Defines the extent of the fin geometry in the x-direction. NumericType
yExtent Specifies the extent of the fin geometry in the y-direction. NumericType
finWidth Sets the width of the fin. NumericType
finHeight Determines the height of the fin. NumericType
baseHeight (Optional) Sets the base height of the fin. Default is set to 0. NumericType
periodicBoundary (Optional) If set to true, enables periodic boundaries in both x and y directions. Default is set to false. bool
makeMask (Optional) If set to true, allows the fin 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 fin. Default is set to Material::None. Material

Example usage:

C++

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

Python:

domain = vps.Domain()
vps.MakeFin(domain=domain,
            gridDelta=0.5,
            xExtent=10.0,
            yExtent=10.0,
            finWidth=2.5,
            finHeight=5.0,
            baseHeight=0.0,
            periodicBoundary=False,
            makeMask=False,
            material=vps.Material.Si,
           ).apply()