Specifies a contact angle model for free surfaces with surface tension.


AcuSolve Command


CONTACT_ANGLE_MODEL("name") {parameters...}


User-given name.


type (enumerated) [=free]
Type of the contact angle.
Automatically computed. Used at inflow and outflow boundaries.
constant or const
Constant contact angle. Requires contact_angle.
contact_angle (real) >0 <180 [=90]
Constant value of the contact angle. Used with constant type.
multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the contact angle. If none, no scaling is performed. Not used with free type.


This command specifies a contact angle model for free surfaces with surface tension. See the SURFACE_TENSION_MODEL command. The contact angle is defined as the angle between the outward normal to the free surface and the outward normal to the side boundary. It may be any angle between zero and 180 degrees; it is small for a hydrophilic surface and large for a hydrophobic surface. The contact angle is a function of both fluids and the wall material, and must be determined experimentally. For example, a constant contact angle may be given by:
CONTACT_ANGLE_MODEL( "water/air @ smooth aluminum" ) {
   type                                = constant 
   contact_angle                       = 90
If the side wall is not a solid wall but an inflow or outflow boundary, two strategies are available. If the boundary is far away from the region of interest, a constant contact angle of 90 degrees can be used. Otherwise, type=free is recommended:
CONTACT_ANGLE_MODEL( "water/air @ inflow" ) {
   type       = free

Here, the contact angle is not given but instead extracted from the solution in such a way as to make the slope of the free surface smooth near the boundary.

CONTACT_ANGLE_MODEL commands are referenced by SIMPLE_BOUNDARY_CONDITION and FREE_SURFACE commands, see the SURFACE_TENSION_MODEL command for examples.

Like flux boundary conditions, the contact angle is weakly enforced. This means that the solution may not obviously reflect the specified contact angle, especially if the meniscus is not well resolved.

The multiplier_function parameter may be used to uniformly scale the contact angle values. The value of this parameter refers to the user-given name of a MULTIPLIER_FUNCTION command in the input file. For example, a contact angle that ramps from 90 degrees to 120 degrees over the first 10 time steps may be specified by:
CONTACT_ANGLE_MODEL( "ramped contact angle model" ) {
   type                 = constant
   contact_angle        = 90
   multiplier_function  = "ramped"
   MULTIPLIER_FUNCTION( "ramped" ) {
   type                 = piecewise_linear
   curve_fit_values     = { 1, 90 ; 10, 120 }
   curve_fit_variable   = time_step

The contact angle is clipped so that it always remains strictly between zero and 180 degrees.