XT Result System

XT的结果系统向开发者提供了一套强大灵活并且高性能的管理方案。

XT平台支持四种位置的结果(节点、单元节点、单元中心、积分点)和三种位置的视图((节点、单元节点、单元中心),结果视图基于三角片,一般情况下按照模型的表面分块给出,剖面则单独处理。由积分点的结果可以计算得到单元节点的结果,节点应力磨平之后得到节点结果,单元节点平均可得到单元中心的结果。不同结果位置的结果同属于一簇结果集,任何一个时刻只会显示一个位置的结果(称为主结果),每个位置的结果包含若干分量(Component)以及相同结果相同位置的若干结果层(一个结果层对应Beam或Shell的一个层设定)。结果分量包含基本分量和衍生分量,一般而言,只有节点结果包含衍生分量,衍生分量由基本分量计算得到,其他位置的结果数据均只包含基本分量(如应力就只包含6个分量)。如果没有实体单元,那么主结果数据为空,只有板壳对应的结果层或杆梁对应的结果层有数据。
如果结果文件中仅有积分点结果,那么需要依次创建单元节点、节点结果。
一般来说,要显示一个分析步里的某个结果,用户需要指定如下选项:

  1. 结果子步或工况
  2. 结果类型
  3. 结果位置
  4. 结果层(仅在存在Beam或Shell结果的情况下有效)(Layer)
  5. 结果分量

其中衍生结果根据组长的Layer属性也会管理相应的结果层数据。
结果簇长负责向程序其他部分提供结果的视图,XT平台会在导入结果模型的时候分析网格模型的拓扑结构并重排网格的节点和单元顺序(通过RID),其中节点顺序重排为:

  1. 独立梁节点 (Beam Result Layer)
  2. 拓扑边节点(前述节点除外)
  3. 独立板壳节点(前述节点除外,Shell Result Layer)
  4. 拓扑面节点(前述节点除外)
  5. 体节点

其中单元顺序重排为:

  1. 独立梁单元 (Beam Result Layer)
  2. 拓扑边单元(前述单元除外)
  3. 独立板壳单元(前述单元除外,Shell Result Layer)
  4. 拓扑面单元(前述单元除外)
  5. 体单元

对于一般的节点视图来说,渲染拓扑面与拓扑边即可,为了节约内存提高性能,只需准备体节点之前所有节点的数据;对于一般的单元结果视图,需从原始结果里计算出拓扑边单元以及拓扑面的单元的结果。独立梁节点的结果以Beam结果层组织管理,独立板壳的结果以Shell结果层组织管理。 当用户明确指定上述结果参数,程序会按照下列步骤载入结果:

  1. 获取指定类型的结果簇长
  2. 检查对应位置的结果数据是否已读入,
    • 如否,则调用接口读入原始数据
    • 如是,则从HDF5中载入数据
  3. 在结果簇长里分配空间,拷贝普通结果的指定分量数据
  4. 叠加Shell指定结果层的指定分量
  5. 叠加Beam指定结果层的指定分量。

有了结果数据之后,视图渲染时遍历所有的面,为每个面更新对应的Vertex Array序列,依次批量渲染即可。