Variety of methods to track material interfaces numerically:
From Liu et al, DOI: 10.1051/mfreview/2018008
Interpretations:
From Guyer's summer school slides
From FiPy dendrite example
Year on year phase field publications
TS=("phase field" OR "phase-field")
Why phase field?
Issues preventing wider adoption
Bob McMichael, Donald Porter and Mike Donahue
Benchmarks must satisfy three requirements:
Computationally robust on modest resources
Provide assessment, validation, verification
Relevant (e.g. for pedagogical purposes)
Benchmark | Paper | Submissions | Variations |
---|---|---|---|
1. Spinodal Decomposition | Cahn (1961) | 62 | 4 |
2. Ostwald Ripening | Zhu (2004) | 29 | 4 |
3. Dendritic Growth | Karma & Rappel (1998) | 14 | 1 |
4. Elastic Precipitate | Jokisarri (2017) | 12 | 8 |
5. Stokes Flow | 0 | 2 | |
6. Electrostatics | Guyer (2004) | 9 | 2 |
7. Allen-Cahn MMS | Salari and Knupp (2000) | 10 | 3 |
8. Homogeneous Nucleation | 6 | 4 |
MMS explained in "Code Verification by the Method of Manufactured Solutions", Salari and Knupp Sandia technical report, 2000
How do we assess results for the Allen-Cahn (for example) equation in 2D (no analytical solution in general)?
Cheat a little bit with a neat trick. Substitute a "manufactured solution" and derive a source.
We now have an analytical solution to a slightly different equation
carefully construct to be smooth with non-trivial derivatives, but bounded (perturbed tanh is ideal here)
primarily work of Stephen DeWitt
Manufactured solution constructed based on 1D analytical solution
chosen to yield complex behavior
initial conditions
final conditions (t=8 time units)
simulation by Trevor Keller using Hiperc
MMS makes it much easier to calculate both temporal and spatial accuracy
results from PFHub website for benchmark 7a.0
MMS makes it much easier to calculate both temporal and spatial accuracy
results from PFHub website for benchmark 7a.0
Orders of magnitude range in resource usage
results from PFHub website for benchmark 1b.1
BM1a.1: periodic, square,
BM1b.1: Neumann, square
BM1c.1: Neumann, t-shape
BM1d.1: sphere
id: moose_1a_amjokisaari_ia
benchmark_problem: 1a.0
contributors:
- id: https://orcid.org/0000-0002-4945-5714
name: A.M. Jokisaari
affiliation:
- INL
email: andrea.jokisaari@northwestern.edu
date_created: '2016-06-28'
implementation:
url: https://bitbucket.org/ajokisaari/coral
commit: e8fc74f
results:
fictive_time: 935803.78997793
hardware:
architecture: cpu
cores: 6
nodes: 1
memory_in_kb: 815104
time_in_s: 3720
dataset_temporal:
- name: free_energy_1a.csv
columns:
- time
- free_energy
schema:
url: https://github.com/usnistgov/pfhub-schema/tree/e0010d9/project
summary: MOOSE, IA solver, periodic domain.
framework:
- url: https://mooseframework.inl.gov/modules/phase_field/index.html
name: MOOSE
download: https://github.com/idaholab/moose
version: 1.0.0
YAML file showing PFHub result schema derived using LinkML (Trevor Keller)
How can we currently query the data
Better ways to query the data
Currently collect only derived quantities such as free energy
What else should we collect?
Not collecting the field variables currently (results during evolution of BM1, Trevor Keller)
Code | Submissions | Solution Methods | Contributors (Year) | Language | Person-Years | Open Source |
---|---|---|---|---|---|---|
MOOSE (INL) | 69 | FE, PETSc, adaptive, parallel | 393 (109) | C++ | 116 | Yes |
FEniCS (Numfocus) | 14 | FE, multiple solvers, parallel | 171 (5) | C++ | 89 | Yes |
MMSP (RPI) | 11 | FD, explicit, massive parallel | 10 (0) | C++ | 5 | Yes |
FiPy (NIST) | 13 | FV, implicit, parallel | 21 (2) | Python | 12 | Yes |
PRISMS-PF (U Michigan) | 10 | FE, explicit, adaptive, massive parallel | 12 (1) | C++ | 10 | Yes |
Sfepy (U West Bohemia) | 8 | FE, parallel? | 34 (7) | Python | 21 | Yes |
Custom | 8 | |||||
MEMPHIS (Sandia, not OS) | 4 | FD, explicit / implicit, massive parallel | ? | Fortran | ? | No |
AMPE (LLNL) | 5 | FV, implicit, CPODES, adaptive | 3 (1) | C++ | 20 | Yes |
HiPerC (NIST) | 3 | FD, GPU, explicit | 3 (0) | C | 2 | Yes |
MEUMAPPS (ORNL) | 1 | Fourier Spectral, KKS, works with thermocalc | 11 (3) | Fortran | 3 | Yes |
SymPhas (U Western Ontario) | 1 | Symbolic algebra (like MOOSE and PRISMS), forward Euler FD (explicit), implicit Fourier spectral | 3 (2) | C++ | 10 | Yes |
Other dedicated codes with 0 uploads include MICRESS and OpenPhase
Other non-dedicated codes are COMSOL, OpenFOAM
Submitter has a temporary website to view the submission
GitHub pull-requests (PR) provide a platform for data submissions
Submit DOI to usnistgov/pfhub issue
Ask the submitter to check the submission
Clean up any issues and then admins approve and submitter approves
Automated tests are run on submission
Zenodo submission includes "pfhub.json" metadata file
Practical guide to phase field modeling addressing issues most publications often neglect
14 workshops
3 hackathons
1 install-a-thon
1 upload-a-thon