static

package
v0.0.0-...-9516e97 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 22, 2019 License: Apache-2.0 Imports: 5 Imported by: 0

README

[[file:../README.org][FrameFEA - Main README]]

* Static Structural Analysis
** Modeling
*** Nodes, Coordinates, Support Conditions and Reactions
Node positions are specified by locations in a three-dimensional Cartesian coordinate system. Each node has six coordinates: three translations in the global X, Y, and Z directions and three rotations about the global X, Y, and Z axes. Optionally, nodes may be modeled as "rigid" within a sphere of radius r. The effects of finite node sizes are modeled approximately in the calculation of the frame element stiffness through the use of an effective beam length, which is the node-to-node length of the frame element less the rigid radii on each end. All nodes are fully moment resisting. Semi-rigid connections may be modeled through the use of short frame elements at the ends of longer members.

#+CAPTION[Node Positioning]: Node Positioning: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/NodePositions.png]]

For two-dimensional (planar) structures the global X direction is horizontal and the global Y direction is vertical. For three-dimensional structures the global X and Y directions are horizontal and the global Z direction is vertical.

Node numbers should be assigned in a systematic way, moving from one end of the structural system to the opposite end.

Support conditions are modeled by fixing the degrees of freedom collocated with reaction forces. By default, displacements at the fixed degrees of freedom are zero. Optionally, displacements at the fixed degrees of freedom may be prescribed as a type of loading. Elastic support conditions may be modeled by additional elements with the desired flexibility. Static reaction forces at the fixed degrees of freedom are computed and are appended to the Output Data file.

*** Numbering of Frame Element Starting Nodes and Ending Nodes
Coordinate transformations in 3D are not unique and depend upon the sequence of rotations. In some cases the orientation of an element within a structure may not be obvious if the element has rotated by more than 90 degrees in going from the local system to the global system. For this reason it can be helpful to define end nodes in a way that requires rotations of less than 90 degrees about any axis. Coordinate transformations in 2D are unique and these potential ambiguities are not a concern. For 3D structures the following recommendations can help in avoiding ambiguous coordinate transformations.

Frame elements connect pairs of nodes. Each frame element has a "starting node" (element node 1, N1) and an "ending node" (element node 2, N2), as described in the Input Data format. In principle, either node of the frame element could be node N1 and either node could be N2. The assignment of N1 and N2 to the frame element should not affect the results. However, to avoid confusion in certain 3D models, the following guidelines are recommended:

- In general node N1 of the frame element should have more negative coordinates than node N2 of the element.
- More specifically, specifying element node 1 location as (x1, y1, z1) and element node 2 location as (x2, y2, z2),
- If x1 ≠ x2 then x1 should be less then x2. Node N2 should be toward the more positive side of the X-axis.
- If x1=x2 and y1 ≠ y2 then y1 should be less then y2. Node N2 should be toward the more positive side of the Y-axis.
- If x1=x2 and y1=y2 and z1 ≠ z2 then z1 should be less then z2. Node N2 should be toward the more positive side of the Z-axis.

The figure below attempts to illustrate the application of these guidelines.

#+CAPTION[Node Numberings]: Node Numberings: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/NodeNumberings.png]]

*** Frame Element Cross Section Properties
Cross-sectional properties of frame elements are specified in a local coordinate system, in which the x-axis of the local coordinate system is oriented along the axis of the frame element. The local y-axis and z-axis are aligned with the principle directions of the shape of the cross section.

**** Axial Effects
Ax is the cross-sectional area of the frame element, which is given as the cross-sectional area of the material perpendicular to the local x-axis.

**** Shear Effects
For slender frame elements shear deformations contribute only slightly to the overall structural deformation (less than three percent for elements with a span-to-depth ratio greater than 10). For stocky frame elements shear deformations contribute significantly to the overall structural deformation (more than seventy percent for elements with a span-to-depth ratio less than 2). Shear strains in frame elements are distributed in a relatively complicated manner over the cross section and the shear area values, Asy and Asz, account for this non-uniform distributions of shear strain. Shear areas may be thought of as effective cross-sectional areas corresponding to the average shear strain over the cross section, V/(GAx). The shear area formulas below for circular, square, and rectangular tube cross sections provide approximations for these cross section properties (consistent with the self-contradictory assumptions of Timoshenko beam theory that plane sections remain plane, that shear stresses are constant across the width of a section (shear stress is permissible at a free surface), and without consideration of lateral strains arising from the Poisson effect). These shear area equations are computed based upon an assumed uniform shear flow across the wall of tube sections. Other shear correction factors, based on A.E.H. Love's theory of elasticity, are tabulated in reference 5. Additional shear area approximations (below) for solid circular and rectangular sections do account for Poisson's effect and have been experimentally validated with prismatic beams of materials having a Poisson ratio, v, of 0.16 to 0.38. (See references 8, 10, and 19.)

Regardless of the section shape and Poisson ratio, the shear areas Asy and Asz are less than the cross section area Ax. For circular tube sections, As/Ax is approximately 0.50 to 0.53. For square tube sections, As/Ax is approximately 0.42 to 0.45.

**** Torsion Effects
Polar Moments of Inertia depend on the shape of the cross-section. For sections with a circular cross section:

#+begin_export latex
\begin{equation}
Jxx = Iyy + Izz
\end{equation}
#+end_export

For sections with a solid rectangular cross section (width=b, depth=d ( b < d ) ):

#+begin_export latex
\begin{equation}
Jxx = Q*d*b^3
\end{equation}
#+end_export


Where:
#+begin_export latex
\begin{equation}
Jxx = Q*d*b^3
\end{equation}
#+end_export

