Appearance
第 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)— 指定删除区域的体积阈值。