乐于分享
好东西不私藏

入门相场仿真:相场软件汇总整理-从开源软件学习仿真代码思路

入门相场仿真:相场软件汇总整理-从开源软件学习仿真代码思路

相场模拟软件有很多,真正能确认公开开源、而且能找到官方仓库和官方示例的,主要有 FiPySfePyOpenPhase AcademicPRISMS-PFMMSPMOOSEMEUMAPPSFEniCSAMPE
  • MPF/MPFUI
     当前公开仓库虽然可访问,也带 MIT 许可证,但仓库内容极少,没看到公开示例源码。
  • Pandas
     和 CAPA 这两个条目按“名字/网址”去查,确实都是开源项目,但与相场模拟明显不匹配,基本可以判定为表格中的异常项。
  • COMSOL
    MatCalcMICRESSμ-PRO 现阶段都不宜按“公开开源”处理。

一张表先看全

序号
软件
是否开源
官方开源地址
结论备注
1
COMSOL Multiphysics
官方下载安装与运行都围绕许可证;属于商业软件。
2
FiPy
usnistgov/fipy
NIST 官方页面明确称其为 open software framework。
3
MatCalc
官方页面写明 basic/pro 许可模式,也可 free mode 使用,但不是公开源码。
4
SfePy
sfepy/sfepy
GitHub README 标注 New BSD License。
5
MICRESS
官方产品/安装页面均围绕 license 与 EULA。
6
μ-PRO
官网有 Purchase,页脚保留 all rights reserved,未见公开源码仓库。
7
OpenPhase Academic
ICAMS/OpenPhase
官网与 GitHub 均明确为 open-source Academic 版本。
8
Pandas
pandas-dev/pandas
pandas 本身是开源数据分析库,但与书中“相场/微观组织演化”描述明显不符。
9
PRISMS-PF
prisms-center/phaseField
README 直接写明 “An Open-Source Phase-Field Modeling Framework”。
10
MMSP
mesoscale/mmsp
官方 GitHub 公开,附 GPLv3 许可。
11
MPF / MPFUI
是(但公开内容极少)
china20/MPFUI
公开 HEAD 只看到 LICENSE 和 MPF开源补充说明.doc,未见公开示例源码。
12
MOOSE
idaholab/moose
官方 GitHub 公开,LGPL 许可;phase_field 模块文档完整。
13
MEUMAPPS
ORNL GitLab / meumapps
ORNL 官方研究亮点明确称其 open-source。
14
CAPA(书中条目)
按字面是开源,但疑似误写
mandiant/capa
这是恶意软件能力识别工具,与相场软件无关。
15
FEniCS
FEniCS/dolfinx
FEniCS 官网明确称其为 open-source computing platform。
16
AMPE
LLNL/AMPE
README 标注 Unlimited Open Source – BSD Distribution。

两个异常条目,要先剔出来

1. Pandas

  • 第 8 项 Pandas / pandas.pydata.org
  • 按官网与 GitHub 来看,pandas 当然是开源的。
  • 但它是数据分析库,不是相场模拟软件。
  • 它和表中“金属微观组织演化:相变、晶粒长大、析出、偏析”的用途完全对不上。

2. CAPA

  • 第 14 项给的是 github.com/mandiant/capa
  • 这个仓库确实开源,但它是恶意软件能力识别工具。
  • 它同样不应被算进相场软件清单。

所以,后文“开源项目示例”只保留真正和相场软件主题匹配的条目。

开源项目的官方示例,我看到什么

1. FiPy

  • 官方站点:NIST 项目页
  • 官方仓库:usnistgov/fipy
  • 官方 examples 文档:Examples — FiPy documentation
  • 我在仓库 examples/ 下实际扫到 139 个示例/配套脚本。
  • 主体类别包括:benchmarkingcahnHilliardchemotaxisconvectiondiffusionelphfflowlevelSetmeshingphasereactiveWettingriemannupdating
  • 这批示例里,最贴近相场主题的通常是 cahnHilliard/phase/reactiveWetting/levelSet/
  • 按示例名来读,它们大致可以理解成:
  • benchmarking
    :性能基准测试
  • cahnHilliard
    :Cahn-Hilliard 相分离
  • chemotaxis
    :趋化
  • convection
    :对流传输
  • diffusion
    :扩散
  • elphf
    :电化学相场
  • flow
    :流动/Stokes 流
  • levelSet
    :水平集界面追踪
  • meshing
    :网格生成
  • phase
    :相场/相变基础例子
  • reactiveWetting
    :反应润湿
  • riemann
    :黎曼问题/波传播
  • updating
    :版本更新脚本