#+CAPTION[Torsional Effects]: Torsional Effects: http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html
#+ATTR_LATEX: :width 4in
[[file:../media/TorsionalEffects.png]]

For more details, see page 271 of Timoshenko and Goodier (1951).

For open sections made up of thin plates (length=b, thickness=t):

#+begin_export latex
\begin{equation}
Jxx = \Sigma_{i} [ b_{i} t_{i}^{3} / 3 ] - \Sigma_{j v t_{j}^{4}}
\end{equation}
#+end_export

Where: 
- v is the Poissons ratio 
- $\Sigma_j$ is a summation over the free ends of the open cross section, which may be neglected in most cases.

For closed single-box sections made up of thin plates (length=b, thickness=t):

#+begin_export latex
\begin{equation}
Jxx = 4 A^2 / \Sigma_{i} [ b_{i} / t_{i} ]
\end{equation}
#+end_export

where 
- A is the area enclosed by the box.

Restraints to warping deformation and the dynamic radial expansion of beams in torsion are not considered in the analysis.

**** Bending Effects
The bending moments of inertia, Iyy and Izz, are the principle bending moments of inertia for the cross section.

**** Cross Section Properties of Circular Tube, Square Tube, Rectangular Tube and I-shaped Sections

#+CAPTION[Cross Section Properties]: Cross Section Properties: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 6in
[[file:../media/CrossSectionProperties.png]]

***** Circular Tube (outer radius= Ro, inner radius = Ri):
#+begin_export latex
\begin{equation}
Ax = \pi*(R_{o}^2 - R_{i}^2 )
\end{equation}
#+end_export

\footnotesize
#+begin_export latex
\begin{equation}
Asy = Asz = Ax / ( 0.54414 + 2.97294(R_{i}/R_{o}) - 1.51899(R_{i}/R_{o})^2 ) \pm 0.05\%
\end{equation}
#+end_export
\normalsize

#+begin_export latex
\begin{equation}
Jxx = (1/2) π ( R_{o}^4 - R_{i}^4 )
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Ixx = Iyy = (1/4) π ( R_{o}^4 - R_{i}^4 )
\end{equation}
#+end_export

***** Square Tube (outer dimension = b x b, wall thickness = t):
#+begin_export latex
\begin{equation}
Ax = b^2 - (b - 2t)^2
\end{equation}
#+end_export

\scriptsize
#+begin_export latex
\begin{equation}
Asy = Asz = Ax / ( 2.39573 - 0.25009(t/b) - 7.89675(t/b)^2 ) \pm 0.05\%
\end{equation}
#+end_export
\normalsize

#+begin_export latex
\begin{equation}
Jxx = (b - t)^3 t
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Izz = Iyy = (1/12) ( b^4 - (b - 2t)^4 )
\end{equation}
#+end_export

***** Rectangular Tube (outer dimension = a x b, wall thickness = t):
#+begin_export latex
\begin{equation}
Ax = ab - (a - 2t)(b - 2t)
\end{equation}
#+end_export

\scriptsize
#+begin_export latex
\begin{equation}
Asy = Ax / ( 0.93498 - 1.28084(t/b) + 1.36441(b/a) + 0.00295(a/b)2 + 0.25797(ta/^{b}2) ) \pm 1\% ... (a > b)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Asz = Ax / ( 1.63544 - 8.34935(t/b) + 0.60125(a/b) + 0.41403(a/b)2 + 4.95373(ta/b^{2}) ) \pm 1\% ... (a > b)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Asy = Ax / ( 1.63544 - 8.34935(t/a) + 0.60125(b/a) + 0.41403(b/a)^{2} + 4.95373(tb/a^{2}) ) \pm 1\% ... (b > a)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Asz = Ax / ( 0.93498 - 1.28084(t/a) + 1.36441(a/b) + 0.00295(b/a)^2 + 0.25797(tb/a^{2}) ) \pm 1\% ... (b > a)
\end{equation}
#+end_export
\normalsize

#+begin_export latex
\begin{equation}
Jxx = 2 t (a - t)^{2}(b - t)^2 / (a + b - 2t)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Iyy = (1/12) ( ab^3 - (a - 2t)(b - 2t)^3 )
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Izz = (1/12) ( a^{3}b - (a - 2t)^{3}(b - 2t) )
\end{equation}
#+end_export

***** I sections (depth = d, width = b, flange thickness = t, web thickness = w):

#+CAPTION[I Cross Section]: I Cross Section: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/IsectionImage.png]]

#+begin_export latex
\begin{equation}
Ax = bd - (d-2t)(b-w)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Asy = 1.64*b*t
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Asz = d*w
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Jxx = (1/3) ( 2*b*t^3 + d*w^3 )
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Iyy = (1/12) ( b*d^3 - (b-w)(d-2t)^3 )
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Izz = (1/12) ( 2*t*b^3 + (d-2t)w^3 )
\end{equation}
#+end_export

**Note**: Commercial sections have rounded corners. Manufacturer specifications for cross sectional properties account for the fact that the corners of the cross sections are rounded. Manufacturer specifcations for section properties should therefore be used whenever available. Some tabulated section properties are provided below.

Approximate formulae for the effective shear areas of solid circular and rectangular cross sections including the Poisson effect have been experimentally validated for Poisson ratio, v, from 0.16 to 0.38. (See references 10 and 19.)

Solid Circular Section: 

#+begin_export latex
\begin{equation}
Asy = Asz = Ax (6+12v+6v^2)/(7+12v+4v^2)
\end{equation}
#+end_export

