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.
Automatic Periodic Boundary Detection (recommended)
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.
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'
[../]
[../]
[]
(moose/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'
[../]
[../]
[]
(moose/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'
[../]
[../]
[]
(moose/test/tests/bcs/periodic/trapezoid.i)Available Actions
- Moose App
- AddPeriodicBCActionAction that adds periodic boundary conditions