2. SfePy

  • 官方站点:sfepy.org
  • 官方仓库:sfepy/sfepy
  • 官方说明里明确建议新问题先看 sfepy/examples/
  • 我在 sfepy/examples/ 下实际扫到 124 个 .py 示例文件。
  • 类别包括:acousticsdgdiffusionhomogenizationlarge_deformationlinear_elasticitymiscellaneousmulti_physicsnavier_stokesphononicquantum
  • 它不是纯相场专用软件,但作为开源 PDE/FEM 框架,示例库非常完整。
  • 按示例名来读,这些一级目录大致是:
  • acoustics
    :声学
  • dg
    :不连续 Galerkin
  • diffusion
    :扩散
  • homogenization
    :均质化/多尺度等效
  • large_deformation
    :大变形
  • linear_elasticity
    :线弹性
  • miscellaneous
    :杂项
  • multi_physics
    :多物理场
  • navier_stokes
    :Navier-Stokes 流动
  • phononic
    :声子/声子晶体
  • quantum
    :量子问题

3. OpenPhase Academic

  • 官网:OpenPhase Academic
  • 官方仓库:ICAMS/OpenPhase
  • 官方仓库 examples/ 顶层共 24 个示例目录。
  • 主要示例包括: AdditiveNiAlEutecticIIFacetedGGFlowFoamHeatDiffusionLatentHeatLiquidPhaseSinteringLiquidPhaseSinteringLargeMeltingFeNormalGGPearlitePlagioclasePrecipitationNiTiReactiveFlowSolidificationFeSolidificationFeCSolidificationMgAlSolidificationNiAlSolidPhaseSinteringSolidPhaseSintering_SurfaceDiffusionSuperalloysThermalCompressibleFlowWetting
  • 从名字就能看出来,它的示例覆盖面非常“材料相场本体化”。
  • 如果把这些示例名翻成中文,大致可以读成:
  • AdditiveNiAl
    :Ni-Al 合金增材制造
  • EutecticII
    :共晶组织演化 II
  • FacetedGG
    :棱面晶粒长大
  • Flow
    :流动
  • Foam
    :泡沫/泡孔结构
  • HeatDiffusion
    :热扩散
  • LatentHeat
    :潜热耦合
  • LiquidPhaseSintering
    :液相烧结
  • LiquidPhaseSinteringLarge
    :大尺度液相烧结
  • MeltingFe
    :铁熔化
  • NormalGG
    :普通晶粒长大
  • Pearlite
    :珠光体
  • Plagioclase
    :斜长石
  • PrecipitationNiTi
    :NiTi 析出
  • ReactiveFlow
    :反应流动
  • SolidificationFe
    :铁凝固
  • SolidificationFeC
    :铁碳凝固
  • SolidificationMgAl
    :镁铝合金凝固
  • SolidificationNiAl
    :镍铝合金凝固
  • SolidPhaseSintering
    :固相烧结
  • SolidPhaseSintering_SurfaceDiffusion
    :表面扩散控制的固相烧结
  • Superalloys
    :高温合金
  • ThermalCompressibleFlow
    :热可压缩流动
  • Wetting
    :润湿

4. PRISMS-PF

  • 官方仓库:prisms-center/phaseField
  • README 明确说 examples 位于 applications/
  • 当前仓库中可直接运行/改造的 application 示例共 9 个: allen_cahn_explicitalloy_solidificationblankcahn_hilliard_explicitcoupled_allen_cahn_cahn_hilliardeshelby_inclusionlaplacenucleationspinodal_decomposition
  • 这套结构很适合“先跑官方 app,再改成自己模型”。
  • 这些 application 的中文意思大致是:
  • allen_cahn_explicit
    :显式 Allen-Cahn
  • alloy_solidification
    :合金凝固
  • blank
    :空白模板
  • cahn_hilliard_explicit
    :显式 Cahn-Hilliard
  • coupled_allen_cahn_cahn_hilliard
    :Allen-Cahn / Cahn-Hilliard 耦合
  • eshelby_inclusion
    :Eshelby 夹杂问题
  • laplace
    :拉普拉斯方程
  • nucleation
    :形核
  • spinodal_decomposition
    :调幅分解

