User Tools

Site Tools


class:domain:xmaterial

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)

  • function: 构造函数
  • parameters:
    1. [i]ulong id: 材料ID
    2. [i] XMemPool * item_pool: 内存池
  • return value: 无

~XMaterial()

  • function: 析构函数
  • parameters: NULL
  • return value: 无

XMaterial(const XMaterial & r)

  • function: 复制构造函数
  • parameters:
    1. [i]const XMaterial & r: 被复制的材料对象引用
  • return value: 无

XMaterial & operator = (const XMaterial & r)

  • function: 复制材料
  • parameters:
    1. [i]const XMaterial & r: 复制材料r的数据
  • return value: 无

const XMaterialEntry * getFirstEntry() const

  • function: 获取第一个材料子项
  • parameters: NULL
  • return value: 第一个材料子项指针

void setEntryPool(MaterialEntryManager * pool)

  • function: 设置材料子项管理器
  • parameters:
    1. [i]MaterialEntryManager * pool: 材料子项管理器
  • return value: 无

virtual XMaterialEntry * addEntry(TypeID t)

  • function: 添加材料子项
  • parameters:
    1. [i]TypeID t: 材料子项类别
  • return value: 材料子项指针

void removeEntry(TypeID t)

  • function: 删除指定类型的材料子项
  • parameters:
    1. [i]TypeID t: 材料子项类别
  • return value: 无

void addEntry(XMaterialEntry * me)

  • function: 将材料子项me添加到材料对象中
  • parameters:
    1. [i]XMaterialEntry * me: 材料子项指针
  • return value: 无

void removeEntry(XMaterialEntry * me)

  • function: 删除材料子项me
  • parameters:
    1. [i]XMaterialEntry * me: 材料子项指针
  • return value: 无

void bindEntryIterator(MaterialEntryIterator * lIter) const

  • function: 绑定材料子项遍历器
  • parameters:
    1. [i]MaterialEntryIterator * lIter: 材料子项迭代器
  • return value: 无

const XMaterialEntry * getEntry(TypeID t) const

  • function: 获取指定类型的材料子项
  • parameters:
    1. [i]TypeID t: 材料子项类别
  • return value: 材料子项指针

XMaterialEntry * getEntry(TypeID t)

  • function: 获取指定类型的材料子项
  • parameters:
    1. [i]TypeID t: 材料子项类别
  • return value: 材料子项指针

void clear()

  • function: 清空所有材料子项
  • parameters: NULL
  • return value: 无

bool hasEntry(TypeID t) const

  • function: 判断材料释放包含指定类型的材料子项
  • parameters:
    1. [i]TypeID t: 材料子项类别
  • return value: 如材料包含指定类别的材料子项返回true,否则返回false

const MaterialEntryAttrib * getAttribute(TypeID t) const

  • function: 获取指定类型材料子项的属性
  • parameters:
    1. [i]TypeID t: 材料子项类型
  • return value: 材料子项指针

void setAttribute(TypeID t,MaterialEntryAttrib * pAttr)

  • function: 设置指定类型的材料子项属性
  • parameters:
    1. [i]TypeID t: 材料子项类型
    2. [i]MaterialEntryAttrib * pAttr: 材料子项属性
  • return value: 无

void saveAttributeToXml(const char * xml)

  • function: 将材料输出为xml格式的文件
  • parameters:
    1. [i]const char * xml: xml文件名
  • return value: 无

void loadAttributeFromXml(const char * xml)

  • function: 从xml文件中载入材料数据
  • parameters:
    1. [i]const char * xml: xml文件名
  • return value: 无

void saveToLib(XmlWriter *xw, XmlElement * par)

  • function: 将材料保存到xml格式的材料库中
  • parameters:
    1. [i]XmlWriter *xw: xml格式的材料库句柄
    2. [i] XmlElement * par: 材料对应的xml节点
  • return value: 无

void loadFromLib(XmlReader *xr, XmlElement * par)

  • function: 从xml格式的材料库中载入材料数据
  • parameters:
    1. [i]XmlReader *xr: xml格式的材料库句柄
    2. [i] XmlElement * par: 材料对应的xml节点
  • return value: 无

void write(XBinaryIO * io)

  • function: 将材料数据写入到二进制文件中
  • parameters:
    1. [i]XBinaryIO * io: 二进制文件句柄
  • return value: 无

ErrorCode read(XBinaryIO * io)

  • function: 从二进制文件中读取材料数据
  • parameters:
    1. [i]XBinaryIO * io: 二进制文件句柄
  • return value: 成功读取返回Error_None,否则返回响应的错误码

void write(H5IO * io, H5Obj * grp)

  • function: 将材料数据写入到HDF5文件中
  • parameters:
    1. [i]H5IO * io: HDF5文件句柄
    2. [i] H5Obj * grp: 材料对应的HDF5节点
  • return value: 无

bool read(H5IO * io, H5Obj * grp)

  • function: 从HDF5文件中读取材料数据
  • parameters:
    1. [i]H5IO * io: HDF5文件句柄
    2. [i] H5Obj * grp: 材料对应的HDF5节点
  • return value: 无

int getEntryCount() const

  • function: 获取材料子项的个数
  • parameters: NULL
  • return value: 材料子项的个数

void setDensity(double v)

  • function: 快捷设置材料的密度
  • parameters:
    1. [i]double v: 密度值
  • return value: 无

double getDensity() const

  • function: 获取材料的密度值
  • parameters: NULL
  • return value: 密度值

void setModulus(double shear, double youngs)

  • function: 设置材料的弹性模量值
  • parameters:
    1. [i]double shear: 剪切模量
    2. [i] double youngs: 杨氏模量
  • return value: 无

double getShearModulus() const

  • function: 获取剪切模量值
  • parameters: NULL
  • return value: 剪切模量值

double getYoungsModulus() const

  • function: 获取杨氏模量值
  • parameters: NULL
  • return value: 杨氏模量值

double getPoissonRate() const

  • function: 获取材料泊松比
  • parameters: NULL
  • return value: 泊松比
class/domain/xmaterial.txt · Last modified: 2023/05/06 07:01 (external edit)