Skip to content

第 4 章:Delaunizer 节、Tensor 节与 Boundary 节

Delaunizer 节

本节控制 Sentaurus Mesh 中 Delaunizer 算法的行为。

注意

  • 可以使用 region 名称(关键字 region)或 material 属性(关键字 material)。由于 material 属性更持久,因此最好使用它而不是 region 名称。
  • 在命令文件的 Definitions 和 Placements 节中指定细化标准。否则,生成的网格将非常粗糙。
  • 使用少量层来减少 Delaunizer 网格化期间曲界面附近的虚假细化。

Delaunizer 节语法

Delaunizer {
    coplanarityAngle = float
    coplanarityDistance = float
    delaunayTolerance = float
    edgeProximity = float
    faceProximity = float
    maxAngle = float
    maxConnectivity = float
    maxNeighborRatio = float
    maxPoints = integer
    maxSolidAngle = float
    maxTetQuality = float
    minAngle = float
    minDihedralAngleAllowed = float
    minEdgeLength = float
    minEdgeLengthAllowed = float
    sliverAngle = float
    sliverDistance = float
    sliverPerturbation = true | false
    sliverRemovalAlgorithm = integer
    storeDelaunayWeight = true | false
    type = boxmethod | conforming | constrained
}

关键参数说明

  • coplanarityAngle(175)— 确定两个相邻边界面是否共面。浮点数表示面之间的角度。
  • coplanarityDistance(1e-5)— 确定两个相邻边界面是否共面。浮点数(微米)表示公共边翻转时对表面所做的绝对变形。
  • delaunayTolerance(1e-4)— 指定山脊和边界面对 Delaunay 准则的符合程度。
  • edgeProximity(0.05)— 指定新边与生成它的父边长度的最小比率。如果边 AB 将在线段 C 处细化,且比率 AC/AB 或 CB/AB 小于 edgeProximity,则点 C 移动到 AB 的中心。
  • faceProximity(0.05)— 指定新面与生成它的父面面积的最小比率。
  • maxAngle(180)— 网格单元允许的最大角度(仅 2D)。
  • maxConnectivity(1000)— 指定可以连接到网格点的最大边数。
  • maxNeighborRatio(1e+30)— 指定相邻单元的 circumscribed spheres 之间的最大允许比率。
  • maxPoints(500000)— 设置 Delaunizer 生成的点数上限。
  • maxSolidAngle(360)— 网格单元允许的最大立体角(仅 3D)。
  • maxTetQuality(1e37)— 允许的最大 circumscribed sphere radius 与最短边之比(仅 3D)。
  • minAngle(360)— 网格单元允许的最小角度(仅 2D)。
  • minDihedralAngleAllowed(0)— 检查 3D 输入边界是否具有大于此值的最小二面角。
  • minEdgeLength(1e-9)— 当表面边变得短于此值时生成警告消息。
  • minEdgeLengthAllowed(0)— 检查 3D 输入边界是否具有大于此值的最小边长。
  • sliverAngle(175)— 控制 sliver 的消除。算法移除所有最大二面角超过此值的单元。
  • sliverDistance(1e-2)— 控制 sliver 消除算法执行的损伤量。
  • sliverPerturbation(false)— 开启 sliver 扰动算法。
  • sliverRemovalAlgorithm(2)— 选择 sliver 消除算法:1 为原始算法,2 为通过为顶点分配更合适的权重来减少非 Delaunay 单元数量的算法。
  • storeDelaunayWeight(true)— 为 true 时将 sliver 消除算法的节点权重存储为输出文件中的字段变量(DelVorWeight)。
  • type(boxmethod)— 指定 Delaunay 网格的类型:boxmethod(严格条件)、conform(更宽松的边界条件)、constrained(使用 CDT 算法)。

Delaunay Tolerance

可以基于 material、region 或窗口信息调整界面处用于计算 Delaunay 准则的容差:

boundary material | region "string" "string" {
    delaunayTolerance = float
    window = [ (float, float, float) (float, float, float) ]
}
surface material | region "string" {
    delaunayTolerance = float
    window = [ (float, float, float) (float, float, float) ]
}

Tensor 节

本节控制 tensor-product 网格生成器,可包含以下子节:

Tensor {
    Mesh {parameters}
    EMW {parameters}
    Box {parameters}
}

注意:要激活 Tensor 节,在命令文件的 IOControls 节中指定 EnableTensor

Mesh 子节

Tensor {
    Mesh {
        axisAlignedFeatureAngle = float
        doping
        grading = {float float float}
        grading off
        maxBndCellSize = float
        minBndCellSize = float
        maxCellSize = float
        minCellSize = float
        minNumberOfCells = integer
        maxNumberOfCells = integer
        numPoints = integer
        numPointsX = integer
        numPointsY = integer
        numPointsZ = integer
        scale = {float float float}
        window "string" float float float float float float
        xCuts = (floatlist)
        yCuts = (floatlist)
        zCuts = (floatlist)
    }
}

