AMCAX Kernel
Geometry kernel for CAD/CAE/CAM
九韶内核 1.0.0.0
载入中...
搜索中...
未找到
三维边界层详细 JSON 示例

概述

本教程提供使用网格剖分,三维边界层的详细配置方法。

功能描述

通过在流体靠近物体表面的区域内更密集地划分网格,以更好地捕捉流体速度剖面的变化,以及流体粘性效应的影响。
输入:选定的表面网格(三角形/四边形/混合网格);输出:边界层网格(棱柱/六面体)。

step 模型说明

以一个简单的 box 的 cad 模型为例,其面编号如下图所示,该模型将用于本教程中。

基本 Json 模板

以下是最基本的 Json 配置,更多复杂配置请看复杂 Json 模板。

{
"Distribution": [],
"BoundaryLayer":[
{
"DistributionType": "Separation",
"EntityType": "Face",
"FSPairs":
[
{
"F": 1,
"S": 1
},
{
"F": 2,
"S": 1
},
{
"F": 3,
"S": 1
},
{
"F": 4,
"S": 1
},
{
"F": 5,
"S": 1
},
{
"F": 6,
"S": 1
}
],
"Basic":
{
"InitLayerHeight":
{
"Absolute": 0.1
},
"GrowthRate":
{
"Constant": 1.1
},
"NLayers": 3,
"ProblematicAreasTreatment": "STOP"
}
}
],
"MeshSize": [
{
"CurvatureFactor": 0.2,
"GrowthRate": 1.1,
"MaxSize": 1,
"MinSize": 0.1,
"MeshingDim": 2,
"SelectedEntities": []
},
{
"CurvatureFactor": 0.2,
"GrowthRate": 1.1,
"MaxSize": 1,
"MinSize": 0.1,
"MeshingDim": 3,
"SelectedEntities": []
}
],
"ThreadNum": 1
}


是否必需 取值范围 默认值 备注
BoundaryLayer EntityType [Face, Edge]
BoundaryLayer EFPairs/SelectedEntities
BoundaryLayer-Basic GrowthRate "Constant"、"Variable"
[1.0,2.0]
增长率不变:"Constant",其值为固定值,即每层的固定增长率
增长率变化:"Variable",其值为数组,即每层的变化增长率
BoundaryLayer-Basic InitLayerHeight Absolute:[eps,MaxSize]
Aspect:[eps,1]
绝对模式:"Absolute",初始层高恒定不变
Aspect模式:"Aspect",初始层高为乘以局部表面网格长度的因子
BoundaryLayer-Basic NLayers [1,inf]
BoundaryLayer-Basic ProblematicAreasTreatment STOP、COLLAPSE、EXCLUDE 问题区域处理方式:
STOP:没有按照预计参数进行时,停止生成
COLLAPSE:允许某些局部区域的折叠,从而导致边界层生成时的交叉、接近或质量问题
EXCLUDE:允许排除某些局部区域,导致交叉,接近或质量问题的边界层的生成

通过该基本 Json 模板,结果如下图所示:

基本配置说明

EntityType & EFPairs

"EntityType": "Face",
"FSPairs":
[
{
"F": 1,
"S": 1
},
{
"F": 2,
"S": 1
},
{
"F": 3,
"S": 1
},
{
"F": 4,
"S": 1
},
{
"F": 5,
"S": 1
},
{
"F": 6,
"S": 1
}
]

在某个 solid 内,从 solid 的一些边界 face 向 solid 内部生长的边界层。
"EntityType": "Face",表示从 face 向 solid 生成 3d 边界层。 指定从 XX face 向 XX solid 生长。该示例表示,从 face(tag=1,2,3,4,5,6)向 solid(tag=1)生长。注意:face 应该是 solid 的边界边。

基础参数设置

"Basic":
{
"InitLayerHeight":
{
"Absolute": 0.1 // Absolute, Aspect
},
"GrowthRate":
{
"Constant": 1.1 // Constant, Variable
},
"NLayers": 3,
"ProblematicAreasTreatment": "STOP" // STOP, COLLAPSE, EXCLUDE
}

InitLayerHeight

初始层高分为 Absolute 模式和 Aspect 模式。Absolute 模式表示:每个节点高度固定不变(相对于 Aspect 模式来说),即不会随着局部表面网格尺寸不同而不同,值为初始层的高度;Aspect 模式表示:每个节点高度可能会变,通过乘以局部表面网格尺寸来定义第一层高度,值为局部表面网格长度的因子。

"Absolute": 0.1

现在将初始层高设置为 Aspect 模式,由于表面网格尺寸设置为 1,所以此时第一层高度为 1 * 0.1 = 0.1,理论上和上述绝对模式高度设置 0.1 的结果是非常相似的,事实也如此,如下图所示:

"Aspect": 0.1

GrowthRate

常量增长率,每一层的生长速率因子相同(下一层比上一层)。