5. MMSP

  • 官方仓库:mesoscale/mmsp
  • 我在 examples/ 下扫到 59 个示例源文件/说明文件。
  • 示例大类包括: beginners_diffusioncoarseningdifferential_equationsphase_transitionsstatistical_mechanics
  • 其中和相场直接相关的重点区块是 phase_transitions/,下面又包含 allen-cahncahn-hilliardmodel_Amodel_Bsolidificationspinodal
  • 用中文速读一下:
  • beginners_diffusion
    :扩散入门
  • coarsening
    :粗化
  • differential_equations
    :微分方程
  • phase_transitions
    :相变
  • statistical_mechanics
    :统计力学
  • allen-cahn
    :Allen-Cahn
  • cahn-hilliard
    :Cahn-Hilliard
  • model_A
    :A 类模型
  • model_B
    :B 类模型
  • solidification
    :凝固
  • spinodal
    :调幅分解

6. MPF / MPFUI

  • 官方仓库:china20/MPFUI
  • 当前公开仓库可见文件只有 LICENSE 和 MPF开源补充说明.doc
  • 也就是说,它“有开源许可证”这件事能确认,但“公开示例源码”这件事目前确认不了。

7. MOOSE

  • 官方站点:MOOSE Phase Field Module
  • 官方仓库:idaholab/moose
  • 因为 MOOSE 是通用多物理场框架,这里只列 phase_field 直接相关的官方 examples。
  • modules/phase_field/examples/
     下共 39 个相关示例文件。
  • modules/combined/examples/phase_field-mechanics/
     下共 12 个相关示例文件。
  • 换句话说,MOOSE 的示例很多,但如果你的目标是相场,只盯这两块最省时间。
  • 按目录名去推测,它的主要示例簇可以读成:
  • anisotropic_interfaces
    :各向异性界面
  • anisotropic_transport
    :各向异性输运
  • cahn-hilliard
    :Cahn-Hilliard
  • ebsd_reconstruction
    :EBSD 组织重构
  • grain_growth
    :晶粒长大
  • interfacekernels
    :界面核项
  • kim-kim-suzuki
    :KKS 模型
  • measure_interface_energy
    :界面能测量
  • multiphase
    :多相
  • nucleation
    :形核
  • rigidbodymotion
    :刚体运动/外力驱动
  • slkks
    :子晶格 KKS
  • phase_field-mechanics
    :相场-力学耦合

8. MEUMAPPS

  • ORNL 说明页:MEUMAPPS C++: A Scalable, Performance-Portable, Open-Source Framework for Phase-Field Modeling
  • 公开代码:ORNL GitLab / meumapps
  • applications/
     下共有 5 个应用示例: allen_cahnchimad_bm2_modifiedmeumapps-sspfhub_bm1apfhub_bm1a_sundials
  • 这些名字大致可以读成:
  • allen_cahn
    :Allen-Cahn
  • chimad_bm2_modified
    :CHiMaD 基准 2 改写版
  • meumapps-ss
    :MEUMAPPS-SS 固态/固态组织模块
  • pfhub_bm1a
    :PFHub 基准 1a
  • pfhub_bm1a_sundials
    :带 SUNDIALS 时间积分器的 PFHub 基准 1a
  • 另外,test/input/ 下还有 20 个官方测试/输入/工具文件,可作为最小可复现实例。

