# CahnHilliard

Cahn-Hilliard Kernel that uses a DerivativeMaterial Free Energy and a scalar (isotropic) mobility

The kernel acts on the concentration variable and implements the weak form

(1)

of the strong form term

(2)

where is the local free energy density of the system which depends on an arbitrary number of concnetration variables . It uses the relation

(3)

which implies that cannot be a function of anything but the listed MOOSE variables .

(mob_name) is a scalar (isotropic) mobility, and (f_name) is a free energy density provided by the function material.

Note that this kernel implements only the component of the free energy functional that is not depending on . The dependent terms that arise from the gradient interface energy are handled separately in the CHInterface kernel.

For an anisotropic version of this kernel see CahnHilliardAniso, which expects a tensor valued mobility .

## Input Parameters

• variableThe name of the variable that this Kernel operates on

C++ Type:NonlinearVariableName

Options:

Description:The name of the variable that this Kernel operates on

• f_nameBase name of the free energy function F defined in a DerivativeParsedMaterial

C++ Type:MaterialPropertyName

Options:

Description:Base name of the free energy function F defined in a DerivativeParsedMaterial

### Required Parameters

• mob_nameMThe mobility used with the kernel

Default:M

C++ Type:MaterialPropertyName

Options:

Description:The mobility used with the kernel

C++ Type:std::vector

Options:

Description:Vector of displacement gradient variables (see Modules/PhaseField/DisplacementGradients action)

• argsVector of arguments of the mobility

C++ Type:std::vector

Options:

Description:Vector of arguments of the mobility

• blockThe list of block ids (SubdomainID) that this object will be applied

C++ Type:std::vector

Options:

Description:The list of block ids (SubdomainID) that this object will be applied

### Optional Parameters

• enableTrueSet the enabled status of the MooseObject.

Default:True

C++ Type:bool

Options:

Description:Set the enabled status of the MooseObject.

• save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

C++ Type:std::vector

Options:

Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

• use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Default:False

C++ Type:bool

Options:

Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

• control_tagsAdds user-defined labels for accessing object parameters via control logic.

C++ Type:std::vector

Options:

Description:Adds user-defined labels for accessing object parameters via control logic.

• seed0The seed for the master random number generator

Default:0

C++ Type:unsigned int

Options:

Description:The seed for the master random number generator

• diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

C++ Type:std::vector

Options:

Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

• implicitTrueDetermines whether this object is calculated using an implicit or explicit form

Default:True

C++ Type:bool

Options:

Description:Determines whether this object is calculated using an implicit or explicit form

• vector_tagsnontimeThe tag for the vectors this Kernel should fill

Default:nontime

C++ Type:MultiMooseEnum

Options:nontime time

Description:The tag for the vectors this Kernel should fill

• extra_vector_tagsThe extra tags for the vectors this Kernel should fill

C++ Type:std::vector

Options:

Description:The extra tags for the vectors this Kernel should fill

• matrix_tagssystemThe tag for the matrices this Kernel should fill

Default:system

C++ Type:MultiMooseEnum

Options:nontime system

Description:The tag for the matrices this Kernel should fill

• extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

C++ Type:std::vector

Options:

Description:The extra tags for the matrices this Kernel should fill