AddPeriodicBCAction

Periodic boundary conditions enforce value constraints on seperate 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.

Supports arbitrary translation vectors for defining periodicity.

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

Translation Periodic Boundaries

[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

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

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

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

  [./itr_y]
    type = ParsedFunction
    value = 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)

Input Parameters

  • primaryBoundary ID associated with the primary boundary.

    C++ Type:BoundaryName

    Options:

    Description:Boundary ID associated with the primary boundary.

  • inv_transform_funcFunctions that specify the inverse transformation

    C++ Type:std::vector

    Options:

    Description:Functions that specify the inverse transformation

  • variableVariable for the periodic boundary

    C++ Type:std::vector

    Options:

    Description:Variable for the periodic boundary

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector

    Options:

    Description:If specified blocks matching these identifiers will be skipped.

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector

    Options:

    Description:If specified only the blocks named will be visited and made active

  • translationVector that translates coordinates on the primary boundary to coordinates on the secondary boundary.

    C++ Type:libMesh::VectorValue

    Options:

    Description:Vector that translates coordinates on the primary boundary to coordinates on the secondary boundary.

  • transform_funcFunctions that specify the transformation

    C++ Type:std::vector

    Options:

    Description:Functions that specify the transformation

  • auto_directionIf using a generated mesh, you can specifiy just the dimension(s) you want to mark as periodic

    C++ Type:std::vector

    Options:

    Description:If using a generated mesh, you can specifiy just the dimension(s) you want to mark as periodic

  • secondaryBoundary ID associated with the secondary boundary.

    C++ Type:BoundaryName

    Options:

    Description:Boundary ID associated with the secondary boundary.

Optional Parameters

References