Mdinterp
基于多维插值耦合策略的相场模拟模块说明
基于多维插值耦合策略的相场模拟模块
适配模块的类名称已修改,请注意正确使用。
- MultiComponentPhaseField_Vector
- MultiComponentPhaseField_Stoi_Vector
目前已适配多维插值耦合策略的相场模块包括多元两相凝固,与多元两相析出模拟。
在通用MesoSpire模块中,吉布斯自由能和扩散势等需要根据不同函数进行计算。但在插值模块应用时,相同成分与温度的对应吉布斯自由能和扩散势等可以采用同一个插值过程实现,无需多次插值计算。因此,多维插值耦合策略的相场模块引入了新的相能量模型,其中相同性质的计算采用向量形式表示、计算和传递,从而避免重复计算。
class MultiComponentPhase_Vector : public ObjectBase
{
public:
// ... ///
virtual Vector getEnergy(const Vector &c, Real T) const;
virtual Vector getInterdiffusivity(const Vector &c, Real T) const;
// ... //
};
多元两相凝固
该模块的求解逻辑全部采用通用MesoSpire凝固模块,但能量模型采用MultiComponentPhase_Vector与通用MesoSpire凝固模块的输入配置不兼容。
基本配置文件如下:
配置文件
{
"alpha": {
"energy": {
"type": "CuNiSiNoMagn_Vector_Liquid"
},
"interdiffusivity": {
"type": "ConstantMatrixMultiComponentFunctor_Vector",
"values": [
1e-9, 0.0, 0.0, 1.0e-9
]
},
"element": ["NI", "SI"],
"name": "Liquid",
"type": "MultiComponentPhase_Vector"
},
"beta": {
"energy": {
"type": "CuNiSiNoMagn_Vector_Fcc_A1"
},
"interdiffusivity": {
"type": "ConstantMatrixMultiComponentFunctor_Vector",
"values": [
1e-14, 0.0, 0.0, 1.0e-14
]
},
"element": ["NI", "SI"],
"name": "Fcc_A1",
"type": "MultiComponentPhase_Vector"
},
"boundary_condition": {
"BC0X": {
"type": "PERIODIC"
},
"BC0Y": {
"type": "PERIODIC"
},
"BC0Z": {
"type": "PERIODIC"
},
"BCNX": {
"type": "PERIODIC"
},
"BCNY": {
"type": "PERIODIC"
},
"BCNZ": {
"type": "PERIODIC"
}
},
"clear": true,
"elements": [
"Si",
"Ni",
"Cu"
],
"flag": {
"average": true,
"rotation": false
},
"mesh": {
"current_time": 0.0,
"dt": 0.005,
"dx": 5e-10,
"nx": 100.0,
"ny": 100.0,
"nz": 1.0,
"simulation_time": 10.0
},
"nucleation": [
{
"type": "SetWhole",
"variable": [
{
"value": [
1,
0
],
"varname": "phi"
},
{
"value": [
0.0162,
0.0077
],
"varname": "c1"
},
{
"value": [
0.6666,
0.3334
],
"varname": "c2"
}
]
},
{
"point": [
50.0,
50.0,
0.0
],
"radius": 4.0,
"smooth": true,
"smooth_variable": "phi",
"type": "SetSphere",
"variable": [
{
"value": [
0,
1
],
"varname": "phi"
},
{
"value": [
0.0162,
0.0077
],
"varname": "c1"
},
{
"value": [
0.6666,
0.3334
],
"varname": "c2"
}
],
"width": 6
}
],
"omp_threads": 5,
"output": {
"every_number": 50,
"factor": 2,
"final_time": 360000.0,
"initial_interval": 0.001,
"output_time": 0,
"variable": []
},
"parameter": {
"P": [
4.1759781905643865e-09,
1.5128001684879304e-11
],
"T": 723.15,
"TR": 0.0,
"Vm": 1e-05,
"eta": 3e-09,
"mu": 1.7549098768583283e-23,
"sigma": 0.22
},
"path": "results/aging",
"type": "MultiComponentPhaseField_Stoi"
}
多元两相析出
该模块的求解逻辑全部采用通用MesoSpire析出模块,但能量模型采用MultiComponentPhase_Vector与通用MesoSpire析出模块的输入配置不兼容。
基本配置文件如下:
配置文件
{
"alpha": {
"energy": {
"type": "CuNiSiNoMagn_Vector_Fcc_A1"
},
"interdiffusivity": {
"type": "ConstantMatrixMultiComponentFunctor_Vector",
"values": [
1e-14, 0.0, 0.0, 1.0e-14
]
},
"element": ["NI", "SI"],
"name": "Fcc_A1",
"type": "MultiComponentPhase_Vector"
},
"beta": {
"energy": {
"type": "ConstantVectorMultiComponentFunctor_Vector",
"values": [
-65999.794, 0.0, 0.0
]
},
"interdiffusivity": {
"type": "ConstantMatrixMultiComponentFunctor_Vector",
"values": [
1e-14, 0.0, 0.0, 1.0e-14
]
},
"element": ["NI", "SI"],
"name": "Ni2Si",
"type": "MultiComponentPhase_Vector"
},
"boundary_condition": {
"BC0X": {
"type": "PERIODIC"
},
"BC0Y": {
"type": "PERIODIC"
},
"BC0Z": {
"type": "PERIODIC"
},
"BCNX": {
"type": "PERIODIC"
},
"BCNY": {
"type": "PERIODIC"
},
"BCNZ": {
"type": "PERIODIC"
}
},
"clear": true,
"elastic": {
"elastic_constant": [
{
"C11": 168400000000.0,
"C12": 121400000000.0,
"C44": 75400000000.0,
"type": "CubicElasticProperty"
},
{
"C11": 289625000000.0,
"C12": 142600000000.0,
"C13": 185825000000.0,
"C15": 5275000000.0,
"C22": 219900000000.0,
"C23": 142600000000.0,
"C25": 1200000000.0,
"C33": 289625000000.0,
"C35": 5275000000.0,
"C44": 62450000000.0,
"C46": 3650000000.0,
"C55": 88325000000.0,
"C66": 62450000000.0,
"type": "ElasticProperty"
}
],
"transformation_stretch": [
{
"value": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0
]
},
{
"value": [
0.125,
0.0,
-0.102,
0.0,
0.003,
0.0,
-0.102,
0.0,
0.125
]
}
]
},
"elements": [
"Si",
"Ni",
"Cu"
],
"flag": {
"average": true,
"elastic": true,
"energy": true,
"rotation": false
},
"mesh": {
"current_time": 0.0,
"dt": 0.005,
"dx": 5e-10,
"nx": 100.0,
"ny": 100.0,
"nz": 1.0,
"simulation_time": 10.0
},
"nucleation": [
{
"type": "SetWhole",
"variable": [
{
"value": [
1,
0
],
"varname": "phi"
},
{
"value": [
0.0162,
0.0077
],
"varname": "c1"
},
{
"value": [
0.6666,
0.3334
],
"varname": "c2"
}
]
},
{
"point": [
50.0,
50.0,
0.0
],
"radius": 4.0,
"smooth": true,
"smooth_variable": "phi",
"type": "SetSphere",
"variable": [
{
"value": [
0,
1
],
"varname": "phi"
},
{
"value": [
0.0162,
0.0077
],
"varname": "c1"
},
{
"value": [
0.6666,
0.3334
],
"varname": "c2"
}
],
"width": 6
}
],
"omp_threads": 5,
"output": {
"dg_elastic_time": 1000,
"every_number": 50,
"factor": 2,
"final_time": 360000.0,
"output_interval": 0.001,
"output_time": 0,
"variable": []
},
"parameter": {
"P": [
4.1759781905643865e-09,
1.5128001684879304e-11
],
"T": 723.15,
"TR": 0.0,
"Vm": 1e-05,
"eta": 3e-09,
"mu": 1.7549098768583283e-23,
"sigma": 0.22
},
"path": "results/aging",
"type": "MultiComponentPhaseField_Stoi_Vector"
}