Development

相场程序的框架

欢迎访问PFCSU软件文档。

简介

MesoSpire采用了基于C++语言的反射机制开发,用户可以通过调整配置文件来实现对MesoSpire功能的定制。MesoSpire的配置文件是一个JSON格式的文件,其路径为config.json。用户可以通过修改config.json来实现对MesoSpire功能的选择。

MesoSpire -i config.json

AlSi凝固过程模拟

DualPhaseFieldAccelerated

DualPhaseFieldAccelerated
{
    "omp_threads": 64,
    "type": "DualPhaseFieldAccelerated",
    "path": "results/DualPhaseFieldAccelerated",
    "clear": true,
    "mesh": {
        "nx": 100,
        "ny": 100,
        "nz": 1,
        "dx": 1e-07,
        "dt": 1e-07,
        "current_time": 0,
        "simulation_time": 0.02
    },
    "parameter": {
        "T": 750,
        "P": 1e-04,
        "Vm": 1e-05,
        "mu": 3e-12,
        "sigma": 0.2,
        "eta": 6.0e-7
    },
    "alpha": {
        "type": "BinaryLinearDiagramLiquid",
        "name": "liquid",
        "D": 1.0e-9
    },
    "beta": {
        "type": "BinaryLinearDiagramSolid",
        "name": "solid",
        "Tm": 933.5,
        "ke": 0.1305,
        "me": -659.626,
        "D": 2.5e-16
    },
    "boundary_condition": {
        "BC0X": {
            "type": "PERIODIC"
        },
        "BCNX": {
            "type": "PERIODIC"
        },
        "BC0Y": {
            "type": "PERIODIC"
        },
        "BCNY": {
            "type": "PERIODIC"
        }
    },
    "nucleation": [
        {
            "type": "SetWhole",
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        1.0,
                        0.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        },
        {
            "type": "SetSphere",
            "point": [
                50,
                50,
                0
            ],
            "radius": 10,
            "smooth": true,
            "smooth_variable": "phi",
            "width": 6,
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        0.0,
                        1.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        }
    ],
    "flag": {
        "average": true,
        "rotation": false
    },
    "anisotropy": {
        "type": "CubicAnisotropyYang",
        "parameters": [
            0.3
        ],
        "mobility": [
            0.3
        ]
    },
    "output": {
        "output_time": 0,
        "output_interval": 1.0e-5,
        "every_number": 10,
        "factor": 2
    }
}

MultiPhaseField

MultiPhaseField
{
    "omp_threads": 64,
    "type": "MultiPhaseField",
    "path": "./results/MultiPhaseField",
    "clear": true,
    "mesh": {
        "nx": 100,
        "ny": 100,
        "nz": 1,
        "dx": 1e-07,
        "dt": 1e-07,
        "current_time": 0,
        "simulation_time": 0.02
    },
    "parameter": {
        "T": 750,
        "P": [
            1.0e-4
        ],
        "Vm": 1.0e-5,
        "mu": [
            3.0e-12
        ],
        "sigma": [
            0.2
        ],
        "eta": 6.0e-7
    },
    "phase": [
        {
            "type": "BinaryLinearDiagramLiquid",
            "name": "liquid",
            "D": 1.0e-9
        },
        {
            "type": "BinaryLinearDiagramSolid",
            "name": "fcc",
            "Tm": 933.5,
            "ke": 0.1305,
            "me": -659.626,
            "D": 2.5e-16
        }
    ],
    "boundary_condition": {
        "BC0X": {
            "type": "PERIODIC"
        },
        "BCNX": {
            "type": "PERIODIC"
        },
        "BC0Y": {
            "type": "PERIODIC"
        },
        "BCNY": {
            "type": "PERIODIC"
        }
    },
    "nucleation": [
        {
            "type": "SetWhole",
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        1.0,
                        0.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        },
        {
            "type": "SetSphere",
            "point": [
                50,
                50,
                0
            ],
            "radius": 10,
            "smooth": true,
            "smooth_variable": "phi",
            "width": 6,
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        0.0,
                        1.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        }
    ],
    "flag": {
        "average": true,
        "rotation": false
    },
    "anisotropy": {
        "type": "CubicAnisotropyYang",
        "parameters": [
            0.3
        ],
        "mobility": [
            0.3
        ]
    },
    "output": {
        "output_time": 0,
        "output_interval": 1.0e-5,
        "every_number": 10,
        "factor": 2,
        "variable": [
            "dG_liquid_fcc"
        ]
    }
}

MultiComponentMultiPhaseField

MultiComponentMultiPhaseField
{
    "omp_threads": 64,
    "type": "MultiComponentMultiPhaseField",
    "path": "./results/MultiComponentMultiPhaseField",
    "clear": true,
    "mesh": {
        "nx": 100,
        "ny": 100,
        "nz": 1,
        "dx": 1.0e-7,
        "dt": 1.0e-7,
        "current_time": 0,
        "simulation_time": 0.02
    },
    "parameter": {
        "T": 750,
        "P": [
            1.0e-4
        ],
        "Vm": 1.0e-5,
        "mu": [
            3.0e-12
        ],
        "sigma": [
            0.2
        ],
        "eta": 6.0e-7
    },
    "component": [
        "Si"
    ],
    "phase": [
        {
            "name": "liquid",
            "element": [
                "Si"
            ],
            "D": [
                1.0e-9
            ],
            "type": "MultiComponentLinearDiagramLiquid"
        },
        {
            "name": "solid",
            "element": [
                "Si"
            ],
            "D": [
                2.5e-16
            ],
            "Tm": 933.5,
            "ke": [
                0.1305
            ],
            "me": [
                -659.626
            ],
            "type": "MultiComponentLinearDiagramSolid"
        }
    ],
    "boundary_condition": {
        "BC0X": {
            "type": "PERIODIC"
        },
        "BCNX": {
            "type": "PERIODIC"
        },
        "BC0Y": {
            "type": "PERIODIC"
        },
        "BCNY": {
            "type": "PERIODIC"
        }
    },
    "nucleation": [
        {
            "type": "SetWhole",
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        1.0,
                        0.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        },
        {
            "type": "SetSphere",
            "point": [
                50,
                50,
                0
            ],
            "radius": 10,
            "smooth": true,
            "smooth_variable": "phi",
            "width": 6,
            "variable": [
                {
                    "varname": "phi",
                    "value": [
                        0.0,
                        1.0
                    ]
                },
                {
                    "varname": "c",
                    "value": [
                        0.1128,
                        0.1128
                    ]
                }
            ]
        }
    ],
    "flag": {
        "average": true,
        "rotation": false
    },
    "anisotropy": {
        "type": "CubicAnisotropyYang",
        "parameters": [
            0.3
        ],
        "mobility": [
            0.3
        ]
    },
    "output": {
        "output_time": 0,
        "output_interval": 1.0e-4,
        "every_number": 10,
        "factor": 2,
        "variable": []
    },
    "information": [
        1.0e-9,
        1.0e5,
        0.03
    ]
}