XResultComponent

Inherited from NItem,

Inherited by NULL

Friend class NULL

Description

XResultComponent封装了结果分量数据对象, 它是结果数据对象的基本组成部分。结果分量数据或者在节点上、或者在单元中心上、或者在单元节点上、或者在单元积分点上,因此对于给定模型,它的长度会因为位置不一样而不一样;此外,某些结果只在模型的部分区域(比如板壳结果或者杆梁结果),它的数据长度会做相应的调整。为了节约内存并提高和统一结果分量的数据的访问方式, XT会对模型的网格数据做预处理,首先构造模型的表面几何数据(这是后处理轻量化的关键处理方法之一),然后对节点、单元排序,使得节点、单元按照杆梁、板壳、实体的顺序排列,结果分量的数据都将直接参考该顺序而不用另外保存结果的索引。
后处理的结果在某些场合往往巨大,远远超出可用内存的大小,因此此时将所有数据放在内存中不可行,XT使用了文件缓冲系统,在运行中仅仅在内存中载入当前要使用的结果分量数据,其它的分量数据按二进制数据库写入到文件中,切换结果的时候也只需读入相应的数据块。
此外,结果分量数据对象还记录了该分量数据的极值以及该分量在源文件中的起始位置。

Members

Public interface

Private interface


int m_iCount

数据长度

TypeID m_iDataType

数值类型(float或者double)

TypeID m_iCompType

分量类型

int64 m_llOffset

在源文件中的起始位置

ExtremeValue m_Max

数据最大值以及对应的索引

ExtremeValue m_Min

数据最小值以及对应的索引

void * m_pDataArray

分量数据数组首地址

const XResult * m_pRlt

所属的结果数据对象


XResultComponent(ulong id, const char * name = “”)

TypeID getComponentType() const

void setComponentType(TypeID t)

void setResult(const XResult * rlt)

const XResult * getResult() const

~XResultComponent()

void operator = (const XResultComponent & rc)

void init(const char * name, TypeID type = Result_Component_Unknown)

void updateExtreme(float v, ulong id)

int64 getSourceLocation() const

void setSourceLocation(int64 fpos = 0)

ExtremeValue & getMax()

ExtremeValue & getMin()

const ExtremeValue & getMax() const

const ExtremeValue & getMin() const

void setCount(int cnt)

void alloc()

void dump()

void clear()

void copyData(const void * data)

void reset()

float getNodeResultValue(const XNode * n) const

float getElementResultValue(const XElement * n) const

float getElementNodeResultValue(const XElement * n, int nodeIndex, const int * elemNodeIndexArray) const

float getIntegralPointResultValue(const XElement * n, int ipIndex, const int * elemNodeIndexArray) const

float getAverageFromElemNodalValue(const XElement * n, const int * elemNodeIndexArray) const

void setNodeResultValue(const XNode * n, float v)

void setElementResultValue(const XElement * n, float v)

void setElementNodeResultValue(const XElement * n, const int * elemNodeIndexArray, const double * v, bool bFromLocalCSYS = false)

void setIntegralPointResultValue(const XElement * n, const int * elemNodeIndexArray, const double * v)

void setIntegralPointResultValue(const XElement * n, const int * elemNodeIndexArray, const float * v)

float & at(int i)

const float & at(int i) const

float * data()

const float * data() const

int count() const

ErrorCode read(H5IO * io, H5Obj * grp, bool bDataOnly = true)

void write(H5IO * io, H5Obj * grp, bool bDataOnly = true)


XResultComponent(const XResultComponent & rc)