Periodic System

Periodic boundary conditions enforce value constraints on separate boundaries in the mesh. This capability is useful for modeling quasi-infinite domains and systems with conserved quantities.

MOOSE has full support for Periodic BCs in

  • 1D, 2D, and 3D.

  • With mesh adaptivity.

  • Can be restricted to specific variables.

Arbitrary translation vectors and arbitrary mapping transformations between boundaries are also supported for defining periodicity.

In this example, periodic boundary conditions are set on variable u in the X and Y axis directions. The boundaries that are matched on all sides of the system are automatically detected, due to using the "auto_direction" parameter.

commentnote

The automatic detection of the boundaries to match is only available in the X, Y and Z axis directions.

[BCs]
  [./Periodic]
    [./all]
      variable = u
      auto_direction = 'x y'
    [../]
  [../]
[]
(test/tests/bcs/periodic/auto_periodic_bc_test.i)

Translation Periodic Boundaries

In this example, periodic boundary conditions are set on variable u in the X and Y axis directions, using the exact distance for the translation needed to go from one periodic boundary to the other. The boundaries are also explicitly specified using the "primary" and "secondary" parameters.

[BCs]
  [./Periodic]
    [./x]
      variable = u
      primary = 3
      secondary = 1
      translation = '40 0 0'
    [../]

    [./y]
      variable = u
      primary = 0
      secondary = 2
      translation = '0 40 0'
    [../]
  [../]
[]
(test/tests/bcs/periodic/periodic_bc_test.i)

Function Transform Periodic Boundaries

In this example, periodic boundary conditions are set on variable u in arbitrary non-matching directions, using the mapping functions to go from one boundary to the other. The transformation to go from the primary to the secondary is given by a Function using the "transform_func" parameter, and in the other direction the "inv_transform_func" parameter. The boundaries are also explicitly specified using the "primary" and "secondary" parameters.

[Functions]
  [./tr_x]
    type = ParsedFunction
    expression = -x*cos(pi/3)
  [../]

  [./tr_y]
    type = ParsedFunction
    expression = x*sin(pi/3)
  [../]

  [./itr_x]
    type = ParsedFunction
    expression = -x/cos(pi/3)
  [../]

  [./itr_y]
    type = ParsedFunction
    expression = 0
  [../]
[]

[BCs]
  [./Periodic]
    [./x]
      primary = 1
      secondary = 4
      transform_func = 'tr_x tr_y'
      inv_transform_func = 'itr_x itr_y'
    [../]
  [../]
[]
(test/tests/bcs/periodic/trapezoid.i)

Available Actions