HelicesΒΆ

Learning targets

  • Construct Helices as 3D Primitives

This example constructs three helices with slightly different parameter settings. All three are shown in the following figure. The helix is generated by sweeping a ball with radius TubeRadius along a helical path in winding around a cylinder of radius HelixRadius. The Pitch and WindingNr determine the number and the distance between windings in z direction. From left to right the TubeRadius decreases while the WindingNr increases. The rightmost helix is also rotated by 90 degrees around the z axis.

_images/helix_meshes.png

.jcm Input File

The layout.jcm file contains a Layout3D section indicating the use of 3D primitives. The substrate and background is defined first, then the object section with the three objects follows. The Helix is determined by its HelixRadius, TubeRadius, WindingNr and Pitch. The primitives GlobalPosition and Rotation are shared with all 3D primitives.

Note

The GlobalPosition refers to the center of the base of the cylinder the helical path is wound around. Note that the Helix object will extend below the plane of this base by the TubeRadius.

  • 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
    Layout3D {
      UnitOfLength = 1.0
      BoundaryConditions {
        Boundary {
          Direction = All 
          Class = Transparent 
        }
      }
      Extrusion {
        Objects {
          Parallelogram {
            Priority = -1
            DomainId = 101    
            Height = 5.0
            Width = 10.0            
            MeshOptions {
              MaximumSideLength = 2.0
            }
          }
        }
        MultiLayer {
     
          Layer {
            Name = "Substrate"
            Thickness = .5 
            DomainIdMapping = [101 1]
          }
          Layer {
            Thickness = 12 
            DomainIdMapping = [101 101]
          }
    
        }
      }
      Objects {
        Helix {
          Name = "Helix1"
          DomainId = 4
          Priority = 1
          HelixRadius = 1
          TubeRadius = 0.2
          Pitch = 1.0
          WindingNr = 3.0
          GlobalPosition = [0, 0, 1]
          MeshOptions {
            MaximumSideLength = 0.1
          }
        }
        Helix {
          Name = "Helix2"
          DomainId = 5
          Priority = 1
          HelixRadius = 1
          TubeRadius = 0.3
          Pitch = 1.5
          WindingNr = 2.0
          GlobalPosition = [-3.3, 0, 1]      
          MeshOptions {
            MaximumSideLength = 0.1
          }
        }
        Helix{
          Name = "Helix3"
          DomainId = 2
          Priority = 1
          HelixRadius = 1
          TubeRadius = 0.1
          Pitch = 1
          WindingNr = 4.0
          GlobalPosition = [3.3, 0, 1]
          Rotation = [0.0, 0.0 ;
                      0.0, 1.0; 
                      1.0, 0.0]
          
          MeshOptions {
            MaximumSideLength = 0.1
          }
        }
      }
    }