Sidewall AnglesΒΆ

Learning targets

  • Define 3D objects with non-rectangular sidewalls in z-direction

In the previous section we were only able to produce geometries with straight sidewalls in the vertical direction. This example shows how to define non-rectangular sidewalls for the cylinder geometry of the previous section:

_images/sidewall_angles.png

As a simple concept we redefine the geometry parameters of the cross-section layout at an interface of two layers. This is done by adding a LayerInterface section between two layers containing a dictionary called GeometryValues:

LayerInterface {
  GeometryValues = [
    Circle/Radius = 0.8
  ]
}

.jcm Input File

  • layout.jcm [ASCII]

     1Layout3D {
     2  Name = "TutorialExample3D"
     3  UnitOfLength = 1e-06
     4  MeshOptions {
     5    MaximumSideLength = 1.3
     6  }
     7  BoundaryConditions {
     8    Boundary {
     9      Direction = Vertical 
    10      Class = Transparent 
    11    }
    12    Boundary {
    13      Direction = Horizontal 
    14      Class = Periodic
    15    }
    16  }
    17  Extrusion {
    18    Objects {    
    19      Polygon { 
    20        Name = "ComputationalDomain/Background" 
    21        DomainId = 1
    22        Priority = -1 
    23        Points = [-2 -2, 2 -2, 2 2, -2 2]         
    24      } 
    25      
    26      Circle {
    27        Name = "Circle" 
    28        DomainId = 2
    29        Radius = 1     
    30        MeshOptions {
    31          BoundaryMeshConstraint = .4
    32        }
    33      }
    34    }
    35    MultiLayer {
    36      
    37      Layer {
    38        Thickness = 1.0
    39        DomainId = 1
    40      }
    41      Layer {
    42        Thickness = 0.1
    43        DomainId = 2
    44      }
    45      LayerInterface {
    46        GlobalZ = 0.0
    47      }
    48      Layer {
    49        Thickness = 1.5
    50        DomainIdMapping = [1 2 
    51                           2 3]
    52      }
    53      LayerInterface {
    54        GeometryValues = [
    55        Circle/Radius = 0.8
    56        ]
    57      }
    58      Layer {
    59        Thickness = 2.0
    60        DomainIdMapping = [1 2]
    61      }
    62    }  
    63  }
    64} 
    

Alternatively we can set the parameters the Radius parametrically in the cross-section layouts at the interface of two layers. This is done by adding a PiecewiseLinear section inside the Radius definition of the Circle in the Object section of the extrusion:

Circle {
   ...
   Radius {
     PiecewiseLinear {
       AtInterface {
         Interface =  0
         Radius = 1
       }
       AtInterface {
         Interface =  3
         Radius = 0.8
       }
     }
   }

.jcm Input File with parametric definition

  • layout.parametric.jcm [ASCII]

     1Layout3D {
     2  Name = "TutorialExample3D"
     3  UnitOfLength = 1e-06
     4  MeshOptions {
     5    MaximumSideLength = 1.3
     6  }
     7  BoundaryConditions {
     8    Boundary {
     9      Direction = Vertical 
    10      Class = Transparent 
    11    }
    12    Boundary {
    13      Direction = Horizontal 
    14      Class = Periodic
    15    }
    16  }
    17  Extrusion {
    18    Objects {    
    19      Polygon { 
    20        Name = "ComputationalDomain/Background" 
    21        DomainId = 1
    22        Priority = -1 
    23        Points = [-2 -2, 2 -2, 2 2, -2 2]         
    24      } 
    25      
    26      Circle {
    27        Name = "Circle" 
    28        DomainId = 2
    29        Radius {
    30          PiecewiseLinear {
    31            AtInterface {
    32              Interface =  0
    33              Radius = 1
    34            }           
    35            AtInterface {
    36              Interface =  3
    37              Radius = 0.8
    38            }
    39          }
    40        }
    41        MeshOptions {
    42          BoundaryMeshConstraint = .4
    43        }
    44      }
    45    }
    46    MultiLayer {
    47      
    48      Layer {
    49        Thickness = 1.0
    50        DomainId = 1
    51      }
    52      Layer {
    53        Thickness = 0.1
    54        DomainId = 2
    55      }
    56      LayerInterface {
    57        GlobalZ = 0.0
    58      }
    59      Layer {
    60        Thickness = 1.5
    61        DomainIdMapping = [1 2 
    62                           2 3]
    63      }
    64      Layer {
    65        Thickness = 2.0
    66        DomainIdMapping = [1 2]
    67      }
    68    }  
    69  }
    70}