Skip to content

Commit

Permalink
Merge pull request idaholab#25016 from SudiptaBiswas/gp_pfm_ad
Browse files Browse the repository at this point in the history
Adding AD version of the grand potential phase-field model
  • Loading branch information
dschwen committed Feb 19, 2024
2 parents 7cc4aed + a1b6667 commit 9eaa517
Show file tree
Hide file tree
Showing 31 changed files with 1,384 additions and 193 deletions.
13 changes: 12 additions & 1 deletion modules/phase_field/doc/content/bib/phase_field.bib
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,18 @@ @article{jacob2018revised
volume={60},
pages={16--28},
year={2018},
publisher={Elsevier}
publisher={Elsevier},
}

@article{Moelans2011,
journal = {Acta Materialia},
pages = {1077--1086},
volume = {59},
publisher = {Pergamon},
year = {2011},
title = {A quantitative and thermodynamically consistent phase-field interpolation function for multi-phase systems},
language = {eng},
author = {Nele Moelans},
}

@article{schonfelder1997molecular,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ACBarrierFunction
# ACBarrierFunction / ADACBarrierFunction

The ACBarrierFunction kernel implements the term $\frac{\partial m}{\partial \eta}f(\eta)$
The `ACBarrierFunction` (and its automatic differentiation version, `ADACBarrierFunction`) kernel implements the term $\frac{\partial m}{\partial \eta}f(\eta)$
term for the free energy given in [!cite](moelans_quantitative_2008).
$m$ is the barrier energy coefficient.
In many phase field models, $m$ is constant, but in the case where it is a function
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

!syntax description /Kernels/ACGrGrMulti

Implements the term
`ACGrGrMulti` (and its automatic differentiation version, `ADACGrGrMulti`) implements the term

\begin{equation}
L \mu \left( \eta_{\alpha i}^3 - \eta_{\alpha i} + 2\eta_{\alpha i} \sum_{\beta=1}^N
Expand Down
4 changes: 2 additions & 2 deletions modules/phase_field/doc/content/source/kernels/ACInterface.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ACInterface
# ACInterface / ADACInterface

!syntax description /Kernels/ACInterface

Implements the Allen-Cahn term for the $\frac{\kappa_i}2|\nabla \eta_i|^2$
`ACInterface` (and its automatic differentiation version, `ADACInterface`) implements the Allen-Cahn term for the $\frac{\kappa_i}2|\nabla \eta_i|^2$
gradient energy contribution for the isotropic mobility case. Its weak form is

\begin{equation}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ACKappaFunction
# ACKappaFunction / ADACKappaFunction

The ACKAppaFunction Kernel calculates the term
The `ACKAppaFunction` (and its automatic differentiation version, `ADACKappaFunction`) Kernel calculates the term
$\frac12 L \frac{\partial \kappa}{\partial \eta} f_g(\nabla \eta)$
for the case where $\kappa$ is a function of $\eta$ and $f_g$ is the gradient
energy function used in the phase field method.
Expand Down
4 changes: 2 additions & 2 deletions modules/phase_field/doc/content/source/kernels/ACSwitching.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# ACSwitching
# ACSwitching / ADACSwitching

!syntax description /Kernels/ACSwitching

Implements the terms of the form
`ACSwitching` (and its automatic differentiation version, `ADACSwitching`) implements the terms of the form
\begin{equation}
\frac{\partial h_a}{\partial\eta_{ai}} F_a + \frac{\partial h_b}{\partial\eta_{ai}} F_b + \dots,
\end{equation}
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
!template load file=stubs/moose_object.md.template name=CoupledSwitchingTimeDerivative syntax=/Kernels/CoupledSwitchingTimeDerivative
# CoupledSwitchingTimeDerivative / ADCoupledSwitchingTimeDerivative

!syntax description /Kernels/CoupledSwitchingTimeDerivative

`CoupledSwitchingTimeDerivative` (and its automatic differentiation version, `ADCoupledSwitchingTimeDerivative`) is a coupled time derivative Kernel that multiplies the time derivative term by the following
\begin{equation}
\frac{\partial h_a}{\partial\eta_{ai}} F_a + \frac{\partial h_b}{\partial\eta_{ai}} F_b + \dots,
\end{equation}
where $a,b,\dots$ are the phases, $h_a, h_b,\dots$ are the switching functions,
$\eta_{ai}$ is the order parameter for the phase/grain that is the nonlinear variable,
and $F_a, F_b,\dots$ are the free energies or grand potentials.

See also [CoupledTimeDerivative](/CoupledTimeDerivative.md).

!syntax parameters /Kernels/CoupledSwitchingTimeDerivative

!syntax inputs /Kernels/CoupledSwitchingTimeDerivative

!syntax children /Kernels/CoupledSwitchingTimeDerivative
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# SusceptibilityTimeDerivative
# SusceptibilityTimeDerivative / ADSusceptibilityTimeDerivative

!syntax description /Kernels/SusceptibilityTimeDerivative

Implements
`SusceptibilityTimeDerivative` (and its automatic differentiation version, `ADSusceptibilityTimeDerivative`) implements

\begin{equation}
F(u,a,b,\dots)\cdot\frac{\partial u}{\partial t},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This is an example of implementation of the multi-phase, multi-order parameter
# grand potential based phase-field model described in Phys. Rev. E, 98, 023309
# (2019). It includes 3 phases with 1 grain of each phase. This example was used
# (2018). It includes 3 phases with 1 grain of each phase. This example was used
# to generate the results shown in Fig. 3 of the paper.

[Mesh]
Expand Down
Loading

0 comments on commit 9eaa517

Please sign in to comment.