Moving Boundaries

The gridMotion module deforms the mesh as selected boundaries move. The boundaryMotion module supplies prescribed boundary displacements from time formulas or histories. Choose a displacement when the boundary position is known, or a volume-rate specification when using the area-based motion described below.

Setup

Load both modules before the control-file braces. Add moving, a nonzero grid_sdir direction, and one motion specification to each moving boundary. For example, these entries translate a wall in the positive x direction:

loadModule: gridMotion
loadModule: boundaryMotion
{
boundary_conditions: <
  Wall=noslip(adiabatic, moving, grid_sdir=[1, 0, 0], grid_s=expression("0.001*t"))
>
}

Use boundary names from the mesh and supply the remaining flow setup as usual. grid_sdir is normalized to a unit vector. Boundaries sharing nodes must prescribe compatible motion.

Displacement

grid_s specifies displacement in metres along grid_sdir. A formula uses simulation time t in seconds; expr is an alias for expression. For a history, replace the formula with grid_s=file("displacement.history").

The history has three whitespace-separated numeric columns: time in seconds, displacement in metres, and interface radius in metres. Use a constant positive radius for translational motion. For example:

displacement.history
0.0  0.000  1.0
1.0  0.001  1.0
2.0  0.002  1.0

Supply at least two rows with increasing times and numeric data only. The first time must be at or before the earliest evaluated time, and the final time must be strictly later than every evaluated time. Displacement and radius are interpolated linearly between rows. For a step beginning at time \(t\) with length \(\Delta t\), grid_s evaluates its input at \(t+\Delta t\).

Volume-rate motion

grid_vdot specifies a volume rate in \(m^3/s\). It accepts a constant with compatible units, a time formula, or a two-column history:

Wall=noslip(adiabatic, moving, grid_sdir=[1, 0, 0], grid_vdot=expression("0.001+0.0001*t"))

For a history, use grid_vdot=file("volume_rate.history"). Its columns are time in seconds and volume rate in \(m^3/s\):

volume_rate.history
0.0  0.0010
1.0  0.0011
2.0  0.0012

Use the same numeric-row and time-range requirements as for grid_s. The volume rate is interpolated linearly and evaluated at the step’s starting time \(t\). If its value is \(Q(t)\) and the boundary area is \(A(t)\), the displacement along grid_sdir is

\[s = (t+\Delta t)\frac{Q(t)}{A(t)}.\]

This relation uses the current rate to set displacement. Supply a grid_s history when the desired displacement is obtained by integrating a changing rate over time.

Both history inputs use file(”…”) with any filename suffix or none. Their column layouts remain as specified above. Existing quoted formulas and .dat filenames are also accepted.