Periodic boundaries IIIΒΆ

Learning targets

  • Periodic boundary conditions
  • 2D-periodic hexagonal lattice of 3D objects with transparent boundary conditions in the third dimension
  • Usage of a rectilinear unit cell

This example constructs the unit cell for a periodic array of nano-scale lines on top of a substrate. The periodic lattice is hexagonal, but we use a rectilinear unit cell to avoid unfavorable intersections of the unit cell boundary with the actual structure

The following figure shows an image of parts of the geometry and mesh:

_images/ex3d_rip_periodic_hexagonal_step_mesh.png

The periodic boundary conditions are defined in the 2D section of the 3D layout, the transparent boundary conditions are applied in the Extrusion section of the layout.

.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
    Layout3D {
      UnitOfLength = 1e-09
      
      MeshOptions {
        MaximumSideLength = 50
      }
      BoundaryConditions {
        Boundary {
          Direction = Vertical 
          Class = Transparent 
        }
      }
      Extrusion {
        Objects {
          Polygon { 
            Name = "ComputationalDomain/Background" 
            DomainId = 1
            Priority = -1 
            Port = 1
            PeriodicUnitCell {
              LatticeVectorLengths = [500 500]
              LatticeAngle = 60
              Shape = Rectilinear
              StepHeight = 0.5
            }
          } 
          
          Parallelogram {
            Width = 300
            Height = 80
            GlobalPosition = [250 108.253175473055] # y-component = sind(60)*500/4
            DomainId = 2
          }
          
          Parallelogram {
            Width = 200
            Height = 120
            GlobalPosition = [500 324.759526419164] # y-component = sind(60)*500*3/4
            DomainId = 2
          }
        }
        
        MultiLayer {
          MeshOptions {
            MaximumSideLengthZ = 50
          }         
          Layer {
            Thickness = 100
            DomainId = 1
          }
          Layer {
            Thickness = 100
            DomainIdMapping = [1 2 
                               2 3]
          }
          LayerInterface {
            GlobalZ = 0.0
          }
          Layer {
            Thickness = 20
            DomainId = 2
          }
        }  
      } 
    }