Where:
- Ax/As ranges from 1.13 to 1.05 for v between 0.1 and 0.4

Solid Rectangular Section: 

#+begin_export latex
\begin{equation}
Asy = Asz = Ax (5+5v)/(6+5v)
\end{equation}
#+end_export

Where:
- Ax/As ranges from 1.18 to 1.14 for v between 0.1 and 0.4

**** Cross Section Properties Of Some Common Steel Sections
- [[http://en.wikipedia.org/wiki/Structural_steel][Structural Steel]]
- [[http://www.engineersedge.com/standard_material/Steel_ibeam_properties.htm][Steel W-section I beams #1]]
- [[http://www.engineersedge.com/standard_material/Steel_ibeam_properties_2.htm][Steel W-setiton I beams #2]]
- [[http://www.engineersedge.com/standard_material/Steel_ibeam_s_properties.htm][Steel S-section I beams]]
- [[http://www.engineersedge.com/standard_material/Steel_angle_properties.htm][Steel Angles #1]]
- [[http://www.engineersedge.com/standard_material/Steel_angle_properties_2.htm][Steel Angles #2]]
- [[http://www.engineersedge.com/standard_material/Steel_channel_properties.htm][Steel Channels]]
- [[http://www.engineersedge.com/I_beams_aluminum.htm][Aluminum I beam]]
- [[http://www.engineersedge.com/channel_aluminum.htm][Aluminum Channels]]

**** Cross Section Properties Of Some Standard Wood Sections

| Beam | Ax $in^2$ | Asy $in^2$ | Asz $in^2$ | Jxx $in^4$ | Iyy $in^4$ | Izz $in^4$ |
|------+---------+----------+----------+----------+----------+----------|
|  2x3 |   3.750 |    2.500 |    2.500 |    1.776 |    1.953 |    0.708 |
|  2x4 |   5.250 |    3.500 |    3.500 |    2.875 |    6.359 |    0.984 |
|  2x5 |   6.750 |    4.500 |    4.500 |    3.984 |   11.390 |    1.266 |
|  2x6 |   8.250 |    5.500 |    5.500 |    5.099 |   20.800 |    1.547 |
|  2x8 |  10.850 |    7.233 |    7.233 |    7.057 |   47.630 |    2.039 |
| 2x10 |  13.880 |    9.253 |    9.253 |    9.299 |   98.930 |    2.602 |
| 2x12 |  16.880 |   11.253 |   11.253 |   11.544 |  178.000 |    3.164 |
| 2x14 |  19.880 |   13.253 |   13.253 |   13.790 |  290.800 |    3.727 |

*** Approximate Properties of Structural Materials

|                    |          |          |     Thermal |          |    Modulus |
|                    |  Young's |    Shear |   Expansion |     Mass |        per |
| Material           |  Modulus |  Modulus | Coefficient |  Density |    Density |
|                    |      (E) |      (G) |         (a) |      (d) |      (E/d) |
|                    | $N/mm^2$ | $N/mm^2$ |      /deg.C | $T/mm^3$ | $mm^2/s^2$ |
|--------------------+----------+----------+-------------+----------+------------|
| Steel A36          |   200000 |    79300 |      117e-6 |   785e-9 |    2.55e13 |
| Boron  Fiber-Epoxy |   106000 |    38000 |     30.0e-6 |  2.00e-9 |    5.30e13 |
| Carbon Fiber-Epoxy |    83000 |    30000 |     30.0e-6 |  1.54e-9 |    5.39e13 |
| Aluminum 2024-T4   |    73100 |    28000 |     23.2e-6 |  2.78e-9 |    2.63e13 |
| Aluminum 6061-T6   |    68900 |    26000 |     23.6e-6 |  2.70e-9 |    2.55e13 |
| Kevlar Fiber-Epoxy |    40000 |    50000 |     30.0e-6 |  1.40e-9 |    2.86e13 |
| Glass  Fiber-Epoxy |    22000 |    80000 |     30.0e-6 |  1.97e-9 |    1.12e13 |
| Magnesium AM1000A  |    44800 |    17500 |     25.2e-6 |  1.80e-9 |    2.49e13 |
| Douglas Fir        |    12400 |     4600 |     30.0e-6 |  0.50e-9 |    2.48e13 |

**Note**:
- These material properties are approximate.
- Properties of Douglas Fir vary naturally by \pm 15 percent.
- Properties of Fiber-Epoxy composites depend on the volume fraction and orientations of the fibers.
- The values above correspond to volume fractions of roughly 50 percent.
- MatWeb lists properties of other materials.

*** Frame Element Coordinate Transformation
When a frame element is placed into the structure it is translated and rotated and optionally rolled about its local x-axis.

The default coordinate transformation process starts with the frame element's centroidal axis placed along the global X-axis, and the principle axes of the cross section (the local y- and z-axes) aligned with the global Y- and Z-axes. The global Y- and Z-axes must coincide with the principle axes of the cross section. To place the frame element in the structure, first it is rotated about the global Y-axis, then about the global Z-axis, then 'rolled' or spun about the local x-axis. If the roll angle, p, is zero, this process results in a transformation for which loads in the global Z-direction will cause no cross-axis bending. In this code, this type of coordinate transformation is called "Z-axis is vertical" and is selected primarily for the sake of visualization with gnuplot, in which the Z-axis is vertical for all three-dimensional plots.

Another, more customary, coordinate transformation process is also implemented in the software. In the alternative coordinate transformation process, the frame element is first rotated about the global Z-axis, then about the global Y-axis, then rolled about the local x-axis. If the roll angle is zero, this transformation results in a frame element with no cross-axis bending due to loads are applied in the global Y-direction. In the code, this type of transformation is called "Y-axis is vertical." For a derivation of the alternative coordinate transformation method, refer to section 8.3 of the textbook Matrix Analysis of Structures by A. Kassimali.

By allowing the frame element to be 'rolled' about its local x-axis during the stiffness matrix assembly process, cross-axis bending effects may be included. Issues related to rolling of cross sections and cross-axis bending are important for three-dimensional structural systems or planar structures with out-of-plane deformation, such as grillages. For planar structures with deformations only in the plane, these issues do not arise. In addition, these issues do not arise for three-dimensional structures made entirely of elements for which Iyy=Izz, i.e., square and circular cross sections. To reiterate, in 2D frames, the roll angle p does not matter, and can be set to 0 (zero) for all frame elements. For frame elements with doubly-symmetric sections (e.g., circular or square) the roll angle p does not matter, and can be set to 0 (zero). For 3D frames made of non-circular or non-square sections and all frame elements are aligned with the global X, Y, or Z axes then the roll angle p might matter but p would probably be either "0" or "90 degrees." Again, for planar structures, with no out-of-plane bending, which lie in the global X-Y, Y-Z, or X-Z planes, and for structures made entirely of bars with Iyy=Izz, the roll angle, p may be set to zero.

Coordinate transformations do not currently consider the effect of finite node sizes, and are based on node-to-node lengths of each frame element.

*** Connections
All connections in a FrameFEA analysis are moment-resisting. Internal hinges may be modeled using a short element with low values of Jxx, Iyy, and Izz. Many connections are more realistically modeled as having some flexibility. Such semi-rigid connections may be modeled through the inclusion of short frame elements with appropriate section and material properties to model the behavior of the connection. Frame elements may be considered infinitely rigid within a sphere of a specified radius, r around a node. The effects of finite node sizes are modeled approximately in the calculation of frame element stiffness through the use of an effective beam length, which is the node-to-node length of the frame element less the rigid radii on each end.

To analyze a structure as a "truss" with this software, specify Jxx, Iyy, and Izz to be much smaller than they would be normally, but not zero. If the shear forces and bending moments in the structural elements are small, then the structural model represents a "truss" approximation of the actual structure. Shear deformation effects and geometric stiffness effects should not be incorporated if Jxx, Iyy, and Izz are made very small. See FrameFEA example A.

*** Shear Deformation, Geometric Stiffness, and Buckling
The FrameFEA analysis will optionally include the effects of shear deformation and/or geometric stiffness. The geometric stiffness matrix includes the effects of axial forces on bending and warping-torsional behaviors. When both shear deformations and geometric stiffness effects are included, the geometric stiffness matrix includes shear deformation effects. If shear deformation effects are not to be included, simply set the shear variable to zero (0). If shear deformation effects are neglected then the values for the shear areas Asy and Asz are not used in the calculations. Any non-zero value for Asy and Asz will do.

To determine the buckling load of a structure, include geometric stiffness effects and increase the loads until the stiffness matrix ceases to be positive- definite. Additionally, you may compute the fundamental natural frequency of the structure and observe how the fundamental frequency decreases with increased loading. In principle, the fundamental frequency is zero when the loads are at the buckling load.

If geometric stiffness effects are included in the analysis and if the loads are close to the buckling load of the structure, then it is recommended to put two or three nodes along each frame element. (i.e. divide each frame element into three or four segments). Including these extra nodes is strongly recommended if a buckling analysis is to be performed.

Whenever geometric stiffness effects are included, the analysis is non-linear and superposition does not hold. In most cases the geometric stiffness matrix lies between the un-stressed stiffness matrix and the tangent stiffness matrix.

*** Loads
Seven types of static loads may be specified:

1. Gravity Loads: Uniformly-distributed gravity loads may be applied to each frame element in a structural model. Gravity loads are specified in terms of the three componenets of gravitational acceleration in the structure's global X-Y-Z coordinate system. The magnitude of the gravity load applied to a frame element is the product of the frame element's mass density, its cross-sectional area, and the structure's gravitational acceleration resultant. Density should be specified in units consistent with the other aspects of the model. For example, if the elastic moduli are in MPa and dimensions are in mm, then the mass density will be Tonne/mm^3; if the elastic moduli are in ksi and the dimensions are in inches, then the mass density will be kip/in^3/g where the gravitational acceleration, g, is in inch/sec^2. The direction of the gravity load is the same as the direction of the gravitational acceleration resultant.

2. Nodal Loads: Concentrated static force loads and concentrated static moments may be applied to individual nodes. These loads are specified as values of point forces and concentrated moments applied to nodes in the directions of the structure's global X-Y-Z coordinate system.

3. Uniformly-Distributed Loads: Uniform loads may be applied in the local element coordinate system over the entire length of a frame element. Uniformly distributed loads are specified as values of the load per unit length applied to the frame element in the local x direction, the local y direction, and the local z direction.

4. Frame Element Interior Point Loads: Concentrated static force loads may be applied at a point along a frame element. The number of interior frame element point loads in the model can be up to ten times the number of frame elements. These loads are specified as values of point forces applied to the frame element in the directions of the frame element's local coordinate system at a distance x from node N1 of the frame element.

5. Trapezoidally-Distributed Loads: may be applied over a partial span of frame elements. Up to ten trapezoidal loads may be specified per frame element. Trapezoidally distributed loads have components in the local x direction, the local y direction, and the local z direction. Trapezoidally distributed loads are specified by the distances along the local x-axis where the loading starts and stops, and by the value of the load at the starting location and the stopping location. - The starting location for a trapezoidal load must be greater than 0 and less than the stopping location of the trapezoidal load. The stopping location for a trapezoidal load must be greater than the starting value of the trapezoidal load and less than the length of the frame element. Fixed end forces computed from trapezoidal loads include the effects of shear deformation when shear deformation effects are incorporated.

6. Thermal Loads: Thermal loads assume a linear temperature gradient through cross sections. Thermal loads are specified by values for the coefficient of thermal expansion, the depth of the section in the local y direction, the depth of the section in the local z direction, and the temperature changes on the +y surface, the -y surface, the +z surface, and the -z surface. Thermal loads are applied over the entire frame element.

7. Prescribed Displacements/Rotations: Prescribed motions may occur only at reaction degrees of freedom. Static node displacements and rotations are specified in the structure's global X-Y-Z coordinate system.

More than one load of the same type on the same element or node may be specified. For example, one or more trapezoidally distributed loads may be applied to the same frame element.

Whenever the average axial strain in a frame element connection (Nx/(EAx)) exceeds 0.001 (0.1%) in magnitude, a warning message is displayed indicating the strain level and the element in question. Most structural materials yield at strains between 0.1% and 0.2%. When this warning message is displayed the structure is likely in an overloaded condition and the loads should be reduced. Note that this check for overloaded elements provides an approximate stress check. A more complete stress check would compute the composite axial, shear, torsion and bending stresses and strains within each element. Such a check requires additional cross section information: the section moduli and the section dimensions, as described in sections 7.13 and 7.14 below.

The static stability of many structures depends upon a level of prestress within the structure. In such geometrically non-linear analyses, pre-stressed structres may be modeled by specifying a uniform temperature cooling in all pre-tensioned elements. The value of the temperature change corresponding to a desired pre-stress tension force depends on the stiffness of the components of the structural system and may be determined with a few iterations. As an initial guess, set the temperature change to be (-T)/(a E Ax), where T is the value of the desired pre-stress tension of the frame element, a is the coefficient of thermal expansion, E is the elastic modulus, and Ax is the cross section area of the frame element. Section 8, below, describes how thermal (pre-stress) loads are analyzed before the response to mechanical loads is analyzed.

*** End Force Sign Convention
The frame element end forces listed in the Output data file adhere to a sign convention determined by the local coordinate system of the frame element. The local coordinate system of the frame element has its origin at node 1 of the frame element. The local x-axis lies along the element, from node 1 to node 2. The local y and z axes are aligned with the principle axes of the frame element cross section. The frame element end forces are designated as Nx, Vy, Vz for the axial force and end shears in the local y and z directions; and Tx, My, Mz for the torsional moment and bending moments about the local y and z axes. The sign convention for frame element end forces is shown in the figure below. The double-headed arrows adhere to the "right hand rule."

#+CAPTION[End Force Sign Convention]: End Force Sign Convention: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/EndSignConvention.png]]


The mathematical signs of the member end forces are relative to the local x-y-z axes of the frame element and designate the direction of the force along those axes. A positive Nx at node 1 of the member is compressive, while a negative Nx at node 2 is also compressive. The opposite is true for tension. The Output Data lists a "t" or a "c" along with the axial forces (Nx) in order to help clarify whether the end force is putting the frame element into tension or compression. A frame element with positive My at node 1 and a negative My at node 2 has positive curvature in the x-z plane. A frame element with negative Mz at node 1 and a positive Mz at node 2 has positive curvature in the x-y plane.

*** Internal Frame Element Forces and Transverse Displacements
FrameFEA optionally generates output data files listing the internal axial force, shear forces, torsion, and bending momements and transverse displacements for each frame element. These quantities are tabulated at user-specified increments of length dx along the local x-axis of each frame element. If the x-axis increment, dx, is specified as a value of "-1" then the calculation of internal frame element forces and transverse displacements is skipped. Otherwise a separate internal force output file is written for each load case. For frame elements of length shorter than dx, internal forces and displacements are calculated at x=0 and x=L. If the FrameFEA analysis Output Data file is named MyResultsA.out, then the internal force output data files are automatically named MyResultsA.if01 for load case 1, MyResultsA.if02 for load case 2, and so on. The internal force output data contains a section for each frame element. Each section has eleven columns, as follows:

column A: (x) x-axis data with a user-specified x-axis increment, dx.
column B: (Nx) frame element axial force along the local x-axis
column C: (Vy) frame element shear force in the local y direction
column D: (Vz) frame element shear force in the local z direction
column E: (Tx) frame element torsion about the local x-axis
column F: (My) frame element bending moments about the local -y-axis
column G: (Mz) frame element bending moments about the local z-axis
column H: (Dx) frame element axial displacement in the local x direction
column I: (Dy) frame element transverse displacement in the local y direction
column J: (Dz) frame element transverse displacement in the local z direction
column K: (Rx) frame element twist rotation about the local x-axis
The data in the frame element internal force data file is tab-delimitted. The frame element internal force data file may be plotted with gnuplot, may be read by a spreadsheet program, may be read by Matlab or may be read by your own program for further post-processing or visualization.

The header information for each frame element contains the element number (column B), the element's end nodes (columns C and D), the end node coordinates (columns E - J), and the number of x-axis increments for the frame element (column K). The header also includes a listing of the maximum and minimum internal forces and modments and the maximum and minimum element displacements. The data for this part of the header information is preceded with a '@' character, to facilitate parsing of this data file. The last header character prior to the the internal force data is a '~' character, again to facilitate parsing of the data. In the figure above, nx is 181 (K,10), indicating that the following element data is tabulated at 181 increments along the local x-axis.

The computation of internal element forces is consistent with linear elastic analysis. Internal forces and displacements will have some error if geoemetric stiffness effects are significant, and are included in the analysis.

The data in this file is sufficient to plot the undeformed mesh, the deformed mesh, and plots of internal forces, torisons, and moments super-imposed upon the structural mesh.

The sign convention for internal forces and transverse displacements is as follows:

Positive internal axial force (Nx) is tensile.
Positive internal shear forces (Vy and Vz) are in the positive y and z directions on positive x surfaces.
Positive internal torsion (Tx) is counter-clockwise about the positive x-axis.
Positive bending moments (My and Mz) produce positive curvature bending deformation in the x-z and x-y planes.
Positive transverse displacements (Dy and Dz) are in the positive y and z directions.
The sign convention for internal forces is illustrated below:

#+CAPTION[Internal Forces]: Internal Forces: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/InternalForces.png]]

Internal forces and transverse displacements are computed using numerical integration of the distributed loads on the frame elements. A corrected trapezoidal integration method is implemented so that the internal force and transverse displacement data match the known internal forces and node displacements at both ends of each frame element. Internal forces and displacements computed with a smaller increment length, dx, are more accurate. In general, a value of dx equal to one percent to ten percent of the typical frame element length is sufficiently accurate.

*** Stress Check
**** Section Modulus and Torsion Shear Constant
The section properties required for elastic frame analysis are Ax, Asy, Asz, Jxx, Iyy, and Izz, as described section 7.4. To compute stresses from the frame element end forces, the following section properties are required:

- Section Area, Ax ,
- Section Shear Area, Asy and Asz ,
- Section Modulus, Sy and Sz , and
- Torsion Shear Constant, C .

The units of Sy, Sz and C are length-cubed (like in^3 or mm^3). Referring to the text and figures of section 7.4, the section moduli and torsional shear constants may be found as follows:

***** Circular Tube (outer radius= $R_{o}$, inner radius = $R_{i})$:
#+begin_export latex
\begin{equation}
Sy = Sz = Iyy / R_{o} = Izz / R_{o}
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
C = Jxx / R_{o}
\end{equation}
#+end_export

***** Square Tube (outer dimension = b x b, wall thickness = t):
#+begin_export latex
\begin{equation}
Sy = Sz = Iyy / (b/2) = Izz / (b/2)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
C = 2*t*(b-t)^2
\end{equation}
#+end_export

***** Rectangular Tube (outer dimension = a x b, wall thickness = t):
#+begin_export latex
\begin{equation}
Sy = Iyy / (b/2)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Sz = Izz / (a/2)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
C = 2 t (a-t) (b-t)
\end{equation}
#+end_export

***** I sections (depth = d, width = b, flange thickness = t, web thickness = w):
#+begin_export latex
\begin{equation}
Sy = Iyy / (d/2)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
Sz = Izz / (b/2)
\end{equation}
#+end_export

#+begin_export latex
\begin{equation}
C = Jxx / (1.28*t) ... assuming t > w
\end{equation}
#+end_export

Note: Commercial sections have rounded corners. Manufacturer specifications for cross sectional properties account for the fact that the corners of the cross sections are rounded. Manufacturer specifcations for section properties should therefore be used whenever available. Some tabulated section properties are provided in section 7.4.

**** Axial Stress
Given the section properties Ax, Sy, and Sz, the axial stresses at the ends of frame elements may be bounded as follows:

At end (1) of a frame element the maximum bending plus axial tensile stress in the frame element is no greater than:
#+begin_export latex
\begin{equation}
-Nx_{1} / Ax + abs(Myy_{1}) / Sy + abs(Mzz_{1}) / Sz
\end{equation}
#+end_export

At end (2) the maximum bending plus axial tensile stress in the frame element is no greater than:
#+begin_export latex
\begin{equation}
+Nx_{2} / Ax + abs(Myy_{2}) / Sy + abs(Mzz_{2}) / Sz
\end{equation}
#+end_export

A "c" indicator on "Nx" values in the FrameFEA Output Data file indicates compression. A "t" indicator on "Nx" values indicates tension.

**** Shear Stress
Given the section properties Asy, Asz, and C, the axial stresses at the ends of frame elements may be approximated as follows:

At end (1) the shear stress in the local y axis (on average) is roughly:
#+begin_export latex
\begin{equation}
|Vy_{1}| / Asy + |Txx_{1}| / C
\end{equation}
#+end_export

At end (1) the shear stress in the local z axis (on average) is roughly:
#+begin_export latex
\begin{equation}
|Vz_{1}| / Asz + |Txx_{1}| / C
\end{equation}
#+end_export

And likewise for end (2).

** Numerical Details
FrameFEA imposes no limit on the number of degrees of freedom. 

FrameFEA analyzes the response to temperature loads alone prior to solving for the response to the combination of temperature loads and mechanical loads. In this way, temperature loads may be used to simulate the effect of pre-tension in structures, which can provide geometric stiffness. For each load case FrameFEA carries out the following eight steps:

1. Assemble the elastic structural stiffness matrix for the un-stressed structure:
    K(D=0)

2. Compute the node displacements due to temperature loads, F^{t}, using a linear elastic analysis: 
    $K_{qq}(0)D^{t}_q = F^{t}_q$

3. If geometric stiffness effects are to be considered,
    - Compute frame element end forces from the displacements due to temperature loads:
        $Q(D^{t})$
    - Assemble the structural stiffness matrix again making use of the axial frame element forces arising from the temperature loads: 
        $K(D^{t})$

4. Compute the node displacements due to mechanical loads, Fm, only, including prescribed joint displacements: 
    $K_{qq}(D^{t})D^{m}_{q} = F^{m}_{q} - K_{qr}(D^{t})D_{r}$ 
    For a linear-elastic analysis, neglecting geometric stiffness: 
    K = K(0)

5. Add the node displacements due to mechanical loads to the node displacements due to temperature loads: 
    $D^1 = D^t + D^m$
    and combine the temperature and mechanical loads:
    $F = F^t + F^m$

6. Compute frame element end forces from the displacements due to the combined temperature and mechanical loads: 
    $Q(D^{1})$

7.If geometric stiffness effects are to be considered, carry out a second-order analysis via quasi Newton-Raphson iterations in order to converge upon the displacements that satisfy equilibrium (starting with i=1).
    1. Assemble the structural stiffness matrix again, now making use of the axial frame element forces arising from the combined temperature and mechanical loads: 
        $K(D^{(i)})$
    2. Compute the equilibrium error at displacements $D^{(i)}$: 
        $dF_{q}^{(i)} = F_q - K_{qq}(D^{(i)})D_{q}^{(i)} - K_{qr}(D^{(i)})Dr$
    3. Compute the RMS relative equilibrium error criterion 
        $'|| dF_{q}^{(i)} || / || F_{q} ||'$
    4. Solve for the incremental displacements, $dD^{(i)}$: 
        $K_{qq}(D^{(i)}) dD_{q}^{(i)} = dF_{q}^{(i)}$
    5. Increment the displacements: 
        $D_{q}^{(i+1)} = D_{q}^{(i)} + dD_{q}^{(i)}$
    6. Compute frame element end forces from the displacements due to the combined temperature and mechanical loads: 
        $Q(D^{(i)})$
    7. The Newton-Raphson iterations have converged when the root-mean-square relative equilibrium error (the root-mean-squre of $dF_{q}^{(i)}$ divided by the root-mean-square of $F_q$ computed in step 3., above) is less than the specified tolerance. The convergence tolerance is taken as the convergence tolerance for the dynamic modal analysis. The default value is $10^{-9}$.
8. Compute the reaction forces for the converged solution: 

$R_r = K_{rq}(D^{(i)})D_{q}^{(i)} + K_{rr}(D^{(i)})D_{r} - F_{r}$

Where:
- subscript q indicates the set of displacement coordinates
- subscript r indicates the set of reaction coordinates
- superscript (i) indicates the iteration number
- $D_{q}^{(i)}$ is the vector of unknown displacements at iteration i
- $D_r$ is the vector of known prescribed displacements (at reaction coordinates)
- $K(D^{(i)})$ is the stiffness matrix, dependent upon displacements at iteration i
- $F_q$ is the vector of known applied loads (at displacement coordinates)
- $F_r$ is the vector of known applied loads (at reaction coordinates)
- $R_r$ is the vector of unknown reaction forces for the converged solution
- $dF_{q}^{(i)}$ is the equilibrium error vector at iteration i
- $dD_{q}^{(i)}$ is the incremental displacement vector at iteration i
- $D_{q}^{(i+1)}$ is the vector of uknown displacements at iteration i+1
- $Q(D^{(i)})$ is the set of frame element end forces at iteration i

#+CAPTION[Geometric Stiffness]: Geometric Stiffness: [http://svn.code.sourceforge.net/p/frame3dd/code/trunk/doc/Frame3DD-manual.html]
#+ATTR_LATEX: :width 4in
[[file:../media/FKDD.png]]


The second-order analysis carried out in steps 7.1. - 7.6. is illustrated above and is described in more detail in section 4.5 of reference 4.

Solutions to linear matrix equations (steps 2., 4., and 7.3) are obtained via an LDL' decomposition/back-substitution with sparse-matrix short-cuts and iterative improvement for enhanced speed and accuracy. Iterative improvements to the solution to $[K]{dD} = {dF}$ are obtained (for both linear elastic and geometrically nonlinear problems) by iteratively solving $[K_{qq}]{r_{q}}^{(k)} = {dF_{q}}-[K_{qq}]{dD_{q}}^{(k)} -[K_{qr}]{dD_{r}}^{(k)} with {dD}^{(k+1)} = {dD}^{(k)} + {r}^{(k)}$. The superscript (k) is the LDL' iteration counter. Iterations are stopped when the root-mean-square of the residual incremental displacement vector (the root-mean-square of ${r}^{(k)})$ decreases by less than ten percent within an LDL' iteration. The stiffness matrix [K] does not change within these iterations.

At each Newton-Raphson iteration, the root-mean-square relative equilibrium error is displayed to the screen. This error is the root-mean-square of $dF_{q}^{(i)}$ divided by the root-mean-square of $F_q$.

For the converged solution, the final value of the root-mean-square of the residual incremental displacement, $r^{(k)}$, is displayed. For converged solutions the root-mean-square of $r^{(k)}$ is typically on the order of $10^{-20}$.


Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssembleK

func AssembleK(K [][]float64, DoF, nE int, xyz []femath.Vec3, r, L, Le []float64, N1, N2 []int, Ax, Asy, Asz, Jx, Iy, Iz, E, G, p []float64, shear, geom bool, Q [][]float64) (finalErr error)

AssembleK assembles the global stiffness matrix from individual elements 23feb94

K, stiffness matrix
DoF, number of degrees of freedom
nE,	number of frame elements
xyz, XYZ locations of every node
r, rigid radius of every node
L, double *Le,	 length of each frame element, effective
N1, int *N2,	 node connectivity
Ax, float *Asy, float *Asz,	 section areas
Jx, float *Iy, float *Iz,	 section inertias
E, float *G,	 elastic and shear moduli
p, roll angle, radians
shear, true: include shear deformation, false: don't
geom, true: include goemetric stiffness, false: don't
Q, frame element end forces

func ComputeReactionForces

func ComputeReactionForces(R, F []float64, K [][]float64, D []float64, DoF int, r []bool)

ComputeReactionForces : R(r) = [K(r,q)]*{D(q)} + [K(r,r)]*{D(r)} - F(r) reaction forces satisfy equilibrium in the solved system

 2012-10-12  , 2014-05-16
	R, computed reaction forces
	F, vector of equivalent external loads
	K, stiffness matrix for the solved system
	D, displacement vector for the solved system
	DoF, number of structural coordinates
	r, false: not a reaction; true: a reaction coordinate

func ElementEndForces

func ElementEndForces(Q [][]float64, nE int, xyz []femath.Vec3, L, Le []float64, N1, N2 []int,
	Ax, Asy, Asz, Jx, Iy, Iz, E, G, p []float64, eqFTemp, eqFMech [][]float64, D []float64,
	shear, geom bool, axialStrainWarning *bool) (finalErr error)

ElementEndForces evaluates the end forces for all elements * 23feb94 double **Q, /**< frame element end forces */ int nE, /**< number of frame elements */ vec3 *xyz, /** XYZ locations of each node */ double *L, double *Le, /**< length of each frame element, effective */ int *N1, int *N2, /**< node connectivity */ float *Ax, float *Asy, float *Asz, /**< section areas */ float *Jx, float *Iy, float *Iz, /**< section area inertias */ float *E, float *G, /**< elastic and shear moduli */ float *p, /**< roll angle, radians */ double **eqFTemp, /**< equivalent temp loads on elements, global */ double **eqFMech, /**< equivalent mech loads on elements, global */ double *D, /**< displacement vector */ int shear, /**< 1: include shear deformation, 0: don't */ int geom, /**< 1: include goemetric stiffness, 0: don't */ *bool axialStrainWarning /** false: strains < 0.001 */

func EquilibriumError

func EquilibriumError(dF, F []float64, K [][]float64, D []float64, DoF int, q, r []bool) float64

EquilibriumError compute {dF_q} = {F_q} - [K_qq]{D_q} - [K_qr]{DR} use only the upper-triangle of [K_qq] return ||dF||/||F|| 2014-05-16 dF, equilibrium error {dF} = {F} - [K]{D} F, load vector K, stiffness matrix for the restrained frame D, displacement vector to be solved DoF, number of degrees of freedom q, true: not a reaction; false: a reaction coordinate r, false: not a reaction; true: a reaction coordinate

func SolveSystem

func SolveSystem(K [][]float64, D, F, R []float64, DoF int, q, r []bool, ok *int, rmsResid *float64) (finalErr error)

SolveSystem solve {F} = [K]{D} via L D L' decomposition 27dec01 Prescribed displacements are "mechanical loads" not "temperature loads"

K, stiffness matrix for the restrained frame
D, displacement vector to be solved
F, external load vector
R, reaction vector
DoF, number of degrees of freedom
q, true: not a reaction; false: a reaction coordinate
r, false: not a reaction; true: a reaction coordinate
ok, indicates positive definite stiffness matrix
rmsResid /**< the RMS error of the solution residual

Types

type Input

type Input struct {
	// Dof = 6*nN
	// Run Info
	Shear bool // indicates shear deformation
	Geom  bool // indicates  geometric nonlinearity

	// Node Info
	NumNodes   int           // number of Nodes
	Xyz        []femath.Vec3 // {NumNodes} X,Y,Z node coordinates (global)
	NodeRadius []float64     // {NumNodes} node size radius, for finite sizes

	// Reaction Info
	ReactedDof   []bool // {Dof} Dof's with reactions formally "r"
	UnreactedDof []bool // {Dof} Dof's without reactions formally "q" (calculated)

	// Element Info
	NumElems     int       // Number of Frame Elements
	N1, N2       []int     // {NumElems} begin and end node numbers
	Ax, Asy, Asz []float64 // {NumElems} cross section areas, incl. shear
	Jx, Iy, Iz   []float64 // {NumElems} section inertias
	E, G         []float64 // {NumElems} elastic modulus, shear modulus
	ElemRoll     []float64 // {NumElems} roll of each member, radians

	L  []float64 //  node-to-node length of each element (calculated)
	Le []float64 //  effective length, accounts for node size (calculated)

	// Load Info
	StaticTol       float64   // Convergence tolerance for the static analysis when Geom == true
	AnalyzeLoadCase bool      //  Are there mechanical loads in Mechanical Loads
	MechanicalLoads []float64 // {Dof} mechanical load vectors, all load cases
	Dp              []float64 // {Dof} prescribed node displacements

	TempLoads    bool      // Are there temperature loads in the load case
	ThermalLoads []float64 // {Dof} thermal load vectors, all load cases

	EqFMech [][]float64 //  {numElems}{12} equivalent end forces from mech loads global (calculated)
	EqFTemp [][]float64 //  {numElems}{12} equivalent end forces from temp loads global (calculated)
	// contains filtered or unexported fields
}

Input is the data required for a static frame structural analysis.

func (*Input) DoF

func (inData *Input) DoF() int

DoF returns the number of degrees of freedom represented by the StaticInput structure.

func (*Input) Run

func (inData *Input) Run() (K, Q [][]float64, F, D, R []float64, eqErr, rmsResid float64, ok int, finalErr error)

Run performs a static analysis on the input data.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL