User Tools

Site Tools


wiki:sns:intactgh:beginner_ex_4

Ex-4: Planar Orthotropic Materials: Transformation Workflow

🧰The Rhino and Grasshopper files used in this example can be downloaded below: orthotropic_transformation.zip

This example demonstrates a workflow for correctly orienting fiber directions to arbitrary geometries using grasshopper transformation matrices. Following this, a basic static simulation setup is provided with the transformed orthotropic material.

  • The key steps involved in setting up the simulation are explained here.
  • New users are advised to check out the getting started page to understand the basics of using the plugin.

Geometry Setup

  • An initial solid box is centered at the origin and rotations are applied in each world plane (XY, YZ, ZX) to yield an arbitrarily oriented surface
  • For the automated transformations (using only Grasshopper) the surfaces of interest along with their normal are extracted (normal to align our Z-axis and longitudinal direction to align our fiber direction or X-axis)
  • Note, the oriented box geometry and surfaces should be baked for future use in simulation.

Transformations

Note, that there are many ways to approach getting a transformation for an input to an orthotropic material block, and only two quick options are shown here. The most important part is that the end transformation result must represent the total transformation from the standard global XYZ to whatever the desired orientation is. If multiple transformations are done sequentially the corresponding matrices will need to be multiplied in the correct order, as described here.

Transformation Multiplication:

[C] = [A]*[B]

where,

  • [C] Is the final transformation
  • [A] Is a simple rotation
  • [B] Flips about an axis

In this setup, the final transformation matrix, [C] would flip the geometry about an axis THEN rotate the geometry. Note that the multiplication is in the opposite order of how the transformations are done. To explain a bit more, we are mapping a vector {x} where [C]*{x} does the transform/mapping we want. This is the same as [A]*[B]*{x} where [B], the flip, operates first on vector {x} to yield {x'} and [A], the rotation, operates second on this new vector {x'}.

Manual Transformation

For the first method, we can set a “Plane” component by selecting 3 points inside of Rhino

  1. Create a “Plane” component
  2. Right-click and select “Set one Plane”
  3. Select an origin point
  4. Select a X-axis direction point (fiber direction)
  5. Select a Y-axis direction point (follow right-hand rule so the Z-axis/normal points where you want)
  6. Connect this plane component to the target plane of the “Orient” component where the source plane is the world XY.
  7. This transformation can then be used for an orthotropic material or the matrix can be stored and multiplied if needed.

These steps are demonstrated in a short video here along with some additional visualization.

Automated Transformation

Now, here is a second method of obtaining the transformation matrix for an orthotropic material on an arbitrarily oriented plane. This method is essentially just getting two direction vectors, one for normal direction (z' axis) and one for the fiber direction (x' axis)

  1. Extract surface/plane and use the “Evaluate Surface” component to get the normal and flip the direction if needed. (*here the list item component is used as the geometry is a simple box)
  2. Repeat this process for the surface/plane where the normal is aligned with the fiber direction (can get these vectors in many other ways as well)
  3. Create a “Plane Normal” component, and attach the normal vector to the Z-axis. (A)
  4. Attach this plane to the “Align Plane” and also attach the fiber direction vector to the direction input. (B)
  5. Use the “Orient” component again with the source as the world XY and this new plane as the target. (C)
  6. This will yield the transformation matrix as before, remaining steps are the same as for the manual method.

Multiple Transformations

As described in the transformation multiplication section, if we have successive transformations we need to multiply them together. An example is given here:

  1. Attach the transformations to the “Display Matrix” component
  2. Attach the matrices to the multiply component in the correct order (check the multiplication section or use visualization as a check)
  3. Use the resultant/total matrix as the transformation input in simulations.

Here the resultant matrix [B]=[A2]*[A1] where [A2] is rotating about the newly oriented z' axis and [A1] is aligning the xyz' axis to the fiber direction. Note that with this ordering the xyz' axis is oriented first then we rotate that oriented system for simulating alternate fiber orientations such as [-45, 45] plies.

Visualization

Lastly, the oriented system can be visualized as seen in previous sections via a “Deconstruct Matrix” component and list items. The first column of the matrix corresponds to the x-axis, the second column corresponds to the y-axis, and the last column corresponds to the z-axis. The grasshopper setup is shown here and could be converted to a cluster for ease-of-use in future simulations.

Example Simulation Setup

With these transformations, we can set up a quick example simulation using orthotropic materials. The details of the simulation are described below along with an image of the grasshopper setup. The key difference here is that the “Orthotropic Material” component is used, everything else remains similar in terms of solver resolution/settings and components/restraints/loads.

Specifically, the orthotropic material component requires the transformation to be connected from the previous workflow. This transformation aligns the stronger “E1/Ex” material properties to the rotated x-axis and the other properties to the y and z axes respectively.

  • Attach the corresponding geometries to the corresponding component, restraint, or load block.
  • Attach the orthotropic material to the component block
  • Set a pressure load on the +x' face of the plate of -1e6

Solver and Visualization Setup

  • Create a solver settings block as shown in
    • Set the target resolution (Res) to 150K by attaching a number slider with a value of 150000
    • Use the default direct solver type (St)
    • Use the default basis order (B) of 1 for linear elements (basis order = 2 for quadratic elements)
  • Create a Stress Solver object as shown in
    • Connect the solver settings (SS)
    • Connect the oriented plate component (C)
    • Connect the plate restraint surface (R)
    • Connect the plate pressure load (L)
  • Solve
    • Create a visualization block and connect the solver output to it
    • Optionally, users can connect the visualization settings block
    • Right-click on the visualize block and choose the simulation output for display (e.g., total displacement)
    • Again optionally, users can add a deflection scale input to scale the visualized displacement as desired

Hide CAD Model

  • To better visualize you can hide the geometry in Rhino or set the display to wireframe. This will prevent the object from interfering with the visualization of the simulation.

The displacement distribution resulting from this static simulation example is displayed below. The maximum displacement is near 0.07 mm for fibers aligned along the x' (no second rotation). For the 45-degree CW rotation, it should be closer to 0.53 mm. To load the simulation results later, create a simulation reader block, right-click, select the simulation, and connect it to a visualize block.

wiki/sns/intactgh/beginner_ex_4.txt · Last modified: 2024/01/31 12:13 by graham