Create a 1-Element 3-D Prolate Spheroidal Mesh


  • In this example a 3-D prolate spheroidal mesh is created using one trilinear Lagrange element.
  • The nodal coordinates and element connectivities are entered by hand using dimensions based on the measurements and analysis of Streeter and Hanna in the dog left ventricle

Start Continuity

  • Launch the Continuity Client
  • On the About Continuity startup screen

    • leave the mesh checkbox checked under Use Modules:

  • Click OK to bring up the main window

Create coordinates and basis function

  • Mesh→Edit→Coordinates...

    • Select prolate spheroidal in the Global Coordinates: pop-up menu

    • Enter 3.7 for the focus position

    • Click OK to submit Coordinate Form

  • Mesh→Edit→Basis...

    • Choose Lagrange Basis Function→3D→Linear-Linear-Linear

    • Click Add Linear-Linear-Linear

    • Verify that the list of basis functions now contains:
      • Linear-Linear-Linear Lagrange 3*3*3
      • Linear-Linear Lagrange 3*3
    • Click OK to submit Basis Form

Edit nodes and elements

  • From the major and minor radii reported by Streeter and Hanna, the focus, and the equations for prolate spheroidal coordinates we can easily compute the λ coordinates of the epicardial and endocardial surfaces. Streeter and Hanna also defined a truncation factor as the fraction of the equator-apex distance between the base and the equator. Their estimate of nearly 0.5 translates to a μ coordinate at the base of 120°.
  • Mesh→Edit→Nodes...

    • Since we only selected one basis function, Linear-Linear-Linear Lagrange 3*3*3 probably already appears at the top of each coordinate column in the Nodes form. If not, select it from the menu for all three coordinates.
    • Now, click the Insert Node button on the left three times to create a total of four nodes

    • Enter the tabulated nodal prolate spheroidal coordinates for each of the four nodes.

      • Note that the default units for angular coordinates such as μ and θ is degrees, but that can be changed to radians using the radio button at the bottom of the form.

    • Assign a label to each node, which will be useful later when we define boundary conditions:

      • Enter the following text strings in the text entry field at the top of the form next to the Edit button to the right of the "Node Number:" display:

        • APEX_ENDO for node 1

        • BASE_ENDO for node 2

        • APEX_EPI for node 3

        • BASE_EPI for the node 4

      • The underscore in the label serves the special purpose of enabling a compound label, which we will take advantage of later when we refine the mesh. Note when you are entering nodal labels, you must press return for the entry to be saved.

    • You should now have nodes numbered 1-4
    • Enable Fiber Angles by selecting its tab and ensuring the Linear-Linear-Linear Lagrange 3*3*3 basis function is selected in the menu at the top.

    • In the Value fields under Fiber Angle, enter:

      • For Node 1: 60
      • For Node 2: 60
      • For Node 3: -60
      • For Node 4: -60
    • Click OK to submit Node Form

  • Mesh→Edit→Elements...

    • By entering the eight node numbers for each trilinear element, we both define the elements and the directions of their local ξ coordinates. The graphic in the form helps remind us of the numbering convention in which nodes are entered starting at (ξ123)=(0,0,0) and ending with the node at (ξ123)=(1,1,1). By convention for meshes defined in curvilinear coordinates, we make ξ1 coincide (to the extent possible) with the polar (θ) axis, ξ2 with the "longitudinal" (z, φ or μ) axis, and ξ3 with the "radial" (r or λ) axis, while also trying to keep the ξ coordinates right-handed by convention. (Note that this has the odd effect of requiring that ξ1 coincide with the negative θ axis in prolate spheroidal coordinates because θ is the third prolate spheroidal coordinate by convention, but it is the second coordinate in cylindrical or spherical polar coordinates.)

    • In this axisymmetric geometry, ξ1 wraps all the way around, so eight element nodes of our single trilinear element are defined by only four global nodes

    • The 8 global nodes of element 2 are
      • 1








      • Enter them into the Global Node Numbers box

        • Here we have incremented first circumferentially (ξ1), then longitudinally (ξ2) from apex to base, and finally radially (ξ3) from endocardium to epicardium.

    • Click OK to submit Element Form

Use the Fiber Angles to Define Material Coordinates

  • To automatically load the default material coordinate model (behind the scenes), click File→Send or click on

  • Mesh→Edit→Material Coordinates...

    • If you Sent (above), the standard material model, named MatCoordStandard should be loaded; otherwise, the model will be named NewModel

    • You may click each variable name below MatCoordStandard to view the mathematical expressions defining the material coordinate transformation, which is defined by the dependent variable dYdMatl that rotates global rectangular Cartesian coordinates to locally orthonormal material coordinates.

    • Click the Parameters heading. You should have the option to select fiber_angle, transverse_angle, and sheet_angle parameters of the standard model.

      • Select fiber_angle in the Parameters list.

        • Choose Field from the pop-up menu next to For default values use, and select Fiber Angle from the pop-up menu next to Use Field.

      • Select transverse_angle in the Parameters list.

        • Enter 0 in the default value entry field

      • Select sheet_angle in the Parameters list.

        • Enter 0 in the default value entry field

        • Click OK to submit Material Coordinate Transformation model

Calculate and Render mesh

  • Mesh→Render→Elements... or click on

    • Click surfaces radio button

    • Click Render to display mesh surfaces

    • The mesh should now look similar to this screenshot.

  • Mesh→Render→Elements...

    • Click surfaces radio button

    • Enter 1.0 for the Location field

    • Click Render to display mesh surfaces

    • If you use OpenMesh as your Renderer, you may change the opacity of objects (set Renderer as OpenMesh at View→Change Renderer, confirm deletion when dialog box pops up, and re-render objects)

    • View→Show Open Mesh...

      • Click on element surfaces4 in the list on the left

      • Click on the Properties tab

      • Drag the Opacity scale bar under to 50

    • The mesh should now look similar to this screenshot.

  • Mesh→Render→Fibers... or click

    • Specify the following list of Xi3 Locations: 0., 0.5, 1.0

    • Specify a vector Length to be 1

    • Specify the number of material vectors to render per element in each direction to be 10

    • Uncheck axes 2 and 3
    • Click OK to render material axes