Periodic boundaries IIIΒΆ

  • Periodic boundary conditions
  • Define unit cell as parallelogram or step rectilinear shape
  • Define unit cell as polygon with specially devoted Unit Cell construction

This example demonstrates the possibility to use different unit cell geometries for the same periodic lattice. This great flexibility for the definition of the unit cell helps to avoid disadvantageous overlays of the computational domain boundary with the actual periodic structure.

This example uses again a unit cell of a 2D hexagonal lattice (equilateral triangular lattice). The following picture shows 4 different realizations of a unit cell:

hexagonal_png tilted_png
rectilinear_step_png rectilinear_step0_png

Periodically identical edges are marked in the same color. The lower right picture shows that it is even possible to define a rectilinear unit cell for an hexagonal lattice with minimum area.

For demonstration purposes the layout.jcm input file for this example contains all above unit cell constructions yielding the following mesh:

_images/ex2d_periodic_boundaries_hexagonal_combined.png

To cut out a specific unit cell it is sufficient to change the priority tag to -1 (selecting as computational domain).

.jcm Input File

  • layout.jcm [ASCII]

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Layout2D { 
      Objects {
        Polygon {
          Priority = 1
          DomainId = 1	
          PeriodicUnitCell {
            LatticeAngle = 60
            LatticeVectorLengths = [500 500]	
            Shape = Hexagonal
          }
        }
        
        Polygon {
          Priority = 1
          DomainId = 1
          GlobalPosition = [-1100 200]	
          PeriodicUnitCell {
            LatticeAngle = 60
            LatticeVectorLengths = [500 500]	
            Shape = Tilted
          }
        }
        
        Polygon {
          Priority = -1
          DomainId = 1
          GlobalPosition = [400 200]	
          PeriodicUnitCell {
            LatticeAngle = 60
            LatticeVectorLengths = [500 500]	
            Shape = Rectilinear
            StepHeight = 0.5
          }
        }
        
        Polygon {
          Priority = 1
          DomainId = 1
          GlobalPosition = [500 -700]	
          PeriodicUnitCell {
            LatticeAngle = 60
            LatticeVectorLengths = [500 500]	
            Shape = Rectilinear
            StepHeight = 0.0
          }
        }
        
        Circle {
          DomainId = 2
          Priority = 1
          MeshOptions {
            MaximumSideLength = 50      
          }
          Radius = 50
          RefineAll = 2
          LatticeCopies {
            LatticeVectorLengths = [500 500]
            LatticeAngle = 60
            Positions {
              IndexShiftY = -1
              Range1 = [-2 2]
              Range2 = [-2 2]
            }
          }
        }
      } 
    }