====== XConditionInstance ====== **//Inherited from//** [[class::domain::orderitem|OrderItem]], **//Inherited by//** NULL **//Friend class//** [[class::domain::xloadcase|XLoadCase]],XManager,ConditionInstanceManager, **//Description//** XConditionInstance是边界条件在分析步中的实例化表达,它封装了边界条件的实例状态以及实例系数,它的类型标识为“CCNDINSTANCE”。XConditionInstance从边界条件的原型构建,属且仅属于一个XLoadCase,它将边界条件应用在分析步所指定的网格上并离散得到可以直接被求解器所使用的数据,当同一个分析步存在多个工况时,各工况所包含的条件实例应按顺序一一对应,且从第二个工况开始,工况所包含的条件实例可参考第一个工况对应实例的网格对象数据(不需要重新离散应用对象),仅需按照实例的设定重新构建条件数据即可,既可以节约内存又可以提高运行速度。 条件实例将边界条件与分析步解耦,解决了边界条件在不同分析步中的耦合问题,尤其是对于单点约束和多点约束可能导致的约束冲突以及局部坐标系的冲突,可在分析步内统一处理,使得多工况多分析步应用可以有更大的弹性空间定制专用的业务流程。 **//Members//** * const XCondition * [[xconditioninstance#m_pproto|m_pProto]] * const XConditionInstance * [[xconditioninstance#m_pref|m_pRef]] * real [[xconditioninstance#m_dscale|m_dScale]] * TypeID [[xconditioninstance#m_mode|m_Mode]] * XArray [[xconditioninstance#m_pmesharr[2]|m_pMeshArr[2]]] * XArray [[xconditioninstance#m_pdataarr[6]|m_pDataArr[6]]] **//Public interface//** * [[xconditioninstance#xconditioninstance1|XConditionInstance]](ulong id) * void [[xconditioninstance#setscale|setScale]](real scale = 1.0) * real [[xconditioninstance#getscale|getScale]]() const * bool [[xconditioninstance#isenabled|isEnabled]]() const * void [[xconditioninstance#setenabled|setEnabled]](bool b) * const XCondition * [[xconditioninstance#getprototype|getPrototype]]() const * void [[xconditioninstance#setprototype|setPrototype]](const XCondition * cnd) * const char * [[xconditioninstance#getconditionname|getConditionName]]() const * const XLoadCase * [[xconditioninstance#getcase|getCase]]() const * void [[xconditioninstance#setcase|setCase]](const XLoadCase * cnd) * const XConditionInstance * [[xconditioninstance#getrefinstance|getRefInstance]]() const * void [[xconditioninstance#setrefinstance|setRefInstance]](const XConditionInstance * cnd) * void [[xconditioninstance#allocarray|allocArray]](int dataSize, int cpNumber = 1, bool bConnection = false) * void [[xconditioninstance#resizemesharray|resizeMeshArray]](int role, int datasize) * XArray * [[xconditioninstance#getdataarray|getDataArray]](int index = 0) * XArray * [[xconditioninstance#getnodearray|getNodeArray]]() * XArray * [[xconditioninstance#getelemarray|getElemArray]]() * XArray * [[xconditioninstance#getmasterarray|getMasterArray]]() * XArray * [[xconditioninstance#getslavearray|getSlaveArray]]() * const XArray * [[xconditioninstance#getdataarray|getDataArray]](int index = 0)const * const XArray * [[xconditioninstance#getnodearray|getNodeArray]]() const * const XArray * [[xconditioninstance#getelemarray|getElemArray]]()const * const XArray * [[xconditioninstance#getmasterarray|getMasterArray]]() const * const XArray * [[xconditioninstance#getslavearray|getSlaveArray]]() const * void [[xconditioninstance#clear|clear]]() * void [[xconditioninstance#write|write]](XH5IO * io, H5Obj * grp) const * bool [[xconditioninstance#read|read]](XH5IO * io, H5Obj * grp) * real [[xconditioninstance#getdataonnode|getDataOnNode]](const XNode * n, int dataDim) * real [[xconditioninstance#getdataonelem|getDataOnElem]](const XElement * el, int dataDim) * void [[xconditioninstance#write|write]](XBinaryIO * io) const * ErrorCode [[xconditioninstance#read|read]](XBinaryIO * io, ConditionManager * cndMgr) ---- {{anchor:m_pproto}} **const XCondition * m_pProto** 实例所对应的边界条件原型 {{anchor:m_pref}} **const XConditionInstance * m_pRef** 参考条件实例,可以共享参考示例的网格数据 {{anchor:m_dscale}} **real m_dScale** 边界条件的实例系数,默认为1.0 {{anchor:m_mode}} **TypeID m_Mode** 边界条件的实例状态,默认为激活有效 {{anchor:m_pmesharr[2]}} **XArray m_pMeshArr[2]** 实例的网格数据(单元或者节点) {{anchor:m_pdataarr[6]}} **XArray m_pDataArr[6]** 实例的条件数据(在数据场的情况下,不同网格元素的值可能各不相同。 ---- {{anchor:xconditioninstance1}} **XConditionInstance(ulong id)** *function: 构造函数 *parameters: - [i]ulong id: 对象ID *return value: 无 {{anchor:setscale}} **void setScale(real scale = 1.0)** *function: 设置实例系数 *parameters: - [i]real scale = 1.0: 实例系数 *return value: 无 {{anchor:getscale}} **real getScale() const** *function: 获取边界条件的实例系数 *parameters: NULL *return value: 边界条件的实例系数 {{anchor:isenabled}} **bool isEnabled() const** *function: 该实例是否激活 *parameters: NULL *return value: 激活返回true,否则返回false {{anchor:setenabled}} **void setEnabled(bool b)** *function: 设置实例激活或抑制 *parameters: - [i]bool b: 实例激活或抑制 *return value: 无 {{anchor:getprototype}} **const XCondition * getPrototype() const** *function: 获取边界条件原型对象 *parameters: NULL *return value: 边界条件原型对象 {{anchor:setprototype}} **void setPrototype(const XCondition * cnd)** *function: 设置边界条件原型对象 *parameters: - [i]const XCondition * cnd: 边界条件原型对象 *return value: 无 {{anchor:getconditionname}} **const char * getConditionName() const** *function: 获取边界条件原型对象名字 *parameters: NULL *return value: 边界条件原型对象名字字符串 {{anchor:getcase}} **const XLoadCase * getCase() const** *function: 获取所属工况 *parameters: NULL *return value: 所属工况对象 {{anchor:setcase}} **void setCase(const XLoadCase * cnd)** *function: 设置所属工况对象 *parameters: - [i]const XLoadCase * cnd: 所属工况对象 *return value: 无 {{anchor:getrefinstance}} **const XConditionInstance * getRefInstance() const** *function: 获取参考实例 *parameters: NULL *return value: 参考实例对象 {{anchor:setrefinstance}} **void setRefInstance(const XConditionInstance * cnd)** *function: 设置参考实例对象 *parameters: - [i]const XConditionInstance * cnd: 参考实例对象 *return value: 无 {{anchor:allocarray}} **void allocArray(int dataSize, int cpNumber = 1, bool bConnection = false)** *function: 为实例分配实例化内存空间 *parameters: - [i]int dataSize: 数据大小(与网格元素个数相同) - [i] int cpNumber = 1: 数据维度 - [i] bool bConnection = false: 是否为连接 *return value: 无 {{anchor:resizemesharray}} **void resizeMeshArray(int role, int datasize)** *function: 重新设置网格元素数组的大小 *parameters: - [i]int role: 应用对象的角色 - [i] int datasize: 新的数组大小 *return value: 无 {{anchor:getdataarray}} **XArray * getDataArray(int index = 0)** *function: 获取实例的数据数组 *parameters: - [i]int index = 0: 数据的维度索引 *return value: 实例的数据数组(可修改) {{anchor:getnodearray}} **XArray * getNodeArray()** *function: 获取实例化之后的网格节点对象数组 *parameters: NULL *return value: 实例化之后的网格节点对象数组 {{anchor:getelemarray}} **XArray * getElemArray()** *function: 获取实例化之后的网格单元对象数组 *parameters: NULL *return value: 实例化之后的网格单元对象数组 {{anchor:getmasterarray}} **XArray * getMasterArray()** *function: 获取连接实例的主网格对象数组 *parameters: NULL *return value: 连接实例的主网格对象数组 {{anchor:getslavearray}} **XArray * getSlaveArray()** *function: 获取连接实例的从网格对象数组 *parameters: NULL *return value: 连接实例的从网格对象数组 {{anchor:getdataarray}} **const XArray * getDataArray(int index = 0)const** *function: 获取实例的数据数组 *parameters: - [i]int index = 0: 数据的维度索引 *return value: 实例的数据数组 {{anchor:getnodearray}} **const XArray * getNodeArray() const** *function: 获取实例化之后的网格节点对象数组 *parameters: NULL *return value: 实例化之后的网格节点对象数组 {{anchor:getelemarray}} **const XArray * getElemArray()const** *function: 获取实例化之后的网格单元对象数组 *parameters: NULL *return value: 实例化之后的网格单元对象数组 {{anchor:getmasterarray}} **const XArray * getMasterArray() const** *function: 获取连接实例的主网格对象数组 *parameters: NULL *return value: 连接实例的主网格对象数组 {{anchor:getslavearray}} **const XArray * getSlaveArray() const** *function: 获取连接实例的从网格对象数组 *parameters: NULL *return value: 连接实例的从网格对象数组 {{anchor:clear}} **void clear()** *function: 清空离散网格数据 *parameters: NULL *return value: {{anchor:write}} **void write(XH5IO * io, H5Obj * grp) const** *function: 将实例对象写入到HDF5文件中 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对应的HDF5节点 *return value: 无 {{anchor:read}} **bool read(XH5IO * io, H5Obj * grp)** *function: 从二进制文件中读取对象数据 *parameters: - [i]XH5IO * io: HDF5文件句柄 - [i] H5Obj * grp: 对应的HDF5节点 *return value: 成功读取返回true,否则返回false {{anchor:getdataonnode}} **real getDataOnNode(const XNode * n, int dataDim)** *function: 获取指定节点上指定维度的条件值 *parameters: - [i]const XNode * n: 网格节点 - [i] int dataDim: 数据维度索引 *return value: 指定节点上指定维度的条件值 {{anchor:getdataonelem}} **real getDataOnElem(const XElement * el, int dataDim)** *function: 获取指定单元上指定维度的条件值 *parameters: - [i]const XElement * el: 网格单元 - [i] int dataDim: 数据维度索引 *return value: 指定单元上指定维度的条件值 {{anchor:write}} **void write(XBinaryIO * io) const** *function: 将实例对象写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value: 无 {{anchor:read}} **ErrorCode read(XBinaryIO * io, ConditionManager * cndMgr)** *function: 从二进制文件中读取对象数据 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 - [i] ConditionManager * cndMgr: 边界条件对象管理器 *return value: 成功读取返回Error_None,否则返回相应错误码