
*set_meshedgeparams设置自动网格划分模块中某些边特定的参数。语法*set_meshedgeparams edge_index elem_density alg_type bias_style bias min_size max_size chordal_dev max_angle类型HyperMesh Tcl 修改命令描述该命令用于设置自动网格划分模块中边特定的参数可控制标准网格算法与弦向偏差网格算法的相关参数。输入参数edge_index当前曲面中目标边的索引。此为从0开始的索引对应通过 hm_getsurfaceedges 命令返回的边列表顺序。用户可先用 hm_getsurfaceedges 查询曲面边返回列表中各边的索引起始于0即为有效取值。elem_density沿指定边布置的单元密度。alg_type1 - 使用尺寸与偏置算法2 - 使用弦向偏差算法。首次为某边调用本命令或弦向偏差相关参数发生变更时elem_density 将被忽略边单元密度自动设为弦向偏差参数所需值。后续以相同弦向偏差参数调用时将按指定 elem_density 重置边密度并保持原有分布。若设置 elem_density 0则边密度将重置为弦向偏差参数计算所得值。bias_style偏置样式有效取值0 - 线性1 - 指数2 - 钟形曲线bias沿指定边应用的单元长度偏置系数。min_size弦向偏差网格划分时该边允许的最小单元尺寸。max_size所有 alg_type 模式下该边允许的最大单元尺寸。chordal_dev该边单元允许的最大弦向偏差距离。max_angle弦向偏差网格划分时该边相邻单元链之间的最大转角单位度。示例为边 29 设置基于偏差的节点布种最小单元尺寸 0.5最大单元尺寸 15.0最大弦向偏差 0.2最大单元链转角 25 度并采用弦向偏差参数自动计算的单元密度*set_meshedgeparams 29 0 0 0 0 0.5 15 0.2 25同上设置但指定单元密度为 4需连续执行两次命令以生效*set_meshedgeparams 29 4 0 0 0 0.5 15 0.2 25*set_meshedgeparams 29 4 0 0 0 0.5 15 0.2 25错误使用不当将触发 Tcl 错误。可通过 catch 命令捕获错误if { [ catch {command_name…} ] } {错误处理逻辑}另请参阅*ameshclearsurface*automesh*interactivemeshsurf*rejectmesh*storemeshtodatabase*tetmesh创建四面体网格和 CFD 四面体网格带边界层。语法*tetmesh entity_type1 mark_id1 mode1 entity_type2 mark_id2 mode2 string_array number_of_strings类型HyperMesh Tcl 修改命令描述一个通用的单次四面体网格操作可包含一个命令块该命令块由零次或多次 *tetmesh_set_input 调用以及随后的一次 *tetmesh 调用组成。*tetmesh 最多可接受两个不同的实体输入/选择而 *tetmesh_set_input 会为 *tetmesh 提供额外的实体选择最多四个。以下讨论适用于整个四面体网格命令块。在命令参数列表中每组三元组 entity_type mark_id mode 指定了一组实体输入这些输入要么定义了网格划分体的部分边界要么定义了单元尺寸控制盒。当 mark_id 为 0 或 mode 为 -1 的实体输入被视为非活动输入。非活动输入在命令内部会被忽略。但是对于非活动输入entity_type 仍必须是有效的实体名称。输入可以为空且仍为活动状态。一个 mode 为 6 的空活动输入将在内部自动填充。如果存在 mode 为 2 或 3 的输入生成的网格称为 CFD 网格。否则称为非 CFD 网格。此外请注意并非所有三元组值的组合都有效。所有活动实体输入的一般规则及其内部处理方式如下且必须全部满足必须至少有一个活动输入。最多可使用 7 个输入但每个活动模式值最多只能出现一次。模式 0、1、2、3 和 6 用于网格划分体的边界输入。对于这些模式entity_type 为 elems 或 comps 的输入是按单元进行的边界输入entity_type 为 solids 或 surfs 的输入是按几何进行的边界输入。所有边界输入必须要么全部是按单元输入要么全部是按几何输入。对于按单元且 mode 为 0、2 和 3 的输入除 2D 单元外的所有单元均被忽略。对于 mode 为 1 的输入同时接受 1Dplotel和 2D 单元。此时1D 单元指定了必须出现在最终网格中的单元边。对于 mode 为 6 的输入除 3D 单元外的所有单元均被忽略。对于按几何输入所有没有预先生成网格的曲面无论其输入模式如何均被视为浮动曲面。内部会使用通过 string_array 参数传入的 2D 网格参数对这些曲面进行自动网格划分。entity_type 为 solids 的输入不能超过一个。也就是说如果有一个 solids 输入所有其他边界输入的 entity_type 必须为 surfs。此外还要求所有这些曲面选择都位于所选实体上其他曲面将被静默忽略。对于 mode 4entity_type 必须为 comps。所选实体必须是专门为尺寸控制盒构建的组件其他组件将被静默忽略。对于 mode 5entity_type 必须为 nodes。过于靠近其他锚节点、位于网格划分体外部或过于靠近网格划分体边界的节点将被忽略。对于 mode 6 的输入所有边界输入必须按单元进行。所有其他边界输入均被视为 2D 挡板以及 1D 约束。一个 mode 为 6 的空输入将在内部由挡板模式 0、1、2 和 3、尺寸控制盒模式 4和锚节点模式 5的输入自动填充。否则所有输入模式为 0-5 且位于 3D 选择之外或过于靠近 3D 选择边界的实体将被忽略。如果单个命令有两个活动实体输入其 mark_id 必须不同。允许不同模式的输入存在重叠选择。重叠部分在命令内部解决。一般规则是较早命令中的输入具有较高优先级而在同一命令内较后的输入具有优先级。如果输入的 entsolids则无论其在输入顺序中的位置如何始终具有最低优先级。输入entity_type1第一个实体类型。有效值为 nodes、elems、comps、surfs 和 solids。mark_id1包含第一个实体的标记 ID。有效值为 0非活动输入、1 和 2。mode1-1 - 忽略非活动输入0 - 无边界层的浮动1 - 无边界层的固定2 - 带边界层的浮动3 - 带边界层的固定4 - 尺寸控制盒5 - 锚节点6 - 3D 重网格7 - 具有可交换浮动自由边界的 3D 重网格。8 - 具有可重网格浮动自由边界的 3D 重网格。9 - 无边界层的可重网格浮动10 - 带边界层的可重网格浮动11 - 用于流体体积选择的单元输入。被接触或其法向指向内部的体积为流体体积。注意如果某个浮动输入通过上面列出的模式或通过 “pars:…” 字符串中的 “shell_remesh” 参数设置为可重网格则所有浮动输入均设置为可重网格。否则所有浮动输入仅为可交换但接受边界层压印的非边界层输入除外。entity_type2第二个实体类型。有效值为 nodes、elems、comps、surfs 和 solids。mark_id2包含第二个实体的标记 ID。有效值为 0非活动输入、1 和 2。mode2-1 - 忽略非活动输入0 - 无边界层的浮动1 - 无边界层的固定2 - 带边界层的浮动3 - 带边界层的固定4 - 尺寸控制盒5 - 锚节点6 - 3D 重网格7 - 具有可交换浮动自由边界的 3D 重网格。8 - 具有可重网格浮动自由边界的 3D 重网格。9 - 无边界层的可重网格浮动10 - 带边界层的可重网格浮动11 - 用于流体体积选择的单元输入。被接触或其法向指向内部的体积为流体体积。string_array包含网格划分参数数组的字符串数组的 ID。该字符串数组使用 *createstringarray 命令创建。此值应始终设置为 1。每个参数可以用空格或逗号分隔。共有 6 种类型的字符串可以传递如下所示。可以根据具体的网格划分需求传递这些字符串的不同组合。用于检查输入网格有效性的选项“shchk: mode prox_tol angle_tol”两个实体输入中至少需要有一个被填充。检查功能仅接受 elems 或 comps 作为输入且只考虑壳单元。如果只填充了一个输入则检查为“自检”即收集所有造成干涉的单元。如果两个输入均为非空则检查为“互检”即只有当干涉对同时涉及两个输入时才会被收集。消息栏会提供检测结果的简要视图。例如32790 elems:x34698 pairs, prx1680.001/min1.91e-7, angle30.5, dups0 on 032790 elems - 输入包含 32790 个壳单元x34698 pairs - 发现 34689 对自相交单元对prx1680.001/min1.91e-7 - 对于阈值距离 0.001发现 168 对邻近单元对最差情况为 1.91e-7angle30.5,min0.01 - 发现 3 对二面角小于 0.5 度的单元对最差情况为 0.01 度dups45 on 10 - 发现 45 对重复壳单元对共涉及 10 个壳单元mode四面体网格选项。使用位值其值计算方式为 (Bit0_Bit1 16Bit4 32Bit5)。Bit0_Bit1: 体积分析0 - 保留1 - 使用内法向为正内部为正分析体积后执行逐个体积检查。如果输入未形成体积则报错。对于邻近性收集正侧的邻近性。对于二面角由于使用了方向角度 “A” 与 “360-A” 不同而在无方向值 3 的情况下“A” 等同于 “360-A”。2 - 不分析体积但使用单元法向。为使方向有意义用户需要在此处检查前将输入调整为一致的法向方向效果参见上面的逐个体积检查。3 - 不分析体积且不使用方向。每个单元的两侧等同处理。Bit4: 收集选项。特殊命名如下^err_x_elems - 存在自相交的单元^err_prx_elems - 邻近性不满足要求的单元无自相交^err_agl_elems - 二面角不满足要求的单元注意每个组件或集合只能收集同一单元一次。即所有配对信息都会丢失。0 - 将检测到的单元复制到特殊命名的组件中红色1 - 将检测到的单元放置到特殊命名的集合中Bit5: 按簇分组选项0 - 不按簇进一步分类检测结果1 - 按簇进一步分类检测结果。簇是由邻接和干涉配对关联的一组单元。使用此选项每个簇拥有自己的组件或集合其名称后附加 _cluster_id例如 ^err_x_elems_2。prox_tol邻近检测的阈值。输入单元与其他输入单元的距离小于此值时将根据 mode 收集到组件或集合中。两个单元只有在不共享边且至少一个位于另一个的前向或后向锥体内时才可能存在邻近性。锥体形状由内部定义。 0.0 - 禁用邻近检测 0.0 - 仅检测自相交0.0 - 同时检测自相交和邻近性angle_tol二面角检测的阈值。输入单元与其他相邻输入单元的二面角小于此值时将根据 mode 收集到组件或集合中。 0.0 - 禁用角度检测控制四面体核心部分网格的四面体网格划分参数。对所有网格划分类型都是必需的“tet: tet_opts growth_rate uniform_layers max_size qt_ratio min_size”或“tet: tet_opts growth_rate uniform_layers max_size qt_ratio min_height”tet_opts四面体网格选项。使用位值其值计算方式为 (Bit0_Bit1_Bit2 Bit5_Bit6_Bit7 256*Bit8)。Bit0_Bit1_Bit2: 核心四面体网格及优化方法。0 - 未使用。1 - 正常。2 - 优化性能。3 - 优化质量。4 - 仅生成边界层。仅当存在边界层输入时有效。Bit5_Bit6_Bit7: 四边形过渡设置。仅当存在固定四边形输入时使用。0 - 保持四边形原样。仅对仅边界层模式有效。32 - 为每个四边形过渡构建一层 1 个金字塔单元。64 - 为每个四边形过渡构建一层 5 个金字塔单元和 2 个四面体单元。96 - 边界层六面体单元在所有层中拆分为三棱柱单元。128 - 边界层单元在所有层中拆分为四面体单元。Bit8: 单元到几何的标志。仅对按几何输入的非 CFD 网格有效。对于 CFD 网格单元始终放置在具有特殊名称的固定组件中。对于所有其他情况单元进入当前组件。0 - 单元到当前组件。256 - 单元到几何组件。Bit10: 固定中节点的标志。优化表面上二阶四面体中节点的方法。0 - 允许曲面上的中节点移动到优化位置。1024 - 曲面上的中节点将被固定不重新定位。growth_rate边界处四面体网格单元尺寸的生长率典型值 1.2范围 1.0。uniform_layers需保持均匀单元尺寸的四面体层数典型值 2.0范围 0。max_size最大单元尺寸的限制。值为 0.0 表示无限制典型值 0.0。qt_ratio仅影响四边形过渡层。它决定了层高度占局部 2D 单元尺寸的比例典型值 0.8。min_size单元尺寸的名义下限。值为 0.0 表示无下限典型值 0.0。min_height最小单元高度。值为 0.0 表示无限制典型值 0.0。如果未指定命令的行为如同未实现此功能。CFD 边界层网格划分参数。仅当一个或多个边界选择的模式为 2 或 3 时需要“cfd: cfd_opts bl_thick0 bl_thicktotal bl_growthrate size_trans_flag”cfd_opts平滑/原生边界层网格的标志。Bit0: 拆分模式。仅对原生边界层或当 size_trans_flag1 时有效。0 - 所有非四面体的 3D 单元均拆分为四面体。1 - 边界层中的三棱柱和金字塔单元不拆分为四面体。Bit1: 主要边界层模式。0 - 使用原生边界层方法。2 - 使用平滑边界层方法。Bit2-Bit3: 边界层总厚度模式。仅对平滑边界层方法有效。0 - bl_thicktotal 指定总边界层厚度。4 - bl_thicktotal 指定总边界层层数。8 - bl_thicktotal 指定总边界层厚度与平均输入单元尺寸的比值。Bit4: 非边界层重网格模式。仅对平滑边界层方法有效。0 - 与边界层单元相交的浮动非边界层输入通过变形来适应边界层。32 - 与边界层单元相交的浮动非边界层输入通过压印重网格来适应边界层。Bit5: 分布边界层厚度模式。仅对平滑边界层方法有效。0 - 无特殊的边界层厚度分布。64 - 使用特殊加载组件 ^CFD_BL_Thickness 来提取边界层厚度缩减率分布。请注意此组件需要使用自动或手动的边界层厚度生成工具预先构建。Bit7: 特殊组件清理模式。仅对平滑边界层方法有效。0 - 不先删除特殊 CFD_boundary_layer 和 CFD_tetramesh_core 组件中的单元。128 - 先删除特殊 CFD_boundary_layer 和 CFD_tetramesh_core 组件中的单元。Bit8: 确定是否对挡板边或内凹尖角边角度比给定阈值更尖锐使用多法向。此阈值角度默认为 1.5 度可通过下面 “pars:…” 字符串中的 unoffsettable_angle 重置。0 - 对挡板边和内凹尖角边上的节点塌陷边界层。256 - 在挡板边和内凹尖角边上的每个节点使用多法向目前为 2 个以生成包裹它们的边界层。bl_thick0第一层厚度。bl_thicktotal总边界层厚度或层数取决于 cfd_opts。仅对平滑边界层方法有效。bl_growthrate边界层生长率典型值 1.1范围 1.0。size_trans_flag边界层到四面体核心单元尺寸的过渡模式。仅对平滑边界层方法有效。如果设置为 1只要可能边界层高度将平滑过渡到核心单元尺寸。在极少数无法为某些挡板单元构建平滑边界层的情况下激活此模式可能导致网格划分失败。针对单元尺寸控制盒“size_ctrl: x1 y1 z1 x2 y2 z2 … x8 y8 z8”此字符串包含 25 个双精度数并输入一个尺寸控制盒。注意也可以使用为尺寸控制盒专门预构建的组件来输入尺寸控制盒参见 *tetmesh_create_size_ctrl。上述前 24 个数字由 8 个三元组组成每个三元组定义了控制盒一个角的 3D 坐标。各角的顺序与 HM 六面体单元相同。最后一个数字是位于盒内及附近的单元的目标单元尺寸。对于 2D 自动网格划分参数用于对未划分网格的输入曲面进行网格划分。仅对按几何进行网格划分时需要“2d: elem_order elem_type mesh_type elem_size min_size max_angle use_existing_mesh”elem_order单元阶次。应与全局单元阶次设置相同。有效值为 1 和 2。elem_type单元类型。有效值为0 - 三角形1 - 四边形2 - 混合3 - 直角三边形R-trias4 - 仅四边形mesh_type网格类型。有效值为1 - 无弦长、无曲率、无邻近2 - 有弦长、无曲率、无邻近3 - 无弦长、无曲率、有邻近4 - 有弦长、有曲率、有邻近5 - 有弦长、有曲率、无邻近elem_size2D 单元尺寸。min_size最小单元尺寸。max_angle特征角以度为单位通常为 30。use_existing_mesh0 - 重新创建输入曲面上的 2D 网格即使已存在网格1 - 仅在没有预先生成网格的输入曲面上创建 2D 网格默认其他未分类或较少使用的网格划分参数。键值对由空格或逗号分隔。通常一个键可能有一个默认关闭值和一个默认开启值。当键未出现在 “pars…” 字符串中时采用默认关闭值当键出现在 “pars:…” 字符串中但没有 “value” 部分时采用默认开启值。另请注意并非所有键都有默认开启值。在这种情况下“value” 部分是必需的。“pars: key1value1 key2value2 …”aft/delauney/octreeaft - 基于传统波前法进行节点插入。delauney - 基于 Delaunay 方法进行节点插入未指定时的默认值。octree - 基于八叉树方法进行节点插入。整数值参数auto_cfd_bc如果开启浮动输入的壳单元将由生成实体单元的相应面更新。0 - 不重新分类界面输入单元默认关闭1 - 网格划分流体体积之间的所有界面输入单元均自动重新分类为浮动无边界层输入而不管它们在输入时如何指定默认开启bdr_iso_lyrs0 - 不创建各向同性分层网格默认关闭1 - 创建各向同性分层网格默认开启feature_angle仅在 skip_aflr3 开启时有效。用于四面体网格优化的特征角。fill_void确定是否对自动检测到的空腔进行网格划分。0 - 不填充默认关闭1 - 填充默认开启fix_comp_bdr保留输入组件之间的边界。0 - 不保留默认关闭1 - 保留默认开启fix_top_bdr仅在 skip_aflr3 开启时有效。0 - 在执行四面体网格优化时按节点而非拓扑保留曲面边界默认关闭1 - 在执行四面体网格优化时按拓扑而非按节点保留曲面边界默认开启niter仅在 skip_aflr3 开启时有效。用于四面体网格优化的最大迭代次数。必须为 ≥ 0 的值。默认关闭值为 0没有默认开启值。nlayer_tet四面体网格的最小层数≥ 1默认 1。no_tetra_has_2btri0 - 不阻止任何生成的四面体在边界上拥有多于一个面默认关闭1 - 阻止任何生成的四面体在边界上拥有多于一个面默认开启post_cln如果开启当四面体网格划分失败时先检查并清理壳单元然后重试四面体网格划分。0 - 四面体划分失败后不清理默认关闭1 - 四面体划分失败后清理默认开启pre_cln如果开启在四面体网格划分前检查并清理输入的壳单元。0 - 不清理默认关闭1 - 清理默认开启shell_remesh0 - 仅交换默认关闭1 - 浮动输入可以被重网格默认开启shell_swap仅在 skip_aflr3 开启时有效。在执行四面体网格优化时输入三角形仅为可交换。shell_validation0 - 四面体网格划分前不检查壳单元有效性默认关闭1 - 四面体网格划分前检查壳单元有效性默认开启skip_aflr30 - 不跳过 AFLR3默认关闭1 - 跳过 AFLR3默认开启upd_shell如果开启浮动输入的壳单元将由生成实体单元的相应面更新。0 - 不更新浮动壳单元默认关闭1 - 更新浮动壳单元默认开启task0 - 正常运行默认关闭1 - 仅初始 Delaunay 四面体化创建一个初始的 Delaunay 四面体网格仅插入最少的节点。插入的节点仅用于成功恢复边界壳网格。64 - 生成输入的凸包。双精度值参数bl_core_r用于避免边界层碰撞的动态边界层厚度缩减参数。有效值为1.0 - 禁用默认关闭值。0.0 - 启用指定值为四面体核心厚度与边界层厚度的厚度比。bl_corer_r用于尖角处避免边界层碰撞的动态边界层厚度缩减参数。有效值为 1.0 ≥ 值 0.0。默认关闭值为 0.3。1.0 - 禁用默认关闭值。0.0 - 启用指定值为四面体核心厚度与边界层厚度的厚度比。bl_int_lyrs要进行插值而非逐层平滑处理的初始边界层层数。值为 ≥ 0.0默认关闭值为 0.0。bl_iter_max每层边界层最大平滑迭代次数介于 0.0 和 3000 之间。0.0 表示自动计算。默认关闭值为 0.0。bl_res_thr边界层平滑的相对残差收敛准则介于 0.0 和 1.0 之间。在任何平滑迭代中如果最差相对残差低于此值则执行平滑。0.0 表示自动计算。默认关闭值为 0.002。unoffsettable_angle阈值角度以度为单位介于 0.0 和 45.0 之间。如果单元边的内二面角比此阈值更尖锐则该边被归类为内凹尖角。挡板边始终被视为尖角边。尖角边上的边界层根据 “cfd:…” 字符串中 cfd_flags 选项的第 8 位通过边界层节点塌陷或每个节点多法向包裹来处理。默认关闭值为 1.5。shell_dev,定义在改善四面体质量时允许偏离及沿“几何”的偏差。典型值可能为 shell_dev0.01,0.1。质量参数可以使用任意组合aspect纵横比。范围 1.0典型值为 8.0。cell_squ单元压扁度。范围 [0-1.0]典型值为 0.9。skew偏斜度。范围 0.0典型值为 60。stretchSimLab 拉伸准则 sqrt(R/Lmax)其中 R 是内切球半径Lmax 是最长四面体边。对于等边四面体stretch 为 1。范围 [0-1.0]典型值为 0.1。tet_clps四面体坍塌。范围 [0-1.0]典型值为 0.1。vol_ar体积纵横比。范围 1.22典型值为 8.0。vol_skew体积偏斜度。范围 [0-1.0]典型值为 0.95。用于将网格保存到文件的参数。此字符串是可选的主要用于处理大型模型。当存在此字符串时生成的网格不会在 HM 数据库中创建而是以 Nastran 格式直接写入指定的文件。“save_as: file_path”file_path保存网格的文件路径。如果路径包含空格应使用 对将其括起来例如 “save_as: “C:\Program Files\mesh.dat””。用于四面体网格核心高级控制的参数。这些参数值优先于通过四面体网格字符串定义的值。每个名称/值对必须是 AFLR3 中定义的有效参数字符串名称/值对。“aflr3_int: str_name1 int1 …”“aflr3_dble: str_name1 double1 …”“aflr3_str: str_name1 str_value1 …”number_of_strings整数指示使用 *createstringarray 创建的字符串数组的大小字符串数量。示例四面体网格*createstringarray 1 “tet: 579 1.2 2 0 0.8 0 0”*createmark comps 2 “inlet” “outlets” “wall” “wall_cyl”*tetmesh comps 2 0 elems 0 -1 1 1带固定挡板的四面体重网格*createstringarray 1 “tet: 579 1.2 2 0 0.8 0 0”*createmark comps 2 “some_3d_elems”*createmark comps 1 “some_baffle_elems”*tetmesh comps 2 6 comps 2 0 1 1按几何进行四面体网格划分*createstringarray 2 “tet: 547 1.2 2 0 0.8 0 0” “2d: 1 0 1 4 0.8 30”*createmark solids 1 4 5*tetmesh solids 1 1 elems 0 -1 1 2CFD 网格*createstringarray 2 “tet: 579 1.2 2 0 0.8 0 0” “cfd: 86 0.2 1 1.2 0”*createmark comps 2 “inlet” “outlets”*createmark comps 1 “wall” “wall_cyl”*tetmesh comps 2 0 comps 1 2 1 2错误不正确的用法会导致 Tcl 错误。要检测错误可以使用 catch 命令if { [ catch {command_name…} ] } {处理错误}版本历史11.02017.1 - 为 pars 字符串添加了 aft/delauney/octree 值。2020 - 为 tet 字符串添加了新参数 min_height。2020.1 - 为 pars 字符串添加了新参数 shell_dev。tet 字符串参数 max_size、min_height 和 min_size 现在作为主动优化目标而不仅仅是被动的拆分约束。常规四面体网格划分现在允许多个准则。