Skip to content

Commit 86898cf

Browse files
committed
add documentation for Corotational02
1 parent 3936300 commit 86898cf

File tree

2 files changed

+123
-2
lines changed

2 files changed

+123
-2
lines changed

source/user/manual/model/geomTransf.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ Each type is outlined below.
3232

3333
.. toctree::
3434
:maxdepth: 1
35-
35+
3636
geomTransf/frame/Linear
3737
geomTransf/frame/PDelta
38-
geomTransf/Corotational
38+
geomTransf/frame/Corotational02
3939
geomTransf/frame/Spherical
4040

4141

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
.. _CorotTR:
2+
3+
Corotational02
4+
^^^^^^^^^^^^^^
5+
6+
The corotational coordinate transformation allows small-strain frame elements to be employed in a large deformation analysis. [1]_ [2]_
7+
*Corotational02* superceeds the original :ref:`Corotational <CorotTR>` transformation, which is now deprecated.
8+
9+
.. tabs::
10+
11+
.. tab:: Python
12+
13+
.. py:method:: Model.geomTransf("Corotational02", tag, vecxz, [offi, offj])
14+
:no-index:
15+
16+
Define a corotational geometric transformation for frame elements.
17+
18+
:param integer tag: integer tag identifying transformation
19+
:type tag: |integer|
20+
:param vecxz: X, Y, and Z components of vecxz, the vector used to define the local x-z plane of the local-coordinate system, **required in 3D**. The local y-axis is defined by taking the cross product of the vecxz vector and the x-axis.
21+
:type vecxz: tuple of floats
22+
:param offi: joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (optional, the number of arguments depends on the dimensions of the current model).
23+
:type offi: tuple of floats
24+
:param offj: joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (optional, the number of arguments depends on the dimensions of the current model).
25+
:type offj: tuple of floats
26+
27+
.. tab:: Tcl
28+
29+
.. function:: geomTransf Corotational02 $tag < $vecxzX $vecxzY $vecxzZ > <-jntOffset $dXi $dYi $dZi $dXj $dYj $dZj>
30+
31+
.. csv-table::
32+
:header: "Argument", "Type", "Description"
33+
:widths: 10, 10, 40
34+
35+
$tag, |integer|, integer tag identifying transformation
36+
$vecxzX $vecxzY $vecxzZ, |float|, "X, Y, and Z components of vecxz, the vector used to define the local x-z plane of the local-coordinate system. The local y-axis is defined by taking the cross product of the vecxz vector and the x-axis.
37+
38+
These components are specified in the global-coordinate system X,Y,Z and define a vector that is in a plane parallel to the x-z plane of the local-coordinate system.
39+
40+
These items need to be specified for the three-dimensional problem."
41+
$dXi $dYi $dZi, |float|, "joint offset values -- offsets specified with respect to the global coordinate system for element-end node i (optional, the number of arguments depends on the dimensions of the current model)."
42+
$dXj $dYj $dZj, |float|, "joint offset values -- offsets specified with respect to the global coordinate system for element-end node j (optional, the number of arguments depends on the dimensions of the current model)."
43+
44+
45+
.. note::
46+
47+
The element coordinate system and joint offsets are the same as that documented for the :ref:`Linear <linearTR>` transformation.
48+
49+
50+
Examples
51+
--------
52+
53+
This example is developed in detail on the examples `site <https://gallery.stairlab.io/examples/framevecxz/>`__.
54+
In order to cover a wide range of cases, the strong axis of the first column, element `1`,
55+
is oriented so as to resist bending *outside* the plane of the portal, but the strong axis of the second column, element `3`, will resist bending *inside* the portal plane.
56+
57+
58+
.. figure:: figures/vecxz.png
59+
:align: center
60+
:width: 50%
61+
62+
A portal frame with :math:`X_3` vertical.
63+
64+
65+
.. code-block:: Python
66+
67+
model.node(1, ( 0, 0, 0))
68+
model.node(2, (width, 0, 0))
69+
model.node(3, (width, 0, height))
70+
model.node(4, ( 0, 0, height))
71+
72+
model.geomTransf("Corotational", 1, (1, 0, 0)) # Column
73+
model.geomTransf("Corotational", 2, (0, 0, 1)) # Girder
74+
model.geomTransf("Corotational", 3, (0,-1, 0)) # Column
75+
76+
77+
78+
Theory
79+
------
80+
81+
.. _corot-directors:
82+
83+
.. figure:: figures/directors.png
84+
:align: center
85+
:figclass: align-center
86+
87+
Corotational transformation of a two-node frame element.
88+
89+
Under a corotational transformation, an element's *state determination* is performed
90+
in a transformed configuration space represented by director fields
91+
:math:`\left\{\bar{\mathbf{d}}_k\right\}`, and
92+
:math:`\left\{\bar{\mathbf{D}}_k\right\}` with the expressions:
93+
94+
.. math::
95+
96+
\left.\begin{aligned}
97+
\mathbf{d}_k &\triangleq \boldsymbol{\Lambda}\mathbf{D}_k \\
98+
\bar{\mathbf{d}}_k &\triangleq \boldsymbol{R}\mathbf{D}_k \\
99+
\bar{\mathbf{D}}_k &\triangleq \bar{\boldsymbol{\Lambda}}\mathbf{D}_k \\
100+
\end{aligned}\right.,
101+
\quad\text{ implying }\qquad
102+
\begin{aligned}
103+
\boldsymbol{\Lambda} &= \mathbf{d}_k\otimes\mathbf{D}_k \\
104+
\boldsymbol{R} &= \bar{\mathbf{d}}_k\otimes\mathbf{D}_k \\
105+
\bar{\boldsymbol{\Lambda}} &= \bar{\mathbf{D}}_k\otimes\mathbf{D}_k \\
106+
\end{aligned}
107+
108+
.. note::
109+
110+
It is more appropriate to think of the corotational transformation as a *family* of transformations.
111+
112+
113+
References
114+
----------
115+
116+
.. [1] Perez, Claudio M., and Filip C. Filippou. “On Nonlinear Geometric Transformations of Finite Elements.” International Journal for Numerical Methods in Engineering 125, no. 17 (September 15, 2024): e7506. https://doi.org/10.1002/nme.7506.
117+
118+
.. [2] De Souza, R. M. "Force-based finite element for large displacement inelastic analysis of frames" University of California, Berkeley (2000)
119+
120+
Code Developed by: |rms|, |cmp|
121+

0 commit comments

Comments
 (0)