Difference between revisions of "Setting Material Orientation"
Line 27: | Line 27: | ||
== Rotation Matrix == | == Rotation Matrix == | ||
The rotation commands are creating a rotation matrix that defines rotation from the material axes to the global axes. It can be interpreted as the initial deformation matrix | The rotation commands are creating a rotation matrix that defines rotation from the material axes to the global axes. It can be interpreted as the initial deformation matrix relative to material axes. In other words, if '''F''' is deformation matrix caused for simulation results in the global axes, the total deformation matrix relative to the material axes is: | ||
| |
Revision as of 14:42, 5 April 2017
The Rotate command rotates material axes to define the initial orientation when using anisotropic materials:
Introduction
The Region command (or <Body> command in XML) and the BMPRegion command let you specify a single rotation angle for material rotation about the z axis. This options has two limitations. First, the angle has to be constant or the same for all material points. Second, it is only rotation about the z axis and therefore insufficient for specifying arbitrary orientation in 3D simulations. The Rotate command solves both this issues because it can set variable angles (with a user-defined function) and can set rotation about x and y axes as well.
Rotate Command
In scripted files, the rotate command, which must be within a Region command or a BMPRegion command is:
Rotate (axis),(angle),<(axis2),(angle2)>,<(axis3),(angle3)>
In XML files, the rotate command is several commands, all of which must be within a <Body> command or a <BMPRegion> command:
<RotateX>(angle)</RotateX> <RotateY>(angle)</RotateY> <RotateZ>(angle)</RotateZ> <Unrotate/>
where
- (axis) is the rotation axis which must be x, y, or z (or 1, 2, or 3). For 2D and axisymmetric analyses, only z (or 3) is allowed (and it means rotation about θ axis if axisymmetric). (axis) can alternatively be reset to remove all transformations. You can then apply new transformations. This option makes it possible to have different transformations apply to different shapes within the same Region command.
- (angle) is a rotation angle or a user-defined function of material point coordinates (x, y, and z) that evaluates to a position-dependent angle. The angle or the result of a function must be in degrees.
In scripted files, the optional <(axis2),(angle2)> and <(axis3),(angle3)> pairs let you specify up to three rotations in a single rotation command. In XML files, multiple rotations are created by combining the various rotate commands. Also in XML files, the reset option for (axis) is done instead by using the <Unrotate/> command.
Rotation Matrix
The rotation commands are creating a rotation matrix that defines rotation from the material axes to the global axes. It can be interpreted as the initial deformation matrix relative to material axes. In other words, if F is deformation matrix caused for simulation results in the global axes, the total deformation matrix relative to the material axes is:
[math]\displaystyle{ \mathbf{F}_{total} = R_0\mathbf{F} }[/math]
In 2D, the only possible rotation is about the z axis and the resulting rotation matrix is
[math]\displaystyle{ R_0 = R_z(\theta) = \left(\begin{array}{ccc} \cos \theta & \sin \theta & 0 \\ -\sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{array}\right) }[/math]
You can imagine sitting on the analysis coordinate system and finding a counter-clockwise rotation about the z axis that transforms the material axes into the x-y analysis axes. Alternatively (and identically) you can imagine sitting on the material coordinate system and then defining a clockwise rotation about the z axis that transforms the the x-y analysis axes into the material axes. In other words a vector in analysis axes material axes is related to a vector the material axes by:
[math]\displaystyle{ \vec v_{global} = R_z(\theta)\vec v_{mat} \qquad {\rm or} \qquad \vec v_{mat} = R_z^T(\theta)\vec v_{global} }[/math]
In 3D, more than one rotate command builds an initial rotation matrix as product of axis rotation matrices. For example:
[math]\displaystyle{ R_0 = R_z(\theta)R_y(\phi)R_x(\psi), \quad \vec v_{global} = R_0\vec v_{mat}, \quad {\rm and} \quad \vec v_{mat} = R_0^T\vec v_{global} }[/math]
where
[math]\displaystyle{ R_y(\phi) = \left(\begin{array}{ccc} \cos \phi & 0 & -\sin \phi \\ 0 & 1 & 0 \\ \sin \phi & 0 & \cos \phi \end{array}\right) \quad{\rm and}\quad R_x(\theta) = \left(\begin{array}{ccc}1 & 0 & 0 \\ 0 & \cos \psi & \sin\psi \\ 0 & -\sin\psi & \cos\psi \end{array}\right) }[/math]
The two physical pictures in 3D are:
- You can imagine sitting on the analysis coordinate system and defining a series of counter-clockwise rotations (in the order provided) about x-y-z analysis axes that transform the material axes into the analysis axes.
- Alternatively (and equivalently), you can imagine sitting on the material coordinate system then and defining a series of clockwise rotations (in reverse order as provided) about the material axes that transform the x-y-z analysis axes into the material axes.
In right-handed, 3D coordinates, if your right hand fingers wrap in the rotation direction, your thumb will point in the positive direction for the rotation axis when the rotation is counter clockwise. This rotation appears counter clockwise when viewed from positive to negative direction on the rotation axis, but appears as clockwise when viewed from negative to positive direction.
Rotation Matrix for Axial Direction
One relatively common numerical task in 3D is to model a transversely isotropic material where the only need is to orient the material's axial direction. If we use the transversely isotropic material with the axial direction along the material's z axis, we can define the initial orientation of the material using angles from spherical coordinates. In other words, the material's z axis in the global axes is defined by:
[math]\displaystyle{ \hat z_{global} = (\cos\theta\sin\phi, \sin\theta\sin\phi, \cos\phi) = R_z^T(\theta)R_y^T(\phi)\hat z_{mat} \quad {\rm with} \quad \hat z_{mat} = (0,0,1) }[/math]
where θ is the azimuthal angle and φ is the polar angle. This orientation is constructed in scripted files using:
Rotate "z",-θ"y",-φ,
In XML files, the commands would be
<RotateZ>-θ</RotateZ> <RotateY>-φ</RotateY>
and note that φ and θ need to be in degrees and negated.
Rotation Specifics
- Rotate commands can only used within Region commands (or <Body> commands in XML files) or BMPRegion commands.
- The reset option (or <Unrotate/> command in XML files) can only be used in Region commands (or <Body> commands in XML files).
- All single and double angle rotations are allowed (x, y, z, xy, xz, yx, yz, zx, and zy). When doing three rotations, the only schemes currently supported are zyx and zyz. It is easy to add more if needed (or to rearrange coordinates to make one of these work). The zyz combination is a common (but only only) scheme used to define Euler angles.
- Use of any Rotate commands in a block will override any angle setting in the Region command (or <Body> command in XML files) or BMPRegion command that encloses it (i.e., the enclosing-command angle setting will be ignored).
- Use of any Rotate commands within a BMPRegion command will override any angle settings made in Intensity commands within that region. Furthermore the chosen rotation angles will apply to all material points defined in the current BMPRegion block. But, if the BMPRegion block also defines an angle-mask file, that file will override any Rotate commands.