- anisotropicfalseWhether or not each mobility is anisotropic
Default:false
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Controllable:No
Description:Whether or not each mobility is anisotropic
- chemical_potentialsList of chemical potential variables
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:List of chemical potential variables
- free_energies_grList of free energies for each phase. Place in same order as switching_function_names.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of free energies for each phase. Place in same order as switching_function_names.
- free_energies_wList of functions for each phase. Length should be length of chemical_potentials * length of switching_function_names.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of functions for each phase. Length should be length of chemical_potentials * length of switching_function_names.
- mobilitiesVector of mobilities that must match chemical_potentials
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of mobilities that must match chemical_potentials
- op_numspecifies the number of grains to create
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:specifies the number of grains to create
- susceptibilitiesList of susceptibilities that correspond to chemical_potentials
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of susceptibilities that correspond to chemical_potentials
- switching_function_namesSwitching function materials that provide switching function for free_energies_*.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:Switching function materials that provide switching function for free_energies_*.
- var_name_basespecifies the base name of the grain variables
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:specifies the base name of the grain variables
GrandPotentialKernelAction
Automatically generate most or all of the kernels for the grand potential model
For more information on the multi-phase, multi-order parameter grand potential model, see Aagesen et al. (2018) (which is based on Plapp (2011) and Moelans et al. (2008)). Documentation on the multi-phase, multi-order parameter grand potential model itself, including MOOSE implementation, is available here:
Grand Potential Multi-Phase, Multi-Order Parameter Model
In this action, the following kernels are generated for each chemical potential variable:
CoupledSwitchingTimeDerivative
(multiple kernels: one that corresponds with each order parameter)
The following kernels are generated for each order parameter:
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
Global Inputs
These are applied throughout the kernels.
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
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
Inputs affecting a group of auto-generated variables using the PolycrystalVariables 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 Moelans et al. (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
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.
Input Parameters
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:If specified only the blocks named will be visited and made active
- additional_opsList of any additional order parameters which are not grains
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:List of any additional order parameters which are not grains
- concentrationsList of concentration variables for strict mass conservation
C++ Type:std::vector<NonlinearVariableName>
Unit:(no unit assumed)
Controllable:No
Description:List of concentration variables for strict mass conservation
- free_energies_opList of free energies used by additional order parameters. Places in same order as switching_function_names.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of free energies used by additional order parameters. Places in same order as switching_function_names.
- gamma_grgammaName of the gamma used with grains
Default:gamma
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of the gamma used with grains
- gamma_grxopgammaName of the gamma used when grains interact with other order parameters
Default:gamma
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of the gamma used when grains interact with other order parameters
- gamma_opgammaName of the gamma used with additional order parameters
Default:gamma
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of the gamma used with additional order parameters
- hj_c_minList of body forces coefficients for strict mass conservation formulation that indicates the minima in concentration free energy.Place in same order as switching_function_names.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of body forces coefficients for strict mass conservation formulation that indicates the minima in concentration free energy.Place in same order as switching_function_names.
- hj_over_kVaList of MatReaction coefficients for strict mass conservation formulation that relates chemical potential with switching functionj between phasesPlace in same order as switching_function_names.
C++ Type:std::vector<MaterialPropertyName>
Unit:(no unit assumed)
Controllable:No
Description:List of MatReaction coefficients for strict mass conservation formulation that relates chemical potential with switching functionj between phasesPlace in same order as switching_function_names.
- implicitTrueWhether kernels are implicit or not
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether kernels are implicit or not
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- kappa_grkappaThe kappa used with the grains
Default:kappa
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The kappa used with the grains
- kappa_opkappaThe kappa used with additional_ops
Default:kappa
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The kappa used with additional_ops
- mass_conservationFalseWhether strict mass conservation formulation is used or not
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether strict mass conservation formulation is used or not
- mobility_name_grLName of mobility to be used with grains
Default:L
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of mobility to be used with grains
- mobility_name_opLName of mobility to be used with additional_ops
Default:L
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Name of mobility to be used with additional_ops
- use_displaced_meshFalseWhether to use displaced mesh in the kernels
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether to use displaced mesh in the kernels
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
Advanced Parameters
Strict Mass Conservation formulation
This optional formulation is enforcing a strict mass conservation by generating kernels for concentration, and coupled it with chemical potential from the Grand Potential model.
'mass_conservation' : set this to "true" to choose strict mass conservation formulation
'concentrations' : Vector of concentration variables used in the model.
'h_c_min' : Vector of coefficients for the BodyForce kernel in concentration-chemical potential coupling which indicates the minima of the parabolic free energy functions
'h_over_kVa' : Vector of coefficients for the MatReaction kernel in concentration-chemical potential coupling which is related to the coefficients of the parabolic free energy functions
The following kernels are generated for each concentration variables:
The coupling between concentration and chemical potential is generated using the following kernel:
MatReaction
(multiple kernels: one that corresponds with each order parameter)'BodyForce' (multiple kernels: one that corresponds with each order parameter)
The materials associated with strict mass conservation can be created automatically using GrandPotentialSinteringMaterial
Example Input File Syntax
[Modules]
[./PhaseField]
[./GrandPotential]
switching_function_names = 'hb hm'
chemical_potentials = 'w'
anisotropic = 'false'
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
property_name = omegab
coupled_variables = 'w phi'
material_property_names = 'Va kb cb_eq'
expression = '-0.5*w^2/Va^2/kb - w/Va*cb_eq'
derivative_order = 2
[../]
[./omegam]
type = DerivativeParsedMaterial
property_name = omegam
coupled_variables = 'w eta0'
material_property_names = 'Va km cm_eq'
expression = '-0.5*w^2/Va^2/km - w/Va*cm_eq'
derivative_order = 2
[../]
[./chi]
type = DerivativeParsedMaterial
property_name = chi
coupled_variables = 'w'
material_property_names = 'Va hb hm kb km'
expression = '(hm/km + hb/kb)/Va^2'
derivative_order = 2
[../]
#DENSITIES/CONCENTRATION
[./rhob]
type = DerivativeParsedMaterial
property_name = rhob
coupled_variables = 'w'
material_property_names = 'Va kb cb_eq'
expression = 'w/Va^2/kb + cb_eq/Va'
derivative_order = 1
[../]
[./rhom]
type = DerivativeParsedMaterial
property_name = rhom
coupled_variables = 'w eta0'
material_property_names = 'Va km cm_eq(eta0)'
expression = 'w/Va^2/km + cm_eq/Va'
derivative_order = 1
[../]
[./concentration]
type = ParsedMaterial
property_name = c
material_property_names = 'rhom hm rhob hb Va'
expression = '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'
property_name = chiD
expression = 'chi*D0*exp(-Em/kB/T)'
[../]
[]
(moose/modules/phase_field/test/tests/actions/gpm_kernel.i)References
- Larry K. Aagesen, Yipeng Gao, Daniel Schwen, and Karim Ahmed.
Grand-potential-based phase-field model for multiple phases, grains, and chemical components.
Phys. Rev. E, 98:023309, Aug 2018.
URL: https://link.aps.org/doi/10.1103/PhysRevE.98.023309, doi:10.1103/PhysRevE.98.023309.[BibTeX]
- N. Moelans, B. Blanpain, and P. Wollants.
Quantitative analysis of grain boundary properties in a generalized phase field model for grain growth in anisotropic systems.
Physical Review B, 78(2):024113, Jul 2008.
URL: http://link.aps.org/doi/10.1103/PhysRevB.78.024113 (visited on 2016-06-02), doi:10.1103/PhysRevB.78.024113.[BibTeX]
- Mathis Plapp.
Unified derivation of phase-field models for alloy solidification from a grand-potential functional.
Physical Review E, 84(3):031601, Sep 2011.
URL: https://link.aps.org/doi/10.1103/PhysRevE.84.031601, doi:10.1103/PhysRevE.84.031601.[BibTeX]