Difference between revisions of "Setting Material Orientation"
(50 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
== Introduction == | == Introduction == | ||
The [[MPM Region and Hole Commands|<tt>Region</tt> command]] | The [[MPM Region and Hole Commands|<tt>Region</tt> command]] only lets you specify a single rotation angle for material rotation about the z axis. This option 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 <tt>Rotate</tt> command solves both these issues because it can set variable angles (with a [[User Defined Functions|user-defined function]]) and can set rotation about x and y axes as well as the z axis. In addition to the <tt>Rotate</tt> command, a [[BMPRegion Command|<tt>BMPRegion</tt> command]] can set rotations and x, y, and z axes by using <tt>(anglesPath)</tt> files. This page documents the <tt>Rotate</tt> command. The [[#Rotation Matrix|Rotation Matrix]] section applies both to angles picked using the <tt>Rotate</tt> command and to angles picked with <tt>(anglesPath)</tt> files. | |||
== Rotate Command == | == Rotate Command == | ||
In | In scripted files, the rotate command, which must be within a [[MPM Region and Hole Commands|<tt>Region</tt> command]] or a [[BMPRegion Command|<tt>BMPRegion</tt> command]] is: | ||
Rotate (axis),(angle),<(axis2),(angle2)>,<(axis3),(angle3)> | Rotate (axis),(angle),<(axis2),(angle2)>,<(axis3),(angle3)> | ||
Line 21: | Line 23: | ||
* <tt>(axis)</tt> is the rotation axis which must be <tt>x</tt>, <tt>y</tt>, or <tt>z</tt> (or 1, 2, or 3). For 2D and axisymmetric analyses, only <tt>z</tt> (or 3) is allowed (and it means rotation about θ axis if axisymmetric). <tt>(axis)</tt> can alternatively be <tt>reset</tt> 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 [[MPM Region and Hole Commands|<tt>Region</tt> command]]. | * <tt>(axis)</tt> is the rotation axis which must be <tt>x</tt>, <tt>y</tt>, or <tt>z</tt> (or 1, 2, or 3). For 2D and axisymmetric analyses, only <tt>z</tt> (or 3) is allowed (and it means rotation about θ axis if axisymmetric). <tt>(axis)</tt> can alternatively be <tt>reset</tt> 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 [[MPM Region and Hole Commands|<tt>Region</tt> command]]. | ||
* <tt>(angle)</tt> is a rotation angle or a [[User Defined Functions|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 [User Defined Functions|function]] must be in degrees. | * <tt>(angle)</tt> is a rotation angle or a [[User Defined Functions|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 [[User Defined Functions|function]] must be in degrees. | ||
In scripted files, the optional <tt><(axis2),(angle2)></tt> and <tt><(axis3),(angle3)></tt> pairs let you specify up to three rotations in a single rotation command. In <tt>XML</tt> files, multiple rotations are created by combining the various rotate commands. Also in <tt>XML</tt> files, the reset option for <tt>(axis)</tt> is done instead by using the <tt><Unrotate/></tt> command. | In scripted files, the optional <tt><(axis2),(angle2)></tt> and <tt><(axis3),(angle3)></tt> pairs let you specify up to three rotations in a single rotation command. In <tt>XML</tt> files, multiple rotations are created by combining the various rotate commands. Also in <tt>XML</tt> files, the reset option for <tt>(axis)</tt> is done instead by using the <tt><Unrotate/></tt> command. | ||
=== Rotation Specifics | == 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>\mathbf{F}_{total} = R_0\mathbf{F}</math> | |||
=== 2D Rotation Matrix === | |||
In 2D, the only possible rotation is about the z axis and the resulting rotation matrix is | |||
| |||
<math>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 <i>counter-clockwise</i> rotation about the z axis that transforms the material axes into the <tt>x-y</tt> analysis axes. Alternatively (and identically) you can imagine sitting on the material coordinate system and then defining a <i>clockwise</i> rotation about the z axis that transforms the the <tt>x-y</tt> 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>\vec v_{global} = R_z(\theta)\vec v_{mat} \qquad {\rm or} \qquad \vec v_{mat} = R_z^T(\theta)\vec v_{global}</math> | |||
=== 3D Rotation Matrix === | |||
In 3D, more than one rotate command builds an initial rotation matrix as product of axis rotation matrices. For example: | |||
| |||
<math>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>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 <i>counter-clockwise</i> rotations (in the order provided) about <tt>x-y-z</tt> 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 <i>clockwise</i> rotations (in reverse order as provided) about the material axes that transform the <tt>x-y-z</tt> 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|transversely isotropic material]] where the only need is to orient the material's axial direction. Because 3D modeling only allows a [[Transversely Isotropic Material#Transvers 1|transversely isotropic material with the axial direction along the material's z axis]], we need to define the initial orientation of the material using angles in standard [http://mathworld.wolfram.com/SphericalCoordinates.html spherical coordinates]. In other words, the material's z axis in the global axes is defined by: | |||
| |||
<math>\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 <tt>XML</tt> files, the commands would be | |||
<RotateZ>-θ</RotateZ> | |||
<RotateY>-φ</RotateY> | |||
and note that φ and θ need to be in degrees and negated from the standard definition in [http://mathworld.wolfram.com/SphericalCoordinates.html spherical coordinates]. For example to rotate axial direction to the x axis, use (θ,φ)=(0,90) an to rotate to the y axis use (θ,φ)=(90,0) (and these special cases need not be negated). | |||
== Rotation Specifics == | |||
# Rotate commands can only used within [[MPM Region and Hole Commands|<tt>Region</tt> commands]] (or <tt><Body></tt> commands in <tt>XML</tt> files) or [[BMPRegion Command|<tt>BMPRegion</tt> commands]]. | # Rotate commands can only used within [[MPM Region and Hole Commands|<tt>Region</tt> commands]] (or <tt><Body></tt> commands in <tt>XML</tt> files) or [[BMPRegion Command|<tt>BMPRegion</tt> commands]]. | ||
# The <tt>reset</tt> option (or <tt><Unrotate/></tt> command in <tt>XML</tt> files can only be used in [[MPM Region and Hole Commands|<tt>Region</tt> commands]] (or <tt><Body></tt> commands in <tt>XML</tt> files) | # The <tt>reset</tt> option (or <tt><Unrotate/></tt> command in <tt>XML</tt> files) can only be used in [[MPM Region and Hole Commands|<tt>Region</tt> commands]] (or <tt><Body></tt> commands in <tt>XML</tt> files). | ||
# All single and double angle rotations are allowed (<tt>x</tt>, <tt>y</tt>, <tt>z</tt>, <tt>xy</tt>, <tt>xz</tt>, <tt>yx</tt>, <tt>yz</tt>, <tt>zx</tt>, and <tt>zy</tt>). When doing three rotations, the only schemes currently supported are <tt>zyx</tt> and <tt>zyz</tt>. It is easy to add more if needed (or to rearrange coordinates to make one of these work). The <tt>zyz</tt> combination is a common (but only only) scheme used to define Euler angles. | |||
# Use of any <tt>Rotate</tt> commands in a block will override any angle setting in the [[MPM Region and Hole Commands|<tt>Region</tt> command]] (or <tt><Body></tt> command in <tt>XML</tt> files) or [[BMPRegion Command|<tt>BMPRegion</tt> command]] that encloses it (<i>i.e.</i>, the enclosing-command angle setting will be ignored). | |||
# All single and double angle rotations are allowed (<tt>x</tt>, <tt>y</tt>, <tt>z</tt>, <tt>xy</tt>, <tt>xz</tt>, <tt>yx</tt>, <tt>yz</tt>, <tt>zx</tt>, and <tt>zy</tt>). When doing three rotations, the only schemes currently supported are <tt>zyx</tt> and <tt>zyz</tt>. It is easy to add more if needed (or to rearrange coordinates to make one of these work). The <tt>zyz</tt> combination is | |||
# Use of any <tt>Rotate</tt> commands in a | |||
# Use of any <tt>Rotate</tt> commands within a [[BMPRegion Command|<tt>BMPRegion</tt> command]] will override any angle settings made in [[BMPRegion Command#Intensity Command|<tt>Intensity</tt> commands]] within that region. Furthermore the chosen rotation angles will apply to all material points defined in the current [[BMPRegion Command|<tt>BMPRegion</tt> block]]. But, if the [[BMPRegion Command|<tt>BMPRegion</tt> block]] also defines an angle-mask file, that file will override any <tt>Rotate</tt> commands. | # Use of any <tt>Rotate</tt> commands within a [[BMPRegion Command|<tt>BMPRegion</tt> command]] will override any angle settings made in [[BMPRegion Command#Intensity Command|<tt>Intensity</tt> commands]] within that region. Furthermore the chosen rotation angles will apply to all material points defined in the current [[BMPRegion Command|<tt>BMPRegion</tt> block]]. But, if the [[BMPRegion Command|<tt>BMPRegion</tt> block]] also defines an angle-mask file, that file will override any <tt>Rotate</tt> commands. |
Latest revision as of 13:16, 22 February 2021
The Rotate command rotates material axes to define the initial orientation when using anisotropic materials:
Introduction
The Region command only lets you specify a single rotation angle for material rotation about the z axis. This option 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 these issues because it can set variable angles (with a user-defined function) and can set rotation about x and y axes as well as the z axis. In addition to the Rotate command, a BMPRegion command can set rotations and x, y, and z axes by using (anglesPath) files. This page documents the Rotate command. The Rotation Matrix section applies both to angles picked using the Rotate command and to angles picked with (anglesPath) files.
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]
2D Rotation Matrix
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]
3D Rotation Matrix
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. Because 3D modeling only allows a transversely isotropic material with the axial direction along the material's z axis, we need to define the initial orientation of the material using angles in standard 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 from the standard definition in spherical coordinates. For example to rotate axial direction to the x axis, use (θ,φ)=(0,90) an to rotate to the y axis use (θ,φ)=(90,0) (and these special cases need not be 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.