User Tools

Site Tools


reference:analysisextension

分析设定的扩展

扩展分析设定时,对象类应从XAnalysis继承,需按照下列代码重新实现基类的接口。

class NewAna: public XAnalysis
{
	DECLARE_CITEM(NewAna)
public:
	NewAna(ulong id);
	~NewAna();

	const AnalysisAttribute * getAttribute() const { return attribute(); }
	const NewAnaAttribute * attribute() const { return &m_Atb; }
	void setAttribute(const AnalysisAttribute* atb) { m_Atb.assign(atb); }

	void write(XBinaryIO * io);
	ErrorCode read(XBinaryIO * io, ModelManager* meshMgr, LoadCaseManager * mgr);

	bool checkDataCompleteness() const;

	void listProperty(std::vector<ObjPropertyEntry> * prpSheet) const;
	bool isResultOutput(TypeID rtype) const;
	const TypeID * getOutputOptions() const { return m_Atb.outputFields.data(); }
	int countOutputOptions() const { return m_Atb.outputFields.size(); }
private:
	NewAnaAttribute m_Atb;
};
  • 注册对象定义,它被归为Domain_Analysis域,所以被AnalysisManager管理,DECLARE_CITEM(NewAna)是声明,类型标识前缀为“CANA”, 其实现通过宏按照如下形式实现:
REGISTER_CITEM(NewAna, "CANANEWANA", AnalysisManager::ctype(), 0);
  • 定义分析设定的属性,每个新扩展的分析设定都有自己的属性(NewAnaAttribute),它从AnalysisAttribute继承,分析设定的属性一般都包含有结果输出的选项(也可以根据实际情况省略):
struct NewAnaAttribute: public AnalysisAttribute
{
	double dValue;
	XArray<TypeID> outputFields;
};
  • 重新实现属性的接口getAttribute、listProperty以及专有属性接口
	const NewAnaAttribute* attribute() const {return &m_Atb;}
  • 重新实现接口checkDataCompleteness以检查该分析所必须的数据是否完备
  • 重新实现读写对象数据的接口read、write(包含二进制文件和HDF5文件)
  • 根据需要实现结果输出的接口getOutputOptions、countOutputOptions(可选)
  • 实现其他该分析所需要的方法
reference/analysisextension.txt · Last modified: 2023/05/06 07:01 (external edit)