9. FEniCS(按当前官方开源实现 DOLFINx 统计)

  • 官方站点:FEniCS
  • 当前官方源码入口(核心实现之一):FEniCS/dolfinx
  • 官方 demos 页面:DOLFINx demos
  • Python demos 共 25 个,其中最接近相场的是 demo_cahn-hilliard.py
  • C++ demo 目录共 8 个
  • 所以它更像“能拿来做相场”的底层开源框架,而不是“相场专用软件包”
  • 这些 demo 名如果按中文速读,大致是:
  • demo_axis.py
    :轴对称/坐标轴示例
  • demo_biharmonic.py
    :双调和方程
  • demo_cahn-hilliard.py
    :Cahn-Hilliard 相分离
  • demo_comm-pattern.py
    :并行通信模式
  • demo_elasticity.py
    :弹性
  • demo_gmsh.py
    :Gmsh 网格生成
  • demo_half_loaded_waveguide.py
    :半加载波导
  • demo_hdg.py
    :HDG 方法
  • demo_helmholtz.py
    :Helmholtz 方程
  • demo_interpolation-io.py
    :插值与输入输出
  • demo_lagrange_variants.py
    :Lagrange 单元变体
  • demo_mixed-poisson.py
    :混合 Poisson
  • demo_mixed-topology.py
    :混合拓扑网格
  • demo_navier-stokes.py
    :Navier-Stokes 流动
  • demo_pml.py
    :完美匹配层
  • demo_poisson.py
    :Poisson 方程
  • demo_poisson_matrix_free.py
    :无矩阵 Poisson
  • demo_pyamg.py
    :PyAMG 求解器
  • demo_pyvista.py
    :PyVista 可视化
  • demo_scattering_boundary_conditions.py
    :散射边界条件
  • demo_static-condensation.py
    :静态凝聚
  • demo_stokes.py
    :Stokes 流
  • demo_tnt-elements.py
    :TNT 单元
  • demo_types.py
    :数值类型/精度类型

10. AMPE

  • 官方仓库:LLNL/AMPE
  • examples/
     下共 12 个示例目录: AuNi_2DAuNi_3Dbilayer_AuNibilayer_MoNbTaChenShen98CuNi_1DDendrite2DDendriteDiluteAlCuDiffusion1DGG3D_HBSMtwo_bilayer_AuNiTWO_GRAINS_HBSM_2D
  • benchmarks/
     下还有 2 个官方 benchmark 目录:PFHub1aPFHub3
  • input/
     下还有 4 个模板输入文件
  • 如果把这些示例名顺成中文,大致是:
  • AuNi_2D
    :金镍二维
  • AuNi_3D
    :金镍三维
  • bilayer_AuNi
    :金镍双层
  • bilayer_MoNbTa
    :钼铌钽双层
  • ChenShen98
    :Chen-Shen 1998 参考模型
  • CuNi_1D
    :铜镍一维
  • Dendrite2D
    :二维枝晶
  • DendriteDiluteAlCu
    :稀 Al-Cu 枝晶
  • Diffusion1D
    :一维扩散
  • GG3D_HBSM
    :三维晶粒长大 HBSM
  • two_bilayer_AuNi
    :双双层 AuNi
  • TWO_GRAINS_HBSM_2D
    :二维双晶粒 HBSM
  • PFHub1a
    :PFHub 基准 1a
  • PFHub3
    :PFHub 基准 3
  • example_amr.in
    :自适应网格模板
  • example_bare_minimum.in
    :最小输入模板
  • example_full.in
    :完整输入模板
  • example_noamr.in
    :无自适应网格模板

我会怎么给它们排一个“上手优先级”

如果你的目标是“今天就想找个开源相场软件开跑”,我会这样看:

  1. FiPy Python 友好,教程和示例是最完整的一档。

  2. OpenPhasePRISMS-PFAMPEMMSP 更偏材料相场研究正统路线,示例主题也更贴近书里的语境。

  3. SfePyFEniCSMOOSE 框架能力很强,但它们更像“能做相场”的通用求解平台,需要更强的 PDE/FEM 背景。

  4. MEUMAPPS 很有研究价值,但明显更偏 HPC/研究代码风格。

完整示例清单放在附录

为了不把正文撑成一张超长目录,我把逐项翻到的完整 example 列表单独放进了附录文件:

  • phasefield_examples_appendix.md

这份附录里把我实际扫到的官方 example、demo、application、benchmark、input 都按仓库目录一条条列出来了。

参考来源

  • COMSOL: product-download
  • FiPy: NIST 项目页 | GitHub | examples 文档
  • MatCalc: download.matcalc.at
  • SfePy: GitHub
  • MICRESS: products
  • μ-PRO: 官网
  • OpenPhase: 官网 | GitHub
  • PRISMS-PF: GitHub
  • MMSP: GitHub
  • MPFUI: GitHub
  • MOOSE: GitHub | phase_field 模块文档
  • MEUMAPPS: ORNL 说明页 | ORNL GitLab
  • CAPA: GitHub
  • FEniCS: 官网 | DOLFINx demos
  • AMPE: GitHub
  • EasyPhase: 相关论文示例