XMaterial

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