Phase Field Specifications

Number of Phase Functions

Number of phase functions = {integer}

Description / Usage

Activates generalized phase function capability. Currently, the number of phase functions cannot exceed five. Phase function fields are essentially identical to level set fields, but more than one can be activated for various purposes. Please see technical discussion below.


A sample input card is:

Number of phase functions = 1

Technical Discussion

Various uses of the phase function approach have been explored. To track multiple interface types from multiple fluids requires more than one level-set field. This capability can also be deployed for tracking imprinted solid surfaces (moving) together with capillary free surfaces. Consult the tutorials.


GT-026.3 GOMA’s Overset Mesh Method: User Tutorial, November 19 2003. P. R. Schunk and E. D. Wilkes

Phase Function Slave Surface

Phase Function Slave Surface = <char_string>

Description / Usage

This card is used to designate that the phase function degree of freedom is being slaved to a boundary. This card is used primarily in the overset grid algorithm in which a phase function field is slaved to the surface of the embedded body.


YES|ON (not case sensitive) will allow the phase function field to be slaved to a surface. Currently, no support is given to more than one slaved function fields or to problems in which there are slaved and unslaved (free?) phase function fields.


A typical length scale input card looks like:

Phase Function Slave Surface = yes

Technical Discussion

One of the nice properties of level set/phase function fields is that they can be used to find distances from surfaces. This function can be used quite apart from their abilities to track interfaces. Including this card informs Goma that the phase function 1 field is going to be used in this capacity and that no PDE is going to be solved to evolve it. Instead, the values of this field will be “slaved” to a specific surface in the problem and their values will be determined in reference to this surface in a process very reminicent of renormalization.

The overset grid method makes use of a slaved phase function field. In that case, the phase function field is slaved to the surface of the embedded object. As the embedded object moves through the flow field, the slaved phase function values will be updated by determining the distance of a given node to the object’s surface. This slaved phase function field is then used in a variety of ways to compute the influence of the embedded object on the flow and stresses of the surrounding fluid.

Phase Function Initialization Method

Phase Function Initialization Method = {method_name} {parameter list}

Description / Usage

This card specifies the means by which the phase functions are initialized. After the initial instance, subsequent instances of {model_name} {parameter_list} are used to describe initializations of phase fields 2 through 5. This card constructs from a representation of the starting interface shape, a value for the distance function at every node in the mesh. The syntax of the card is as follows:


A character string which identifies the initialization option desired. Choices for this string are: Projection, Exodus, Nodeset, Surfaces, SM_object.

{parameter list}

This is a variable parameter list specific to each option. The nature of it for each method is detailed in the syntax descriptions below.

Below are the exact syntax used for each initialization method, a brief description of the method and a specification of any additional required parameters.


This method computes the initial phase function field by calling a user-specified routine which returns the signed distance function for a given point. It has no parameter list after its name.


Using this card indicates that the initial phase function field is to be read from the exodus file specified earlier (see FEM file and Initial Guess cards for ** read_exoII** option). This card has no parameter list after its name.

Nodeset <integer1> EB <integer2>

This method establishes the initial location of the interface as the boundary between two element blocks. The value <integer1> is the nodeset identification number for an internal nodeset defined to exist at the interface between the two element blocks. The character string EB is required. The integer <integer2> is the element block id number to which positive values of phase function function is going to be assigned.

Surfaces <integer>

This card establishes the initial phase function function by referring to a set of primitive geometric objects. It is the easiest to use and the most general. The integer value <integer> is the number of surface objects that are used to construct the initial interface. This number of SURF object cards must follow this card. This is the syntax of the SURF object card:

SURF = {object_name} {float list}

{object_name}: a character string identifying the type of geometric object. Options are: PLANE, CIRCLE, SPHERE, SS, USER.

{float list}: geometric parameters associated with each object as float values.

The following is the syntax and description for each geometric object option, i.e., the “{object_name} {float list}” part of SURF

PLANE <nx. <ny> <nz> <d>

This card constructs a planar interface surface.The float values <nx>, <ny>, <nz> define a vector normal to this plane with the restriction that the sign of the vector must be such that it points from the negative side of the interface to the positive side of the interface. The float value <d> effectively represents the distance of the plane from the origin. Its value must be set, however, so that the dot product of any position vector to a point on the desired plane and the vector (nx,ny,nz) must be equal to <d> (it is a property of planes that this number is independent of the point on the plane that is chosen).

CIRCLE <cx> <cy> <radius>

This card constructs a circular interface surface in a two-dimensional domain. The float values <cx> <cy> identify the coordinates of the center of the circle. The float value <radius> establishes the radius of the curve. By definition, points interior to the circle are assigned negative phase function function values.

SPHERE <cx> <cy> <cz> <radius>

This card constructs a spherical interface surface in a three-dimensional domain. The float values <cx> <cy> <cz> identify the coordinates of the center of the circle. The float value <radius> establishes the radius of the sphere. By definition, points interior to the sphere are assigned negative phase function function values.

SS {ss_id}

This card uses an existing sideset in the problem as a defined geometric object for construction of an interface. The parameter <ss_id> identifies this sideset.

USER {user-defined float list}

