Inherited from NItem,
Inherited by NULL
Friend class MaterialManager,
Description
XMatrial封装了材料信息的数据类,它表征了仿真分析中仿真对象所使用的材料本构模型,在不同应用领域中都有各自独特的材料本构模型。例如:
结构力学: (1) 线性弹性模型:假设材料在受力作用下的应变-应力关系是线性的。这种模型通常适用于小应变范围内的材料,如钢、铝等金属材料。 (2) 非线性弹性模型:假设材料在受力作用下的应变-应力关系是非线性的。这种模型通常适用于弹性和塑性混合的情况下,例如混凝土、岩石等。 (3) 塑性模型:适用于材料在受力作用下发生塑性变形的情况。常见的塑性模型包括Von Mises、Mohr-Coulomb等。
热力学: (1) 线性热弹性模型:假设材料在受热作用下的应变-应力关系是线性的。这种模型通常适用于小温度变化范围内的材料。 (2) 热塑性模型:适用于材料在受热作用下发生塑性变形的情况。常见的热塑性模型包括Johnson-Cook、Cazacu等。
流体力学: (1) 线性流体模型:假设材料在受力作用下的应变-应力关系是线性的。这种模型通常适用于小应变率范围内的流体,例如水、空气等。 (2) 非牛顿流体模型:假设材料在受力作用下的应变-应力关系是非线性的,这种模型通常适用于高剪切率下的流体,如血液、涂料等。常见的非牛顿流体模型包括Bingham、Herschel-Bulkley等。
由此可见材料本构包含的数据复杂多样,不同分析所需要的数据有很大差异,因此XT将材料数据细分为密度、弹性、塑性、膨胀、热传导、比热等不同类别的子项(XMaterialEntry),将材料对象设计为若干材料子项的容器,用户可以根据需要添加相应的材料子项,每种类型的材料子项至多包含一个。XT系统内置了密度、弹性、塑性、膨胀、热传导、比热等子项,开发者可以自由扩展定制专用的材料子项。
材料对象一般通过单元属性(XProperty)与模型数据建立联系,因此可以建立材料库在多个工程中共享使用。
Members
Public interface
OrderContainer m_Entries
材料子项容器
MaterialEntryManager * m_pEntryPool
材料子项管理器,用于为材料子项分配、释放内存空间
XMaterial(ulong id, XMemPool * item_pool)
~XMaterial()
XMaterial(const XMaterial & r)
XMaterial & operator = (const XMaterial & r)
const XMaterialEntry * getFirstEntry() const
void setEntryPool(MaterialEntryManager * pool)
virtual XMaterialEntry * addEntry(TypeID t)
void removeEntry(TypeID t)
void addEntry(XMaterialEntry * me)
void removeEntry(XMaterialEntry * me)
void bindEntryIterator(MaterialEntryIterator * lIter) const
const XMaterialEntry * getEntry(TypeID t) const
XMaterialEntry * getEntry(TypeID t)
void clear()
bool hasEntry(TypeID t) const
const MaterialEntryAttrib * getAttribute(TypeID t) const
void setAttribute(TypeID t,MaterialEntryAttrib * pAttr)
void saveAttributeToXml(const char * xml)
void loadAttributeFromXml(const char * xml)
void saveToLib(XmlWriter *xw, XmlElement * par)
void loadFromLib(XmlReader *xr, XmlElement * par)
void write(XBinaryIO * io)
ErrorCode read(XBinaryIO * io)
void write(H5IO * io, H5Obj * grp)
bool read(H5IO * io, H5Obj * grp)
int getEntryCount() const
void setDensity(double v)
double getDensity() const
void setModulus(double shear, double youngs)
double getShearModulus() const
double getYoungsModulus() const
double getPoissonRate() const