====== XAnalysis ====== **//Inherited from//** [[class::domain::nitem|NItem]], **//Inherited by//** NULL **//Friend class//** NULL **//Description//** XAnalysis从NItem继承,是分析设定的基类,建好的模型在求解之前需要完成分析设定并按照分析设定输出为求解器所能解析的文本文件或二进制文件,不同的求解器所需要的分析设定并不一样,XAnalysis为它们提供了统一的访问接口。一个分析必须应用在一套网格模型上,至少包含一个工况设定,用户可以添加更多的工况构建多工况序列,这些工况仅可以加入对应求解器所支持的材料属性、边界载荷约束等设定,对于给定的求解器来说,一般会根据不同应用场景设置不同的分析类型,如静力分析、模态分析、热分析等。 XAnalysis封装了分析设定的各种参数,基类已经提供了不同的求解类型,可以通过接口getSolutionType访问和setSolutionType设置,预置的求解类型列举如下: | 枚举量 | 值 | 说明 | | Analysis_Struct_Static | 1 | 静力分析 | | Analysis_Struct_Transient | 2 | 瞬态分析 | | Analysis_Struct_Modal | 3 | 模态分析 | | Analysis_Thermal_SteadyState | 7 | 热力学稳态分析 | | Analysis_Thermal_Transient | 8 | 热力学瞬态分析 | 分析的求解须通过XJob调度才能执行。 **//Members//** * const XJob * [[xanalysis#m_pjob|m_pJob]] * ulong [[xanalysis#m_solutiontype|m_SolutionType]] * XModel * [[xanalysis#m_pmeshmdl|m_pMeshMdl]] * const XLoadCase * m_pFront = [[xanalysis#0|0]], *m_pBack = [[xanalysis#0|0]] * ulong m_ulCount = [[xanalysis#0|0]] **//Public interface//** * [[xanalysis#xanalysis1|XAnalysis]](ulong id, int type) * virtual [[xanalysis#~xanalysis|~XAnalysis]]() * static const char * [[xanalysis#getsolutiontypestring|getSolutionTypeString]](AnalysisSolutionType type) * AnalysisSolutionType [[xanalysis#getsolutiontype|getSolutionType]]() const * void [[xanalysis#setsolutiontype|setSolutionType]](AnalysisSolutionType t) * virtual bool [[xanalysis#isconditionsupported|isConditionSupported]](const XCondition * cnd) const * XModel * [[xanalysis#getmesh|getMesh]]() const * void [[xanalysis#setmesh|setMesh]](XModel * mdl) * const XJob * [[xanalysis#getjob|getJob]]() const * void [[xanalysis#setjob|setJob]](const XJob * job) * void [[xanalysis#addcase|addCase]](XLoadCase * lc, XManager * lcMgr) * void [[xanalysis#removecase|removeCase]](XLoadCase * lc, XManager * lcMgr) * int [[xanalysis#getcasecount|getCaseCount]]() const * int [[xanalysis#getcaseindex|getCaseIndex]](const XLoadCase * lc) const * const XLoadCase * [[xanalysis#getcase|getCase]](int index = 0) const * void [[xanalysis#bindcaseiterator|bindCaseIterator]](OrderItemIterator * hIter) const * void [[xanalysis#clear|clear]]() * virtual void [[xanalysis#write|write]](XBinaryIO * io) * virtual ErrorCode [[xanalysis#read|read]](XBinaryIO * io, ModelManager* meshMgr, LoadCaseManager * lcMgr) * virtual bool [[xanalysis#checkdatacompleteness|checkDataCompleteness]]() const * virtual void [[xanalysis#setattribute|setAttribute]](const XAttribute * atb) * void [[xanalysis#instantiatecondition|instantiateCondition]](ConditionInstanceManager * ciMgr) const * virtual void [[xanalysis#initconditionsolversetting|initConditionSolverSetting]](XCondition * cnd) * virtual void [[xanalysis#listproperty|listProperty]](vector * prpSheet) const * virtual bool [[xanalysis#isresultoutput|isResultOutput]](TypeID rtype) const * virtual const TypeID * [[xanalysis#getoutputoptions|getOutputOptions]]() const * virtual int [[xanalysis#countoutputoptions|countOutputOptions]]() const * virtual bool [[xanalysis#islbcsupported|isLBCSupported]](TypeID id) const * virtual bool [[xanalysis#ismaterialsupported|isMaterialSupported]](MaterialItemTypeID mid) const * virtual bool [[xanalysis#ispropertysupported|isPropertySupported]](PropertyTypeID id) const ---- {{anchor:m_pjob}} **const XJob * m_pJob** {{anchor:m_solutiontype}} **ulong m_SolutionType** {{anchor:m_pmeshmdl}} **XModel * m_pMeshMdl** {{anchor:0}} **const XLoadCase * m_pFront = 0, *m_pBack = 0** {{anchor:0}} **ulong m_ulCount = 0** ---- {{anchor:xanalysis1}} **XAnalysis(ulong id, int type)** *function: 构造函数 *parameters: - [i]ulong id: 索引ID - [i] int type: 求解器类型 *return value: 无 {{anchor:~xanalysis}} **virtual ~XAnalysis()** *function: 析构函数 *parameters: NULL *return value: 无 {{anchor:getsolutiontypestring}} **static const char * getSolutionTypeString(AnalysisSolutionType type)** *function: 获取分析类型字符串(不是求解器类型) *parameters: - [i]AnalysisSolutionType type: 分析类型 *return value: 无 {{anchor:getsolutiontype}} **AnalysisSolutionType getSolutionType() const** *function: 返回分析类型 *parameters: NULL *return value: 分析类型 {{anchor:setsolutiontype}} **void setSolutionType(AnalysisSolutionType t)** *function: 设置分析类型 *parameters: - [i]AnalysisSolutionType t: 分析类型 *return value: 无 {{anchor:isconditionsupported}} **virtual bool isConditionSupported(const XCondition * cnd) const** *function: 判断是否支持LBC条件cnd *parameters: - [i]const XCondition * cnd: LBC条件 *return value: 如支持返回true,否则返回false {{anchor:getmesh}} **XModel * getMesh() const** *function: 获取分析所应用的网格模型 *parameters: NULL *return value: 分析所应用的网格模型 {{anchor:setmesh}} **void setMesh(XModel * mdl)** *function: 设定分析所应用的网格模型 *parameters: - [i]XModel * mdl: 分析所应用的网格模型 *return value: 无 {{anchor:addcase}} **void addCase(XLoadCase * lc, XManager * lcMgr)** *function: 为当前分析添加工况 *parameters: - [i]XLoadCase * lc: 新工况 - [i] XManager * lcMgr:工况管理器 *return value: 无 {{anchor:removecase}} **void removeCase(XLoadCase * lc, XManager * lcMgr)** *function: 从当前分析中删除工况 *parameters: - [i]XLoadCase * lc: 待删除工况 - [i] XManager * lcMgr: 工况管理器 *return value: 无 {{anchor:getcasecount}} **int getCaseCount() const** *function: 获取工况数 *parameters: NULL *return value: 工况数 {{anchor:getcaseindex}} **int getCaseIndex(const XLoadCase * lc) const** *function: 获取工况的序号 *parameters: - [i]const XLoadCase * lc: 工况 *return value: 工况lc在分析中的序号 {{anchor:getcase}} **const XLoadCase * getCase(int index = 0) const** *function: 获取当前分析第index个工况 *parameters: - [i]int index = 0: *return value: 当前分析第index个工况 {{anchor:bindcaseiterator}} **void bindCaseIterator(OrderItemIterator * hIter) const** *function: 绑定当前分析的工况遍历迭代器 *parameters: - [i]OrderItemIterator * hIter: 工况遍历迭代器 *return value: 无 {{anchor:clear}} **void clear()** *function: 清空工况 *parameters: NULL *return value: 无 {{anchor:write}} **virtual void write(XBinaryIO * io)** *function: 将分析对象的数据写入到二进制文件中 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 *return value:无 {{anchor:read}} **virtual ErrorCode read(XBinaryIO * io, ModelManager* meshMgr, LoadCaseManager * lcMgr)** *function: 从二进制文件中读取分析对象的数据 *parameters: - [i]XBinaryIO * io: 二进制文件句柄 - [i] ModelManager* meshMgr: 网格模型管理器 - [i] LoadCaseManager * lcMgr: 工况管理器 *return value: 读取成功返回Error_None,否则返回对应错误码 {{anchor:checkdatacompleteness}} **virtual bool checkDataCompleteness() const** *function: 检查数据是否充分满足求解条件 *parameters: NULL *return value: 充分满足求解条件返回true,否则返回false {{anchor:setattribute}} **virtual void setAttribute(const XAttribute * atb)** *function: 设置分析属性 *parameters: - [i]const XAttribute * atb: 分析属性 *return value: 无 {{anchor:instantiatecondition}} **void instantiateCondition(ConditionInstanceManager * ciMgr) const** *function: 将该分析所用到的LBC实例化到网格上 *parameters: - [i]ConditionInstanceManager * ciMgr: LBC实例管理器 *return value: 无 {{anchor:listproperty}} **virtual void listProperty(vector * prpSheet) const** *function: 列举分析的属性 *parameters: - [i]vector * prpSheet: 属性清单 *return value: 无 {{anchor:isresultoutput}} **virtual bool isResultOutput(TypeID rtype) const** *function: 判断是否输出某个结果 *parameters: - [i]TypeID rtype: 结果类型 *return value: 如输出该结果类型返回true,否则返回false {{anchor:getoutputoptions}} **virtual const TypeID * getOutputOptions() const** *function: 获取需要输出的结果类型数组 *parameters: NULL *return value: 结果类型数组 {{anchor:countoutputoptions}} **virtual int countOutputOptions() const** *function: 获取输出结果类型的个数 *parameters: NULL *return value: 输出结果类型的个数