🧰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.
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.
[C] = [A]*[B]
where,
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'}.
For the first method, we can set a “Plane” component by selecting 3 points inside of Rhino
These steps are demonstrated in a short video here along with some additional visualization.
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)
As described in the transformation multiplication section, if we have successive transformations we need to multiply them together. An example is given here:
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.
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.
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.
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.