Stacked LayoutsΒΆ

Learning targets

  • Stack extrusion layouts
  • Use individual meshing options within each layout

With stacking several layouts on top of each other more complicated geometries become feasible for JCMsuite. However, this example shows that it might be advantageous to use stacked layouts also for geometries easily constructed by one single extrusion layout, when we want to use coarser meshes in certain layers of the extrusion. This is for example the case, when one layer has a high refractive index material with smaller local wavelength, requiring a fine mesh only there.

_images/ex3d_stacked_layouts_mesh1.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
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    Layout3D {
      UnitOfLength = 1e-09
      
      MeshOptions {
        MaximumSideLength = 50
      }
      Extrusion {
        Objects {
          Polygon { 
            Name = "ComputationalDomain/Background" 
            DomainId = 1
            Priority = -1 
            Points = [-200 -200, 200 -200, 200 200, -200 200] 
            Boundary {
              Class = Periodic
            }
          }
        } 
        
        MultiLayer {
          MeshOptions {
            MaximumSideLengthZ = 50
          }    
          
          LayerInterface {
            BoundaryClass = Transparent
          }
          Layer {
            Thickness = 50
            DomainId = 1
          }
        }  
      } 
    }
    
    Layout3D {
      UnitOfLength = 1e-09
      
      MeshOptions {
        MaximumSideLength = 50
      }
      Extrusion {
        Objects {
          Polygon { 
            Name = "ComputationalDomain/Background" 
            DomainId = 1
            Priority = -1 
            Points = [-200 -200, 200 -200, 200 200, -200 200] 
            Boundary {
              Class = Periodic
            }
          } 
          
          Circle {
            Name = "Circle" 
            DomainId = 2
            Radius = 100
            RefineAll = 2	
            MeshOptions {
              MaximumSideLength = 20
            }
          }
        }
        MultiLayer {
          MeshOptions {
            MaximumSideLengthZ = 50
          }    
          
          Layer {
            Thickness = 100
            DomainId = 1
          }
          LayerInterface {
            GlobalZ = 0
          }
          Layer {
            Thickness = 100
            DomainIdMapping = [1 3 
            2 2]
            MeshOptions {
              MaximumSideLengthZ = 20
            }    
          }
          LayerInterface {
            GeometryValues = [
            Circle/Radius = 80
            ]
          }
          Layer {
            Thickness = 10
            DomainIdMapping = [1 3]
          }
        }  
      } 
    }
    
    Layout3D {
      UnitOfLength = 1e-09
      
      MeshOptions {
        MaximumSideLength = 100
      }
      Extrusion {
        Objects {
          Polygon { 
            Name = "ComputationalDomain/Background" 
            DomainId = 1
            Priority = -1 
            Points = [-200 -200, 200 -200, 200 200, -200 200] 
            Boundary {
              Class = Periodic
            }
          } 
        }  
        MultiLayer {
          
          MeshOptions {
            MaximumSideLengthZ = 50
          }    
          
          Layer {
            Thickness = 50
            DomainId = 3
          }
          LayerInterface {
            BoundaryClass = Transparent
          }
        }  
      } 
    }