Skip to content

第 5 章:Tools 节、QualityReport 节与 Structured 节

Tools 节

Tools 节用于对边界文件或网格文件执行几何操作。输入网格可以是四面体网格或混合(混合单元)网格。

注意

  • 操作按照它们在 Tools 节中的顺序执行。一个操作的输出成为下一个操作的输入。
  • 要使用 Tools 节,在命令文件的 IOControls 节中指定 EnableTools
  • 如果同时指定了 Tensor 节,则 Tensor 节优先,Tools 节被忽略。

追加输入结构(Append)

周期性地在指定位置追加输入结构:

Tools {
    Append {
        axis = xmin | ymin | zmin | xmax | ymax | zmax
        map "stringA" = "stringB"
    }
}

此操作仅适用于 2D 和 3D 边界。

创建分布(CreateProfiles)

根据命令文件中的描述在输入网格中创建分布:

Tools {
    CreateProfiles {
        SrcMesh = "string"
        CmdFile = "string"
    }
}

在此过程中网格不会被修改,因为命令文件中的细化规范被忽略。

界面粒子生成(ParticleGenerator)

在 3D brep 的所有界面平面(位于外部边界上的界面平面除外)上生成具有指定最小间距的点云:

Tools {
    ParticleGenerator {
        brepIn = "string"
        minSpacing = float
        pointCloud = float
        trapDensity = float
    }
}

参数说明

  • brepIn — 粒状 brep 的输入文件,每个晶粒属于独立的 region。此文件通常由 Neper 或 Tools 节的 Voronoi 子节生成。
  • minSpacing — 约束任意两个陷阱位点之间的最小距离(微米)。默认 0。
  • pointCloud — 输出文件名(.txt 格式)。
  • trapDensity — 陷阱的面密度(cm⁻²)。默认 0。

Wire 上粒子生成(WireTrapGenerator)

在线状结构周围生成遵循高斯分布的点云:

Tools {
    WireTrapGenerator {
        wireBrep = "string"
        gridSize = float
        trapFileName = "string"
        resinRegion = "string"
        WireParams "string" {
            wireRegion = "string"
            stddev = "double"
        }
    }
}

参数说明

  • wireBrep — 输入 brep 文件,必须包含作为独立区域的 wire(WireParams 中的 wireRegion)和有效的 resinRegion。
  • gridSize — 在 resin 区域内生成点网格的网格大小。值越小,点越密。
  • trapFileName — 输出文件名(.txt 格式),包含有效陷阱位置。
  • resinRegion — 感兴趣的区域,在其中生成陷阱位点。
  • WireParams — 存储 wire 信息,用于在网格点中选择有效的陷阱位置。

设置变换(Set Transformation)

对网格或边界设置变换矩阵:

Tools {
    Set Transformation {
        translation = (float float [float])
        scale = float | (float float float)
        rotation {
            axis = (float float float)
            angle = float
        } | rotation {
            matrix (float float float float float float float float float)
        }
    }
    Apply Transformation
}

移除短特征(Decimate)

移除边界中不需要的短特征:

Tools {
    Decimate {
        accuracy = float
        shortedge = float
    }
}
  • accuracy — 结构偏离其原始位置的偏差。默认 1e-8。
  • shortedge — 移除短边。所有短于此值的边都被消除。

使用 DelPSC 算法重新离散化边界

使用 DelPSC 算法通过曲面重网格化来重新离散化边界:

Tools {
    DelaunaySurfaceRemeshing {
        DelPSCAccuracy = float
        DelPSCRidgeAngle = float
        DelPSCRidgeSampling = float
    }
}
  • DelPSCAccuracy — 新曲面与原始曲面之间的允许偏差(微米)。
  • DelPSCRidgeAngle — 在每个边处计算的角度(共享面的二面角)。默认 95°。
  • DelPSCRidgeSampling — 离散化山脊和小三角形的大小(微米)。默认 0.01 µm。

使用双重轮廓算法重新离散化边界

Tools {
    DualContouringSurface {
        decimation = true | false
        minAngle = float
        minCutLength = float
        minDihedralAngle = float
        minDualEdgeLengthFactor = float
        minPrimalSubedgeLengthFactor = float
        resolution = float
        smoothing = true | false
        snapBoundaryToBox = integer
    }
}

参数说明

  • decimation — 应用后处理算法以减少输出表面的顶点数。默认 false。
  • minAngle — 输出表面上的最小允许表面角(度)。默认 1°。
  • minCutLength — 原始边上连续切割之间的最小长度(微米)。默认 1e-6。
  • minDihedralAngle — 输出表面上的最小允许二面角(度)。默认 5°。
  • resolution — 用于重建的原始网格(八叉树网格)的最小间距(微米)。

使用体积双重轮廓算法生成体积多面体网格

Tools {
    DualContouringVolume {
        resolution = float
    }
}

此算法是实验性的,不适用于需要高质量网格的应用(例如力学)。

网格间插值(InterpolateMesh)

从源网格到目标网格的插值:

Tools {
    InterpolateMesh {
        Conservative
        DstMesh = "string"
        Extrapolate = true | false
        IgnoreMaterials
        Species {"string" "string" ...}
        SrcMesh = "string"
        Tolerance = float
    }
}
  • Conservative — 使用二阶方法执行插值。
  • Extrapolate — 当源网格和目标网格边界不完全重合时是否外推。
  • IgnoreMaterials — 忽略 material 匹配限制。
  • Species — 指定要插值的种类。

2D 切片(Slice)

对 3D 网格或边界执行 2D 切片:

Tools {
    Slice {
        location = (float float float)
        normal = (float float float)
    } | Slice {
        Direction = X | Y | Z
        Endpoint = (float float)
        Startpoint = (float float)
    }
}

平面切割(Cut)

用平面切割网格:

Tools {
    Cut {
        normal = (float float float)
        location = (float float float)
    }
}

平面法线指向的一侧被移除。

反射(Reflection)

关于某个位置镜像网格并追加到原始网格:

Tools {
    Reflection {
        axis = xmin | ymin | zmin | xmax | ymax | zmax
        map "stringA" = "stringB"
    }
}

拉伸(Extrude)

将平面 2D 网格沿非均匀 1D 网格拉伸生成 3D 网格:

Tools {
    Extrude {
        spacingMethod = even | regular | smooth
        zCuts = (float) | ((float float) ...) | ((float float boolean) ...)
    }
}

或者:

Tools {
    Extrude {
        extension = float
        steps = integer
    }
}

spacingMethod — 指定生成相邻平面对之间切割序列的进展类型:even(均匀)、regular(规则)、smooth(平滑渐变)。

生成 Voronoi 图(Voronoi)

Tools {
    Voronoi {
        AllRegions
        region = "string"
        scale = float
    }
}
  • AllRegions — 将每个 region 转换为独立的 Voronoi cell。
  • region — 指定要转换为 Voronoi cell 的 region。
  • scale — 指定缩放因子。

QualityReport 节

本节指定要报告的网格质量统计信息和网格质量标准的限制:

QualityReport {
    areaRatio = float
    aspectRatio = true | false
    aspectRatio = float
    compactness = float
    compactness = true | false
    dihedralAngle = float
    maxAngle = float
    maxEdgeRatio = true | false
    maxEdgeRatio = float
    maxElementCount = integer
    minAngle = float
    minEdgeLength = true | false
    minEdgeLength = float
    outOfVolume = float
    quality = float
    quality = true | false
    skewness = float
    skewness = true | false
    taper = float
    taper = true | false
    volumeRatio = float
}

参数说明

  • areaRatio — 限制三角形面积与参考面积的最大允许比率。
  • aspectRatio — 启用并设置最大允许长宽比。
  • compactness — 单元致密性度量。
  • dihedralAngle — 最小允许二面角(度)。
  • maxAngle — 最大允许角度(度)。
  • maxEdgeRatio — 限制相邻边之间的最大长度比。
  • maxElementCount — 网格中允许的最大单元数。
  • minAngle — 最小允许角度(度)。
  • minEdgeLength — 最小允许边长。
  • outOfVolume — 允许的最大体积偏差。
  • quality — 启用网格质量报告。
  • skewness — 单元偏斜度限制。
  • taper — 锥度限制。
  • volumeRatio — 体积比限制。

Structured 节

本节指定定义 Josephson 结网格所需的参数:

Structured {
    Josephson {
        interfaceRegion = "string"
        junctionRegion = "string"
        MeshResolution = float
        NormalDirection = (float float float)
        Thickness = float
    }
}

参数说明

  • interfaceRegion — Josephson 结界面所在的 region 名称。
  • junctionRegion — Josephson 结所在的 region 名称。
  • MeshResolution — 网格分辨率(微米)。
  • NormalDirection — 界面法线方向向量。
  • Thickness — 结厚度(微米)。

参考文献

[1] M. Grade, S.-cell: Object Oriented Finite Element Mesh Generator, Tech. Rep. 1, Berlin, Germany: Conrad Technologies, 1998.

[2] M. Grade, "A Parallel Grid Generation and Instantiation Algorithm for the Simulation of Large-area PDhm Solarcells," in Proc. Int. Meshing Roundtable, 1999.

[3] M. Bern, D. Eppstein, and J. Erickson, "Flipping Cubical Meshes," Engineering with Computers, vol. 18, pp. 173–187, 2002.

[4] T. K. Dey and J. A. Levine, "Delaunay Mesh Generation," CRC Press, 2013.

[5] J.-K. Kim, H.-Y. Shin, and Y.-H. Kim, "A Primal/Dual Mesh Generation with Plannar Domains," Engineering with Computers, vol. 29, pp. 195–206, 2013.

[6] Neper website: http://neper.sourceforge.net/

[7] V. L. H. Ng, "Second-Order Conservative remapping scheme for unstructured finite-element meshes," Monthly Weather Review, vol. 131, pp. 2065–2071, 2003.

基于 Sentaurus TCAD 官方文档构建

代码块