关键参数说明

  • axisAlignedFeatureAngle(0.5)— 指定用于识别 axis-aligned 界面的容差(度)。
  • doping — 触发掺杂操作。对于 EMW 应用,掺杂通常不需要。
  • grading(1.25)— 指定每个方向的渐变系数。
  • grading off — 关闭渐变细化。
  • maxBndCellSize — 设置边界上每个 material 界面垂直方向的最大单元尺寸(微米)。
  • minBndCellSize(1e-4)— 设置边界上 material 界面垂直方向的最小单元尺寸(微米)。
  • maxCellSize — 设置区域内允许的最大单元尺寸。
  • minCellSize(1e-4)— 设置区域内允许的最小单元尺寸(微米)。
  • minNumberOfCells(0)— 设置每个区域和每个方向所需的最小单元数。
  • maxNumberOfCells(1e9)— 如果单元数高于此限制,则关闭渐变细化以避免进一步增加网格中的单元数。
  • numPoints / numPointsX/Y/Z — 设置网格的点数。
  • scale — 设置 x、y、z 方向的缩放因子。
  • xCuts, yCuts, zCuts — 在各自方向引入细化线。

EMW 子节

EMW 子节为 Sentaurus Device Electromagnetic Wave Solver 应用控制网格生成参数。

Box 子节

Box 子节用于指定规则网格的网格参数。


Boundary 节

本节控制与边界算法相关的参数,可包含以下子节:

  • Decimate — 边界简化算法
  • DelPSC — 适用于曲面的 Delaunay refinement for piecewise smooth complex 算法
  • DualContouring — 双重轮廓算法
  • RegionMismatch — 区域不匹配检查

Decimate 子节

控制边界简化算法:

Decimate {
    adaptive = float
    coplanarityAngle = float
    minAngle = float
    shortEdge = float
}
  • adaptive(1e-6)— 自适应细化参数。
  • coplanarityAngle(175)— 确定两个面是否共面的角度。
  • minAngle(10)— 简化算法生成的表面上的最小二面角(度)。
  • shortEdge(1e-7)— 简化步骤之前在边界上产生的最小边长(微米)。

DelPSC 子节

对边界曲面应用 Delaunay refinement for piecewise smooth complex(DelPSC)算法:

DelPSC {
    adaptive = float
    apply = true | false
    accuracy = float
    ridgeAngle = float
    ridgeSampling = float
    skipFeatureSize = float
}
  • adaptive(1e-6)— 启用自适应细化。
  • apply(false)— 激活或停用 DelPSC 算法。
  • accuracy(0.0001)— 控制新曲面与原始曲面之间的偏差(微米)。通常设置为曲率半径的 2%。
  • ridgeAngle(150)— DelPSC 算法用于确定几何特征的角度。
  • ridgeSampling(0.01)— 控制 DelPSC 算法中曲面上的小三角形大小(微米)。通常设置为曲率半径的 10%。
  • skipFeatureSize(0.0001)— 指定脊线长度的最小阈值。

DualContouring 子节

使用双重轮廓算法重建边界:

DualContouring {
    apply = true | false
    decimation = true | false
    minAngle = float
    minCutLength = float
    minDihedralAngle = float
    minDualEdgeLengthFactor = float
    minPrimalSubedgeLengthFactor = float
    resolution = float
    smoothing = true | false
    snapBoundaryToBox = integer
}
  • apply(false)— 激活或停用双重轮廓算法。
  • decimation(false)— 应用后处理简化步骤以减少生成的顶点数。
  • minAngle(2)— 定义输出表面上的最小允许表面角(度)。
  • minCutLength(1e-6)— 定义原始边上连续切割之间的最小长度(微米)。
  • minDihedralAngle(10)— 定义输出表面上的最小允许二面角(度)。
  • minDualEdgeLengthFactor(0.05)— 定义相对于原始边最小长度的对偶边最小长度因子。
  • minPrimalSubedgeLengthFactor(0.05)— 定义相对于原始边最小长度的原始子边最小长度因子。
  • resolution(0.002)— 定义用于重建的原始网格(八叉树网格)的最小间距(微米)。
  • smoothing(false)— 应用算法以减少输出表面上的噪声。
  • snapBoundaryToBox(0)— 将外部输出表面上的顶点捕捉到边界框的侧面。

RegionMismatch 子节

允许区域数量的不匹配:

RegionMismatch {
    allow = true | false
    minVolume = float
}
  • allow(false)— 激活或停用区域不匹配检查。
  • minVolume(0)— 指定删除区域的体积阈值。

基于 Sentaurus TCAD 官方文档构建

代码块