"Constant": 1.1 // 取值范围:[1,2]

变量增长率,从第二层开始,每一层增长率独立(注意,第一层增长率恒为 0,且与层数匹配)。

"Variable":[0,1,2] // 从第二层开始,取值范围:[1,2]

NLayers

NLayers:需要生成边界层的层数。

"NLayers": 3, // 取值范围:[1,inf]

ProblematicAreasTreatment

如果由于局部几何特征而无法生长层,或者因为没有足够的空间来生长所要求的所有层,所采用的方法。

1.当边界层的生成没有按照预计参数进行时(遇到问题时),停止生成。

"ProblematicAreasTreatment": "STOP"

2.允许某些局部区域的折叠来克服交叉、接近或质量问题。

"ProblematicAreasTreatment": "COLLAPSE"

3.允许排除某些局部区域来克服交叉、接近或质量问题。

"ProblematicAreasTreatment": "EXCLUDE"

复杂 Json 模板

{
"Distribution": [],
"BoundaryLayer":[
{
"DistributionType": "Separation",
"EntityType": "Face",
"FSPairs":
[
{
"F": 1,
"S": 1
},
{
"F": 2,
"S": 1
},
{
"F": 3,
"S": 1
},
{
"F": 4,
"S": 1
},
{
"F": 5,
"S": 1
},
{
"F": 6,
"S": 1
}
],
"Basic":
{
"InitLayerHeight":
{
"Absolute": 0.1
},
"GrowthRate":
{
"Constant": 1.1
},
"NLayers": 3,
"AdditionalOuterLayers": 3,
"LastAspect": 0.6,
"ProblematicAreasTreatment": "COLLAPSE",
"FailureRetainValidLayers": false,
"MaxNumberOfConsecutiveCollapsedLayers": [true,1]
},
"SideTreatment":
{
"AutoConnectAngleLimit": true,
"ConnectLimitAngle": 60
},
"VectorTreatment":
{
"SmoothTopCapShellMesh": true,
"SmoothVectors": [true,60]
},
"GrowthControls":
{
"MaxTopFacetEquiareaSkewness": [true,0.95],
"MaxTopFacetWarping": false,
"MaxLayerAspect": false,
"MaxAllowedAspectProceed": false
}
}
],
"MeshSize": [
{
"CurvatureFactor": 0.2,
"GrowthRate": 1.1,
"MaxSize": 1,
"MinSize": 0.1,
"MeshingDim": 2,
"SelectedEntities": []
},
{
"CurvatureFactor": 0.2,
"GrowthRate": 1.1,
"MaxSize": 1,
"MinSize": 0.1,
"MeshingDim": 3,
"SelectedEntities": []
}
],
"ThreadNum": 1
}


是否必需 取值范围 默认值

备注

BoundaryLayer-Basic AdditionalOuterLayers [0, inf] 0 额外层数,使得最后一层边界层与附近的单元尺寸匹配
BoundaryLayer-Basic LastAspect [eps, 1] 0 额外层数非零值激活,最后一层宽高比
BoundaryLayer-Basic FailureRetainValidLayers true、false false 仅当为"STOP"激活时才有效,表示是否失败时保留有效边界层
BoundaryLayer-Basic MaxNumberOfConsecutiveCollapsedLayers true, [1,inf]
false
false 仅当为"COLLAPSE"激活时才有效,表示最大连续折叠层数
BoundaryLayer-SideTreatment AutoConnectAngleLimit true、false false 表示是否激活将边界层自动与临近面网格连接
BoundaryLayer-SideTreatment ConnectLimitAngle [0,90] 60

边界层与临近面网格之间的最大允许角度

BoundaryLayer-VectorTreatment SmoothTopCapShellMesh true、false true 允许矢量从其原始法线位置移动;否则以正交方式生长
BoundaryLayer-VectorTreatment SmoothVectors True, [0,180]
false
[true,90]

与初始位置的最大允许角度偏差

BoundaryLayer-GrowthControls MaxTopFacetEquiarealSkewness true, [1,0]
false
false 顶部三角形面网格最大等面积扭曲度,如果激活,当顶部三角形面网格最大等面积扭曲度超过设定阈值时,将停止边界层生长
BoundaryLayer-GrowthControls MaxTopFacetWarping true,[inf,0]
false
false 顶部四边形面网格最大翘曲值,如果激活,当顶部四边形面网格最大翘曲值超过设定阈值时,将停止边界层生长
BoundaryLayer-GrowthControls MaxLayerAspect true,[eps,inf]
false
false 最大宽高比
BoundaryLayer-GrowthControls MaxAllowedAspectProceed true,"LocalCollapse"、"ConstantHeight"
false
false 当达到允许的最大层宽高比时,ConstantHeight-达到阈值后保持恒定高度;LocalCollapse-达到阈值后局部坍缩层(需要激活"COLLAPSE")

