ResultIndexMap

Inherited from NULL

Inherited by NULL

Friend class NULL

Description

ResultIndexMap封装了面向结果数据的网格索引映射表,它的作用是在构建显示结果的视图数据时,优化节点和单元的顺序并将该顺序以成员变量(RID)的形式固定下来,使程序在切换结果的时候可以以最快的速度从结果缓冲区中取出相应的结果。这么做的原因是由于结果模型的网格并不保证是自然顺序排序,XT为了提高性能,结果数据会按照节点和单元的顺序保存到结果缓冲区中,结果缓冲区根据需要可保存到硬盘上或者从硬盘上读取。 XT对节点的重排顺序为:

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

对单元的重排顺序为:

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

对于节点结果,按照节点排序即可;对于单元结果按照单元排序即可;对于积分点结果,需要另外一个数组按单元的顺序记录每个单元的结果位置偏移量,下一个结果的位置偏移量与前一个结果的位置偏移量相减即可得到单元的积分点数;对于单元节点结果,需要另外一个数组按单元的顺序记录每个单元的结果位置偏移量,下一个结果的位置偏移量与前一个结果的位置偏移量相减即可得到单元的节点数。

需要强调的是结果索引映射表是与模型相关的,不同模型节点数一般不同,单元数一般不同,板壳杆梁实体等属性分类也不尽相同,因此不同的模型需要构建不同的映射表。

Members

Public interface

Private interface


XArray<int> m_ElemNodeRIDs

XArray<int> m_ElemNodeIndex

XArray<int> m_ElemIntegralPointIndex

XArray<int> m_NodeIndex

MeshCount m_MCount

bool m_bHasBeam

bool m_bHasShell

bool m_bHasSolid

XModel * m_pMdl


ResultIndexMap(XModel * mdl)

~ResultIndexMap()

void setModel(XModel * mdl)

XModel * getModel()

void clear()

ErrorCode read(H5IO * io, H5Obj * grp)

void write(H5IO * io, H5Obj * grp)

void build()

void matchFaceResult(XResult * rlt, int comp)

void matchEdgeResult(XResult * rlt, int comp)

void reset(int nodal_cnt)

MeshCount & getMeshCount()

bool hasBeam() const

bool hasShell() const

bool hasSolid() const

int * getElementIntegralPointIndexData()

int getElementIntegralPointIndexBegin(const XElement * el)

int getElementIntegralPointIndexEnd(const XElement * el)

int getTotalIntegralPointCount() const

int getShellIntegralPointCount() const

int getBeamIntegralPointCount() const

void setElementIntegralPointIndex(const int * indexArr, int size)

int * getElementNodeIndexData()

int getElementNodeIndexBegin(const XElement *el)

int getElementNodeIndexEnd(const XElement *el)

const int * getElementNodeRIDData() const

void exportIndex(const char *fname)

int getNodeIDByRID(int rid)


void reindexMesh(XModel * mdl)