Avizo用户使用手册-13
[TOC]
Chapter 13
13 Avizo XWind Extension 用户指南
Avizo XWind Extension提供了用于创建、分析、可视化和呈现来自CAE与CFD仿真数值解的工具。
Avizo XWind Extension为以下方面提供了高级支持:
- 定义仿真输入
- 为流动、应力或热分析等数值仿真应用生成3D网格
- 边界条件
- 把曲面或3D网格导出到数值求解器
- 对来自求解器的结果数据进行后处理
- 对来自仿真或测量的标量场、矢量场和张量场进行强大的可视化与分析
- 以低内存占用从主流CAE文件格式导入,并快速管理模型数据
- 灵活的探测与测量
- 在仿真结果上广泛地计算导出变量和统计量
- 诸如涡核线或临界点之类的高级特征提取工具
Avizo XWind Extension适用于以下方面:
- 对来自仿真或测量的数据进行探索、分析和比较
- 由3D图像建模,用于有限元分析(FEA)、计算流体动力学(CFD)、计算机辅助设计(CAD)和快速原型制造
- 高质量的呈现与交流,从影片生成到远程协作、沉浸式显示或虚拟现实(需要Avizo XScreen Extension)
Avizo Lite Edition提供的基础后处理支持大多局限于可视化。Avizo XWind Extension通过添加基于Delaunay的高级网格生成与后处理计算,以及导出变量、统计量和特征提取的分析功能,扩展了Avizo Lite Edition的功能集。Avizo XWind Extension还带来了对由四面体、六面体、金字塔和楔形体所构成的非结构化混合网格的稳健支持。大多数CAE文件格式仅在Avizo XWind Extension中受支持。所支持文件格式的完整列表请参阅用户指南的File Formats Index。
通过遵循所提供的教程,你将学会如何在你自己的数据集上使用这些模块。开始时,你不必阅读tips部分。
本教程所使用的数据通常安装在你的AVIZO_ROOT目录下的data/tutorials/cfd-fea-advanced目录中。
定义仿真输入:
- Avizo XWind Extension 网格划分工作间
- Avizo XWind Extension 网格划分教程
对求解器结果进行后处理:
- CAE/CFD数据的读取与可视化入门
- Avizo XWind Extension 模型信息与显示
- Avizo XWind Extension 标量场显示
- Avizo XWind Extension 矢量场显示
- Avizo XWind Extension 统计与算术运算
- Avizo XWind Extension 涡度识别
- Avizo XWind Extension 测量
13.1 网格划分工作间
本工作间仅在Microsoft Windows平台上可用。
Meshing Workroom(网格划分工作间)是一个用于创建仿真输入的预处理工具。它支持计算带边界条件的四面体网格。随后可以把该网格导出为各种求解器的文件格式,例如Fluent、COMSOL Multiphysics (c)等,参见XWind file formats。
Meshing Workroom并不使用Avizo中原有的、基于推进波前法(advancing front technique)的网格划分引擎。该工作间中所使用的网格划分引擎基于Delaunay细化,并且需要Avizo XWind Extension许可证。目前,Meshing Workroom仅在Windows平台上可用。
Meshing Workroom把一个label field(标签场,目前仅支持8位标签场)作为输入来生成网格。标签场可以用Segmentation Workroom或其他工具(例如Interactive Thresholding、Auto Threshold等)来创建。
不需要其他输入。可选地,可以使用各种uniform scalar fields(均匀标量场)来控制网格密度(参见高级模式(Meshing标签页))。
完整的工作流描述请参阅Meshing Workroom教程。
Meshing Workroom的文档分为以下几个部分:
- 首要步骤
- 检查所生成的网格
- 快速网格划分与精确网格划分
- 控制网格的细化
- 高级网格划分模式
- 故障排查
- 为网格指派边界条件
- 导出网格
- 为该工作间编写脚本:TCL命令列表
- 进度条提示
所有使用玉米籽粒数据集的插图,均由伊利诺伊大学厄巴纳-香槟分校的Pawan S Takhar友情提供。
13.1.1 首要步骤
要激活Meshing Workroom,请按下Workroom工具栏中的Meshing Workroom图标。该工作间的主要部分包括:
- 一个通用区域:该工作间的这一区域让你查看或选择当前设定在该工作间中的网格。它还让你选择工作流中所面向的求解器类型。每当创建了一个网格,就会出现一个Export按钮。它会以从type字段中所选的格式导出该网格(图13.1)。
- 一个Meshing标签页:这是你构建网格的地方。可以使用label data字段设置一个标签输入。一旦你设置好Create按钮使其变为可用,你就可以生成一个网格了(图13.2)。
图 13.1:通用区域。
图 13.2:Meshing标签页。
- 一个Boundary标签页:这是为网格指派边界条件的地方。各种工具让你可以选择属于某个给定边界条件组(具有给定的名称和ID)的单元(三角形)。只有在所选文件格式允许导出边界条件时,该标签页才可用(图13.3)。
图 13.3:Boundary标签页。
最基本的工作流包括以下内容:
- 创建一个label field(例如参见
Segmentation Workroom),使其噪声(小点、错位等)尽可能少。 - 在标签页上方的通用区域中设置导出格式。如果该导出格式允许,Boundary标签页就会变为可用。
- 把标签设置到
Meshing Workroom的Meshing标签页的label data输入中。 - 设置网格划分选项,并通过单击Create创建网格。创建完成后,该网格会显示在该工作间的主查看器中。
- (可选)如果导出格式允许,为该网格指派边界条件。
- 最后,通过单击标签页上方通用区域中的Export,把该网格导出为所选格式。
Meshing Workroom文档的后续几节介绍并描述了各种可用的网格质量与优化设置。你既可以使用Create为某个给定的label field创建一个新版本的网格,也可以使用Replace覆盖当前设定在Mesh输入中的网格。
网格创建之后,该网格会被自动可视化在主查看器中(图13.4)。
所生成的网格会被自动设定到Meshing Workroom的Mesh输入中。
选中与该网格相对应的绿色模块时,可以从Properties区域的Project标签页中获得网格属性(节点数、三角形数、四面体数)(图13.5)。
控制台会输出关于网格生成的一些统计信息。
图 13.4:网格视图。
图 13.5:网格属性。
13.1.2 检查所生成的网格
所生成网格中各材料的可见性可以被打开和关闭,以便检查网格的不同部分。
每个单独材料的可见性可以从Meshing标签页的materials部分访问(图13.6和图13.7)。
图 13.6:材料可见性。
图 13.7:隐去一种材料的网格。
为了检查内部单元,主工具栏中提供了一个专用于四面体网格可视化的裁剪平面。要激活裁剪,请打开主工具栏中的Clip按钮。结果见图13.8。
该裁剪平面会自动裁掉任何不与该平面相交、且位于被裁剪一侧的四面体。有多种选项可用于操纵裁剪平面:
- 用鼠标左键选中该平面,并在保持左键按下的同时移动鼠标。这会使该平面沿其法线方向平移。
- 通过单击主工具栏中的XY、XZ或YZ,把该平面设为垂直于主轴(X、Y、Z)。
- 单击Rotate以显示位于该平面中心的一个专用操纵器(图13.9)。用鼠标左键选中该操纵器,并在保持鼠标左键按下的同时移动鼠标进行旋转。
- 单击主工具栏中的Clipping plane side selector以改变裁剪的一侧。
- 如果与裁剪平面的交互很慢,请关闭Interactive Mode。在这种情况下,当你与软件交互时裁剪不会生效,只有在鼠标左键被释放时才会应用裁剪。
图 13.8:被裁剪的网格。
图 13.9:裁剪平面旋转操纵器。
13.1.3 快速网格划分与精确网格划分
默认情况下,Meshing标签页中激活的是快速网格划分模式。该模式允许对某个给定标签的网格划分进行快速原型试验。它之所以快,是因为网格划分不受任何几何形状的约束。所生成的网格构建速度快,但在标签之间的边界处缺乏精度。请勾选Fast Meshing复选框以停用所生成的网格。
当不使用快速网格划分选项时,网格划分引擎会在标签之间的边界处受到各自界面的约束。这些界面由使用Generate Surface模块所生成的曲面来定义。该模块以约束模式(constrained mode)和Fit To Edge选项被使用。除非该标签带有权重(由Segmentation Editor或其他方法指派),在这种情况下该模块会使用Existing Weight Smoothing选项。
建议你输入一个带权重的、经过平滑的标签,这样就没有或只有很少的阶梯状区域需要被网格划分器在拓扑上保留下来(那些区域将需要被非常精细地细化)。该标签还应当尽可能干净,把所有不必要的小材料区域清理掉,因为这类区域可能造成不必要的过度细化。例如在图13.10中,棕色材料中间的那个小橙色材料点会被保留下来,因此网格划分器会在该区域周围过度细化:
图 13.10:不干净的标签图像示例。
可以使用一个隐藏端口来指定一个不同于内部所生成的曲面。
要取消隐藏它,你可以在控制台中键入"theMeshingTabController" enableSurfaceSelection 1。标签页中会出现一个Surface Data端口。请在那里设置你的曲面。
该端口允许你使用一个自定义曲面(例如由用户平滑或简化过的曲面)。
使用自己的曲面可能有若干优势:
- 首先,如果你为该端口设置了一个曲面,就不会发生内部的曲面生成,因此你可以生成自己的曲面,然后在停用快速网格划分模式的情况下测试各种设置。否则,每次create或replace时都会在内部生成曲面。
- 其次,如果内部曲面很密,网格划分可能耗时很长。你可以控制自己曲面的尺寸(通过简化)来加速网格划分。不过,输入曲面必须满足以下准则:
- 水密曲面(Watertight surface)
- 不同材料之间没有自相交(这可以用Surface Editor的自相交测试来检查)
13.1.4 优化
在两种模式下(无论是否使用快速网格划分),都可以优化四面体节点的位置,以减少网格中细长片状体(slivers)的数量。当一个四面体的四个顶点被放置在其外接球的赤道附近时(例如扁平的四面体),就形成了一个sliver四面体。Sliver可能会减慢数值仿真的收敛速度。sliver越少越好。
Optimize Mesh选项旨在通过随机重定位顶点来扰动这些sliver,从而减少它们的数量。如果激活该选项,网格生成可能会稍微久一些。
更多优化选项可在tetra mesh module中获得。
13.1.5 控制网格的细化
有许多选项可用于微调你网格的细化。
13.1.6 滑块质量与分组
Mesh Quality滑块提供五个质量级别,用于为输入的label field划分网格,从低到高。每个质量级别都会自动设定若干网格划分选项。你可以通过查看Parameters Group中被灰显区域内各值是如何设定的,来检查不同质量级别对网格划分引擎设置的影响(图13.11)。
图 13.11:参数组。
改变质量会影响其中的常数。每个质量级别会设定一个因子,该因子要乘以体素尺寸(对于各向同性体素):质量越高,该因子越低。对于各向异性体素,使用的是沿X、Y和Z方向的平均体素尺寸。请注意,网格质量并不保证每个单元的尺寸都相同,因为网格划分器最高优先的约束是保留输入标签的拓扑结构。不过,如果可能,它会尝试用所指示的参数来适配某个给定区域。默认情况下,由该滑块设定的质量应用于default组。所选的组会被写在meshing标签页中。
可以添加新的组,以便为不同的材料指派不同的质量。通过单击Add Group来创建一个新组。然后,只需把任何材料拖放到新创建的组中即可。当选择该组或该组中的任何材料时,网格质量滑块就会应用于这个特定的组。可以创建多个组并为它们指派不同的质量。当某个组被移除时,该组中原有的所有材料都会回到默认组——默认组是无法被移除的。示例见图13.12。
图 13.12:材料分组。
13.1.7 保留薄结构
Preserve Thin Structures选项确保薄结构被保留下来:尽管网格质量是由Mesh Quality滑块设定的。实际上,该选项会自动把facet distance(边界与细分曲面的近似误差)设为0.25倍的体素尺寸。这确保了即使最小的结构也能被保留。它会在边界上生成精细的单元,但在内部仍会尝试遵守cell size。此外,在Fast Meshing模式被停用时,曲面会在内部不加平滑地生成,以确保不会因平滑操作而丢失任何单元。该模式仅在非高级模式下可用。如果你需要在高级模式下获得类似的结果,你将需要使用你自己的未平滑曲面(并停用Fast Meshing模式)。
图13.13和图13.14展示了使用该模式与不使用该模式之间的差别:图13.13显示的是停用了Preserve Thin Structures选项的网格。有一个结构(由左侧箭头指出)丢失了。激活该模式则会保留这些结构。
图 13.13:未使用Preserve Thin Structures选项。
图 13.14:使用了Preserve Thin Structures选项。
13.1.8 边界层
Boundary Layer选项被设定用于在各区域的边界上获得更小的四面体。这些参数按组设定。参数thickness定义该层的厚度。然后cell size定义该层内部单元的最大尺寸。
13.1.9 高级网格划分模式
默认情况下,高级参数是不可访问的。它们被灰显,你可以看到当Mesh Quality滑块被改变时它们是如何被设定的(更多信息参见滑块质量与分组)。
图 13.15:每种材料一个边界层的示例。
为了能够自定义网格质量(即不使用Mesh Quality滑块的预设值),请启用Meshing Workroom的高级模式:
这会把Mesh Quality滑块灰显,并启用高级参数(图13.16)。
图 13.16:网格质量自定义。
可用的参数如下:
- Facet Size:该参数控制曲面小面的尺寸(曲面小面三角形的尺寸)。它为外接该曲面小面、且以该曲面块为中心的球的半径提供了一个上界。
- Facet distance:该参数控制边界与细分曲面的近似误差。网格划分引擎会在靠近弯曲曲面处创建小单元,而在远离曲面处创建大单元。
- Cell size:该参数控制四面体网格的尺寸。它为四面体网格的外接半径提供了一个上界。
当高级模式被打开时,可选的标量场输入也会变为可用(图13.17)。
每一个单独的高级参数既可以设为一个常数值,也可以设为一个变化的标量场。如果设为标量场,该高级参数的常数就不再可用,并且会被报告为由一个变化的场所管理(图13.18)。
图 13.17:场参数。
图 13.18:已选择场。
要了解如何创建一个能够控制某个高级参数的标量场,请参阅Meshing Workroom教程。当使用某个标量场时,它是对整个网格全局地控制该参数,而不是针对某个给定的组。你可以把全局控制某个参数的标量场,与按组分别控制其他参数的常数值混合使用。
13.1.10 故障排查
当参数介于低与中之间时,你可能会得到一个包含孔洞的网格,例如以下这个用快速网格划分模式、中等质量对data/tutorials/motor.labels.am进行网格划分所创建出的示例。
这是因为该对象很薄,而此类参数所容忍的近似误差不能确保它被完整保留。在这种情况下,你应当选择thin structures选项,或者在高级模式中降低facet distance的设置。请查阅薄结构一节以更深入地理解这个问题。
有时你可能得到一个质量不均匀、带有一些细长三角形的网格,例如以下这个用低质量、停用快速网格划分且启用thin structures对data/tutorials/motor.labels.am进行网格划分所创建出的示例:
出现这种情况的原因是一个参数化问题:用户所设定的facet size参数,与引擎为遵守几何约束而强加的facet size不一致。在某些区域中,网格引擎被迫把小面细化到比所指定facet size更小的尺寸(典型情形是需要遵守薄结构时)。要修正这种变化的质量,请从project工作间用一个Tetra Grid View模块显示该网格,并使用Measure Tools测量质量不佳区域之外的小面尺寸。
图 13.19:包含孔洞的网格。
图 13.20:不均匀的网格。
在meshing工作间的高级模式中,把facet size参数设为所测得的参数(此处为0.005)。按下create按钮重新划分网格。
图 13.21:小面测量。
图 13.22:均匀的网格。
13.1.11 为网格指派边界条件
可以从Boundary标签页为所生成的网格指派边界。
Boundary标签页允许使用三种方法来选择三角形单元,这些方法可以从selection mode中启用(图13.23)。
被选中的三角形会在主查看器中以红色高亮显示在网格之上(图13.24)。
图 13.23:选择模式。
图 13.24:选择模式。
- Plan:该模式允许你选择某个给定材料中靠近边界框平面的三角形。可以从plan组合框中选择该平面。材料从materials列表中选择(图13.25)。当这些单元并不恰好位于边界框平面上,或者沿着一个弯曲的壁面时,可以通过一个专用滑块使用容差来选中它们,该滑块会把选择区域从所选平面向外扩展。
- Contact:contact模式允许选择两种材料之间的界面。请从materials列表中选择这两种材料(图13.26)。
- Equation:equation模式让你能够基于某个给定的方程,选择某个给定材料中的任意单元(图13.27)。顶点分量通过X、Y和Z变量访问。当且仅当全部三个顶点位置都满足该方程条件时,该三角形才会被选中。例如,
"x <5"将选中所有三个顶点的X分量都小于5的三角形。
图 13.25:材料选择。
图 13.26:Contact模式。
图 13.27:Equation模式。
一旦完成选择,就可以通过选择一个标识符和一个名称来添加边界条件。一旦你单击Add,相应的边界条件就会被添加到results部分中(图13.28)。
请注意,边界名称中有些字符是被禁止的。如果其中某个字符出现在名称中,Add将不起作用。允许的字符包括:a-z、A-Z、0-9、-和_。
从results部分选择某个边界,会导致相应单元在主查看器中以绿色高亮显示(图13.29)。
在result部分再次单击某个边界条件,可以停用它的高亮显示。
有效的名称将在Name组合框中可用。它让你能够编辑一个已有的边界以添加更多单元。
图 13.28:Results部分。
13.1.12 导出网格
当一个网格已被生成时,可以通过单击meshing工作间通用部分中的Export,把它保存为目标格式。
13.1.13 为该工作间编写脚本:TCL命令列表
以下TCL命令可用于从命令行或在脚本内部访问该工作间:
图 13.29:Result部分。
"theMeshingTabController"后跟下列命令,可用于为标签数据的网格划分编写脚本setLabelData <lableName>
把标签数据设定到meshing标签页中create
创建网格update
替换当前网格setMeshOptimizationEnabled <0|1>
激活/停用优化isMeshOptimizationEnabled
优化状态setAdvancedMode <0|1>
激活/停用meshing标签页的高级模式isAdvancedMode
高级模式状态setMeshQuality <groupId> <0|1|2|3|4>
设定某个给定组上的网格质量。默认组ID为-1。getMeshQuality <groupId>
返回给定组ID的网格质量setParameterValue <groupId> <0|1|2|3> <value>
设定某个给定组上的参数值。(0 = edge size,1 facet size,2 facet distance,3 cell size)getParameterValue <groupId> <0|1|2|3>
获取某个给定组的参数值。(0 = edge size,1 facet size,2 facet distance,3 cell size)setParameterField <0|1|2|3> <scalarField>
为某个参数设定场 (0 = edge size,1 facet size,2 facet distance,3 cell size)getParameterField <groupId> <0|1|2|3>
获取某个参数的场名称 (0 = edge size,1 facet size,2 facet distance,3 cell size)setSurfaceData <surface data name>
在快速网格划分未被激活时,设定要进行网格划分的曲面enableSurfaceSelection <0: disabled | 1: enabled>
显示/隐藏该曲面端口。setLayerThickness <groupId> <value>
为某个给定组设定边界层的层厚度值setLayerCellSize <groupId> <value>
为某个给定组设定边界层的单元尺寸值getLayerThickness <groupId>
获取某个给定组的边界层厚度值getLayerCellSize <groupId>
获取某个给定组的边界层单元尺寸preserveThinStructure <groupId> <0|1>
为某个给定组激活/停用薄结构保留setFastMeshingState <0: disabled | 1: enabled>
激活/停用快速网格划分
"theBoundaryController"后跟下列命令,用于设定边界条件getAvailableBoundaryIds
获取所选软件可用的边界ID;getCurrentBoundaryId
获取所选的边界IDgetBoundaryMethod
获取当前的边界方法setBoundaryMethod <0: Plan | 1: Material | 2: Equation>
设定边界方法createBoundaryPlan <bcName> <bcType> <0: XMIN, 1: XMAX, 2: YMIN, 3: YMAX, 4: ZMIN, 5: ZMAX> <materialName> <double:[0-100]>
用plan方法创建一个边界条件。参数为:边界名称、边界条件类型、边界框的平面、要应用该边界条件的材料,以及容差。createBoundaryContact <bcName> <bcType> <materialName> <materialName>
用材料接触方法创建一个边界条件。参数为:边界名称、边界类型、第一种材料和第二种材料createBoundaryEquation <bcName> <bcType> <materialName> <equation>
用方程方法创建一个边界条件。参数为:边界名称、边界类型、材料和方程。
"theDisplayController"后跟下列命令,用于配置显示:setDrawStyle <drawyStyle>
绘制风格选择enableClippingPlane <enable>
激活/停用裁剪平面setClippingPlaneOrigin <posX> <posY> <posZ>
设定该平面的原点setClippingPlaneNormal <vecX> <vecY> <vecZ>
设定该平面的法线
"theMeshExporter"后跟下列命令,用于配置网格的导出:setMesh <mesh>
选择网格setSoftware <software id>
选择导出格式getMesh
获取所选网格的名称getAvailableSoftwares
获取软件列表
13.1.14 进度条提示
在网格生成过程中,进度条会输出各种消息。其中某些步骤可能需要很长时间。你可能会在以下环节遇到较长的延迟:
- Initialization triangulation(初始化三角化):网格划分引擎初始化,随后是protecting balls设置。如果你有一个拓扑上复杂的网格,这一步可能耗时很长。复杂的拓扑将通过设置大量的protecting balls来保留。
- Meshing(网格划分):实际的网格划分/细化。
- Optimization(优化):网格点的优化
- Creating output(创建输出):把内部网格结构转换为HxTetraGrid
当快速网格划分被停用时:
- 最初的消息来自基于Generate Surface模块的内部曲面生成(Smoothing labels、Computing triangulation)。如果这些消息耗时很长,说明用于约束网格划分的内部曲面非常大。你也可以改为生成自己的简化曲面(确保它是水密的,并且不同材料之间没有自相交),并通过TCL命令把它传给meshing工作间(
"theMeshingTabController" enableSurfaceSelection 1或"theMeshingTabController" setSurfaceData yourSurface)。 - Computing(计算):把Avizo曲面转换为用于网格划分的内部结构
- Generating Meshing Domain(生成网格划分域):基于输入曲面构建约束
13.2 网格划分工作间教程
以下教程与Meshing Workroom一样,它所演示的内容需要一个Avizo XWind许可证,并且仅在Microsoft Windows上可用。
在这个分步教程中,你将学会如何使用Meshing Workroom的高端预处理能力来创建仿真输入。Meshing Workroom允许你计算一个四面体网格、为它指派边界条件,并把它导出为各种CFD或FEA求解器的文件格式,例如Fluent、COMSOL Multiphysics (c)等。该工作间中所使用的网格划分引擎基于Delaunay细化(而Avizo原有的网格划分引擎基于推进波前法)。
本教程通过以下几节来说明这一典型工作流:
- 首次网格生成与检查
- 全局网格细化
- 材料组的网格细化
- 高级网格细化
- 边界层细化
- 网格质量优化
- 材料属性的颜色映射
- 边界条件与导出到CFD/FEA求解器
要跟随本教程,你应当熟悉Avizo的基本概念,例如数据导入、与3D查看器的交互等。所有这些主题都在Avizo的Getting Started一章中讨论过。你还应当熟悉标签图像的工作流,它们在可视化与处理2D和3D图像一章中有详细介绍,更具体地说:
- 为分割准备数据:关于图像滤波
- 分割数据:3D图像的分割
- 编辑已分割的数据:Volume Edit、
Segmentation Workroom
所有使用玉米籽粒数据集的插图,均由伊利诺伊大学厄巴纳-香槟分校的Pawan S Takhar友情提供。
注意:在下面的教程中,单位未被启用。如果启用了单位,所有参数尺寸(即测量、单元尺寸……)都应当在当前单位内给出。
13.2.1 首次网格生成与检查
在Project Workroom中,单击Open Data并选择加载data/tutorials/meshing/KernelCorn.labels.am。通过单击工作间工具栏中的Meshing标签页来激活Meshing Workroom(图13.30)。
把Label Data设为KernelCorn.labels.am。
单击该工作间左下方的CREATE,以默认参数启动网格生成。
第一个网格被生成,并被自动设定到Mesh输入字段中。
注意:一旦你为某个给定的标签场创建了第一个网格,你既可以通过单击CREATE为该标签场创建一个新网格,也可以通过单击REPLACE替换(覆盖)当前网格。
所生成的网格已被自动显示在主查看器中。
你可以随时回到Project Workroom来可视化和定制该网格的显示。所生成的网格KernelCorn.labels.tetra已在Project View中被创建出来,并紧贴着标签输入。请使用Tetra Grid View模块来显示该网格。
图 13.30:Meshing标签页。
你也可以在该网格对象的Properties Area中找到关于网格尺寸(以节点数、三角形数和四面体数计)的信息。
请回到Meshing Workroom。
默认情况下,Meshing标签页中激活的是Fast Meshing模式。该模式允许对某个给定标签的网格划分进行快速原型试验。它之所以快,是因为网格划分不受几何形状约束。所生成的网格构建速度快,但在材料之间的边界处缺乏精度。
请取消勾选Fast Meshing选项并单击CREATE。
当不使用Fast Meshing选项时,网格划分引擎会被约束为遵守标签之间边界处的界面。这些界面由曲面来定义,而这些曲面是使用一个底层的Generate Surface模块、在约束模式和fit to edge选项被打开的情况下自动生成的。
所生成的网格KernelCorn.labels2.tetra已被设定到Mesh输入字段中(图13.31)。
你可以在Mesh组合列表中从一个切换到另一个,从而比较这两个所生成的网格。
图 13.31:网格选择。
你会注意到第二个网格(KernelCorn.labels2.tetra)的轮廓比第一个网格(KernelCorn.labels.tetra)更加清晰。
图 13.32:Fast Meshing选项打开(左)与关闭(右)。
为了进一步推进对网格的视觉检查,可以把其中各材料的可见性打开和关闭,以检查网格的不同部分,更具体地说是检查网格的内部单元。每个单独材料的可见性可以从Meshing标签页的Materials部分访问。
在Materials部分中,通过取消勾选来隐藏Germ材料(图13.33)。
图 13.33:隐藏Germ材料。
在查看器中,比较Germ的轮廓(图13.34)。
图 13.34:在Fast Meshing选项打开(左)与关闭(右)时隐藏Germ材料。
13.2.2 全局网格细化
Mesh Quality滑块提供五个质量级别,用于为输入标签场划分网格,从低到高。每个质量级别都会自动设定若干网格划分选项。你可以通过查看滑块下方被灰显区域内各值是如何设定的,来检查不同质量级别对网格划分引擎设置的影响(图13.35)。
图 13.35:Mesh Quality滑块。
我们稍后会在本教程中回到这些参数。关于这些参数的详情,你也可以参阅Meshing Workroom文档。
在Mesh字段中选择KernelCorn.labels.tetra。
把Mesh Quality滑块移到Low并单击REPLACE。
KernelCorn.labels.tetra被替换为一个粗糙的网格。
在Mesh字段中选择KernelCorn.labels2.tetra。
把Mesh Quality滑块移到High并单击REPLACE。
KernelCorn.labels2.tetra被替换为一个细化的网格。
请使用Mesh字段对这两个所生成的网格做一次初步比较(图13.36)。
为了检查内部单元,主工具栏中提供了一个专用于四面体网格可视化的裁剪平面。该裁剪平面会自动裁掉任何不与该平面相交、且位于被裁剪一侧的四面体。
要激活裁剪,请打开Clip(图13.37)。
图 13.36:低质量(左)与高质量(右)的网格。
图 13.37:Clip选项。
同样,使用Mesh字段从一个网格切换到另一个,并比较网格内部的细化程度(图13.38)。
图 13.38:低质量(左)与高质量(右)的被裁剪网格。
在Interaction模式下(按Esc),用鼠标左键拾取该平面,并在保持左键按下的同时移动鼠标。这会使该平面沿其法线方向平移。有多种选项可用于操纵裁剪平面。更多细节请参阅Meshing Workroom帮助部分中的操纵裁剪平面。
13.2.3 材料组的网格细化
默认情况下,质量设置应用于所有材料,它们被汇集在Materials部分的Default组中。
可以添加新的组,以便为不同的材料指派不同的质量设置。当选择某个组或该组中的任何材料时,网格质量设置就会应用于这个特定的组。
在Mesh字段中选择KernelCorn.labels2.tetra,并把Mesh Quality设为Medium值。
单击Add Group。
把SoftEndosperm材料拖放到新创建的组中(图13.39)。
图 13.39:把一种材料加入某个组。
把Mesh Quality设为High。
再次单击Add Group,并把Germ材料拖放到新创建的组group2中。
把鼠标悬停在group2所在的行上并单击垃圾桶图标,以移除group2。你会注意到它原先所包含的材料回到了默认组。材料以及默认组是无法被移除的。
单击REPLACE。
单击裁剪平面工具栏的YZ按钮,并移动相机以获得网格内部的不同视角。请注意所使用材料上的不同网格质量,如图13.40所示。
图 13.40:XY与YZ裁剪的网格(一种材料为高质量,另一种为低质量)。
13.2.4 高级网格细化
切换到Meshing标签页的Advanced模式。
切换到Advanced模式会使高级参数可供编辑。
Meshing标签页的Scalar Fields部分中的组合框现在被启用,位于Materials部分中的高级参数也是如此。Mesh Quality滑块被禁用。
以下三个参数中的每一个,既可以设为一个常数值,也可以设为一个变化的标量场:
- Facet Size参数控制曲面小面的尺寸(即曲面小面三角形的尺寸)。它为外接该曲面小面、且以该曲面块为中心的球的半径提供了一个上界。
- Facet Distance参数控制边界与细分曲面的近似误差。网格划分引擎会在靠近弯曲曲面处创建小单元,而在远离曲面处创建大单元。
- Cell Size参数控制网格四面体的尺寸。它为四面体的外接半径提供了一个上界。
选择SoftEndosperm材料或它所在的组。
把Cell Size改为0.1。
单击CREATE。一个新的网格KernelCorn.labels3.tetra被生成。
用Mesh列表从KernelCorn.labels2.tetra切换到KernelCorn.labels3.tetra,并观察SoftEndosperm材料的单元尺寸是如何被减半的(图13.41)。
图 13.41:SoftEndosperm(红色)的Cell Size为0.2(左)与0.1(右)。
请前往Project Workroom,移除附加到该标签场上的全部三个tetra网格。然后回到Meshing Workroom。
停用Advanced模式。把所有组的Mesh quality设为High并单击CREATE。
切换回Advanced模式,并把SoftEndosperm组的Facet distance设为0.005。单击CREATE。
用Mesh列表在KernelCorn.labels.tetra与KernelCorn.labels2.tetra之间来回切换,并观察网格在SoftEndosperm曲面弯曲处是如何被更多地细化的(图13.42)。
图 13.42:SoftEndosperm(红色)材料的细化网格。
标量场也可用于通过控制某个高级参数的值来定制某个特定区域的细化。该标量场会全局地(即对整个网格)控制该参数,而不是针对某个给定的组。不过,你可以把对整个网格控制某个给定参数的标量场,与按组分别控制另一个参数的常数值混合使用。请注意,该标量场必须与标签场具有相同的维度。
下面是一个如何创建这样的标量场的示例。你可以跳过这一部分,直接从教程文件夹中获取该标量场:data/tutorials/meshing/KernelCornField.am。
请回到Project Workroom。把一个Distance Map模块连接到标签场KernelCorn.labels.am上。Distance Map模块会根据每个体素到最近对象边界的距离,为它指派一个值。对象的边界体素被指派值0,而随着距离增加,对象内部的值也随之增大。
单击Apply。
把一个Interactive Thresholding模块附加到Distance Map的结果上。把Intensity Range设为1-15。单击Apply。一层体素在整个标签场的边界上被隔离出来(即与材料无关)。
再把第二个Interactive Thresholding模块附加到Distance Map的结果上。把Intensity Range设为15-70。单击Apply。这会隔离出属于该标签场的其余体素。
把一个Arithmetic模块附加到第一个Interactive Thresholding模块的结果上。把该Arithmetic模块的Input B连接到第二个Interactive Thresholding模块的结果上。在Result Channels字段中选择1 value (scalar)。在Expression字段中输入表达式0.05*(1+A+39*B)。在Result Type中选择Input A。单击Apply,并查看图13.43中的结果——该图使用了temperature.icol颜色图。
图 13.43:Cell Size标量场的生成。
所得到的标量场在对象之外取值0.05(取0.0也是正确的),在对象内部靠近边界的一层体素中取值0.1,而在对象内部其余体素中取值2。
如果在生成该标量场的网络中遇到任何问题或不确定之处,你可以在教程文件夹中找到它:data/tutorials/meshing/CreateKernelCornField.hx。
请回到Meshing Workroom。
把Facet Distance重新设为0.01。在Scalar Fields部分中把cell size标量场设为Result。注意在Materials部分中,cell size端口已被灰显,并被替换为Managed by scalar field。
单击REPLACE,并查看图13.44中的结果。
你可以观察到,网格是如何在整个对象的一个边界层中被细化的——与材料无关。
图 13.44:使用所计算Cell Size标量场的网格。
13.2.5 边界层细化
该选项允许按组定义一个可以细化网格的边界层。
请前往Project Workroom,移除附加到该标签场上的所有tetra网格。然后回到Meshing Workroom。
取消勾选Advanced以切换回非高级模式。
为所有材料创建一个Mesh Quality设为Medium的网格。
在YZ平面中可视化被裁剪的网格。
创建一个只包含HardEndosperm材料的组。为该组把Mesh Quality设为Medium,在Global Parameters中停用Fast Meshing,并在Boundary layer字段中把Layer Thickness设为0.4,Layer Cell Size设为0.2。
注意:要测量适合你数据的层厚度,你可以回到Project Workroom,把一个orthoslice附加到你的标签场上,并使用line measure测量某个给定的厚度。
按下REPLACE。KernelCorn.labels.tetra被更新。
为所有材料组设定相同的边界层参数。
按下CREATE。KernelCorn.labels2.tetra被创建。
观察刚刚生成的这两个网格中的网格细化。
图 13.45:仅对HardEndosperm材料的边界层细化。
图 13.46:对所有材料的边界层细化。
13.2.6 网格质量的优化
你可以优化四面体节点的位置,以减少网格中细长片状体(slivers)的数量。当一个四面体的四个顶点被放置在其外接球的赤道附近时(例如扁平的四面体),就形成了一个sliver四面体。Sliver可能会减慢数值仿真的收敛速度。这意味着网格中的sliver越少越好。
optimize mesh选项旨在通过随机重定位顶点来扰动这些sliver,从而减少它们的数量。如果激活该选项,网格生成可能会稍微久一些。无论Fast Meshing选项是打开还是关闭,该选项都可用。
保留先前的设置,并在Global Parameters部分中勾选Optimize Mesh复选框。
在Mesh字段中选择KernelCorn.labels.tetra并单击REPLACE。
现在,KernelCorn.labels.tetra和KernelCorn.labels2.tetra分别是用相同参数生成的网格的优化版本与非优化版本。你现在可以就sliver数量来比较它们的质量。
- 前往
Project Workroom - 为每个网格附加一个Tetra Grid View模块。
- 对两者都单击Show/Hide,然后在Buffer端口中单击Remove以选中所有四面体,随后在查看器中把它们全部隐藏。
- 选择
KernelCorn.labels2.tetra(非优化网格),并单击属性区域中的Grid Editor按钮。在Selector port中,Tetra Quality被选中。单击Select。这会根据下一个端口中所定义的质量度量来选择四面体:R <0.02,其中R是内切球半径与外接球半径之比。对于正四面体,R达到其最优(即最大)值1/3。Sliver由较小的R值检测出来。
现在查看器中显示了非优化网格中的sliver(图13.47)。你也可以从控制台中获取它们的数量(单击应用程序右下角的按钮)。
图 13.47:非优化网格的slivers。
关闭附加到KernelCorn.labels2.tetra上的Tetra Grid View的可见性。
对优化网格KernelCorn.labels.tetra的Grid Editor重复先前的操作。
你可以在查看器中看到优化网格中的sliver更少。控制台会显示数量:你可以观察到被选中的tetra少得多。
可以使用Grid Editor进一步改善网格的质量。在Modifier端口中选择Repair Bad Tetras。单击Modify。在Selector端口中再次按下Select。在控制台中,你会注意到sliver的数量进一步减少了。
为了下一节的目的,请移除这两个Tetra Grid View模块。
13.2.7 材料属性的颜色映射
标量场可以被颜色映射到网格上,以可视化材料属性。例如,你现在将可视化曲率信息。
在Project Workroom中,把一个Image Curvature模块附加到该标签场上。在Interpretation端口中选择3D并单击Apply。
把一个Tetra Grid View模块附加到KernelCorn.labels.tetra上。把KernelCorn.labels.curvature设为该Tetra Grid View的最大局部曲率颜色场。把Colormap设为physics.icol,范围设为[-0.8,1]。把draw style设为outlined。
要为四面体网格逐单元或逐节点地离散化一个标量场,你可以使用同时连接到该网格和该标量场的Arithmetic模块。
把一个Arithmetic模块附加到网格KernelCorn.labels.tetra上。把该Arithmetic模块的Input B连接到曲率场上。把Expression设为B。
Result Location字段可以设为on Nodes或on Cell Center。请两者都试一下。
把Tetra Grid View的颜色场附加到Arithmetic模块的结果上,以便把曲率场映射到网格上(图13.48)。
图 13.48:在节点上(左)与在单元上(右)插值的曲率场。
13.2.8 边界条件与导出到CFD/FEA求解器
请回到Meshing Workroom。
可导出到CFD/FEA求解器的格式列在该工作间顶部的Type列表中(图13.49)。
图 13.49:Export按钮。
选择FLUENT格式。
打开BOUNDARY标签页以设定边界条件。
有三种模式可用于设定边界条件:
- 使用平面,例如在样本边界框的整个一个面上定义流量输入;
- 使用两种材料之间的接触面;
- 用方程定义一个面。
选择Contact模式。
在左侧材料列表中选择HardEndosperm,在右侧材料列表中选择Germ(图13.50)。
图 13.50:材料接触选择。
你可以通过关闭SoftEndosperm和Germ材料的可见性来可视化该接触面(图13.51)。
图 13.51:材料接触可视化。
接触三角形以红色高亮显示。你也可以通过启用一个裁剪平面来可视化它(图13.52)。
图 13.52:不带裁剪(左)与带裁剪(右)的接触面。
把Type设为Interface,并把它命名为HardEndo-Germ-contact。
单击Add。
该接触边界被添加到results list中。边界类型以及三角形单元的数量都会被显示出来。可以随时从result list中高亮显示这些边界:只需从列表中选中它,它就会在查看器中以绿色高亮显示。也可以向一个已有的边界添加单元:从name组合框中选择它的名称,并在用上述三种方法之一选中新单元之后按下add。
一旦你完成了想要指派给该网格的边界条件的定义,请按下Export按钮。Export对话框会弹出。设置文件名和位置,然后按下Save。
13.3 Avizo XWind Extension 测量
本节将为你概览Avizo XWind Extension所提供的测量功能。
- 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas。 - 加载
Pressure标量场。 - 把一个Boundary View连接到该模型上。
- 在Boundary types端口中取消选择除
Wall之外的所有项。 - 把coloring设为Data Mapping,并使用
Pressure作为colorfield。 - 在Value Mapping端口中选择node values。
- 隐藏Bounding Box。
13.3.1 3D测量
你可以通过View / Measuring菜单,或者通过查看器顶部的测量工具按钮(及其下拉菜单——单击那个小箭头)来访问测量工具。
- 在测量工具按钮的下拉菜单中选择Line。
- 在View菜单中选择Measuring。
现在,你在Project View的Display文件夹中有了一个Measurement对象。该模块提供对二维和三维测量工具的访问。
线测量
我们将测量机翼的前缘。线测量(Line)已经被选中。
- 在3D查看器中,单击机翼前缘的一端。
请注意,光标会发生变化以指示何时可以选中一个有效的对象。 - 单击机翼边缘的另一端。
- 要调整某条测量线的位置,请在属性区域中选中它,然后单击它的某个红色手柄并把它拖到一个新位置,或者使用文本端口Point 0和Point 1来更改位置。
- 在机翼的侧边缘上做同样的操作。
提示:你可能需要重新定位相机以选择测量点。与通常一样,你可以按[ESC]键在交互模式与轨迹球模式之间切换,或者按住[Alt]键临时切换到轨迹球模式。
你可以测量出该机翼的前缘约为4.44米,侧边缘约为1.55米。
图 13.53:测量YF-17飞机的机翼尺寸。
3D角度测量
- 在Measurement模块的属性区域中,单击那两条线的”眼睛”图标,以在3D查看器中隐藏它们。
- 在Add端口中,单击Angle按钮。
- 在3D查看器中,单击机翼攻角边缘与机身的交点。
- 单击攻角边缘的另一端(与侧边缘的交点)。
- 单击侧边缘的另一端。
你可以测量出该角度约为116度。
图 13.54:角度测量。
13.3.2 直方图
Histogram模块计算3D单元中某个标量场的直方图。我们将把它用在Pressure标量场上。
- 右键单击
Pressure,并在Measure And Analyze菜单中选择Histogram。 - 在Histogram属性区域中单击Apply。
一个窗口弹出,其中包含一个采用对数刻度的直方图。Pressure场的均值(约1849 Pa)和标准差(约23187 Pa)显示在属性区域中。
- 把Range的最小值设为0。
- 激活Threshold并把它设为100000。
- 激活Tindex并把它设为50。
- 单击Apply。
我们可以从中得知:
- 对于压力位于新范围内的所有单元,均值约为10647 Pa,标准差约为26442 Pa;
- 在这同一范围内,2.44%的单元压力大于100000 Pa;
- 在这同一范围内,50%的单元压力低于1784 Pa(另50%则更高)。
该直方图已被更新。
图 13.55:压力分布的直方图。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_histo.hx。
13.3.3 数据探测
三个数据探测模块Point Probe、Line Probe和Spline Probe用于检查标量或矢量数据场。探测在某一点上(Point Probe)或沿某条线(Line Probe和Spline Probe)进行,它们可以被任意放置。
沿样条探测
我们将使用Spline Probe来绘制飞机机翼周围的压力。首先,我们必须正确地放置该样条的四个控制点。
- 右键单击
Pressure。 - 在Measure And Analyze菜单中选择Spline Probe。
要把控制点定位在给定几何体的边界框内,你既可以在Points端口中键入坐标(见下文),也可以用鼠标交互式地移动点拖动器。(你可能需要缩小视图才能看到点拖动器。)
- 在Points端口中,会显示第一个控制点的坐标。把它们改为4, 2, 0。
- 在Points端口中,使用微调框选择第二个点,并把它的坐标设为0, 2, 0。
- 选择第三个点,并把它的坐标设为0, 2, 0.3。
- 选择第四个点,并把它的坐标设为4, 2, 0.3。
- 你可能想使用Points端口的options子菜单来隐藏这些点和拖动器。
- 单击Plot端口中的Show按钮。
一个绘图窗口出现,其中所采样的压力值被绘制为相对于探测线长度的函数。如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_splineprobe.hx。
图 13.56:压力值相对于样条探测线长度的关系。
沿曲面路径探测
出于探测的目的,拥有能在某个曲面上定义特定线条的工具往往很有用。Surface Path Editor和Surface Intersector模块就是为此而设计的。
Surface Path Editor允许在曲面上创建路径。路径可用于切割曲面、定义曲面的区域或特征、探测等等。可以通过单击编辑器按钮,从一个Surface Path Set的属性区域访问该编辑器。随后提供两种类型的编辑器:
- Generic Path Editor允许在曲面网格上任意地定义路径,
- Vertex Path Editor只允许沿曲面网格的边定义路径。
请注意,Vertex Path Editor可以直接从某个曲面的Measure And Analyze子菜单访问(条目名为Create Surface Vertex Path)。
Surface Intersector模块与两个曲面相交,沿该交线计算出一条路径,并把它附加到每一个曲面上。
- 从
Project View中移除所有对象(使用[Ctrl+N],或者在Project View中右键单击并选择Remove All Objects)。 - 从
tutorials/cfd-fea-advanced/fan文件夹打开fan-0070.cas。 - 加载
Pressure标量场。 - 隐藏Bounding Box。
- 把一个Boundary View连接到该模型上。
- 在Boundaries端口中取消选择除
wall-1之外的所有项,并从Create surface端口创建该曲面。
我们将沿风扇曲面的一条径向线剖面绘制Pressure。为此,我们必须先创建一个圆柱面,以便把它与风扇相交,然后得到交线。
- 右键单击曲面
fan-0070.surf,并从Compute子菜单创建一个Surface Intersector。
在Surface Intersector属性区域中,第二个曲面仍需被设定。我们将使用Parametric Surface模块来创建所需的相交曲面,它可以从Project / Create Object...(Surfaces And Grids子菜单)获得。
- 创建一个Parametric Surface。会创建一个默认平面。
- 对于U,把min设为-0.02,step设为0.0005,max设为0.01。
- 对于V,把min设为1,step设为0.0005,max设为2。
- 把X设为u,Y设为
0.12*sin(v),Z设为0.12*cos(v)。 - 单击Draw style端口中的more options按钮并选择Create surface。
Parametric-Surface.surf被添加到Project View中。 - 把
Parametric-Surface.surf设为Surface Intersector的第二个曲面并按下Apply。
沿交线创建了两条路径,每个曲面上各附加一条。
- 隐藏该Parametric Surface,并把一个Line Set View显示模块连接到
IntersectionPath2上。该路径显示在风扇曲面上。 - 在
Pressure的Measure And Analyze子菜单中选择Line Set Probe。 - 在Line set端口中把Line Set Probe附加到
IntersectionPath2上,并按下Show按钮。
一个显示沿探测线的Pressure的窗口出现。我们将改进这个显示。
- 对于X-Axis,选择z坐标。
- 在Edit菜单中选择Edit Objects。
- 在axis部分中,取消选择调整X范围的Auto选项,并把它设为$[-0.025, 0.04]$。
- 把Y标签改为”Pressure”。
- 在
LineSetProbe_001部分中,把Draw style改为Marker。 - 更改标记的形状(例如改为点)和颜色。
- 把标签改为”Radial section: 0.12m”。
- 按下OK。
图 13.57:沿风扇曲面径向0.12m线剖面的压力值。
13.4 CAE/CFD数据的读取与可视化入门
通过遵循这个分步教程,你将学会用Avizo XWind Extension读取和可视化CAE/CFD数据的基础知识。
注意:本教程在一个特意选取的小而轻量的降采样案例研究上展示结果。由于这个低质量的模型,某些渲染方法可能会出现伪影,而这并非由Avizo XWind Extension的能力所致。
13.4.1 用户界面简要概览
Avizo的用户界面被分为三个主要区域:Project View (1)包含数据和模块将会出现的文件夹。Properties区域(2)显示与Avizo对象相关联的界面元素(端口)。3D查看器窗口(3)显示可视化结果(见图13.59)。
注意:如果你的Project View是以图的形式显示的,你可以通过单击Project Tree View按钮切换到Project Tree View。你也可以随时通过单击Project Graph View按钮轻松回到Project Graph View(见图13.58)。这些按钮在Project Menu中同样可用。
如果你单击Help,就可以浏览User’s Guide。当某个对象(数据、模块……)在Project Tree View中被选中时,关于它的信息会显示在Properties区域中。单击该区域右上方的问号标记”?”,会把你带到当前活动对象的上下文帮助页。
图 13.58:1:切换到Project Tree View - 2:回到Project Graph View。
关于用户界面、特别是Viewer窗口的更多信息,请参阅Program Description及其Viewer Window小节。
图 13.59:Avizo用户界面。
Project Tree View
在下面的教程中,我们将使用Project Tree View来操纵对象。
你的CFD/CAE仿真与计算的结果存储在Data文件夹中。这些结果由一个或多个模型和数据集构成(见图13.60)。
图 13.60:Project Tree View中一个数据集及其所连接模块的示例。
一个模型包含:
- 所研究域的网格,取决于模型的维度,其单元为2D或3D,
- 该域可能由之构成的不同区域(例如泵的转子和定子),
- 边界,即该域的物理界限,
- 该域所由构成的材料。
附加到某个模型上的数据集,包含定义在该模型网格和/或边界上的一个或多个标量场、矢量场或张量场。这些是在仿真过程中被计算出来、需要被可视化和分析的物理量。
显示模块会被列在Display文件夹中,计算模块则列在Compute文件夹中。指向某个模块输入与输出数据的快捷方式出现在该模块下方,绿色箭头和红色箭头分别表示输入和输出。
在Colormaps文件夹中,你会找到默认颜色图以及你所加载的任何颜色图。
要获得与教程截图中相同的project tree view组织方式,请前往Edit / Preferences / Layout并选择Group by display/compute/data in tree view。你也可以改用Avizo Lite Edition版本的Project Tree View(不带”Group by display/compute/data in tree view”选项),或者从Project Menu切换到Project Graph View。
在本教程的余下部分,Project Tree View将只被称为Project View,以便于阅读。
13.4.2 读取数据
Avizo XWind Extension可以读取范围广泛的CFD/CAE格式,包括:
- Abaqus
- ANSYS
- CGNS
- Ensight
- Fluent/UNS
- NASA/Plot3D
- Nastran Bulk Data
- Nastran Output2
- SDRC/IDEAS Universal
- STAR-CCM
- Tecplot
详情请参阅User’s Guide的file formats索引。
我们将通过加载一个Fluent数据集来开始本教程:
- 在
Project View中单击Open Data。 - 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas(不要选择.dat文件,Avizo XWind Extension会在该文件夹中检索.dat,或者询问你在哪个文件夹中找到它)。
Datasets selector弹出。许多标量场和矢量场都可以被附加到某个给定的模型上,把它们全部加载可能非常消耗内存。这在project tree view中也会占用空间,并使其难以阅读。Datasets selector允许你只加载解的一部分,并在必要时卸载某些数据、稍后再加载额外的数据(见图13.61)。
图 13.61:Datasets选择器。
在data列中选择Pressure,单击Add->然后OK。现在Pressure出现在Project View中它所附加的模型之下,并且它的颜色图被显示出来。
在3D查看器中你可以看到该模型的Bounding Box。这个显示模块在你加载模型时被默认连接到该模型上。
- 通过在
Project View中右键单击该模块并选择Bounding Box / Remove Object(或按下[Del])来移除该边界框。
我们之所以这样做,是因为这是一个大数据集,而我们一开始将聚焦于该模型的某个特定区域。移除(或干脆隐藏)边界框会让”放大”到这个较小区域上更方便。
如果你想从同一个模型加载其他数据,你可以随时通过在该模型(aircraft_mach.cas)的Properties区域中单击它的按钮来访问Datasets selector。
13.4.3 入门
我们现在将做我们的第一个可视化。
- 在
Project View中选择模型data/tutorials/cfd-fea-advanced/aircraft_mach.cas。 - 右键单击该模型,并在Display子菜单中选择Boundary View。
提示:在选中该模型之后,你也可以通过单击Project View上部的宏按钮来访问Boundary View模块。宏按钮提供了对最常用模块和/或最近与当前所选对象一起使用过的模块的便捷访问。
Boundary View模块现在出现在Project View的Display文件夹中,绿色箭头显示它的输入是该飞机模型。它的属性显示在Properties区域中。你现在在3D查看器中看到了该模型的边界。请记住,边界是所研究域的界限,这里它们界定了气流。在Avizo XWind Extension中,边界按其type(即为仿真而施加在某个边界上的物理条件,即边界条件)分类。
各种边界类型列在该模块Properties区域的多选端口Boundary types中。
- 在Boundary types端口中,取消选择这些项:
Symmetry和Pressure Far Field。
只有类型为Wall的边界保留下来,它们界定出半架YF-17 Cobra战机。
- 在3D查看器窗口中单击并按下
[SPACE]键以放大飞机视图(这会执行一次View All操作)。
你也可以用鼠标滚轮更精确地放大和缩小;或者在同时按下左键和中键的情况下移动鼠标;或者单击缩放模式按钮并上下移动鼠标。如有必要,通过单击轨迹球按钮回到查看模式。 - 旋转该飞机以便正面朝上地看它。
为此,请在3D查看器中按下鼠标左键并移动鼠标,直到你达到所期望的朝向。 - 在Boundary View的Colorfield端口中选择
Pressure。 - 在Coloring端口中选择Data Mapping。
- 在Value Mapping端口中选择node values。
图 13.62:YF-17 Cobra战机边界上的压力场。
你可以通过选择3D查看器工具栏中的相机来拍摄快照。更多细节请参阅Snapshot Dialog的说明。
如果你想在你的查看器上显示一个罗盘,就像图13.62中那样:
- 前往Avizo Preferences (
Edit / Preferences...); - 在Layout标签页中,单击Viewer gadgets组的Compass标签页;
- 勾选Show the compass并选择”axis.iv”;
- 你可以使用Compass position选项选择罗盘的位置(图中为Upper right)。
13.4.4 单位与图例
为了完成这个可视化,我们可以添加一个图例,用于显示色阶以及所显示数据集的名称和单位。
- 在
Project View中选择Pressure。
你既可以选择模型之下出现的Pressure,也可以选择Boundary View模块之下出现的Pressure,哪个方便就用哪个。 - 请注意,当某个数据集被选中时,Properties区域会给出关于它的一些信息,例如单位和范围。
- 如有需要,你可以更改或调整颜色图。
- 单击Properties区域中Options端口里的create legend按钮。
图 13.63:带图例的YF-17 Cobra战机边界上的压力场。
该图例被显示在3D查看器中,并且在Project View的Pressure数据之下创建了一个Data Legend模块。请按需使用该模块的Properties区域来设定图例属性(位置、尺寸……)。
13.4.5 保存你的项目
- 在File菜单中选择Save Project As…。
- 例如输入文件名
getstarted.hx。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_firstvisu.hx。
13.4.6 提示:模板项目
模板项目可用于简化在一组相似数据上的重复性任务。模板项目是某个原始项目的备份,它可以被复制应用到同类型的另一个数据集上。关于模板项目的完整概览,请参阅“模板项目说明”一节。
我们将把当前项目保存为一个模板项目。
- 在File菜单中选择Save Project As Template…。
- 输入选择对话框出现,其中列出了可被用作该模板输入的数据集(即将在运行时被替换的数据)。请选择该模型和
Pressure作为模板输入。 - 把输入标签改为
modelFluent.cas和scalarfield。 - 单击OK。
- 为该模板项目选择一个名称和一个目标文件夹。
图 13.64:模板项目的输入选择对话框。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的模板项目,文件名为cfd-fea-advanced/wind_templatenetwork.hxtemplate(在Project View中选择Open Data…来加载它)。
现在模板已被保存,你可以在任何连接到某个标量场的Fluent模型上,轻松做出同样类型的可视化。
- 隐藏Boundary View和Data Legend模块。
为此,请取消勾选Project View中它们旁边的复选框。 - 再次从
tutorials/cfd-fea-advanced文件夹加载aircraft_mach.cas,并再次添加它的Pressure数据集。
它们会以aircraft_mach2.cas和Pressure2的名称出现在tree view中。
提示:你可以使用Project View的弹出菜单快速重新加载一个最近使用过的文件。在Project View中任何空白的行或包含文件夹图标的行上右键单击,然后从Recent Files子菜单中选择该文件。 - 通过取消勾选
Project View中Display文件夹里Bounding Box模块旁边的复选框,隐藏连接到新模型的Bounding Box。 - 前往
Project > Create Object...菜单,并在Templates类别中选择先前所保存的模板。
模板执行时会出现运行对话框。
- 选择新模型
aircraft_mach2.cas和标量场Pressure2。 - 单击OK。
图 13.65:模板项目运行对话框。
第二个模型的Boundary View可视化现在已出现在3D查看器中,并且除了缩放和旋转之外,它应当与之前的那个(图13.63)完全相同。
这个项目相当简单,而且是在同一个模型上重新加载的,以保持示例简洁;但请记住,如果你有若干模块需要以同样的方式连接到不同的模型和数据集上,模板项目会变得非常有用,并且能为你节省时间。
13.4.7 时间动画
时间动画对于瞬态数据分析至关重要。我们现在来看看如何读取和可视化这类数据。
- 从
Project View中移除所有对象。
为此,你可以使用[Ctrl+N]来开始一个新项目(你可以丢弃当前项目),也可以在Project View窗口中右键单击并选择Remove All Objects。
我们现在将加载时间相关的数据。
- 在File菜单中选择Open Time Series Data…。
- 导航到
tutorials/cfd-fea-advanced/fan文件夹。 - 选择并打开全部11个模型文件
fan-0070.cas到fan-0080.cas(不要打开.dat文件)。 - 在Datasets selector中选择
Pressure。 - 隐藏Bounding Box。
在Project View的Compute目录中,出现了一个时间Sequence Controller模块。
- 像之前一样创建一个Boundary View模块(在
Project View中右键单击该模型)。 - 在Boundaries端口中,单击Deselect all按钮,然后只选择
wall-7。 - 把Colorfield端口设为
Pressure。 - 在Coloring端口中选择Data Mapping。
- 在Value Mapping端口中选择Node values。
- 旋转该显示。
图 13.66:叶片周围某个叶尖剖面上的压力场。
如果遇到任何问题或不确定之处,你可以在你的教程fan文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/fan/wind_timeseries.hx。
请使用time sequence controller模块来为压力随时间的显示制作动画。在Project View中选择该controller。
- 保持Time mode端口为time step。physical time代表与每个时间步相关联的物理时间。
- 向右移动Time step端口中的滑块。用时间滑块旁边的步进按钮,你可以逐步遍历数据。单击播放按钮,你就可以运行整段动画。这两个按钮也都有反向版本。
- 单击Time step端口的配置按钮,会打开一个上下文菜单,它允许你播放动画一次、反复循环播放(Loop模式),或者正向与反向交替播放(Swing模式)。
你可能已经注意到,Pressure数据集的Colormap端口的范围并不随每个时间步改变。这是因为该颜色图范围默认被设为第一个时间步数据集的全局范围。你可以通过把最小值和最大值设为你想要的值来更改它,在动画期间该颜色图范围将保持为这个范围。
13.5 Avizo XWind Extension 模型信息与显示
在本节中,我们将学习如何加载一个模型及其相关数据、如何检索关于该模型的信息,以及如何显示它。
- 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas。 - 加载
Pressure场。
13.5.1 属性与参数
模型
Properties区域包含关于所选模型或数据场的基本信息。
- 在
Project View中选择该模型。关于它的详情会出现在Properties区域中(见图13.67)。
图 13.67:模型的Properties区域。
在该模型的Properties区域中,你可以找到网格类型(体或曲面)、网格的节点数、单元数及其类型。
- 单击Model Colors Editor按钮(见图13.68)。
一个模型可能由区域(regions)和边界(boundaries)构成。区域是该域的组成部分,通常对应于某个物理属性(例如泵的旋转部分与静止部分相区分),或者对应于该全局网格所由构成的不同局部网格。边界是该域的界限,边界条件就定义在那里。
该模型的每一个区域和边界都关联着一种不同的颜色。这些颜色被用于例如Grid View、Boundary View和Isosurface显示模块。我们将在后面的一节中更多地讨论这一点。请关闭这个对话框。
图 13.68:模型颜色编辑器。
- 单击Data Parameter Editor按钮。
Parameter Dialog窗口弹出(见图13.69)。在这个窗口中,你会找到关于该模型的额外信息,包括边界与区域的名称、id编号与类型,关于所研究材料的物理细节,以及关于该模型的求解器信息。请关闭这个对话框。
数据场
- 现在在
Project View中选择Pressure标量场。关于它的详情会出现在Properties区域中。
在该标量的Properties区域中,你可以找到(见图13.70):
- 数据类型(Type),
- 所研究的物理量及其单位(Content和Unit),
- 数据的全局范围(包括网格和边界:Range),
- 网格内部数据的范围(Dataset range),
- 边界上数据的范围(Boundaries range),
- 数据绑定方式(逐节点或逐单元)(Binding)。
图 13.69:参数对话框窗口。
图 13.70:Pressure标量场的Properties区域。
13.5.2 颜色图
在Pressure场的Properties区域中,你可以看到有一个颜色图被连接着。为方便起见,为每一种数据场类型都定义了一个默认颜色图。连接到该数据场的颜色图(最初)会被所有连接到该场的显示模块使用。因此,修改数据场的颜色图会影响所有已连接的显示模块。也可以为任何显示模块使用一个不同的颜色图。
我们现在来详细看看用Colormap端口的Edit菜单可以做些什么。
图 13.71:Pressure场的Colormap端口。
- 显示Colormap端口的Edit菜单。
为此,请单击Edit按钮,或者在色条中右键单击。
你可以更改颜色图:
- 选择菜单中所列的某个默认颜色图,或者
- 前往
Options->Load Colormap...从你选择的目录加载一个颜色图,或者 - 前往
Options->Edit Colormap...并使用Colormap Editor编辑你自己的颜色图。
如果范围已被改变,而你想把它调整回数据场的范围:
- 在Colormap端口的Edit菜单中选择Adjust range to并选择该数据。
提示:颜色图的范围被设为Local,并被调整到该场的全局范围(时间序列数据除外,参见Getting Started一章的Time Animation一节)。你可以通过选择和取消选择Options->Local range在全局与局部范围模式之间切换。在全局范围模式下,用于把数据值映射到颜色的坐标取自颜色图本身。如果同一个颜色图被两个不同的场使用,并且该范围被修改,那么两个场的颜色图范围都会被更新。相比之下,在局部范围模式下,这些坐标由端口本身定义。因此,尽管同一个颜色图被两个不同的场使用,其范围仍然可以不同。由于在Avizo XWind Extension中许多场可能共享同一个颜色图,我们建议你在使用全局范围模式时非常小心。
13.5.3 查看网格
- 隐藏Bounding Box。
- 右键单击该模型。
- 在主菜单或Display子菜单中选择Grid View。
- 在Options端口中选择cell filtering。
出现两个新端口,它们允许你选择和取消选择区域和/或材料。在当前情形下,两者各只有一个,因此这个选项没什么用;但请记住,对于更复杂的几何体(例如带转子和定子的泵),它是存在的。
- 在Rendering端口中,选择Solid Outline作为draw style。
在这个视图中,你可以观察到该模型边界上的网格(见图13.72)。
图 13.72:Grid view:模型边界上的网格。
模型颜色编辑器
在Rendering端口中,Coloring选项被设为Per Region。这意味着该模型的每一个区域(此处只有一个)都用Model Colors Editor中与它关联的颜色来渲染。我们现在来更改这个颜色。
- 选择该模型并打开Model Colors Editor(单击那个按钮)。
- 单击
gridelements部分的颜色。 - Color Dialog窗口弹出。定义一种新颜色并按OK。
- 回到Model Colors Editor中,单击Apply。3D查看器中的颜色被更新。现在单击Close。
如果模型中有若干区域,而你想让它们全部具有相同的颜色,你可以选择一种统一着色。请选择Grid View模块,然后:
- 在Rendering端口的Coloring部分中选择Uniform。会出现一个Uniform color端口。
- 单击颜色样本。Color Dialog窗口弹出。
- 定义一种新颜色并单击OK。颜色被更新。
单元信息
- 在3D查看器窗口中单击(以改变焦点),并按
[ESC]键把查看器切换到交互模式。光标现在应当是一个箭头。
或者,你也可以单击3D查看器菜单栏中的箭头按钮,或者在3D查看器窗口中右键单击并取消选择Viewing。 - 在网格上左键单击以选中一个单元。
关于该单元的信息会出现在3D查看器的左上角,并且Project View中会出现一个Spreadsheet in Viewer模块。该行为由Grid View模块的On left mouse click端口控制。这样,你就可以为所选单元检索到:
- 单元拓扑,
- 单元材料的物理类型,
- 所拾取点的坐标,
- 单元的体积,
- 数据值(如果Grid View是附加到某个数据场而非某个模型上)。
请回到查看模式,例如通过在3D查看器窗口中单击并按[ESC]键。
图 13.73:Grid view与单元信息。
13.5.4 查看边界
- 隐藏Grid View和Spreadsheet in Viewer模块。
- 在
Project View中右键单击该模型。 - 在主菜单或Display子菜单中选择Boundary View。
模型颜色编辑器
在Boundary View的Coloring端口中,Per Boundary Type着色被选中。这意味着该模型的每一个边界都用Model Colors Editor中与它的类型相关联的颜色来着色。要更改这些颜色,请按照你更改区域颜色时的相同方式操作。也可以像先前那样选择一种统一着色。
数据映射
如果你的解包含存储在边界上的数据场,你可以使用数据映射来为它们着色。
- 在Coloring端口中选择Data Mapping。
- 在Colorfield端口中选择Pressure。
- 在Value Mapping端口中选择Node values。
现在压力等值线被显示在该模型的边界上。所使用的颜色图是Pressure场的颜色图。如果你想修改该颜色图或它的范围,请在Pressure场的数据Properties区域中进行。
提示1:如果Boundary View当前被选中,你可以通过单击Colorfield端口中的右箭头按钮来快速选中Pressure场。
提示2:为方便起见,即使在Boundary View(或其他显示模块)被选中时,你也可以让Pressure场的Colormap端口保持在Properties区域中可见。请选择Pressure场,然后单击Colormap端口左侧的图钉。再次选择Boundary View。结果如图13.74所示。
图 13.74:模型边界上压力的数据映射。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_boundariesview01.hx。
边界过滤
先前那个视图不太有意思。我们宁愿看到飞机边界上的压力,而不是远离飞机处的压力。
飞机的边界类型为Wall。该模型的其余边界类型为Symmetry或Pressure Far Field。请选择Boundary View。
- 在Boundary types端口中,取消选择
Symmetry和Pressure Far Field类型。 - 放大视图并旋转它,以获得该飞机更好的图像(见图13.75)。
你可以看到,在Boundaries端口中,类型为Symmetry和Pressure Far Field的边界现在被取消选择了。因此,你也可以通过在这个端口中逐个取消选择非wall边界来达到同样的效果。
图 13.75:YF-17 Cobra战机边界上的压力场。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_boundariesview02.hx。
从边界提取曲面
我们现在将从该飞机的边界创建一个曲面。
- 单击Boundary View的Create surface端口中的create按钮。
曲面aircraft_mach.surf已被创建。随后该曲面可以被用作照明流线分布的种子区域(见第13.7章)。
13.6 Avizo XWind Extension 标量场显示
在本节中,我们将介绍可用于显示标量场的各种功能。
- 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas。 - 加载
Pressure场。 - 把一个Boundary View连接到该模型上,把Coloring设为Per Boundary Type,然后在Boundary types端口中取消选择Symmetry和Pressure Far Field。
- 隐藏Bounding Box。
13.6.1 横截面上的标量场剖面
- 在
Project View中右键单击Pressure标量场。 - 在Display菜单中选择Cross Section。
在该模块的Properties区域中,你可以看到一些我们在第13.5章中研究过的端口。
- Value mapping端口:node values和cell values选项指定所考虑场的某个值是被赋给网格的每个节点并沿各单元插值,还是把一个常数值与每个单元关联。
在Value Mapping端口中选择node values。 - cell filtering选项允许把Cross Section限制在该模型的所选区域上。
- On left mouse click端口:Display cell info允许你左键单击单元并获取单元信息。该选项在Display Option端口中可见。
- Draw Style允许你设定不同的绘制风格。Solid Outline和Wireframe显示网格与剖面平面的交线。请保持(或回到)Solid设置。
Rendering端口中有若干着色模式可用。默认设置是Data Mapping,这意味着使用该标量场的颜色图(带局部范围)来表示它。你已经见过Uniform模式和Per Region模式——后者根据横截面各部分所属的模型区域来为它们着色。
- 现在在Rendering端口的Coloring部分中选择Iso Contouring模式。
- Uniform distribution端口出现了。把count值设为30。
该选项实际上把颜色图变换为一个具有30个台阶的颜色图(真正附加的颜色图并未被修改)。
图 13.76:使用等值线着色的YF-17 Cobra战机周围压力场横截面。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_crosssection01.hx。
- 在Rendering端口中把Coloring设回Data Mapping。
- 单击Orientation端口中的xz按钮。
- 把Translate端口中的滑块设为0。
- 旋转该显示并放大以获得更好的视图。
提示:试着使用查看器的”Seek”功能。按”S”键或单击查看器菜单栏中它的按钮来激活Seek模式。现在单击该模型上某个有趣的部分。查看器会自动靠近,并把所选点设为旋转中心(见图13.6.1)。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_crosssection02.hx。
图 13.77:YF-17 Cobra战机中平面内压力场的横截面。
13.6.2 标量场等值线
我们现在将为先前的显示添加等值线。
- 右键单击
Pressure标量场。 - 在Display子菜单中选择Isocontour Slice。
Project View中添加了两个耦合的对象:一个定义等值线所在平面的Clipping Plane,以及Isocontour Slice模块本身。我们希望该Clipping Plane与我们已有的Cross Section平面重合。
在Clipping Plane模块中:
- 选择xz作为Orientation。
- 把Translate端口中的滑块设为0。
在Isocontour Slice模块中:
- 在Values端口中把num(等值线数量)设为50。
- 在Parameters端口中把resolution设为512,以改善绘图质量。
- 旋转该显示,以便让横截面的光照与良好的等值线视图相匹配(从某些角度可能难以看到等值线)。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_isolines01.hx。
13.6.3 图例与标题
我们的绘图缺少一些关于所显示内容的信息。
图例
图 13.78:YF-17 Cobra战机中平面内压力场的横截面与等值线。
- 右键单击
Pressure标量场。 - 在Annotate菜单中选择Data Legend。
(或者,你也可以在该标量场的Properties区域中单击create legend。)
颜色图、范围、数据名称和数据单位现在都被显示在3D查看器中。你可以在该模块的Properties区域中设定该图例的尺寸、位置等。
标题
我们现在为我们的显示加一个标题。
- 前往主菜单栏中的
Project > Create Object...菜单。 - 选择Annotations / Caption。
- 更改文本的位置:在Offsets端口中把left和top偏移设为10。
- 把文本改为”Pressure profile in the middle section of a YF-17 aircraft”。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_isolines02.hx。
13.6.4 压力的等值面
我们现在将使用等值面来显示靠近飞机的马赫锥。
- 隐藏Isocontour Slice和Cross Section。
图 13.79:YF-17飞机中间剖面的压力剖面。
(要隐藏Isocontour Slice,你实际上必须隐藏那个Clipping Plane。)
- 右键单击
Pressure标量场。 - 在Display菜单中选择Isosurface。
- 把Isovalue端口设为1000。
- 选择Data Mapping作为着色模式。
- 选择
Pressure作为Colorfield。 - 在Caption的Text端口中把标题改为”Pressure isosurfaces: P = 1000 Pa”。
感兴趣区域(ROI)
我们希望把等值面限制在靠近飞机的一个区域内。为此,我们可以使用一个感兴趣区域——它是一个盒子,用于限制许多可视化模块的输出。
- 在
Pressure的Display菜单中选择ROI Box。 - 你可以通过在查看器上单击并按
[SPACE]来展开视图,以看到整个ROI。初始的ROI是整个数据集的范围,与边界框相同。 - 切换到交互模式(在查看器上单击并按
[ESC],或者单击那个箭头)。 - 在查看器窗口中,拖动ROI上的绿色方块并修改该盒子的尺寸,直到它只包含飞机周围的一个小区域。
- 在Isosurface模块的ROI端口中选择ROI Box。
我们希望从不同的视角看到马赫锥。为了同时也能看到飞机,我们将使用Isosurface的不透明度因子。
- 隐藏ROI Box。
- 把Isosurface的Opacity设为0.15。
- 旋转并放大缩小以获得不同的视图。
图 13.80:把马赫锥作为某个感兴趣区域内压力的等值面。
图 13.81:YF-17飞机的马赫锥作为压力的等值面。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_isosurfaces.hx。
13.7 Avizo XWind Extension 矢量场显示
在本节中,我们将介绍可用于显示矢量场的各种功能。
- 从
tutorials/cfd-fea-advanced文件夹打开wing.cas。 - 加载
Velocity矢量场。 - 把一个Boundary View连接到该模型上,并在Boundary Types端口中取消选择除
Wall之外的所有项。 - 隐藏Bounding Box。
你可以在3D查看器中看到一个机翼。我们将研究这个机翼周围的气流。
13.7.1 粒子动画
我们对这个机翼周围的流动一无所知。为了快速概览该流动,并看出在研究过程中应当聚焦于该模型的哪些区域,我们将在矢量场中播撒粒子并观察它们的行为。
感兴趣区域(ROI)
相比机翼的尺寸,该域非常大。我们希望聚焦于机翼旁边的流动。为此,我们可以使用一个感兴趣区域(ROI)——它是一个盒子,用于限制许多可视化模块的输出。在这种情况下,我们将使用一个ROI来定义我们粒子的起始位置。
- 右键单击模型
wing.cas。 - 在Display菜单中选择ROI Box。3D查看器中出现一个盒子,这就是ROI。最初该ROI与数据集的边界框相同。
- 通过拖动绿色方块来改变ROI的形状。通过拖动它的各个面来改变ROI的位置。调整ROI的尺寸,并把它定位到靠近机翼前缘的位置。
请记住,你必须处于交互模式(由箭头光标指示)才能操作ROI。按[ESC]键或单击查看器菜单栏中的按钮来切换模式。
提示:在执行诸如调整和定位ROI盒子这类任务时,你常常需要在交互模式与轨迹球模式之间多次切换。在交互模式下,你可以按住[ALT]键临时切换到轨迹球模式。当该键被释放时,查看器会返回交互模式。
图 13.82:感兴趣区域。
动画粒子
- 右键单击
Velocity,并在Display子菜单中选择Animated Particles。 - 在SeedROI端口中选择
ROI Box这个ROI。 - 把Frequency改为every 10 timestep。
- 在Animate端口中把步长设为0.0002,以便减慢该动画。
- 几秒钟后(等一些粒子度过它们的生命并变”老”),在Colormap的Edit菜单中选择Adjust range,以便把颜色图的范围调整到粒子年龄的范围。
- 在Shape端口中选择spheres,并把它们的尺寸设为0.1。
通过观察Animated Particles模块的Properties区域,我们可以得知:每10个时间步就有10个粒子被随机播撒在该ROI各处。它们按年龄着色,这意味着某个粒子在该模型中留存越久,它就越红。
图 13.83:Animated Particles显示模块的Properties区域。
图 13.84:播撒在机翼附近的动画粒子。
粒子的行为表明机翼附近存在一个涡度区域:确实,你可以看到一些粒子在机翼上表面附近旋转并变红(也就是说变老)(见图13.84)。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_animatedpart.hx。
停止该动画:
- 在Animate端口中,取消勾选animate按钮。
- 使用Particles端口中的Clear按钮,从3D查看器中清除所有粒子。
13.7.2 照明流线(ISL)
ISL技术用于通过从随机种子点开始对矢量场积分,来计算大量的场线。我们将把播撒种子点的区域限制在先前的ROI内。
- 把ROI移到更靠近机翼的位置。为此,请切换到交互模式,通过单击该盒子的某个面并保持按下的同时移动鼠标来拖动ROI。
- 右键单击
Velocity,并在Display菜单中选择Illuminated Streamlines。 - 在Seed ROI端口中选择
ROI Box这个ROI。 - 在Num Lines中把线的数量设为400。
- 把线的Length设为100。
- 把Step size设为0.001。
- 单击Apply。
- 隐藏该ROI。
使用两个查看器
我们将使用两个查看器,以两种不同的方式来观察空气的回流。
- 单击3D查看器菜单中的两查看器并排按钮。
- 在ROI Box的Properties区域中,通过单击查看器开关的右半边红色部分来选择/取消选择在右侧查看器中的显示。这会使该ROI在右侧查看器中出现/消失。如有需要,你也可以对Bounding Box做同样的操作。
- 旋转并放大缩小以获得两个不同的视图,类似图13.85那样。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_displayisl.hx。
提示:你可能想从某个给定的边界(例如一个速度入口)播撒ISL。为此,请先提取所选的边界(使用Boundary View模块的Create surface选项,如第13.5章末尾所述)。然后把所创建的曲面连接到Illuminated Streamlines模块的Distribution端口。不过请注意,曲面网格的每一个节点都会播撒出一条线,因此该显示可能需要一段时间才会出现在查看器中。
图 13.85:速度矢量场的照明流线。
另外两个模块也使用照明流线:Illuminated Streamlines Slice使用ISL可视化一个曲面矢量场,而Illuminated Streamlines Surface与任意的3D矢量场相交,并使用ISL在切割平面中可视化其方向结构。这些模块的演示在第13.9章末尾给出。
13.7.3 线积分卷积(LIC)
这种方法包括与矢量场相交,并在切割平面中可视化其方向结构。
- 回到只有一个查看器(单击3D查看器菜单中的单查看器按钮)。
- 创建一个新的ROI,使它包含该机翼以及它后方的一部分域。
提示:你已经知道如何通过右键单击模型并使用Display子菜单来创建一个新ROI。不过,这(像之前一样)会得到一个与边界框尺寸相同的ROI,这意味着你必须缩小视图才能把它操作到所期望的尺寸。复制已经接近所需尺寸的现有ROI可能更方便。请在Project View中右键单击ROI Box,并在弹出菜单中选择Object/Duplicate Object。 - 右键单击
Velocity,并在Display菜单中选择Stream LIC Slice。 - 在ROI端口中选择新的ROI
ROI Box 2。 - 如有必要,用Translate端口移动该平面,把它定位在机翼长度大约三分之二的位置。
- 在Lic端口中把分辨率设为700。
- 按下Apply按钮。
- 隐藏该ROI。
图 13.86:机翼附近速度的LIC表示。
提示:你可以使用Properties区域中的Translate端口来移动该平面,或者在Viewer窗口中拖动该平面(如有必要请切换到交互模式)。移动该平面之后,请按下Properties区域中的Apply按钮以重新计算LIC。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_planarlic.hx。
13.7.4 平面内的矢量
- 隐藏除Boundary View之外的所有显示模块。
- 右键单击
Velocity,并在Display菜单中选择Vector Plane。 - 在ROI端口中选择
ROI Box 2。 - 把Scale设为0.01,Sampling distance设为0.08。
- 设定Translate以便正确地看到回流。
现在我们希望这些矢量按矢量的模值来着色。
- 在
Project View中右键单击Velocity,并从Compute子菜单中选择Magnitude。Magnitude模块出现在Project View中Velocity数据的正下方,显示它的输入(绿色箭头)是Velocity,输出(红色箭头)是Velocity.Magnitude。新的速度模值数据集出现在Project View中该模型的下方。 - 为
Velocity.Magnitude显示一个图例。 - 在Vector Plane中,把Rendering着色模式设为Data Mapping,把Colorfield设为
Velocity.Magnitude。
图 13.87:切割机翼的某个平面内的速度矢量。
与Stream LIC Slice类似,你可以使用Translate端口或直接拖动来移动该平面。与Stream LIC Slice不同的是,随着平面移动,这些矢量会被动态地重新计算。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_vectorplane.hx。
13.7.5 流带
- 隐藏或删除除Boundary View之外的所有显示模块。
- 右键单击
Velocity,并在Display菜单中选择Stream Ribbons。
3D查看器中出现从一条线播撒出的流线。
- 单击Stream Ribbons的Dragger端口中的Show。
出现一个拖动器,代表流线播撒所依据的那条线。
- 在Viewer窗口中单击并切换到交互模式。
- 移动该拖动器,并使用绿色球体旋转该拖动器,直到那条线与机翼上表面平行。
图 13.88:流带拖动器。
- 在Mode端口中选择ribbons。
- 把Resolution设为1。
- 把Density设为0.8。
- 把Width设为0.35。
- 把Length设为3。
- 单击Dragger端口中的Hide。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_streamribbons.hx。
13.7.6 寻找3D临界点
3D临界点是围绕它可以识别出不同流动模式的点。例如,围绕一个源,流动行为是均匀的流入;而围绕一个汇,则是流出。围绕鞍点的流动是两者的混合。
从数学的角度看,一个3D矢量场的一阶临界点是速度为零、而速度雅可比矩阵的行列式不为零的点。一阶临界点可以通过对雅可比矩阵做特征值/特征向量分析来分类。Critical Points显示模块会找出临界点,并根据临界点的分类用不同形状的图标来表示它们。更多细节请参阅Critical Points的文档。
图 13.89:机翼附近的流带。
- 隐藏或移除先前的显示模块,只保留Boundary View。
- 右键单击
Velocity,并在Display菜单中选择Critical Points。 - 把Icons size减小到0.05。
- 单击Apply。
- 选择show选项,以显示从这些临界点播撒出的照明流线。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_cp3d.hx。
13.8 Avizo XWind Extension 统计与算术运算
- 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas。 - 加载
Pressure和Density标量场以及Velocity矢量场。 - 隐藏Bounding Box。
图 13.90:速度矢量场的临界点以及从这些点播撒出的照明流线。
13.8.1 面积分与体积分
在Avizo XWind Extension中,统计模块允许你在一个非结构化模型的边界上和体内计算统计量。这些模块的输出是电子表格,这些对象会在Project View中被创建出来。你可以把它们导出为.CSV文件,然后导入到Microsoft Excel (c)中做进一步的工作。
我们不会在此用示例逐一说明所有可能的计算,而只给出一些积分计算的简短示例。无论选择哪个模块和哪种计算,工作流基本上每次都是相同的。
可以连接到某个模型的统计模块列在Measure And Analyze右键子菜单中。其中一些模块也可以连接到数据场上。
面积计算
- 右键单击该模型。
- 在Measure And Analyze菜单中选择Surface Integrals。
- 单击Apply。
计算结果会被打印到一个弹出的电子表格中。它包含所研究模型全部边界的总面积。
在Boundaries filter端口中,所有边界都被选中,这意味着计算是在所有边界上完成的。Compute端口中选中的是globally选项,这意味着所计算的面积是所有边界面积之和。
图 13.91:面积分Properties区域。
- 在Compute端口中选择per surface。
- 单击Apply。
你现在可以看到每一个边界的面积都被打印到了电子表格中。
- 在Compute端口中选择globally。
- 在Boundary types端口中取消选择类型为
Symmetry和Pressure Far Field的边界。现在唯一被选中的边界就是飞机的边界。 - 单击Apply。
你可以看到半架飞机的面积(由边界2、4、5、6、7、9、10和11构成)约等于83.61平方米。
体积计算
- 右键单击该模型。
- 在Measure And Analyze菜单中选择Volume Integrals。
- 单击Apply。
一个新的电子表格弹出,你可以看到流动域的体积约等于1024215立方米。如果该模型由若干区域构成,你可以使用Regions filter端口把计算限制在某些区域上,方式与我们对边界所做的相同。
压力力矢量计算
- 右键单击该模型。
- 在Measure And Analyze菜单中选择Force。
- 按下Apply。
图 13.92:面积分电子表格。
图 13.93:体积分电子表格。
请注意,为方便起见,该模块中只预先选中了类型为Wall的边界。
Force模块计算在飞机表面上产生的压力力矢量,以及关于力矩中心(此处被设为原点)的压力力矩。请注意,Pressure标量场已被识别出来,并被自动选中到Pressure端口中。
标量场平均值计算
体积分和面积分也可以在数据场上计算。
图 13.94:压力力矢量电子表格。
- 选择Volume Integrals模块。
- 在Properties区域中,把Data改为
Pressure。 - 在Field integral端口中选择mean。我们将计算整个体内压力的平均值。
- 单击Apply。
由于Table端口中默认勾选了new if integral type is new,会打开一个新的表格,它的标题按照场积分类型被命名为mean。
从Volume Integrals和Surface Integrals模块还可以计算许多其他类型的体积分、面积分和统计量。在数据场上的计算总是可以使用相应的过滤器被限制在特定区域或边界上。
图 13.95:该模型中压力的平均值约为1849 Pa。
在一系列横截面上的压力面积分计算
面积分不仅可以在3D非结构化网格边界上计算,还可以在2D非结构化网格上、在2D非结构化曲面上以及在三角化的Surfaces上计算。这里我们将研究一种便捷方式,用Surface Integrals模块在一个3D模型的若干平行切面上计算积分。
- 把一个Boundary View连接到该模型上。
- 在Boundary types端口中取消选择除
Wall之外的所有项。 - 在
Pressure的Display菜单中选择Cross Section。 - 把该Cross Section的Orientation设为yz。
- 右键单击该Cross Section并选择Animate Ports。
Project View中创建了一个Animate Ports模块。我们将用这个模块为该Cross Section的Translate端口的值制作动画。
- 在Animate Ports模块的Port端口中选择Translate。
- 把Time设为0。
- 单击Time端口的配置按钮。
- 选择Configure并把Increment设为10。
- 把Translate方程改为
0.4*t+30。 - 回到
Pressure,并为它连接一个新的Surface Integrals模块。
请注意该模块的Properties区域中出现了一个新端口Surfaces。这个端口之所以显示,是因为在Project View中检测到了一个曲面(即那个Cross Section)。
- 在Field integral端口中选择surface integral。
- 取消选择所有边界。只有该Cross Section被勾选。
- 把该模块的计算模式设为auto-refresh。
- 在Animate Ports模块中按下播放按钮以启动动画。
图 13.96:在一系列与飞机正交的平面切面上的Pressure面积分。
在动画的每一步,该电子表格都会用在每个新平面上所计算的积分值更新。这突出显示了飞机周围环境中重要的压力升高。
13.8.2 算术计算
二次变量计算
有了Avizo XWind Extension,你还可以实现你自己的计算,把非结构化模型上的变量作为输入。作为一个示例,我们现在将计算动量矢量场(密度与速度之积)。
- 通过在该模型(
aircraft_mach.cas)的Properties区域中单击Datasets selector的按钮,从Datasets selector加载Velocity数据。 - 右键单击
Velocity矢量场。 - 在Compute子菜单中选择Arithmetic。
- 选择
Density作为第二个输入Input B。 - 动量是一个矢量,因此你可以在Output data type端口中保持same as input,或者选择vector。
- 输入动量矢量场的各分量:在Expr X中输入
B*Ax,在Expr Y中输入B*Ay,在Expr Z中输入B*Az。 - 单击Apply。
一个名为Result的新数据模块出现在该模型之下。 - 把这个模块重命名为
Momentum。
为此,请右键单击该模块,选择Object/Rename Object并在对话框中键入一个新名称。或者,你也可以选中该模块,按[F2],然后直接在Project View中键入一个新名称。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_arithmetic.hx。
规则数据场的生成
你也可以使用arithmetic模块在一个规则网格上生成一个数据场,然后使用某些只接受规则输入的其他Avizo Lite Edition显示模块,例如Volume Rendering模块。
- 把一个Arithmetic模块附加到
Pressure数据集上。 - 在Output grid type端口中选择regular。
- 在Expr中输入表达式
A。 - 把Resolution改为100 x 50 x 100。
- 单击Apply。
- 把所得到的数据集重命名为
Pressure.Regular。
Pressure.Regular就是在一个100 x 50 x 100尺寸的规则网格上生成的压力场。
体渲染
- 在该模型上使用一个Boundary View来显示飞机边界(只显示walls)。
- 在
Pressure.Regular的Display右键子菜单中选择Volume Rendering。 - 在Volume Rendering模块的Properties区域中,在Colormap端口中加载并选择physics_VolRend.am:
- 单击Colormap端口的”Edit”按钮,然后选择”Option / Load colormap…”
- 打开
data/colormaps/physics_VolRend.am
- 把颜色图范围设为-5000, -1000。
- 打开Colormap Editor(通过Window菜单或标准工具栏快捷方式)。
- 单击超出最大范围值的编辑按钮。Color Dialog打开。
- 把alpha (A)设为0。
- 单击OK。
现在你有了马赫锥的一个新视图。
图 13.97:YF-17飞机周围压力的体渲染。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_volrend.hx。
13.9 Avizo XWind Extension 涡度识别
本节将为你全面介绍Avizo XWind Extension所提供的涡度检测、计算与分析功能。
尽管有大量研究致力于涡识别,但对于其形式化定义仍未达成一致。在缺乏涡结构形式化刻画的情况下,围绕某个中心区域的旋转运动被用作一个工作定义。取决于所选的方法,这会导出或为线(参见关于涡核线的小节)、或为面或体(参见关于涡度相关变量的小节)的特征。
- 从
tutorials/cfd-fea-advanced文件夹打开wing.cas。 - 加载
Velocity矢量场。 - 把一个Boundary View连接到该模型上,并在Per Boundary Type着色模式下只保留walls被选中。
- 隐藏Bounding Box。
13.9.1 涡度相关变量的计算
- 右键单击该模型。
- 在Compute子菜单中选择Secondary Variables。
在该compute模块的Properties区域中,你可以看到Category端口,它列出了Avizo可以计算的主要二次变量类别。
- 选择vorticity类别。
在Variable端口中,列出了若干可从速度矢量场计算出的涡度相关量。速度矢量场已被Avizo检索到,并被默认设定在Velocity端口中。涡度相关变量可用于寻找涡度区域,例如通过绘制横截面,或者用等值面界定区域。
一些最常用的、可被计算并用于识别涡的判据示例:
- 高涡度区域,
- 高涡量(enstrophy)区域,
非零螺旋度(helicity)区域……
现在选择turbulence类别。
如前所述,这里列出了若干湍流相关量。它们同样可以被用于寻找涡度区域。
一些最常用的、可被计算并用于识别涡的判据示例:
- 负lambda2区域,
- 正Q判据区域……
示例1:涡度模值
- 选择vorticity类别。
- 选择vorticity magnitude变量。
- 单击Apply进行计算。
一个VorticityMagnitude标量场被创建。用一个Cross Section来可视化它:
- 在
VorticityMagnitude的Display右键子菜单中选择Cross Section。 - 在Value Mapping端口中选择node values。
- 把朝向设为yz。
- 把该平面平移到52。
- 回到
VorticityMagnitude,并在它的Properties区域中把颜色图范围的上限值设为1000,以便突出显示高涡度区域。 - 选择physics.am颜色图。如果它没有出现在颜色图列表中,请加载它(
data/colormaps/physics.am)。 - 显示一个图例。
示例2:lambda2
- 隐藏该Cross Section。
- 为该模型附加一个新的Secondary Variables。
- 选择turbulence类别;lambda 2被默认选中。
- 单击Apply。
- 把一个Isosurface连接到新的
LambdaTwo对象上。 - 把Isosurface模块的Isovalue设为-500。
- 在Display Options端口内部,在Coloring端口中选择Data Mapping。
- 在Optional Connections端口内部,把Colorfield端口设为
VorticityMagnitude。 - 在Value Mapping端口中选择node values。
LambdaTwo的Isosurface隔离出一个lambda2为负的区域,那里很可能存在涡。高涡度的子区域位于靠近机翼的位置(见图13.9.1)。
图 13.98:飞机附近的涡度模值。
图 13.99:按涡度模值着色的Lambda2 = -500等值面。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_secondaryvariables.hx。
13.9.2 涡核线识别
Vortex Corelines模块检索出流动围绕其旋转的那些线。
- 隐藏Isosurface、Cross Section和Data Legend。
- 按第13.7章所述,使用一个定位在靠近机翼前缘的ROI Box来绘制Illuminated Streamlines。
- 右键单击
Velocity矢量场。 - 在Compute子菜单中选择Vortex Corelines。
- 单击Apply。
一个Line Set已在Models目录中被创建出来,名为VortexCorelines。我们现在来显示这个结果。
- 选择
VortexCorelines对象,并在Display子菜单中连接一个Line Set View。
你可以看到有一些非常小的线和一些有噪声的线。如果我们只想聚焦于主核线,就应当把那些线过滤掉。Vortex Corelines模块中为此提供了过滤工具。
- 首先我们要移除过小的线:把minimum line size设为35。
- 单击Apply。
Line Set View被更新。所有核点少于35个的线都被删除了。还剩下三条线,其中一条明显位于先前所绘制的lambda2等值面之外。
- 在Post-filtering端口中选择lambda 2判据。
- 把Lambda 2 threshold设为-500。
- 单击Apply。
Line Set View再次被更新。所有lambda2大于-500的核点都被移除,也就是说所有位于先前所研究Isosurface所界定体之外的点都被移除。过滤更有效了,只剩下照明流线旋转所围绕的那条核线。如果你选择VortexCorelines线集,你会在它的Properties区域中看到实际上有两条线,共由115个核点构成。
- 如果你想让这条线显得更平滑,请多次单击Line Set端口的smooth按钮。
- 选择Line Set View模块。
- 在Shape端口中选择Circle。
- 把Scale Factor设为0.02。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_vcl.hx。
你可以用3D临界点的显示(见第13.7章)来完善这个可视化。从这些临界点播撒出的照明流线(使用show选项)会围绕该核线旋转。
图 13.100:过滤后的核线与机翼附近的旋转流动。
13.9.3 涡流可视化
这里再介绍一些可用于突出显示某些流动行为(例如此处所研究的涡流行为)的可视化模块。
Surface Illuminated Streamlines(曲面照明流线)
该模块在一个曲面上稀疏地播撒流线,以便使用照明流线(ISL)显示该曲面矢量场。如果我们想在机翼上显示这些流线,首先需要提取出这个曲面。
- 隐藏或删除
Project View中可能还留着的Illuminated Streamlines或Critical Points。 - 选择Boundary View。在Boundaries端口中应当只选中wing。
- 按下Create surface端口中的create按钮。一个
wing.surf曲面被创建并添加到Project View中。 - 右键单击这个新曲面,并在Display子菜单中选择Illuminated Streamlines Surface。
- 选择Illuminated Streamlines Surface模块,并把Vector field设为
Velocity。 - 取消勾选Options端口中的early termination选项。
- 把Seed端口设为1。
- 按下Apply。
图 13.101:机翼上的曲面照明流线与主核线。
机翼上的流线被显示出来,涡现象呈现得相当好。一个主旋涡对应于主核线的起始点,而更小的旋涡则对应于我们在第一次核线显示中注意到、之后被过滤掉的那些小核线。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_surfaceISL.hx。
Illuminated Streamlines Slices(照明流线切片)
该模块使用照明流线(ISL)在一个切割平面中可视化某个矢量场的方向结构。这里有意思的是在一个与核线正交的平面中可视化ISL。为此,我们将使用Trajectory模块。
- 隐藏或删除Illuminated Streamlines Surface。
- 在机翼上表面、核线周围创建一个小的ROI Box。
- 在
Velocity场的Display子菜单中选择Illuminated Streamlines Slice。 - 在Clipping Plane的Properties区域中,把你刚创建的ROI Box设为ROI。
- 隐藏该ROI。
- 右键单击该Clipping Plane,并为它附加一个Trajectory模块。
- 在Trajectory模块的Properties区域中选择
VortexCorelines作为Data。
该Clipping Plane现在与核线正交。如果你使用Trajectory模块的Position滑块,该平面会沿核线滑动,并保持正交。由于该核线实际上由两条线构成,你必须使用Line滑块才能让该平面沿核线的另一部分滑动。
提示:例如,你也可以用一个Stream LIC Slice模块做同样的事情。LIC技术同样是可视化核线周围流动旋涡的好工具。
- 选择Illuminated Streamlines Slice模块。
- 取消勾选Options端口中的early termination选项。
- 把Resolution设为200,Separation distance设为15。
- 按下Apply。
- 从Clipping Plane的Frame端口隐藏该平面边框。
你也可以通过在View options端口中选择animate,为这些流线制作动画,以看到它们围绕核线旋转。
图 13.102:与主核线正交的平面上的照明流线。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_planarISL.hx。
13.10 Avizo XWind Extension 测量
译注:本节与第13.3节内容相同,为原书重复编排,此处按原书保留。
本节将为你概览Avizo XWind Extension所提供的测量功能。
- 从
tutorials/cfd-fea-advanced文件夹打开aircraft_mach.cas。 - 加载
Pressure标量场。 - 把一个Boundary View连接到该模型上。
- 在Boundary types端口中取消选择除
Wall之外的所有项。 - 把coloring设为Data Mapping,并使用
Pressure作为colorfield。 - 在Value Mapping端口中选择node values。
- 隐藏Bounding Box。
13.10.1 3D测量
你可以通过View / Measuring菜单,或者通过查看器顶部的测量工具按钮(及其下拉菜单——单击那个小箭头)来访问测量工具。
- 在测量工具按钮的下拉菜单中选择Line。
- 在View菜单中选择Measuring。
现在,你在Project View的Display文件夹中有了一个Measurement对象。该模块提供对二维和三维测量工具的访问。
线测量
我们将测量机翼的前缘。线测量(Line)已经被选中。
- 在3D查看器中,单击机翼前缘的一端。
请注意,光标会发生变化以指示何时可以选中一个有效的对象。 - 单击机翼边缘的另一端。
- 要调整某条测量线的位置,请在属性区域中选中它,然后单击它的某个红色手柄并把它拖到一个新位置,或者使用文本端口Point 0和Point 1来更改位置。
- 在机翼的侧边缘上做同样的操作。
提示:你可能需要重新定位相机以选择测量点。与通常一样,你可以按[ESC]键在交互模式与轨迹球模式之间切换,或者按住[Alt]键临时切换到轨迹球模式。
你可以测量出该机翼的前缘约为4.44米,侧边缘约为1.55米。
3D角度测量
- 在Measurement模块的属性区域中,单击那两条线的”眼睛”图标,以在3D查看器中隐藏它们。
- 在Add端口中,单击Angle按钮。
- 在3D查看器中,单击机翼攻角边缘与机身的交点。
- 单击攻角边缘的另一端(与侧边缘的交点)。
图 13.103:测量YF-17飞机的机翼尺寸。
- 单击侧边缘的另一端。
你可以测量出该角度约为116度。
13.10.2 直方图
Histogram模块计算3D单元中某个标量场的直方图。我们将把它用在Pressure标量场上。
- 右键单击
Pressure,并在Measure And Analyze菜单中选择Histogram。 - 在Histogram属性区域中单击Apply。
一个窗口弹出,其中包含一个采用对数刻度的直方图。Pressure场的均值(约1849 Pa)和标准差(约23187 Pa)显示在属性区域中。
- 把Range的最小值设为0。
- 激活Threshold并把它设为100000。
- 激活Tindex并把它设为50。
- 单击Apply。
图 13.104:角度测量。
图 13.105:压力分布的直方图。
我们可以从中得知:
- 对于压力位于新范围内的所有单元,均值约为10647 Pa,标准差约为26442 Pa;
- 在这同一范围内,2.44%的单元压力大于100000 Pa;
- 在这同一范围内,50%的单元压力低于1784 Pa(另50%则更高)。
该直方图已被更新。
如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_histo.hx。
13.10.3 数据探测
三个数据探测模块Point Probe、Line Probe和Spline Probe用于检查标量或矢量数据场。探测在某一点上(Point Probe)或沿某条线(Line Probe和Spline Probe)进行,它们可以被任意放置。
沿样条探测
我们将使用Spline Probe来绘制飞机机翼周围的压力。首先,我们必须正确地放置该样条的四个控制点。
- 右键单击
Pressure。 - 在Measure And Analyze菜单中选择Spline Probe。
要把控制点定位在给定几何体的边界框内,你既可以在Points端口中键入坐标(见下文),也可以用鼠标交互式地移动点拖动器。(你可能需要缩小视图才能看到点拖动器。)
- 在Points端口中,会显示第一个控制点的坐标。把它们改为4, 2, 0。
- 在Points端口中,使用微调框选择第二个点,并把它的坐标设为0, 2, 0。
- 选择第三个点,并把它的坐标设为0, 2, 0.3。
- 选择第四个点,并把它的坐标设为4, 2, 0.3。
- 你可能想使用Points端口的options子菜单来隐藏这些点和拖动器。
- 单击Plot端口中的Show按钮。
图 13.106:压力值相对于样条探测线长度的关系。
一个绘图窗口出现,其中所采样的压力值被绘制为相对于探测线长度的函数。如果遇到任何问题或不确定之处,你可以在你的教程文件夹中找到同样预先定义好的项目,文件名为data/tutorials/cfd-fea-advanced/wind_splineprobe.hx。
沿曲面路径探测
出于探测的目的,拥有能在某个曲面上定义特定线条的工具往往很有用。Surface Path Editor和Surface Intersector模块就是为此而设计的。
Surface Path Editor允许在曲面上创建路径。路径可用于切割曲面、定义曲面的区域或特征、探测等等。可以通过单击编辑器按钮,从一个Surface Path Set的属性区域访问该编辑器。随后提供两种类型的编辑器:
- Generic Path Editor允许在曲面网格上任意地定义路径,
- Vertex Path Editor只允许沿曲面网格的边定义路径。
请注意,Vertex Path Editor可以直接从某个曲面的Measure And Analyze子菜单访问(条目名为Create Surface Vertex Path)。
Surface Intersector模块与两个曲面相交,沿该交线计算出一条路径,并把它附加到每一个曲面上。
- 从
Project View中移除所有对象(使用[Ctrl+N],或者在Project View中右键单击并选择Remove All Objects)。 - 从
tutorials/cfd-fea-advanced/fan文件夹打开fan-0070.cas。 - 加载
Pressure标量场。 - 隐藏Bounding Box。
- 把一个Boundary View连接到该模型上。
- 在Boundaries端口中取消选择除
wall-1之外的所有项,并从Create surface端口创建该曲面。
我们将沿风扇曲面的一条径向线剖面绘制Pressure。为此,我们必须先创建一个圆柱面,以便把它与风扇相交,然后得到交线。
- 右键单击曲面
fan-0070.surf,并从Compute子菜单创建一个Surface Intersector。
在Surface Intersector属性区域中,第二个曲面仍需被设定。我们将使用Parametric Surface模块来创建所需的相交曲面,它可以从Project / Create Object...(Surfaces And Grids子菜单)获得。
- 创建一个Parametric Surface。会创建一个默认平面。
- 对于U,把min设为-0.02,step设为0.0005,max设为0.01。
- 对于V,把min设为1,step设为0.0005,max设为2。
- 把X设为
u,Y设为0.12*sin(v),Z设为0.12*cos(v)。 - 单击Draw style端口中的more options按钮并选择Create surface。
Parametric-Surface.surf被添加到Project View中。 - 把
Parametric-Surface.surf设为Surface Intersector的第二个曲面并按下Apply。
沿交线创建了两条路径,每个曲面上各附加一条。
- 隐藏该Parametric Surface,并把一个Line Set View显示模块连接到
IntersectionPath2上。该路径显示在风扇曲面上。 - 在
Pressure的Measure And Analyze子菜单中选择Line Set Probe。 - 在Line set端口中把Line Set Probe附加到
IntersectionPath2上,并按下Show按钮。
一个显示沿探测线的Pressure的窗口出现。我们将改进这个显示。
- 对于X-Axis,选择z坐标。
- 在Edit菜单中选择Edit Objects。
- 在axis部分中,取消选择调整X范围的Auto选项,并把它设为$[-0.025, 0.04]$。
- 把Y标签改为”Pressure”。
- 在
LineSetProbe_001部分中,把Draw style改为Marker。 - 更改标记的形状(例如改为点)和颜色。
- 把标签改为”Radial section: 0.12m”。
- 按下OK。
图 13.107:沿风扇曲面径向0.12m线剖面的压力值。
