Tools
Cahn-Hilliard模块
Cahn-Hilliard模块
在曙光超算中,已发布版本位于/work/share/ac21ujhbvo/local/mesospire/,用户可查看目录获取最新版本。
基本参数说明
| Name | Type | Explanation |
|---|---|---|
| type | string | 模块名称 |
| omp_threads | int | OpenMP线程数 |
| path | string | 结果输出路径 |
| mesh | InputParameter | 网格设置 |
| mesh.nx | int | 网格x方向节点数 |
| mesh.ny | int | 网格y方向节点数 |
| mesh.nz | int | 网格z方向节点数 |
| mesh.dx | double | 网格间距,单位:米 |
| mesh.dt | double | 时间步长,单位:秒 |
| mesh.current_time | double | 当前时间 |
| mesh.simulation_time | double | 总模拟时间 |
| output | InputParameter | 输出设置 |
| output.output_time | double | 输出时间 |
| output.output_interval | int | 输出间隔 |
| output.every_number | int | 每隔多少个输出一次 |
| output.factor | int | 输出间隔的放大倍数 |
| output.variable | Vector | 待输出变量 |
| initial | InputParameter | 初始条件设置 |
| Vm | double | 摩尔体积,单位:m^3/mol |
| temperature | double | 温度,单位:开尔文 |
| enable_elastic_energy | bool | 是否启用弹性能量贡献 |
| elastic | InputParameter | 弹性性质设置 |
| elastic.lambda_matrix | Matrix | 基体的弹性张量矩阵,单位:Pa |
| elastic.lambda_precipitate | Matrix | 沉淀相的弹性张量矩阵,单位:Pa |
| elastic.xe_matrix | double | 基体的平衡成分,单位:at. |
| elastic.xe_precipitate | double | 沉淀相的平衡成分,单位:at. |
| elastic.epsilon_0 | double | 1/a * da/dX |
| elastic.average_strain | Vector | 平均应变,单位:1 |
| phase.type | string | 调幅分解的能量类名称 |
配置文件示例
config.json
{
"type": "CahnHilliard",
"omp_threads": 5,
"path": "results",
"mesh": {
"nx": 16,
"ny": 16,
"nz": 16,
"dx": 1.0e-10,
"dt": 0.1,
"current_time": 0.0,
"simulation_time": 3610
},
"output": {
"output_time": 0,
"output_interval": 10,
"every_number": 5,
"factor": 2,
"variable": [
"M", "kappa", "dfgibbsdc"
]
},
"enable_elastic_energy": false,
"initial": [
{
"type": "SetWhole",
"variable": [
{
"value": [
0.5
],
"varname": "c"
}
]
},
{
"point1": [8, 0, 0],
"point2": [16, 16, 16],
"type": "SetCuboid",
"variable": [
{
"value": [
0.2
],
"varname": "c"
}
]
},
{
"point1": [0, 0, 0],
"point2": [8, 16, 16],
"type": "SetCuboidRandom",
"variable": [
{
"value": [
0.6
],
"noise": [
0.05
],
"varname": "c"
}
]
}
]
"Vm": 11e-6,
"elastic": {
"lambda_matrix": [
[548.500e9, 128.500e9, 128.500e9, 0, 0, 0],
[128.500e9, 548.500e9, 128.500e9, 0, 0, 0],
[128.500e9, 128.500e9, 548.500e9, 0, 0, 0],
[0, 0, 0, 169.000e9, 0, 0],
[0, 0, 0, 0, 169.000e9, 0],
[0, 0, 0, 0, 0, 169.000e9]
],
"lambda_precipitate": [
[413.500e9, 157.000e9, 157.000e9, 0.0, 0.0, 0.0],
[157.000e9, 413.500e9, 157.000e9, 0.0, 0.0, 0.0],
[157.000e9, 157.000e9, 413.500e9, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 256.000e9, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 256.000e9, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0, 256.000e9]
],
"xe_matrix": 0.1,
"xe_precipitate": 0.8,
"epsilon_0": 0.048,
"average_strain": [0.0001, 0.0001, 0.0001, 0.0, 0.0, 0.0]
},
"temperature": 1173.15,
"phase": {
"type": "SpinodalProperty_TiAlN"
}
}
config.yaml
type: CahnHilliard
omp_threads: 64
path: results
mesh:
nx: 64
ny: 64
nz: 64
dx: 1.0e-10
dt: 0.1
current_time: 0
simulation_time: 3610
output:
output_time: 0
output_interval: 10
every_number: 5
factor: 2
variable: [M, kappa, dfgibbsdc]
enable_elastic_energy: false
initial:
- type: SetWhole
variable:
- value: [0.5]
varname: c
- point1: [8, 0, 0]
point2: [16, 16, 16]
type: SetCuboid
variable:
- value: [0.2]
varname: c
- point1: [0, 0, 0]
point2: [8, 16, 16]
type: SetCuboidRandom
variable:
- value: [0.6]
noise: [0.05]
varname: c
Vm: 11e-6
elastic:
lambda_matrix:
- [548.500e9, 128.500e9, 128.500e9, 0, 0, 0]
- [128.500e9, 548.500e9, 128.500e9, 0, 0, 0]
- [128.500e9, 128.500e9, 548.500e9, 0, 0, 0]
- [0, 0, 0, 169.000e9, 0, 0]
- [0, 0, 0, 0, 169.000e9, 0]
- [0, 0, 0, 0, 0, 169.000e9]
lambda_precipitate:
- [413.500e9, 157.000e9, 157.000e9, 0.0, 0.0, 0.0]
- [157.000e9, 413.500e9, 157.000e9, 0.0, 0.0, 0.0]
- [157.000e9, 157.000e9, 413.500e9, 0.0, 0.0, 0.0]
- [0.0, 0.0, 0.0, 256.000e9, 0.0, 0.0]
- [0.0, 0.0, 0.0, 0.0, 256.000e9, 0.0]
- [0.0, 0.0, 0.0, 0.0, 0.0, 256.000e9]
xe_matrix: 0.1
xe_precipitate: 0.8
epsilon_0: 0.048
average_strain: [0.0001, 0.0001, 0.0001, 0.0, 0.0, 0.0]
temperature: 1173.15
phase:
type: SpinodalProperty_TiAlN