This card indicates the user has defined an object function using the supplied parameter float list that returns a signed distance value when supplied with the coordinates of a point in space. This object function should appear in the function call user_init_object * in the file **user_pre.c.*

SM_object {object_type} {object_name}

This card allows the user to initialize the phase function location by using a piece of solid model geometry. The solid model object_type can be either FACE or ** BODY.** A 2D initialization uses the boundary of the specified FACE (or surface) as the 0 phase function. A 3D initialization uses the boundary of the specified BODY (or volume) as the 0 phase function.


Three examples of initialization methods for a single phase function are provide below:

Phase Function Initialization Method = Nodeset 20 EB 1
Phase Function Initialization Method = Surfaces 3
        SURF = PLANE -1. 0. 0. -3.
        SURF = CIRCLE -2 0 1
        SURF = CIRCLE -3 0 0.5
Phase Function Initialization Method = SM_object BODY my_blob

Technical Discussion

Please consult Level Set Initialization Method card for discussion.


GT-020.1: Tutorial on Level Set Interface Tracking in GOMA, February 27, 2001, T.A. Baer

Phase Function Renormalization Tolerance

Phase Funtion Renormalization Tolerance = <float>

Description / Usage

This parameter provides a means for controlling how often renormalization (redistancing) operations are performed on the phase function fields as they evolve by fixing the size of the deviation allowed between the average absolute magnitude of the phase function gradient near each respecitve interface and unity, the theoretical value observed for a pure distance function.


Value of the tolerance, the allowable deviation.

The range of this parameter is any positive real number, however, it is rare to use values smaller than 0.1 or larger than 5.0. The value of the tolerance defaults to 0.5 if this card is not specified. Note that a global parameter value is applied to all phase function fields in the problem. Currently, there is no provision for each phase function field to have a unique value for this parameter.

This parameter is exactly analogous to the similarly named parameter used in standard level set interface tracking.


This is a sample renormalization card:

Phase Function Renormalization Tolerance = 0.25

Technical Discussion

The reader is referred to the Technical Discussion associated with Level Set Renormalization Tolerance card as it is virtually identical to the operation of it in the current context. The only thing to note is that each phase function is evaluted separately against this tolerance and each function is renormalized independently if the tolerance is exceeded. That is, exceeding the tolerance by one phase function field only triggers renormalization for that field. The other phase function fields are left unaltered.


What is a proper value for this parameter? Values on the order of unity should work well. Renormalization based on gradient can be disabled completely by choosing a very large value for this parameter. Conversely, a very small value will always result in a renormalization step.

Is it possible to renormalize too often? Yes. Renormalization is an extraphysical procedure designed solely to improve the numerical performance of the interface tracker. As such, it can add or subtract volume to or from the phases represented by the interface contour. Renormalizing too often, therefore, can result in errors being introduced. The renormalization procedure, Huygens_Constrained, attempts to mitigate this effect.

Phase Function Renormalization Method

Phase Function Renormalization Method = <char_string>

Description / Usage

This card indicates the method to be used to renormalize the phase function fields during the course of the computation.


A character string which specifies the type of method for renormalization. Choices for this string are: Huygens, Huygens_Constrained, Correction.

Each method is described below; see also the Technical Discussion.


In this method a set of m points P is constructed:

\(\mathbf{P} = \left\{ \left( x_i, y_i, z_i \right), \, i = 1,2, \ldots m | \quad \phi_j \left( x_i, y_i, z_i \right) = 0 \right\}\)

which in a sense represent a discretization of the interface location. The finite element interpolation functions are used to find exact locations for these points. For each mesh node \(j\), a minimum distance \(D_j\), can be found to this set of points. Renormalization is accomplished by replacing the phase field value at this node \(\phi_j\) with \(D_j\) multiplied by the sign of the previous value for the phase field function. This method is fast and robust and reasonably accurate given sufficiently refined meshes using high order phase field interpolation. However, this method is prone to losing material if low order phase field interpolation is employed.


This method renormalizes the function in much the same way as the Huygens method, except it employs a Lagrange multiplier to enforce a global integrated constraint that requires the volume occupied by the “negative” phase to remain unchanged before and after renormalization. This requirement makes this method better at conserving mass. However, since it enforces a global constraint, it is possible that material might be moved nonphysically around the computational domain.


This is a sample card:

Phase Function Renormalization Method = Huygens_Constrained

Technical Discussion

Renormalization is an operation particular to phase function (and level set) embedded interface tracking. The phase function fields are defined originally as distanes from a known curve or surface. This type of function offers benefits in terms of smoothness of representation and the easy with which interfacial physics can be included. However, typically we are evolving these functions using the commonplace advection operator:

\[\frac{D \phi_j}{D t} = 0\]

which does not necessarily perpetuate the phase field as a distance function. Sharp gradients or flat regions in the function may therefore appear near the interface which have various detrimental effects on the accuracy of the solution. The solution that is most often used is to periodically construct the interfaces from the phase function field and renormalize the phase function fields, i.e. reevaluated them so that they return to being distance functions from the interface. In general, this is a satisfactory solution if the frequency of renormalization is not too great. To set the criteria for determining when to renormalize the phase functions see the Phase Function Renormalization Tolerance card.