Inherited from NItem,
Inherited by NULL
Friend class NULL
Description
XResultComponent封装了结果分量数据对象, 它是结果数据对象的基本组成部分。结果分量数据或者在节点上、或者在单元中心上、或者在单元节点上、或者在单元积分点上,因此对于给定模型,它的长度会因为位置不一样而不一样;此外,某些结果只在模型的部分区域(比如板壳结果或者杆梁结果),它的数据长度会做相应的调整。为了节约内存并提高和统一结果分量的数据的访问方式, XT会对模型的网格数据做预处理,首先构造模型的表面几何数据(这是后处理轻量化的关键处理方法之一),然后对节点、单元排序,使得节点、单元按照杆梁、板壳、实体的顺序排列,结果分量的数据都将直接参考该顺序而不用另外保存结果的索引。
后处理的结果在某些场合往往巨大,远远超出可用内存的大小,因此此时将所有数据放在内存中不可行,XT使用了文件缓冲系统,在运行中仅仅在内存中载入当前要使用的结果分量数据,其它的分量数据按二进制数据库写入到文件中,切换结果的时候也只需读入相应的数据块。
此外,结果分量数据对象还记录了该分量数据的极值以及该分量在源文件中的起始位置。
Members
Public interface
-
-
-
-
-
-
void operator
= (const XResultComponent & rc)
void
init(const char * name, TypeID type = Result_Component_Unknown)
-
-
-
-
-
const ExtremeValue &
getMax() const
const ExtremeValue &
getMin() const
-
-
-
-
-
-
-
-
-
-
-
-
-
void
setElementNodeResultValue(const XElement * n, const int * elemNodeIndexArray, const double * v, bool bFromLocalCSYS = false)
-
-
-
const flo
at &
at(int i) const
-
const float *
data() const
-
ErrorCode
read(H5IO * io, H5Obj * grp, bool bDataOnly = true)
void
write(H5IO * io, H5Obj * grp, bool bDataOnly = true)
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 = “”)
function: 构造函数
parameters:
[i]ulong id: 身份ID
[i] const char * name = “”: 分量标签
return value: 无
TypeID getComponentType() const
function: 获取分量类型
parameters: NULL
return value: 分量类型标识
void setComponentType(TypeID t)
function: 设置分量类型
parameters:
[i]TypeID t: 分量类型标识
return value: 无
void setResult(const XResult * rlt)
function: 绑定结果数据对象
parameters:
[i]const XResult * rlt: 结果数据对象
return value: 无
const XResult * getResult() const
function: 获取所属的结果数据对象
parameters: NULL
return value: 所属的结果数据对象
~XResultComponent()
function: 析构函数
parameters: NULL
return value: 无
void operator = (const XResultComponent & rc)
function: 复制结构分量
parameters:
[i]const XResultComponent & rc: 被复制的结果分量引用
return value: 无
void init(const char * name, TypeID type = Result_Component_Unknown)
function: 初始化分量数据
parameters:
[i]const char * name: 分量标签
[i] TypeID type = Result_Component_Unknown: 分量类型
return value: 无
void updateExtreme(float v, ulong id)
function: 更新极值
parameters:
[i]float v: 结果值
[i] ulong id: 值对应的节点或单元ID
return value: 无
int64 getSourceLocation() const
void setSourceLocation(int64 fpos = 0)
ExtremeValue & getMax()
function: 获取分量数据的最大值
parameters: NULL
return value: 分量数据的最大值引用
ExtremeValue & getMin()
function: 获取分量数据的最小值
parameters: NULL
return value: 分量数据的最小值引用
const ExtremeValue & getMax() const
function: 获取分量数据的最大值
parameters: NULL
return value: 分量数据的最大值引用
const ExtremeValue & getMin() const
function: 获取分量数据的最小值
parameters: NULL
return value: 分量数据的最小值引用
void setCount(int cnt)
function: 设置分量数据长度
parameters:
[i]int cnt: 分量数据长度
return value: 无
void alloc()
function: 为分量数据分配内存空间
parameters: NULL
return value: 无
void dump()
void clear()
function: 清空结果数据
parameters: NULL
return value: 无
void copyData(const void * data)
function: 复制分量数据
parameters:
[i]const void * data: 数据源地址
return value: 无
void reset()
function: 清空结果数据并重置极值
parameters: NULL
return value: 无
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)
function: 设置节点n上的值
parameters:
[i]const XNode * n: 节点指针
[i] float v: 节点上的值
return value: 无
void setElementResultValue(const XElement * n, float v)
function: 设置单元上的值
parameters:
[i]const XElement * n: 单元指针
[i] float v: 单元上的值
return value: 无
void setElementNodeResultValue(const XElement * n, const int * elemNodeIndexArray, const double * v, bool bFromLocalCSYS = false)
function: 设置单元节点上的值
parameters:
[i]const XElement * n: 单元指针
[i] const int * elemNodeIndexArray: 单元节点索引数组
[i] const double * v: 指定单元各节点上的值
[i] bool bFromLocalCSYS = false: 是否从局部坐标系计算得到
return value: 无
void setIntegralPointResultValue(const XElement * n, const int * elemNodeIndexArray, const double * v)
function: 设置单元积分点上的值
parameters:
[i]const XElement * n: 单元指针
[i] const int * elemNodeIndexArray: 单元节点索引数组
[i] const double * v: 指定单元各积分点上的值
return value: 无
void setIntegralPointResultValue(const XElement * n, const int * elemNodeIndexArray, const float * v)
function: 设置单元积分点上的值
parameters:
[i]const XElement * n: 单元指针
[i] const int * elemNodeIndexArray: 单元节点索引数组
[i] const float * v: 指定单元各积分点上的值
return value: 无
float & at(int i)
function: 分量数据第i个值
parameters:
[i]int i: 序号
return value: 分量数据第i个值
const float & at(int i) const
function: 分量数据第i个值
parameters:
[i]int i: 序号
return value: 分量数据第i个值
float * data()
function: 获取结果数据数组地址
parameters: NULL
return value: 结果数据数组地址
const float * data() const
function: 获取结果数据数组地址
parameters: NULL
return value: 结果数据数组地址
int count() const
function: 获取数据长度
parameters: NULL
return value: 数据长度
ErrorCode read(H5IO * io, H5Obj * grp, bool bDataOnly = true)
void write(H5IO * io, H5Obj * grp, bool bDataOnly = true)
XResultComponent(const XResultComponent & rc)
function: 复制构造函数
parameters:
-
return value: 无