Periodic boundaries IΒΆ

Learning targets

  • Periodic boundary conditions
  • 2D square lattice

In some models for a simulation, the equations to be simulated are stated on a unit cell of an infinite array. In this case it is typically required to apply periodic boundary boundary conditions. JCMgeo analyses all specified Periodic boundaries, identifies boundaries which are parallel to each other and creates a mesh with corresponding periodic discretizations of these boundaries.

For the unit cell of a 2D periodic square array of circular objects, as specified in this tutorial example, the resulting geometry and mesh correspond to the following figure.

_images/snapshot_130.png

.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
    Layout2D { 
      
      MeshOptions {
        MinimumMeshAngle = 20 
        MaximumSideLength = 10
        EnforceQuality = no
      }
      Objects {
        Parallelogram { 
          Name = "P1"
          Width = 5
          Height = 5
          InnerAngle = 45
          DomainId = 1
          Port = Point1
          GlobalPosition = [0.0 0.0]
          RotationAngle = 0
        }
        
        Parallelogram { 
          Name = "P2"
          Width = 5
          Height = 5
          Delta = 2
          DomainId = 2
          Port = Point1
          Priority = 3
          Alignment {
            Parent {
              Domain = "P1"
              Port = Point3
            }
            Orientation = Parallel
          }
        }
        
        Trapezoid { 
          Name = "P3"
          Width = 10
          Height = 5
          Deltas = [2 3]
          DomainId = 3
          Port = West
          Priority = 5
          Alignment {
            Parent {
              Domain = "P2"
              Port = East
            }
            Displacement = [0 0]
            Orientation = AntiParallel
          }
        } 
      }
    }