通过该复杂 Json 模板,结果如下图所示:

复杂配置说明

基础参数设置

"Basic":
{
"InitLayerHeight":
{
"Absolute": 0.1 // "Absolute": xx/"Aspect": xx
},
"GrowthRate":
{
"Constant": 1.1 // "Constant": xx/"Variable":[xx,...,xx]
},
"NLayers": 3,
"AdditionalOuterLayers": 3,
"LastAspect": 0.6,
"ProblematicAreasTreatment": "COLLAPSE", // STOP/COLLAPSE/EXCLUDE
"FailureRetainValidLayers": false, // true/false
"MaxNumberOfConsecutiveCollapsedLayers": [true,1] // [true,value]/false
}

AdditionalOuterLayers

AdditionalOuterLayers:额外添加的边界层数量,使得最后一层边界层与附近的三角形单元尺寸匹配,如果最后一层边界层尺寸大于附近的三角形单元尺寸,即使设置该参数,也会默认为 0。

"AdditionalOuterLayers": 3, // 取值范围:[0,inf],默认值为 0

LastAspect

LastAspect:最后一层高宽比,当 AdditionalOuterLayers 不为 0 时才能设置该参数。

"LastAspect": 0.6, // 取值范围:[eps,1],默认值为 0

侧面处理选项

"SideTreatment":
{
"AutoConnectAngleLimit": true, // true/false
"ConnectLimitAngle": 60 // [0,90]
}

AutoConnectAngleLimit,ConnectLimitAngle

激活该功能,边界层自动与临近面网格连接,且面网格自动重建(与体网格连接区域的面网格,在大小、节点位置与体网格表面一致;非连接区域面网格类型保持不变,且临近边界层外层的面网格会局部重建),且需指定边界层与临近面网格之间的最大允许角度,以便进行调整和连接。

注:投影面暂时不能为四边形类型。

"AutoConnectAngleLimit": true,
"ConnectLimitAngle": 60

如下图所示,修改 FSPairs ,仅设置面 6,此时面 6 与临近面 1、2、3 和 4 之间的连接角度为 0 度,当激活该选项时,边界层将与这些面连接,且这些面会自动重建。

"FSPairs":
[
{
"F": 6,
"S": 1
}
]

若不激活该功能,边界层将不与临近面网格连接。

"AutoConnectAngleLimit": false

对于该案例,如果不激活该选项,可能会导致生成失败。

矢量处理选项

"VectorTreatment":
{
"SmoothTopCapShellMesh": true, // 取值范围:{false,true}
"SmoothVectors": [true,90], // 取值范围:{false,[true,[0,180°]]},默认值为[true,90]
}

SmoothTopCapShellMesh

如果激活该选项,允许矢量从其原始法线位置移动;如果不激活,则层以正交方式生长。 允许这个操作可以生成更多层,因为网格在封闭区域“打开”得更多,但是可能导致质量较差(较少正交)的网格。

SmoothVectors

如果激活该选项,则用户指定与原始正常位置的最大允许角度偏差,允许这个操作可以生成更多层,因为网格在封闭区域“打开”得更多,但是可能导致质量较差(较少正交)的网格。

增长控制

"GrowthControls":
{
"MaxTopFacetEquiareaSkewness": [true,0.95], // 对三角形面网格, [true,quality]/false
"MaxTopFacetWarping": false, // 对四边形面网格, [true,quality]/false
"MaxLayerAspect": false, // [true,value]/false
"MaxAllowedAspectProceed": false // [true,string]/false
}

MaxTopFacetEquiareaSkewness,MaxTopFacetWarping

当边界层从非平坦起始表面生长时,顶部面网格可能出现严重扭曲的单元,导致后续生成的四面体质量不佳。
若启用 MaxTopFacetEquiareaSkewness 选项,当顶部三角形面网格单元扭曲度超过设定阈值时,将停止边界层生长。通常建议启用该选项并将阈值设置为 0.95 以上。
若启用 MaxTopFacetWarping 选项,当顶部四边形面网格单元翘曲值超过设定阈值时,将停止边界层生长。

MaxLayerAspect,MaxAllowedAspectProceed

在表面单元长度较小的区域使用绝对模式生长边界层时,有时会出现边界层过度生长的情况,这些层可能会变得异常高。通过指定最大层高宽比(层单元高度/层单元基底宽度),可确保层高保持在合理范围内。

当边界层高宽比达到该限值时:

  1. ConstantHeight-达到阈值后保持恒定高度:当达到允许的最大层高宽比时,后续以恒定层高继续生长。
  2. LocalCollapse-达到阈值后局部坍缩层:当达到允许的最大层高宽比时,立即停止该区域的层生长,在该区域塌陷(需要激活 COLLAPSE)。

点击这里example05可获得三维边界层详细 JSON 示例完整源码,大家根据学习需要自行下载。