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:
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}