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"
}