术语与约定
本文档定义ThermoElasticSim中使用的术语、符号约定和单位系统。
小应变线性化前提
本软件采用 小应变线性化 (非保体积)作为全局假设:
其中:
\(\mathbf{F}\):形变梯度张量
\(\mathbf{I}\):单位张量
\(\boldsymbol{\varepsilon}\):应变张量(小量)
关键假设:
二阶及更高阶小量被忽略:\(\boldsymbol{\varepsilon}^2 \approx 0\)
体积变化为高阶小量:\(\det(\mathbf{F}) \approx 1 + \text{tr}(\boldsymbol{\varepsilon})\)
应力-应变关系线性化:\(\boldsymbol{\sigma} = \mathbf{C} : \boldsymbol{\varepsilon}\)
单位系统
ThermoElasticSim采用原子单位与实用单位混合系统:
基本单位
物理量 |
单位 |
说明 |
|---|---|---|
长度 |
Å |
埃(Angstrom) |
能量 |
eV |
电子伏特 |
时间 |
fs |
飞秒 |
质量 |
amu |
原子质量单位 |
温度 |
K |
开尔文 |
导出单位
物理量 |
内部单位 |
输出单位 |
|---|---|---|
力 |
eV/Å |
同内部单位 |
速度 |
Å/fs |
同内部单位 |
应力 |
eV/ų |
GPa(输出时转换) |
弹性常数 |
eV/ų |
GPa(输出时转换) |
压强 |
eV/ų |
GPa(输出时转换) |
单位转换
Voigt记号约定
弹性常数张量和应力/应变张量采用Voigt记号简化表示。
张量-向量映射
四阶张量 \(C_{ijkl}\) → 6×6矩阵 \(C_{IJ}\):
工程剪切应变
重要约定:Voigt记号中的剪切应变是工程剪切应变,为张量剪切应变的2倍:
立方晶系弹性常数
对于立方晶系(如FCC铝、铜),独立弹性常数仅有3个:
其中:
\(C_{11}\):纵向弹性常数
\(C_{12}\):横向耦合常数
\(C_{44}\):剪切弹性常数
坐标系约定
晶格向量和原子位置
晶格向量按**行向量**存储在3×3矩阵中
第i个晶格向量:
lattice_vectors[i, :]原子位置为笛卡尔坐标(Å)
周期性边界条件(PBC)
最小镜像约定(Minimum Image Convention, MIC):
def apply_mic(r_ij, cell):
"""应用最小镜像约定"""
# 转换到分数坐标
s_ij = np.dot(r_ij, cell.lattice_inv)
# 映射到[-0.5, 0.5]
s_ij -= np.floor(s_ij + 0.5)
# 转回笛卡尔坐标
return np.dot(s_ij, cell.lattice_vectors.T)
矩阵运算约定
形变施加
形变通过右乘形变矩阵实现:
其中:
\(\mathbf{h}\):原始晶格向量矩阵(3×3)
\(\mathbf{F}\):形变梯度张量(3×3)
\(\mathbf{h}'\):形变后晶格向量矩阵
应力计算
应力张量定义为:
计算方法:
Virial方法:通过原子力和位置计算
有限差分:通过能量对应变的数值导数
数据结构约定
Cell对象
cell.lattice_vectors # 3×3矩阵,行向量
cell.atoms # 原子列表
cell.volume # 晶胞体积(ų)
cell.num_atoms # 原子数
Atom对象
atom.position # 3D向量(Å)
atom.velocity # 3D向量(Å/fs)
atom.force # 3D向量(eV/Å)
atom.mass_amu # 质量(amu)
atom.symbol # 元素符号(如'Al')
文献引用约定
使用sphinxcontrib-bibtex管理文献
引用格式:
:cite:`key`文献库:
references.bib章末集中显示引用列表