Permalink
Browse files

Merge pull request #12470 from dschwen/gp_params_12147

Grand Potential model interface parameter material
  • Loading branch information...
permcody committed Nov 14, 2018
2 parents 2e11554 + 795c3f1 commit dbe29398e613972ef8a050ef4b53d45d83a73513
@@ -108,3 +108,24 @@ @article{Ebeida_2012
address = {Chichester, UK},
keywords = {Computing Methodologies [I.3.5]: Computer Graphics\&\#x2014;Computational Geometry and Object Modeling},
}
@misc{MoelansWeb,
note = {http://nele.studentenweb.org/docs/parameters.m; accessed 13-Nov-2018},
author = {Moelans, N.},
year = {2009},
}
@article{AagesenGP2018,
title = {Grand-potential-based phase-field model for multiple phases, grains, and chemical components},
author = {Aagesen, Larry K. and Gao, Yipeng and Schwen, Daniel and Ahmed, Karim},
journal = {Phys. Rev. E},
volume = {98},
issue = {2},
pages = {023309},
numpages = {16},
year = {2018},
month = {Aug},
publisher = {American Physical Society},
doi = {10.1103/PhysRevE.98.023309},
url = {https://link.aps.org/doi/10.1103/PhysRevE.98.023309}
}
@@ -1,174 +1,76 @@
# GrandPotentialKernelAction
## Description
!syntax description /Modules/PhaseField/GrandPotential/GrandPotentialKernelAction
The GrandPotentialKernelAction automatically generates kernels needed for the Grand Potential Model.
For more information on the grand potential model, see [cite:plapp_unified_2011] and
[cite:moelans_quantitative_2008].
The following kernels are generated for each chemical potential variable:
- SusceptibilityTimeDerivative
- MatDiffusion or MatAnisoDiffusion
- CoupledSwitchingTimeDerivative (multiple kernels: one that corresponds with each order parameter)
- [`SusceptibilityTimeDerivative`](/SusceptibilityTimeDerivative.md)
- [`MatDiffusion`](/MatDiffusion.md) or [`MatAnisoDiffusion`](/MatAnisoDiffusion.md)
- [`CoupledSwitchingTimeDerivative`](/CoupledSwitchingTimeDerivative.md) (multiple kernels: one that corresponds with each order parameter)
The following kernels are generated for each order parameter:
- TimeDerivative
- ACInterface
- ACSwitching
- ACGrGrMulti
- [`TimeDerivative`](/TimeDerivative.md)
- [`ACInterface`](/ACInterface.md)
- [`ACSwitching`](/ACSwitching.md)
- [`ACGrGrMulti`](/ACGrGrMulti.md)
Any additional kernels needed for your application will have to be entered manually into the input file.
There is a large number of inputs for this action, but they can be categorized into four
basic groups:
basic groups
- Global inputs: these are applied throughout the kernels.
- Chemical potential inputs: these define the behavior of the chemical potential variables.
- Primary set of order parameters: Inputs affecting a goup of auto-generated variables using the
PolycrystalVarible action.
These typically represent grains in a polycrystal system.
- Secondary set of order paramters: this optional set can include additional order parameters
to distinguish phases or some other field not associated with the first set of order parameters.
### Global Inputs
All of the inputs in these groups are explained below:
These are applied throughout the kernels.
### Global Inputs:
- switching_function_names: Vector of names of switching functions. These are used to distinguish between phases.
- use_displacesd_mesh: Standard option for kernels. This will be applied to all kernels generated.
- implicit: Standard option for kernels. This will be applied to all kernels generated.
- `switching_function_names`: Vector of names of switching functions. These are used to distinguish between phases.
- `use_displacesd_mesh`: Standard option for kernels. This will be applied to all kernels generated.
- `implicit`: Standard option for kernels. This will be applied to all kernels generated.
### Chemical Potential Functions
- chemical_potentials: Vector of names of chemical potential variables.
- susceptibilities: Vector of names of susceptibilities, chi. This vector should be the same length as "chemical_potentials" as each entry in this vector corresponds to the same entry in "chemical_potentials".
- mobilities: Vector of mobilities--either scalars or tensors--that correspond to the "chemical_potentials" variables. The entries should consist of diffusivities multiplied by susceptibilities.
- anisotropic: If the entries in "D" are tensors, set this to "true".
- free_energies_w: Vector of density functions that determine the densities corresponding with each "chemical_potentials". The total number of entries is the number of chemical potentials times the number of switching functions.
These define the behavior of the chemical potential variables.
- `chemical_potentials`: Vector of names of chemical potential variables.
- `susceptibilities`: Vector of names of susceptibilities, chi. This vector should be the same length as "chemical_potentials" as each entry in this vector corresponds to the same entry in "chemical_potentials".
- `mobilities`: Vector of mobilities--either scalars or tensors--that correspond to the "chemical_potentials" variables. The entries should consist of diffusivities multiplied by susceptibilities.
- `anisotropic`: If the entries in "D" are tensors, set this to "true".
- `free_energies_w`: Vector of density functions that determine the densities corresponding with each "chemical_potentials". The total number of entries is the number of chemical potentials times the number of switching functions.
### Primary Set of Order Parameter Functions
- op_num: Number of order parameters auto-generated in Variable block.
- var_name_base: Name of order parameters auto-generated in Variable block.
- free_energies_gr: Vector of chemical potential density functions used for this set of order parameters. Each entry corresponds to the phase in the same entry of "switching_function_names".
- mobility_name_gr: Name of scalar mobility used with this set of order parameters.
- energy_barrier_gr: Name of energy barrier coefficient (m in [cite:moelans_quantitative_2008].) used with this set of order parameters.
- gamma_gr: Name of gamma coefficient used with this set of order parameters which controls interface energy between these order parameters.
- kappa_gr: Name of kappa coefficient to be used with this set of order parameters.
Inputs affecting a group of auto-generated variables using the PolycrystalVarible
action. These typically represent grains in a polycrystal system.
- `op_num`: Number of order parameters auto-generated in Variable block.
- `var_name_base`: Name of order parameters auto-generated in Variable block.
- `free_energies_gr`: Vector of chemical potential density functions used for this set of order parameters. Each entry corresponds to the phase in the same entry of "switching_function_names".
- `mobility_name_gr`: Name of scalar mobility used with this set of order parameters.
- `energy_barrier_gr`: Name of energy barrier coefficient (m in [cite:moelans_quantitative_2008].) used with this set of order parameters.
- `gamma_gr`: Name of gamma coefficient used with this set of order parameters which controls interface energy between these order parameters.
- `kappa_gr`: Name of kappa coefficient to be used with this set of order parameters.
### Second Set of Order Parameter Functions
- additional_ops: Vector of additional order parameters used in the model. Optional.
- free_energies_op: Vector of chemical potential density functions used for this set of order parameters. Each entry corresponds to the phase in the same entry of "switching_function_names".
- mobility_name_op: Name of scalar mobility used with this set of order parameters. If "additional_ops" is blank then this value and the others below will not be called and their values do not matter.
- energy_barrier_op: Name of energy barrier coefficient used with this set of order parameters.
- gamma_op: Name of gamma coefficient used with this set of order parameters which controls interface energy between these order parameters.
- gamma_grxop: Cross term gamma coefficient that controls the interface energy between the primary and second set of order parameters.
- kappa_op: Name of kappa coefficient to be used with this set of order parameters.
This optional set can include additional order parameters to distinguish phases
or some other field not associated with the first set of order parameters.
- `additional_ops`: Vector of additional order parameters used in the model. Optional.
- `free_energies_op`: Vector of chemical potential density functions used for this set of order parameters. Each entry corresponds to the phase in the same entry of "switching_function_names".
- `mobility_name_op`: Name of scalar mobility used with this set of order parameters. If "additional_ops" is blank then this value and the others below will not be called and their values do not matter.
- `energy_barrier_op`: Name of energy barrier coefficient used with this set of order parameters.
- `gamma_op`: Name of gamma coefficient used with this set of order parameters which controls interface energy between these order parameters.
- `gamma_grxop`: Cross term gamma coefficient that controls the interface energy between the primary and second set of order parameters.
- `kappa_op`: Name of kappa coefficient to be used with this set of order parameters.
!syntax parameters /Modules/PhaseField/GrandPotential/GrandPotentialKernelAction
## Example Input File Syntax
```
[Modules]
[./PhaseField]
[./GrandPotential]
switching_function_names = 'hb hm'
anisotropic = false
chemical_potentials = 'w'
mobilities = 'chiD'
susceptibilities = 'chi'
free_energies_w = 'rhob rhom'
gamma_gr = gamma
mobility_name_gr = L
kappa_gr = kappa
free_energies_gr = 'omegab omegam'
additional_ops = 'phi'
gamma_grxop = gamma
mobility_name_op = L_phi
kappa_op = kappa
free_energies_op = 'omegab omegam'
[../]
[../]
[]
[Materials]
#REFERENCES
[./constants]
type = GenericConstantMaterial
prop_names = 'Va cb_eq cm_eq kb km mu gamma L L_phi kappa kB'
prop_values = '0.04092 1.0 1e-5 1400 140 1.5 1.5 5.3e+3 2.3e+4 295.85 8.6173324e-5'
[../]
#SWITCHING FUNCTIONS
[./switchb]
type = SwitchingFunctionMultiPhaseMaterial
h_name = hb
all_etas = 'phi eta0'
phase_etas = 'phi'
[../]
[./switchm]
type = SwitchingFunctionMultiPhaseMaterial
h_name = hm
all_etas = 'phi eta0'
phase_etas = 'eta0'
[../]
[./omegab]
type = DerivativeParsedMaterial
f_name = omegab
args = 'w phi'
material_property_names = 'Va kb cb_eq'
function = '-0.5*w^2/Va^2/kb - w/Va*cb_eq'
derivative_order = 2
[../]
[./omegam]
type = DerivativeParsedMaterial
f_name = omegam
args = 'w eta0'
material_property_names = 'Va km cm_eq'
function = '-0.5*w^2/Va^2/km - w/Va*cm_eq'
derivative_order = 2
[../]
[./chi]
type = DerivativeParsedMaterial
f_name = chi
args = 'w'
material_property_names = 'Va hb hm kb km'
function = '(hm/km + hb/kb)/Va^2'
derivative_order = 2
[../]
#DENSITIES/CONCENTRATION
[./rhob]
type = DerivativeParsedMaterial
f_name = rhob
args = 'w'
material_property_names = 'Va kb cb_eq'
function = 'w/Va^2/kb + cb_eq/Va'
derivative_order = 1
[../]
[./rhom]
type = DerivativeParsedMaterial
f_name = rhom
args = 'w eta0'
material_property_names = 'Va km cm_eq(eta0)'
function = 'w/Va^2/km + cm_eq/Va'
derivative_order = 1
[../]
[./concentration]
type = ParsedMaterial
f_name = c
material_property_names = 'rhom hm rhob hb Va'
function = 'Va*(hm*rhom + hb*rhob)'
outputs = exodus
[../]
[./mobility]
type = DerivativeParsedMaterial
material_property_names = 'chi kB'
constant_names = 'T Em D0'
constant_expressions = '1400 2.4 1.25e2'
f_name = chiD
function = 'chi*D0*exp(-Em/kB/T)'
[../]
[]
```
!listing modules/phase_field/test/tests/actions/gpm_kernel.i
start=Modules
end=Preconditioning
!bibtex bibliography
@@ -1,15 +1,25 @@
<!-- MOOSE Documentation Stub: Remove this when content is added. -->
# ACGrGrMulti
!alert construction title=Undocumented Class
The ACGrGrMulti has not been documented, if you would like to contribute to MOOSE by
writing documentation, please see [/generate.md]. The content contained on this page explains
the typical documentation associated with a MooseObject; however, what is contained is ultimately
determined by what is necessary to make the documentation clear for users.
!syntax description /Kernels/ACGrGrMulti
Implements the term
\begin{equation}
L \mu \left( \eta_{\alpha i}^3 - \eta_{\alpha i} + 2\eta_{\alpha i} \sum_{\beta=1}^N
\sum_{j=1, \alpha i \neq \beta j}^{p_\beta} \gamma_{\alpha i \beta j} \eta_{\beta j}^2 \right)
\end{equation}
for a multiphase / multigrain Grand Potential model. The parameters $\mu$
(hardcoded material property name `mu`) and $\gamma$ (`gamma_names`) can be
calculated using the [`GrandPotentialInterface`](/GrandPotentialInterface.md)
material.
$L$ (`mob_name`) is an interfacial mobility, $\eta_{\alpha i}$ (`variable`) is
the kernel variable, and $\eta_{\beta j}$ (`v`) are the coupled phase / grain
order parameters. If $L$ is a [Function Material](/FunctionMaterials.md)
depending on any non-linear variable not listed in `v` those will have to be
listed in `args`.
!syntax parameters /Kernels/ACGrGrMulti
!syntax inputs /Kernels/ACGrGrMulti
@@ -0,0 +1,56 @@
# GrandPotentialInterface
!syntax description /Materials/GrandPotentialInterface
The multiphase Grand Potential model is parameterized using a bulk free energy
coefficient $\mu$, a gradient interface coefficient $\kappa$, and a set of
interface pair coefficients $\gamma_{\alpha i \beta j}$ [cite:AagesenGP2018].
Note that this model is a multi phase / poly crystal model and the indices
$\alpha$ and $\beta$ represent phases and $i$ and $j$ represent grains.
This material class provides the above mentioned parameters and calculates them
using the physical parameters of the free energy area density $\sigma_{\alpha i
\beta j}$ (`sigma`) for the interface between each pair of phases, and an
interface width $l$ (`width`).
To compute the parameters first either the median of all $\sigma_{\alpha i \beta
j}$ is chosen or, if supplied by the user, the $\sigma_{\alpha i \beta j}$ entry
with the index `sigma_index` is chosen (overriding the median computation). The
chosen $\sigma_{\alpha i \beta j}$ is assigned a value $\gamma_{\alpha i \beta
j}=1.5$. For this gamma value a set of analytical expessions holds
\begin{equation}
\begin{aligned}
\kappa &= \frac 34 \sigma_{\alpha i \beta j} l_{\alpha i \beta j}\\
\mu &= \frac{6 \sigma_{\alpha i \beta j}} {l_{\alpha i \beta j}}.
\end{aligned}
\end{equation}
!alert note title=Interface widths
Note that the interface with $l$ (`width`) is only guaranteed for the interface
with either the median $\sigma_{\alpha i \beta j}$ or - if provided - the index
supplied in `sigma_index`. All other interface widths are a function of their
respective interfacial free energies.
With $\kappa$ and $\mu$ determined the remaining $\gamma_{\alpha i \beta j}$ can
be computed using the fitted relation [cite:MoelansWeb]
\begin{equation}
\begin{aligned}
g_{\alpha i \beta j} &= \frac{\sigma_{\alpha i \beta j}}{\sqrt{\mu\kappa}} \\
\gamma_{\alpha i \beta j} &= \left( -5.288 g_{\alpha i \beta j}^8 -0.09364 g_{\alpha i \beta j}^6 + 9.965 g_{\alpha i \beta j}^4 -8.183 g_{\alpha i \beta j}^2 + 2.007 \right)^{-1}.
\end{aligned}
\end{equation}
The material propertied provided by this class are directly used by the
[`ACGrGrMulti`](/ACGrGrMulti.md) and [`ACInterface`](/ACInterface.md) objects
and indirectly used by the
[GrandPotentialKernelAction](/action/GrandPotentialKernelAction.md).
!syntax parameters /Materials/GrandPotentialInterface
!syntax inputs /Materials/GrandPotentialInterface
!syntax children /Materials/GrandPotentialInterface
!bibtex bibliography
@@ -66,7 +66,6 @@
- /InterfaceKernels/InterfaceDiffusionFluxMatch
- /Kernels/ACGBPoly
- /Kernels/ACGrGrElasticDrivingForce
- /Kernels/ACGrGrMulti
- /Kernels/ACGrGrPoly
- /Kernels/ACInterfaceKobayashi2
- /Kernels/ACSEDGPoly
Oops, something went wrong.

0 comments on commit dbe2939

Please sign in to comment.