100% found this document useful (1 vote)
1K views45 pages

User Manual and Reference For Frame3DD

This document provides instructions for installing and running the structural analysis program Frame3DD on Linux systems. It describes downloading the Frame3DD installation files, setting the PATH and temporary directory variables, running example models from the command line, and viewing output files. The program performs static and dynamic analysis of frames and trusses, reading input data and geometry from plain text files and writing results to output files.

Uploaded by

Lan Lavisto
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
1K views45 pages

User Manual and Reference For Frame3DD

This document provides instructions for installing and running the structural analysis program Frame3DD on Linux systems. It describes downloading the Frame3DD installation files, setting the PATH and temporary directory variables, running example models from the command line, and viewing output files. The program performs static and dynamic analysis of frames and trusses, reading input data and geometry from plain text files and writing results to output files.

Uploaded by

Lan Lavisto
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 45

c





Department of Civil and Environmental Engineering
Edmund T. Pratt School of Engineering
Duke University - Box 90287, Durham, NC 27708-0287




÷
÷
is a program for the static and dynamic structural analysis of two- and three-
dimensional frames and trusses with elastic and geometric stiffness.

÷
is preferably executed from the command prompt (Windows) or shell (Linux) or
terminal (OS X), as follows, with filenames changed as required:

„
„

„

÷
reads a plain-text å
, containing joint coordinates, frame element
geometry, material moduli, fixed joints, prescribed displacements, load information, and
optionally, mass information if a modal analysis is to be carried out.

÷
appends results to a plain-text
. Results from the most recent
analysis are appended to the
of the Output Data file. Each section of the Output Data
gives the date and time of the analysis, recapitulates the input information, gives joint
displacements in global coordinates, frame element end-forces in local coordinates, reactions
in global coordinates, and natural frequencies and mode shapes in global coordinates.

÷
writes a Gnuplot script file used for viewing deformed frames and dynamic
mode shapes. If the Output Data is written to a file called
, the Gnuplot
script is written to a file called
. Graphical output may be viewed by starting
Gnuplot and typing:
.

÷
can consider multiple static load cases in a single analysis. Separate output data
files list the internal axial force, shear forces, torsion, and bending moments along each frame
element for each static load case.

÷
may optionally interface with Matlab and with spreadsheet programs.

÷
is




; you may redistribute it and/or modify it under the
terms of the GNU General Public License (GPL) as published by the Free Software
Foundation. The software is distributed in the hope that it will be useful, but without any
warranty; without even the implied warranty of merchantability or fitness for a particular
purpose. See LICENSE.txt for details.



X. Getting started
2. Input Data and Output Data
3. How to install and run Frame3DD
X. Linux
2. Mac OS X
3. Windows
4. Matlab Interface
5. Spreadsheet Interface
6. FrameEd
7. Structural Modeling
8. Numerical Details
9. Input Data Format
X . Variable Definitions
XX. Command-line options
X2. Source code
X3. Exit code index
X4. Enhancements projected for future versions
X5. References

X


X. Read the User Manual and Reference (this file).
2. Download Frame3DD and save the Frame3DD folder to your Desktop (more details
below).
3. Optionally, obtain a copy of Gnuplot for your operating system (more details below).
4. Open a terminal, go to the Frame3DD directory, and run the program on one of the
examples using a command like ...
† „

6. Open the Output Data file using a good text editor and view the Output Data.
7. Plot the structural configuration, the deformed structural shape, and mode-shapes, by
starting Gnuplot, and typing



Observe a series of plots by hitting the Return (or Enter) key between plots.
If a dynamic analysis was performed, you will enjoy an animation of selected mode
shapes.
Continue to hit the Return (or Enter) key until the last plot is displayed.

ïå


The å
is a plain text file and must adhere to the format described below.
Several examples are given at http://frame3dd.sourceforge.net/. When writing your own input
files, note the following points:

2 Comments may be placed anywhere in the file and are helpful in organizing the Input
Data.
A comment begins with one of the following four characters and continues to
the end of the line.
2 All commas in the Input Data are ignored.
2 Floating point numbers must be entered as X.234 X234 or X.234e3.
2 Arithmetic expressions such as X.234*X 3 or 6*sin(pi/2) are allowed in the Input
Data (unless the Matlab interface is used).

To write your own Input Data file, it may be helpful to start with an example that resembles
the system you would like to analyze. Carefully compare the graphical output of the example,
the Input Data file, the Output Data file, and the å , with the


at the end of this page.

You may edit Input Data files using a good plain text editor (vim, jEdit, nano, gedit (Linux),
NotePad++ (Windows), etc.), using the Matlab interface, or using spreadsheet programs
(GoogleDocs, OpenOffice, Gnumeric, or Excel).

Details regarding the Matlab interface to Frame3DD are here.


Details regarding the spreadsheet interface to Frame3DD are here.

It might take a few tries to get your Input Data just right. Frame3DD checks the Input Data
for errors prior to analyzing the system and, where possible, displays descriptive diagnostic
messages when errors are found with the Input Data.

÷
generates several
used in plotting deformed frames. By
default, these output files are sent to a temporary file folder. On OS X, Linux, and Unix, the
location of this folder defaults to the directory. On Windows, the location of this folder
defaults to å
. If you would like your output files to be sent to another
location, you can set the environment variable ÷ !" å with the path to your
desired temporary output directory. The additional output files will then appear in the folder
you have specified.

# ÷



Compiled executable programs are updated with some regularity. Frame3DD installation
packages are available for download for Linux, for OS X, and for Windows operating
systems as .ZIP archives. These installation .ZIP archives include:

2 A copy of the GPL license (LICENSE.txt)


2 The executable program (frame3dd) for the selected operating system (Linux, OS X,
or Windows)
2 This manual, (doc/user-manual.html)
2 Some general information (README.txt)
2 Some Windows-specific issues (README-win32.txt)
2 The Matlab interface code (matlab/)
2 A summary of recent updates to the program (ChangeLog.txt)
2 A set of example Input Data files (examples/)

A separate Windows installer includes a Microstran viewer module for Frame3DD.

The date stamp at the beginning of the manual corresponds to the release date of the code.

X$

For Linux you may install Frame3DD from a .ZIP archive or you may compile for Linux or
Unix from the source code. The following instructions install Frame3DD to the
% but
other directories may be substituted, if so desired.

XXå

$

X. Linux and Unix systems have good plain text editors pre-installed (vim, gedit, nano).
There should be no need to install another editor. A tutorial for vim is here.
2. Download the Frame3DD .ZIP archive (Frame3DD_VERSION_linux.zip) and save it
in your
%.
3. If the .ZIP archive was not automatically unzipped, double-click the icon to extract it
to your
%.
4. -Ñ [ Put the ÷
directory in your path and set the
÷ !" å location.
To do this, double-click the #
icon on the Desktop, and select '
(
#
÷

If you have a file called in your home directory, open it with a double-click.
Copy-and-paste the following ten lines into the beginning of
† „ „
„


! "#$%&'"#$%'%()



„*+, „ - -'./012
34 „ - -'./0
33 5 „ - -'./0„ 5
36 „
3 „


37 0#)-(.$80& „ - -'./0

... save, and exit the editor.

If you have a file named in your home directory, open it with a double-click.
Copy-and-paste the following ten lines into the beginning of

„ „


„


&9' ' :



„9+, „ - -'
:
„ - -'

5 „ - -'
„ 5
„
„


;0#)-(.$80 „ - -'

... save, and exit the editor.


.

X5. Open a Terminal window. (Right-click on an open part of the Desktop and select


.) Change to the directory containing the Frame3DD example files
and run an example, as follows.
3 <
3! „

Some run-time information will be displayed on the Terminal and the results of your
Frame3DD analysis will have been appended to the end of the

Output Data


file. Data files used primarily for plotting are stored in the

!
!)" directory.

X8. You may view Output Data files and edit Input Data files using a good plain text
editor (vim, gedit, nano), or a spreadsheet program (GoogleDocs, OpenOffice,
Gnumeric). For example, to read or edit the Input Data file. Double-click the #

icon on the Desktop, navigate to the directory of your data files, right click on the
Data File and select the editor of your choice.
X9. Run your own Frame3DD analyses within the Terminal window using a command
like ...
64 „ ) ) 0
#

Use Gnuplot to view the graphical output.

X. Gnuplot is commonly pre-installed on Linux systems. If it is not, you may install it


only if you have root privileges using a command like ...
,

... or by using the package manager GUI installed on your system.
2. Start Gnuplot in the Terminal with the command:


4. Display the plots of your structure using Gnuplot with a command like ...
†
) 0
#

where
is the name of of the Output Data file specified when running
Frame3DD.

6. Hit the 'Return' key in the Terminal window to see the sequence of plots and
animations until the ( prompt returns. Or hit $ to stop the plots at the
current plot.
7. To save the current plot as a PostScript file in the Frame3DD/examples directory, use
the
script included in the Frame3DD/examples directory.

;

+ , "#
X . After finishing with your plots, you can exit Gnuplot by typing ...
33
=

Xïå


$
"

The following instructions work on Ubuntu 8.X - 9.X and should work with minor changes
on any other recent Linux or Unix system.

X. Ensure you have Python, SCons and GCC installed on your system. On Debian-based
systems it should suffice to
6
,
,
3. If you would like to build the Microstran viewer, ensure that the package =,
;7 is installed on your system.
7
,= ,;7
5. Download the Frame3DD source-code tarball (frame3dd-VERSION.tar.bz2) and save
it in your home directory.
6. Open a Terminal, unpack the source code, enter the source directory, and build the
code, as follows:
! >;„„ ,?0/8(@ A6
„ ,?0/8(@

X . If you have root privileges, install
to ...
33

or you may install frame3dd in another system directory if your choosing, such as, ...


8@/$#BB-"08C&

X2. If you do not have root privileges, you can run Frame3dd directly from the build tree:
3 B-B8D0#0E-"#$%&<„ ,?0/8(@

37 "#$%&'"#$%<„ ,?0/8(@

X5. Copy one of the frame3dd-VERSION/examples/*.3dd files (e.g.,

) into your


home directory, make sure you have write-privileges for the file, and run one of the
examples
3 „

ï*

For OS X running on an Intel processor, you may install Frame3DD from a .ZIP archive or
you may compile from the source code. The following instructions install Frame3DD to the

% but other directories may be substituted, if so desired.

ïXå

*

X. Install a good plain text editor for OS X: jEdit, or Vim. A tutorial for Vim is here.
Alternatively, you may use TextEdit.
2. Download the Frame3DD .ZIP archive (Frame3DD_VERSION_osx.zip) and save it
in your
%.
3. If the .ZIP archive was not automatically unzipped, double-click the icon to extract it
to your
%.
4. -Ñ [ Put the ÷
directory in your path and set the
÷ !" å location.
To do this, open your +
file using your good text editor.
* Using TextEdit, open a Terminal ("
(
and type:

* Using jEdit, ÷
(
and type +
in the ÷

text entry bar.
* Using Vim, ÷
(
and select
from your home directory.
Copy-and-paste the following ten lines into the beginning of +

† „ „


„


! "#$%&'"#$%'%()



„*+, „ - -'./012
34 „ - -'./0
33 5 „ - -'./0„ 5
36 „
3 „


37 0#)-(.$80& „ - - './0
... save, and exit the editor.

X5. Open a Terminal (Applications > Utilities > Terminal), change to the directory of
example files and run an example.
3 <
3! „

Some run-time information will be displayed on the Terminal and the results of your
Frame3DD analysis will have been appended to the end of the

Output Data


file. Data files used primarily for plotting are stored in the

!
!)" directory.

X8. You may view Output Data files and edit Input Data files using your plain text editor
(jEdit, Vim, TextEdit) or a spreadsheet program (GoogleDocs, OpenOffice).
If you use Apple's TextEdit, make sure you are in Plain Text mode ... [SHIFT]
[APPLE] [T] ... or ... Format > Make Plain Text ...
X9. Run your own Frame3DD analyses within the Terminal window using a command
like ...
64 „ ) ) 0
#

Use Gnuplot to view the graphical output.

X. From you Mac's Administrator account, first install Xcode, then install MacPorts, and
finally install Gnuplot.
To install Xcode, go to the Apple Developer Connection (ADC), join ADC to
create an account, log in, and then click on (


,
and browse for the version of Xcode for your version of OS X.
For OS X X , Tiger, install Xcode ï- Developer Tools
For OS X X - Leopard, install Xcode X, Developer Tools
For OS X X . Snow Leopard, install Xcode ïX Developer Tools
Make sure the "Unix Development" option is selected if installing Xcode 3.X.4
or 3.2.X.
To install MacPorts for your version of OS X (X .4 Tiger, X .5 Leopard, or
X .6 Snow Leopard), follow these instructions.
To install Gnuplot, open a terminal and type:


If this is your first MacPorts package installation, it will take several minutes
to complete.

2. Visualize your ÷


analysis output. Open a Terminal window (Applications >
Utilities > Terminal) and ...


7
<
†
) 0
#

where
is the name of of the Output Data file specified when running
frame3dd.

6. Hit the 'Return' key in the Terminal window to see the sequence of plots and
animations until the ( prompt returns.
7. To save the current plot as a PDF file in the Frame3DD/examples directory, use the

!
script included in the Frame3DD/examples directory.

; -

+ , „"# „
X . After finishing with your plots, you can exit Gnuplot by typing ...
33
=

ïï

*

X. Install the Xcode Developer Tools for your version of OS X as described above.
2. Download the Frame3DD source-code tarball (frame3dd-VERSION.tar.bz2) and save
it in your home directory.
3. Unpack the source code, enter the source directory, and build the code, as follows:
7 ,(,„ „ „ - -

- .
,

For Microsoft Windows, you may install Frame3DD from a .ZIP archive, you may use a
binary installer (which may sometimes be out of date), or you may compile from the source
code. The following instructions install Frame3DD to the
% but other directories may
be substituted, if so desired.



X. Install a good plain text editor for Windows: NotePad++, or jEdit, or gvim. A tutorial
for gvim is here. Alternatively, you may use NotePad.
2. Download the Frame3DD .ZIP archive (Frame3DD_VERSION_win32.zip) and save
it to your
%.
3. If the .ZIP archive was not automatically unzipped, double-click the icon to extract it
to your
%.
4. -Ñ [ Put the ÷
directory in your path and set the # and
÷ !" å environment variables.
To do this, %
(

(
(

'

Set a new user variable name # with variable value
# #


Set a new user variable name ÷ !" å with variable value
# #



(The


folder should already exist.)
Detailed information on how to set environment variables in Windows is here, if you
need it.
5. Open a "command prompt window" (( (

(
), change to the directory of example files, and run an example, as
follows:
F%()"#$%F G G G
! „

Alternatively, you may double-click on the


program icon and enter the
Input Data file name and Output Data file name when prompted, as follows:
"
„
"

„

Some run-time information will be displayed on the Command Prompt window and
the results of your Frame3DD analysis will have been appended to the end of the

Output Data file. Data files used primarily for plotting are stored in the



folder.

8. You may view Output Data files and edit Input Data files using a good plain text
editor (NotePad++, jEdit, gvim), or a spreadsheet program (GoogleDocs,
OpenOffice).
9. Run your own Frame3DD analyses within the Command Prompt window using a
command like ...
34 „ ) ) 0
#

Use Gnuplot to view the graphical output.

X. Download the MS-Windows version of Gnuplot and save it to your


%.
2. Navigate to
%( ( and right click on to create a
shortcut to your
%.
3. Clicking on the icon on the Desktop will start Gnuplot.
4. To load the plot into Gnuplot, first change directory to to location of your output files,
by clicking on the button at the top of the Gnuplot window and navigating to

%(÷
(


.
5. Display the plots of your structure using Gnuplot with a command like ...

) 0
#

where
is the name of of the Output Data file specified when running
Frame3DD.

7. Click / to see the next plot or


to stop with the current plot.
8. To save the current plot as a PostScript file in the Frame3DD/examples folder, use the

!ï script included in the Frame3DD/examples folder.

; -H6
34
+ , "#

ïå

X. Install a good plain text editor for Windows: NotePad++, or jEdit, or gvim. A tutorial
for gvim is here. Alternatively, you may use NotePad.
2. Download and run the binary installer (frame3dd-VERSION.exe).
3. -Ñ [ Put the ÷
directory in your path and set the # and
÷ !" å environment variables.
To do this, %
(

(
(

'

Set a new user variable name # with variable value
÷å$÷

Set a new user variable name ÷ !" å with variable value
# #


.
You will need to create this Temp folder:


before running
÷
.
Detailed information on how to set environment variables in Windows is here, if you
need it.
4. Copy one or more of the example files (eg

) from your


÷å$÷


folder into your
% folder
5. Open a "command prompt window" (Start > All Programs > Accessories > Command
Prompt), change to the directory of example files and run an example:
F%()"#$%F G
! „

Some run-time information will be displayed on the Command Prompt window and
the results of your Frame3DD analysis will have been appended to the end of the

Output Data file. Data files used primarily for plotting are stored in the



folder.

8. You may run ÷


, examine the analysis results, visualize the results using
Gnuplot, and edit Input Data files as described above.



X. Install a GCC compatible compiler, such as the DJGPP gcc compiler, the LCC-win32
compiler, or the MinGW compiler.
2. Download the Frame3DD source-code tarball (frame3dd-VERSION.tar.bz2) and save
it in your home directory.
3. Unpack the source code, enter the source directory, and build the code, as follows:
7 ,(,„ „ „ - -

- .
,

, å


÷
may optionally be executed from within Matlab on any platform, via the Matlab
interface function frame_3dd.m

„
*I0IIBIJ1& „ -9CEKIL$/I0M$I#8LI"I.I:
F*I0IIBIJ1&„ -9CEKIL$/I0M$I#8LI"I.I:
F
F/; ,„
F
F8@".$#$#
F
FCEK7L CEK „>
F H3&C , „ >
F H6&E , „ >
F H&K , „ >
F H7&
„ >
F
FL$/6D H6>„
F H3& >„ „
F H6&>„ „
F
F0M$L H>;
F4> „„ I
F3>; „„
F
F#8L34D

„„

F H3&# „ „
F H6&# , „ „
F H&#A A , „ „
F H7&L „ ,„ „

F H†&8 „ , „ „

F H&8AA„ ,A„ „

F H!&

„ „
F H&N

„ „
F H& „ „
F H34& „ „
F
F"L „
F„ >
F H3&L C , „ >
F H6&L E , „ >
F H&L K , „ >
F H7&L)
C ,„ >
F H†&L)
E ,„ >
F H&L)
K ,„ >
F
F.D
„ „
F H3&
„

F H6&
„

F H&
„
A
F
FL „
F H3& > C, „
>
F H6& > E , „
>
F H& > K , „
>
F H7& >
C,„
>
F H†& >
E ,„
>
F H& >
K ,„
>
F
F(.$".$#$#
F
FL „„ „>
F0L „ „
F36D „„ „„
FB3D; „„„
FJLL „

„„

The ÷
executable program (
on Linux or OS X,

on
Windows) and the matlab interface function,
! must be saved to directories
within your Matlab path. To display the or modify the matlab path, use the matlab command
.

In Linux and OS X you can add the Frame3DD directory to your matlab path with the matlab
commands:
9*;9%(): 1I :
9*;9%(): 1I :

In Windows you can add the Frame3DD directory to your matlab path with the matlab
commands:

9*;9./0"0(8B: 1I :


9*;9./0"0(8B: 1I :

The matlab interface function, frame_3dd.m, executes the system command (


on
Linux or OS X,

on Windows) to compute the solution.

X. The Matlab file for your problem first sets up the various matrices defining the
problem for analysis and calls frame_3dd.m
A Matlab version of Example A illustrates how to analyze problems using the Matlab
interface to ÷
.
Matlab versions of the other examples are forthcoming.
2. frame_3dd.m writes a ÷
input data file called IOdata.FMM,
3. frame_3dd.m calls a system command to run the executable program
in the
input data file IOdata.FMM .
4. The executable program
writes the Output Data to IOdata.OUT , and also
writes IOdata_out.m, containing the Output Data.
An m-file containing the Output Data is written whenever the frame3dd executable is
run on a file ending in ".FMM", whether or not the analysis is initiated by
frame_3dd.m.
5. frame_3dd.m runs IOdata_out.m, containing the matrices D, R, F, L, and Ks,
6. frame_3dd.m returns D, R, F, L, and Ks, to the Matlab workspace, or to your Matlab
function.

This m-function interface to ÷


is currently capable of static analyses. It does not
(yet) implement the following features of ÷
:

2 Matlab functions for graphical display of the results


2 gravity loading
2 point forces applied between the joints of a frame element
2 temperature loads
2 multiple load cases
2 modal analysis
2 matrix condensation

Adding these features would require editing the matlab inteface function, frame_3dd.m.

-

å


Input Data for ÷
may be read and written using spreadsheet programs (excel,
GoogleDocs, OpenOffice, Gnumeric).

Any of the ÷


example Input Data files may be opened with a spreadsheet program.
When editing an Input Data file with a spreadsheet program, save it in ' format (with a
"'" filename extension).
When run on a ' file, ÷
writes results as plain text to the named Output Data
file and also writes results of the static analyses to a spreadsheet with a filename ending in
"'". For example, running ÷
as follows:

„ ) M/?) 0


#

results in the two Output Data files


and
!'. These
' files may be viewed, edited, pre-processed, and post-processed with a spreadsheet
program.

The results spreadsheet file includes an index table specifying the row numbers of each type
of result.
Sections of an example results spreadsheet are shown below.

This example has three load cases.

Displacements for load case X start at row 2X and end at row 25.
Frame element end forces for load case X start at row 28 and end at row 35.
Reaction forces for load case X start at row 38 and end at row 42.

Displacements for load case 2 start at row 49 and end at row 53.
Frame element end forces for load case 2 start at row 56 and end at row 63.
Reaction forces for load case 2 start at row 66 and end at row 7 .

Displacements for load case 3 start at row 77 and end at row 8X.
Frame element end forces for load case 3 start at row 84 and end at row 9X.
Reaction forces for load case 3 start at row 94 and end at row 98.
For any ÷
.CSV results file, the spreadsheet cells containing the result row
numbers are given in the following table.

$
X ÷ $
Joint Displacements C-X C-XX
Frame Element End Forces D-X D-XX
Reaction Forces E-X E-XX
$
ï ÷ $
Joint Displacements C-X2 C-X3
Frame Element End Forces D-X2 D-X3
Reaction Forces E-X2 E-X3
$
÷ $
Joint Displacements C-X4 C-X5
Frame Element End Forces D-X4 D-X5
Reaction Forces E-X4 E-X5
et cetera

The columns of the spreadsheet results file are arranged as follows.


Displacement results are in columns A through G:

Frame element end force results are in columns A through H:

Reaction results are in columns A through G:

Modal analysis results are not (yet) written to the .CSV formatted output file.


÷
! is a Windows GUI for the 2 2 X 3 version of ÷
(Jan 3, 2 2).
The .zip file FrameEd.zip includes:

2 the GUI executable, Frame_Ed.exe


2 the frame analysis executable, Frame3d.exe, for the 2 2 X 3 version
2 an example input file, exG.3dd, for the 2 2 X 3 version
2 a template for the Input Data file, ex2 2.3dd, for the 2 2 X 3 version

Differences between the 2 2 and the current versions of ÷


are:

2 The 2 2 version does not support comments in the Input Data.


2 The 2 2 version does not support multiple load cases.
2 The 2 2 version does not support roll angles for frame element orientation.
2 The 2 2 version uses the Jacobi method for modal analysis.
2 The 2 2 version requires specification of joint masses and inertias for every joint.
2 The 2 2 version does not support panning of the animation.
2 The 2 2 version uses Guyan reduction for matrix condensation, to match the first
mode.

Source code for FrameEd is not currently available, and development on this GUI is no
longer active.

ð

ðX"

The Output Data is formatted using floating point display, not scientific notation. To obtain
the greatest number of significant digits in the output, use units of force and length such that
the modulus of elasticity occupies three to five figures before the decimal point. For example,
if the frame to be analyzed is made of steel or aluminum, use units of (kips (X pounds)
and inches), or (Newtons, millimeters, and tonne), or (MegaNewtons, meters, and
kilotonnes).

It is recommended to write the units used in your analysis in the title of the analysis and
throughout the Input Data files, as is done in the example Input Data files.

2 X inch = 25.4 millimeter = . 254 meter


2 X kip = 4 448.22X 6 Newton = . 4 448 22X 6
begin_of_the_skype_highlighting 4 448 22X
6 end_of_the_skype_highlighting MegaNewton
2 X kip/square inch = 6.894 757 28 Newton/square millimeter = 6.894 757 28
MegaNewton/square meter
2 X kip/cubic inch = . 27 679 9 4 593 tonne/cubic millimeter = 27.679 9 4 593
kilotonne/cubic meter
2 X /deg.F = X.8 /deg.C

ðï0 1
1

Joint positions are specified by locations in a three-dimensional Cartesian coordinate system.
Each joint has six coordinates: three translations in the global  , , and directions and three
rotations about the global  , , and axes. Optionally, joints may be modeled as "rigid"
within a sphere of radius r. The effects of finite joint sizes are modeled approximately in the
calculation of the frame element stiffness through the use of an effective beam length, which
is the joint-to-joint length of the frame element less the rigid radii on each end. All joints are
fully moment resisting. Semi-rigid connections may be modeled through the use of short
frame elements at the ends of longer members.

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

Joint 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.

ð
÷


0 0

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 9 degrees in going from the local system to the global
system. For this reason it can be helpful to define end joints in a way that requires rotations of
less than 9 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 joints. Each frame element has a "starting joint" (element
joint X, JX) and an "ending joint" (element joint 2, J2), as described in the Input Data format.
In principle, either joint of the frame element could be joint JX and either joint could be J2.
The assignment of JX and J2 to the frame element should not affect the results. However, to
avoid confusion in certain 3D models, the following guidelines are recommended:

2 In general joint JX of the frame element should have more negative coordinates than
joint J2 of the element.

More specifically, specifying element joint X location as ( y z ) and element joint 2


location as ( y z),

2 If  then should be less then . Joint J2 should be toward the more positive
side of the  -axis.
2 If and y  y then y should be less then y. Joint J2 should be toward the
more positive side of the -axis.
2 If and y y and z  z then z should be less then z. Joint J2 should be
toward the more positive side of the -axis.

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

ð,÷





Cross-sectional properties of frame elements are specified in a local coordinate system, in


which the -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.

ð,X

A is the cross-sectional area of the frame element, which is given as the cross-sectional area
of the material perpendicular to the local -axis.

ð,ï

Shear strains in frame elements are distributed in a relatively complicated manner over the
cross section. Shear areas are effective cross-sectional areas corresponding to a uniform
distribution of shear strain over the cross section. The shear area values, Asy and Asz, fully
account for the non-uniform distribution of shear strain in the cross section. For slender frame
elements (in which the span-to-depth ratio is greater than X ) shear deformations contribute
only slightly to the overall structural deformation. For stocky frame elements (in which the
span-to-depth ratio is less than 5) shear deformations contribute significantly to the overall
structural deformation. The shear area formulas below for circular, square, and rectangular,
cross sections provide accurate approximations of the exact values of these variables.
Regardless of the section shape, the shear areas Asy and Asz are less than the cross section
area A.

ð,

Polar Moments of Inertia depend on the shape of the cross-section. For sections with a
circular cross section:
m Iyy + Izz

For sections with a solid rectangular cross section (width=b, depth=d ( b < d ) ):
m Q d b3
where Q 3 - 0. (db + 0. 07);

For more details, see page 27X of Timoshenko and Goodier (X95X).

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


m Ȉi [ bi ti3 3 ]
For closed single-box sections made up of thin plates (length=b, thickness=t):
m A Ȉi [ bi ti ]
where A is the area enclosed by the box.

Restraints to warping deformation are not considered in the analysis.

ð,,2

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

ð,-



13

1

å


Circular Tube (outer radius= Ñ , inner radius = Ñi):

2 A ʌ ( Ñ - Ñi )
2 Asy Asz A ( . 35 + 0.055 0(Ñ iÑ ) + .097 3(Ñ iÑ ) - 0.30057(ÑiÑ )3
) ± .5%
2 Asy Asz A ( .0 + 0.595(Ñ iÑ ) ) ± 2%
2 m ( ) ʌ ( Ñ - Ñi )
2 I Iyy ( ) ʌ ( Ñ - Ñi )

Square Tube (outer dimension = b x b, wall thickness = t):

2 A b - (b - t)
2 Asy Asz A ( .0833 - 0.70 5(tb) - 8.003 3(tb) + .57(tb) 3 ) ± .5%
2 Asy Asz A ( . 8 - .9900(tb) ) ± 2%
2 m (b - t)3 t
2 Izz Iyy ( ) ( b - (b - t) )

Rectangular Tube (outer dimension = a x b, wall thickness = t):

2 A ab - (a - t)(b - t)
2 Asy A ( . 7 + 0.8 87(tb) + 0.9 99(ba) - . 77(ta) ) ± X% ... -([
2 Asy A ( . 098 - .985 8(ta) + 8.77(ta) 3 + 0.9958(ba) + 0.9 (tba) -
5.355(t ba3) ) ± X% ... -([
2 Asz A ( . 098 - .985 8(tb) + 8.77(tb) 3 + 0.9958(ab) + 0.9 (tab ) -
5.355(t ab3) ) ± X% ... -([
2 Asz A ( . 7 + 0.8 87(ta) + 0.9 99(ab) - . 77(tb) ) ± X% ... -([
2 m t (a - t)(b - t) (a + b - t)
2 Iyy ( ) ( ab3 - (a - t)(b - t)3 )
2 Izz ( ) ( a3 b - (a - t)3(b - t) )

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

2 A bd - (d-t)(b-w)
2 Asy . b t
2 Asz d w
2 m ( 3) ( b t3 + d w3 )
2 Iyy ( ) ( bd3 - (b-w)(d-t)3 )
2 Izz ( ) ( t b3 + (d-t)w3 )


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.

ð,.




2 Structural Steel
2 Steel W-section I beams #X
2 Steel W-section I beams #2
2 Steel S-section I beams
2 Steel Angles #X
2 Steel Angles #2
2 Steel Channels
2 Aluminum I beam
2 Aluminum Channels

ð,ð





## #AL8 8AA
O6O6O6O7O7O7

6 !†46 †446 †443 !!3 †4 !4
67† 6†4 †44 †446 !† †4 7
6† !†47 †447 †44 733 43 6
6 6†4† †44† †44† 464 443 †7!
634 †4! 6! 6! 4†!7! 46 4
6343 4 6† 6† 6 46 46
6363 433 6†33 6†33 †773! 444 37
6373 43 6†3 6†3 !464 44 !6!

ð-





$
)


E
/ )

)

)

M„„

N

@O6@O6 M$O
O6O6

/#644444!4433 ! ,! † ,
6 ††3
D , 344444444 4 ,6 44 ,
† 43
M , 44444444 4 ,3 †7 ,
† 3
#

6467 ,$7!34464446 6 ,6 ! ,
6 3
#

43 ,$4464446 ,6 !4 ,
6 ††3
J; , 74444†44444 4 ,3 74 ,
6 3
N , 6644444444 4 ,3 ! ,
3 363
)
#)3444#77443!†446† 6 ,3 4 ,
6 73

367447444
-„-- - 36744744
4-„-- - 4 ,4 †4 ,6 73

Note:

2 These material properties are approximate.


2 Properties of Douglas Fir vary naturally by +/- X5 percent.
2 Properties of Fiber-Epoxy composites depend on the volume fraction and orientations
of the fibers.
The values above correspond to volume fractions of roughly 5 percent.

MatWeb lists properties of other materials.

ð.÷




When a frame element is placed into the structure it is translated and rotated and optionally
rolled about its local -axis.

The default coordinate transformation process starts with the frame element's centroidal axis
placed along the global  -axis, and the principle axes of the cross section (the local y- and z-
axes) aligned with the global - and -axes. The global - and -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 -axis, then about the global -axis, then 'rolled' or spun about the
local -axis. If the roll angle, , is zero, this process results in a transformation for which
loads in the global -direction will cause no cross-axis bending. In this code, this type of
coordinate transformation is called "-axis is vertical" and is selected primarily for the sake
of visualization with Gnuplot, in which the -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 -axis, then about the global -axis, then rolled about the local -
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 -direction. In the code, this type of
transformation is called " -axis is vertical." For a derivation of the alternative coordinate
transformation method, refer to section 8.3 of the textbook atri Analysis f Structures by
A. Kassimali.

By allowing the frame element to be 'rolled' about its local -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 IyyIzz, i.e.,
square and circular cross sections. To reiterate, in 2D frames, the roll angle does not matter,
and can be set to (zero) for all frame elements. For frame elements with doubly-symmetric
sections (e.g., circular or square) the roll angle does not matter, and can be set to (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 might matter but would
probably be either " " or "9 degrees." Again, for planar structures, with no out-of-plane
bending, which lie in the global  - , -, or  - planes, and for structures made entirely of
bars with Iyy=Izz, the roll angle, may be set to zero.

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

ðð

All connections in a ÷


analysis are moment-resisting. Internal hinges may be
modeled using a short element with low values of m, 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 joint. The effects of finite
joint sizes are modeled approximately in the calculation of frame element stiffness through
the use of an effective beam length, which is the joint-to-joint length of the frame element less
the rigid radii on each end.

To analyze a structure as a "truss" with this software, specify m, 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 be incorporated if m, Iyy, and Izz are made very small. See Frame3DD
example A.

ð4

1


1 2%

The ÷
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 ( ). If shear deformation effects are neglected then the values for the shear areas Asy and
Asz
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 joints along each
frame element. (i.e. divide each frame element into three or four segments). Including these
extra joints 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.

ð5$

Seven types of static loads may be specified:

2 $
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  - - 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. The direction of the gravity load is the same as the direction of
the gravitational acceleration resultant.
2 0 $
Concentrated static force loads and concentrated static moments may be applied to
individual joints. These loads are specified as values of point forces and concentrated
moments applied to joints in the directions of the structure's global  - - coordinate
system.
2 "
$
Uniformly distributed static 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
direction, the local y direction, and the local z direction.
2 ÷


$
Concentrated static force loads may be applied to frame elements between the joints.
Up to ten frame element point loads may be specified per frame element. 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 from joint m of the frame
element.
2
6
$
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 direction, the local y direction, and
the local z direction. Trapezoidally distributed loads are specified by the distances
along the local -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 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.
2
$
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.
2




Static joint displacements and rotations may be prescribed only at reaction degrees of
freedom. Static joint displacements and rotations are specified in the structure's global
 - - coordinate system.

Up to thirty static load cases may be anlayzed by specifying the variable nL in the Input Data
file, and by specifying the seven types of loads for each load case, as shown in Frame3DD
example A and Frame3DD example B.

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

Whenever the average axial strain in a frame element connection ((EA)) exceeds . X
( .X%) in magnitude, a warning message is displayed indicating the strain level and the
element in question. Most structural materials yield at strains between .X% and .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.X3 and 7.X4 below.

The static stability of many structures depends upon a level of prestress within the structure.
In such goemetrically 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 A), 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 A 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.

ðX

The ÷
analysis will optionally include a dynamic analysis for natural modes of
vibration. Dynamic properties may be obtained for the un-stressed or the stressed structure by
either neglecting or including geometric stiffness effects. The mass may be modeled using
either the consistent mass matrix or the lumped mass matrix.

The natural frequencies and mode-shapes of the structural frame may be computed from the
stiffness and mass matrices using either the Stodola method or the Jacobi method. The
solution method and the convergence tolerance for these iterative methods is specified in the
Input Data file. If a dynamic modal analysis is to be carried out, the Input Data file must also
specify the mass density of each frame element, additional mass carried by the frame
element, and extra mass or inertia carried by the joints. A specified set of modes may be
animated within Gnuplot.

÷
has the capability of computing the natural frequencies and mode-shapes of
frames that are fully restrained, partially restrained, or completely un-restrained. Partially
restrained frames have up to six independent rigid body modes. A completely un-restrained
frame has six independent rigid body modes. The stiffness matrix for partially restrained and
completely unrestrained structures is not invertible. Such structural configurations can not
carry static loads. Furthermore, the numerical methods used in computing the natural
frequencies and mode shapes presume that the stiffness matrix is invertible. A numerical trick
called "frequency shifting" overcomes this difficulty. Presuming the mass matrix [] is
invertible, and given a sufficiently large positive scalar value s, the matrix [[K] + s[]] is
invertible, even if the stiffness matrix [K] is not invertible. So, for the purpose of computing
the natural frequencies of frames with rigid-body modes, [K] is replaced by [[K]+s[]]. The
desired natural frequencies are shifted by an amount equal to the "shift" variable, s, and are
shifted back, after the natural frequencies and mode shapes are found. The mode shapes are
un-changed by this "shifting." If natural frequencies are computed as "nan" (not a number) try
increasing the value of the frequency shift variable either in the Input Data file or using the -f
command line option. Structural models that are partially restrained or unrestrained should
not include geometric stiffness effects.

A Sturm check is carried out to determine if any eigen-values were missed.


If a dynamic analysis is not to be performed, simply set the n variable (the number of
desired modes) to zero ( ). If n is set to zero, ÷
will stop reading the Input file at
this point. If n is set to zero, there is no need to provide numerical values for the quantities
after the n variable.

ðXX

Reduced order stiffness and mass matrices may be computed via a static condensation, Guyan
reduction, or dynamic condensation. The condensed mass and stiffness matrices are saved as
text files called Kc and Mc. The Guyan reduction method is generalized so that the
condensed matrices match the fundamental frequency of the original structure exactly. The
dynamic condensation method is a pseudo-inverse-modal-matrix method, and the resulting
condensed mass and stiffness matrices may be ill-conditioned. The pseudo-inverse of the
modal matrix is computed using a regularization method which somewhat improves the
conditioning of the condensed mass and stiffness matrices.

ðXï ÷

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 joint X of the frame element. The local -axis lies along
the element, from joint X to joint 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 , y,
z for the axial force and end shears in the local y and z directions; and T, y, z 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."
The mathematical signs of the member end forces are relative to the local -y-z axes of the
frame element and designate the direction of the force along those axes. A positive at joint
X of the member is compressive, while a negative at joint 2 is also compressive. The
opposite is true for tension. The Output Data lists a "t" or a "c" along with the axial forces
() in order to help clarify whether the end force is putting the frame element into ension or
ompression. A frame element with positive y at joint X and a negative y at joint 2 has
positive curvature in the -z plane. A frame element with negative z at joint X and a positive
z at joint 2 has positive curvature in the -y plane.

ðXå
÷


÷




÷
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 d along the local -axis
of each frame element. If the -axis increment, d, is specified as a value of "-X" 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 d, internal forces and displacements are calculated at =
and . If the Frame3DD analysis Output Data file is named
, then the
internal force output data files are automatically named
X for load case X,

ï 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:

2 column A: (x) -axis data with a user-specified -axis increment, d.


2 column B: (Nx) frame element axial force along the local -axis
2 column C: (Vy) frame element shear force in the local y direction
2 column D: (Vz) frame element shear force in the local z direction
2 column E: (Tx) frame element torsion about the local -axis
2 column F: (My) frame element bending moments about the local -y-axis
2 column G: (Mz) frame element bending moments about the local z-axis
2 column H: (Dx) frame element axial displacement in the local direction
2 column I: (Dy) frame element transverse displacement in the local y direction
2 column J: (Dz) frame element transverse displacement in the local z direction
2 column K: (Rx) frame element twist rotation about the local -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. An example of the first several lines of an internal force data file is shown here.
In this example, the -axis increment, d, has a length of X mm.
The header information for each frame element contains the element number (column B), the
element's end joints (columns C and D), the end joint coordinates (columns E - J), and the
number of -axis increments for the frame element (column K). 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, n is X8X (K,X ), indicating that the following
element data is tabulated at X8X increments along the local -axis.

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:

2 Positive internal axial force (Nx) is tensile.


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

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 joint displacements at both ends of each frame element. Internal forces
and displacements computed with a smaller increment length, d, are more accurate. In
general, a value of d equal to one percent to ten percent of the typical frame element length
is sufficiently accurate.

ðX,

%

ðX,X

The section properties required for elastic frame analysis are A, Asy, Asz, m, Iyy, and Izz, as
described section 7.4. To compute stresses from the frame element end forces, the following
section properties are required:

2 Section Area, A ,
2 Section Shear Area, Asy and Asz ,
2 Section Modulus, Sy and Sz , and
2 Torsion Shear Constant, — .

The units of Sy, Sz and — are length-cubed (like in3 or mm3 ). 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= Ñ , inner radius = Ñi):


2 Sy Sz Iyy Ñ Izz Ñ
2 — m Ñ

Square Tube (outer dimension = b x b, wall thickness = t):

2 Sy Sz Iyy (b) Izz (b)


2 — t ( b-t )

Rectangular Tube (outer dimension = a x b, wall thickness = t):

2 Sy Iyy ( b )
2 Sz Izz ( a )
2 — t (a-t) (b-t)

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

2 Sy Iyy ( d )
2 Sz Izz ( b )
2 — m ( .8 t ) ... assuming t > w


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.

ðX,ï

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

At end (X) of a frame element the maximum bending plus axial tensile stress in the frame
element is no greater than:

2 - A + abs(yy ) Sy + abs(zz ) Sz

At end (2) the maximum bending plus axial tensile stress in the frame element is no greater
than:

2 + A + abs(yy) Sy + abs(zz) Sz

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

ðX,

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

At end (X) the shear stress in the local y axis (on average) is:
2 abs(y ) Asy + abs(T ) —

At end (X) the shear stress in the local z axis (on average) is

2 abs(z ) Asz + abs(T ) —

And likewise for end (2).

4


÷
imposes no limit on the number of degrees of freedom. Dynamic memory
allocation is accomplished by the public-domain routines found in Press, W.H., et al,
umerical Ñecies In —, (Cambridge, England: Cambridge University Press, X99X).

÷
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 ÷
carries out the following nine steps:

X. Assemble the structural stiffness matrix for the un-stressed structure.


2. Compute the joint displacements due to temperature loads using a linear elastic
analysis.
3. Compute frame element end forces from the displacements due to temperature loads.
4. Assemble the structural stiffness matrix again.
If goemetric stiffness effects are to be considered, the assembly process makes use of
the axial frame element forces arising from the temperature loads.
5. Compute the joint displacements due to mechanical loads.
6. Add the joint displacements due to mechanical loads to the joint displacements due to
temperature loads.
7. Compute frame element end forces from the displacements due to the combined
temperature and mechanical loads.
8. If geometric stiffness effects are to be considered, carry out quasi Newton-Raphson
iterations to converge upon the displacements that satisfy equilibrium.
The assembly process makes use of the axial frame element forces arising from the
combined temperature and mechanical loads.
9. Compute the "RMS relative equilibrium error."

Solutions of the matrix equation, K d f, make use of LDL' decomposition/back-substitution


with sparse-matrix short-cuts and iterative improvement for enhanced speed and accuracy.

When the program is executed, various solution errors are displayed to the screen and are
written to the Output Data file. Iterative improvements to the LDL' back-substitution make
use of a quasi Newton-Raphson method:

K dD(i) = F - K D(i)
D(i+X) = D(i) + dD(i)

where
2 (i) is the displacement vector at iteration i ,
2 K is the stiffness matrix ,
2 ÷ is the applied load vector ,
2 d(i) is the incremental displacement vector at iteration i , and
2 (i+ ) is the displacement vector at iteration i+

At each LDL' back-substitution iteration, the equilibrium error is displayed to the screen as
the "RMS equilibrium precision." This error is the root-mean-square of d(i). Iterations are
stopped when this error decreases by less than ten percent in an iteration.

When geometric stiffness effects are included, the solution is obtained iteratively, using a
quasi Newton-Raphson method:

K(D(i)) dD(i) = F - K(D(i)) D(i)


D(i+X) = D(i) + dD(i)

where

2 (i) is the displacement vector at iteration i,


2 K((i)) is the secant stiffness matrix at displacements (i)
2 ÷ is the applied load vector ,
2 d(i) is the incremental displacement vector at iteration i , and
2 (i+ ) is the displacement vector at iteration i+

At each Newton-Raphson iteration, the relative equilibrium error is displayed to the screen.
This error is the root-mean-square of (÷ - K((i)) (i)) divided by the root-mean-square of ÷.
Newton-Raphson iterations stop when this error is less than the convergence tolerance. The
convergence tolerance is specified as the convergence tolerance for the modal-analysis. The
default value is . X

The accuracy of the final solution is checked using a global equilibrium check and the
equilibrium error is reported. The "RMS relative equilibrium precision" is the root-mean-
square of internal frame element forces and external applied loads at every un-restrained
degree of freedom normalized by the root-mean-square of the applied loads. This equilibrium
error is typically less than one part in one-billion when geometric stiffness effects are
neglected. If an analysis has an "RMS relative equilibrium precision" larger than . X, the
results should not be trusted.

If the "RMS relative equilibrium precision" is not adequately small and geometric stiffness
effects are n t included in the analysis, try including the effects of geometric stiffness by
changing the geometric stiffness variable ge m in the Input Data file to or by using the -
gOn command line option. Conversely, if the "RMS relative equilibrium precision" is not
adequately small and geometric stiffness effects are included in the analysis, try neglecting
the effects of geometric stiffness by changing the geometric stiffness variable ge m in the
Input Data file to 0 or by using the -gOff command line option.

Natural frequencies and mass-normalized mode-shapes of the lower modes may be obtained
using a generalized Jacobi sub-space iteration procedure or a Stodola iteration procedure.
Jacobi-subspace iterations are stopped when the frequency convergence error is less than the
specified frequency convergence tolerance. The frequency convergence error is defined here
as:

error = | fN(i) - fN(i-X) | / fN(i)

where

2 f(i) is the highest natural frequency computed at iteration i ,


2 f(i- ) is the highest natural frequency computed at iteration i- ,

5å ÷


Click here to download an Input Data template, template.3dd, or copy-and-paste the text
below.

The first line of the Input Data file must be a one-line title of your analysis. It is
recommended to write the system of units into the title. The title must not contain the '@' or
the '~' characters, as these characters are used for parsing the Internal Force data file.

$ 8
„„ ,

„
9@II:


„@HI I

„


>

L
„>
>C , E, K,


L*31*31 *31A*31 *31

L*L1*L1 *L1A*L1 *L1




0
„>H
>CEKCCEEKK4„ I3„
L*310*310 *310A*310*310 *310AA*31

L*010 *010 *010A*010*010 *010AA*01


„


„„

>3>6## #AL8 8AN

O6O6 O6O7O7O7)")"
O
)*31L3*31L6*31#*31# *31#A*31L*318 *318A*31*31N*31
*31*31


)*1L3*1L6*1# *1# *1#A*1L*18 *18A*1*1
N*1 *1*1

3&I4&
„ „„
3&I4&
„„„„
- „ „ „
„ , „ „ „
I
„ ,3 „





B
„I3 4

D/ BM3

; „ „ ,HIO69:
CEK
O6O6O6
CEK


„>9:
>C ,E,K,C,E ,K ,
@@@@ @ @
L*31*31 *31A*31)*31) *31)AA*31

L*1*1 *1A*1)*1) *1)AA*1

.
„
„ ,

9:
C ,E,K,
„

@@@
)*31.*31 . *31.A*31

)*.1.*.1. *.1.A*.1

P
„ A ,

9:


@@
)*313*316*61H3*31H6*31 ,,

3*31 6*61H 3*31H 6*31 , ,

A3*31A6*61HA3*31HA6*31 ,A,


)*P13*P16*P1H3*P1H6*P136

3*P1 6*P1H 3*P1H 6*P1H3H6

A3*P1A6*P1HA3*P1HA6*P14Q3Q6QB

"
„ 9:
C ,E,K,,

)*31"*31" *31"A*31 *31
&„ L3
)*"1"*"1" *"1"A*"1*"14QQB

$
„„ H

9:
„ , A, $ R$ ,$AR$A ,
M M M M M
)*31*31 *31A*31$ R*31$ ,*31$AR*31$A ,*31

)*$1*$1 *$1A*$1$ R*$1$ ,*$1$AR*$1$A ,*$1


„ Q&09:
>C , E, K, C, E , K ,

L*31*31 *31A*1*31 *31AA*31

L*1*1 *1A*1*1 *1AA*1

/BM3

D/BM6

; „ „ ,HIO69:
CEK
O6O6O6
CEK


„>9:
> C,E,K,C,E ,K ,
@@@@ @ @
L*31*31 *31A*31)*31) *31)AA*31

L*1*1 *1A*1)*1) *1)AA*1

.
„
„ ,

9:
C ,E,K,
„

@@@
)*31.*31. *31.A*31

)*.1.*.1. *.1.A*.1

P
„ A ,

9:


@@
)*313*316*61H3*31H6*31 ,,

3*31 6*61H 3*31H 6*31 , ,

A3*31A6*61HA3*31HA6*31 ,A,


)*P13*P16*P1H3*P1H6*P136

3*P1 6*P1H 3*P1H 6*P1H3H6

A3*P1A6 *P1HA3*P1HA6*P14Q3Q6QB

"
„ 9:
C ,E,K,,

)*31"*31" *31"A*31*31
&„ L3
)*"1"*"1" *"1"A*"1*"14QQB

$
„„ H

9:
„ , A, $ R$ ,$AR$A ,
M M M M M
)*31*31 *31A*31$ R*31$ ,*31$AR*31$A ,*31

)*$1* $1 *$1A*$1$ R*$1$ ,*$1$AR*$1$A ,*$1


„ Q&09:
>C , E, K, C, E , K ,

L*31*31 *31A*1*31 *31AA*31

L*1*1 *1A*1*1 *1AA*1

/BM6


4




)
„

„)49A : 8


)3&/
,L I6&/9 :


4& I3&

„ =
; 3 ,7
„„ =
„ ,„ „ I4„ „
*J1
- „


>
8
„>H >
>CC , EE , KK ,
O6 O6 O6
L*31L)*31L)*31L) *31L)A*31
9 :
L*81L)*81L)*81L) *81L)A*81


„
C
„„ H


)*31D)*31

)*C1D)*1



#
„
„I
*41 *#1
„4&



M 4&I3&I6&N
I
&
M
„>
>CEKCCEEKK324
L*31*31 *31A*31*31 *31AA*31

L*M1*M1 *M1A*M1*M1 *M1AA*M1

*31*61*1 „

„M&&3I *31

X '


,M„„„ 93 :
,B„I

# ,M , „ „
9$,I
:
# ,/ ,„ „

#A ,/ A ,„ „

D) , „ I
„
M , 4&I3&I
6&N
I&
,3 C „ >L24

,3 E „ >L24

A ,3 K „ >L24

,3 C > L24
,3 E >L24
AA ,3 K >L24
," C
," E
A ," K
," C
," E
AA ," K
, „„
,, „ „ „
,)

„ „„
- , „ „

- , „ „

,LC
,L E
A ,LK
N ,/

„ „„
C , ; C
E , ; E
K , ; K
,3
„„„„I4
, ,
A , ,A
8 ,)„ „

8A ,)„ „
A
L ,L

L3 ,L3„„
L6 ,L6„„
L) , „>„
L) , „>


L) , „>


L)A , „>
A

L ,$ „ „„

,3

I4

) ,)

) ,L)
C
) ,L)
E
)AA ,L)
K

) , 3/
LI6/
# ,
„ #
64
M ,
„>„ M
,
„>H 9Q&
0:
,
„„
,
„>H

8 ,
„>H > 8
L ,
„L
B ,
„B
) ,
„)

" ,
„„ H
0 ,
„>H0 „
$ ,
„„ H$

. ,
„
„

P ,
„ A

, „„ I
, „;H

" ,
" ,
"A , A
0 ,3 „ C I4„
0 ,3 „ E I4„
0A ,3 „ K I4„
0 ,3
CI4„
0 ,3
EI4„
0AA ,3
KI4„
,
„ >
>
,3
„ I4
„ ,„„ „ ,„„„
, „ „ <3 ,7
$ R ,
R „„
$ , ,
, „„
$AR ,
RA„„
$A, ,
,A„„
. ,
„
C
. ,
„
E
.A ,
„
K
H3, ;
„ A ,

,
H6 , ;
„ A ,

,
H 3 , ;
„ A ,

,
H 6 , ;
„ A ,

,
HA3 , ;
„ A ,

A ,
HA6 , ;
„ A ,

A ,
3 ,„ „
A ,
,
6 ,„ „
A ,
,
3 ,„ „
A ,
,
6 ,„ „
A ,
,
A3 , „ „
A ,
A ,
A6 ,„ „
A ,
A ,
, „>
, „>
A , „>
" ,„ L3

XX

2 ÷
is executed from within a terminal or "command prompt window" .
2 ÷
may be run with interactive prompting for file names by typing ...
2 „
2 ÷
may be run without command-line options by typing ...
2 „ 8(

2 ÷
may be run with command-line options by typing ...
2 „ ,8 ,(
*("$8(@/1

... where *("$8(@/1 over-rides values in the Input Data file and can include one or
more of the following:

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,
,8
„ ,,,

,(


„
,
,; ; IHI „ „

, ; IHI
, ,

;H


,=


„ H
,HH „„ „J
J)
,
H „ „ „
„
,(S(„„(
„ („„
,(S(„„(
„„ („„
,;
„ „ „ N




,A„ C ,E,K
,(S(„„(
(„„
,„;
„ =
„„



,LS/ L&L ,/
/&/
,;
; „
, ;
„
, ;
4I3I6I
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,

2 Examples:
Display help information and exit:
2 „ ,

Suppress screen output:

„ ,8 ,(


,=

Include shear deformation, over-riding the Input Data file value:

„ ,8 ,(


,(

Include geometric stiffness and set static deformation exaggeration factor, over-riding
Input Data file values:

„ ,8 ,(


,344,(

Use consistent mass matrix, set static deformation exaggeration factor, set the
animation pan rate, over-riding Input Data file values, and force 3D plotting in
Gnuplot:

„ ,8 ,(


,(„„,344, 7,A




The source code is written in ANSI C and is extensively commented. The source code
includes functions for frame analysis, LDL' decomposition, LU decomposition, Newton-
Raphson iteration, sub-space iteration, Stodola iteration, Sturm eigen-value check, static
condensation, Guyan reduction, and dynamic condensation.

„


,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
;

„ „
„ -
,

„

A;

- BB

- B.
„
. „


In addition to the recommended method using SCons (see above), Frame3DD can also be
compiled directly with the GNU gcc compiler, the Apple Xcode gcc compiler, the DJGPP
gcc compiler, the LCC-win32 compiler, and the MinGW gcc compiler.

Using GCC, the command to compile is:

,(,„ „ „ - -


-
.
,

X


When Frame3DD exits it returns an integer value to the system calling Frame3DD. An exit
code of (zero) indicates error-free completion. Prior to exiting with a non-zero exit code,
Frame3DD writes a diagnostic error message to "stderr". Exit code values have the following
meanings:

2 : error-free completion
2 X : unknown error
2 2 : error with the command line options (see Section XX, above)
2 3 : error with the command line option for shear deformation -s
2 4 : error with the command line option for geometric stiffness -g
2 5 : error with the command line option for lumped mass -l
2 6 : error with the command line option for modal analysis method -m
2 7 : error with the command line option for modal analysis tolerance -t
2 8 : error with the command line option for modal analysis shift -f
2 9 : error with the command line option for pan rate -p
2 X : error with the command line option for matrix condensation -r
2 XX : error in opening the Input Data file
2 X2 : error in opening the temporary cleaned input data file for writing
2 X3 : error in opening the temporary cleaned input data file for reading
2 X4 : error in opening the Output Data file
2 X5 : error in creating the path for temporary output data files
2 X6 : error in creating the temporary output data file path name
2 X7 : error in opening the .CSV (spread-sheet) output data file
2 X8 : error in opening the .M (matlab) output data file
2 X9 : error in opening the interior force output data file for writing
2 2 : error in opening the interior force output data file for reading
2 2X : error in opening the undeformed mesh ouput data file
2 22 : error in opening the deformed mesh ouput data file
2 23 : error in opening the plotting script file for writing first static load case plots
2 24 : error in opening the plotting script file for appending second and higher static
load case results
2 25 : error in opening the plotting script file for appending modal plots
2 26 : error in opening the plotting script file for appending modal animations
2 27 : error in opening the modal mesh data file
2 28 : error in opening the modal mesh animation data file
2 29 : error in opening the mass data debugging file , MassData.txt
2 3 : cubic curvefit system matrix for element deformation is not positive definite
2 3X : non-positive definite structural static stiffness matrix
2 32 : error in eigen-problem analysis
2 4 : error in input data file
2 4X : input data formatting error in the joint data, joint number out of range
2 5X : input data formatting error in the frame element data, frame element number out
of range
2 52 : input data formatting error in the frame element data, joint number out of range
2 53 : input data formatting error in the frame element data, negative section value
2 54 : input data formatting error in the frame element data, cross section area is
(zero)
2 55 : input data formatting error in the frame element data, shear area and shear
modulus are (zero)
2 56 : input data formatting error in the frame element data, torsional moment of inertia
is (zero)
2 57 : input data formatting error in the frame element data, bending moment of inertia
is (zero)
2 58 : input data formatting error in the frame element data, modulus value is non-
positive
2 59 : input data formatting error in the frame element data, mass density value is non-
positive
2 6 : input data formatting error in the frame element data, frame element starts and
stops at the same joint
2 6X : input data formatting error in the frame element data, frame element has length of
zero
2 7X : input data formatting error with the "shear" variable specifying shear deformation
2 72 : input data formatting error with the "geom" variable specifying geometric
stiffness
2 73 : input data formatting error with the "exagg_static" variable specifying static mesh
exageration
2 74 : input data formatting error with the "dx" variable specifying the length of the
internal force x-axis increment
2 8 : input data formatting error in reaction data, number of joints with reactions out of
range
2 8X : input data formatting error in reaction data, joint number out of range
2 82 : input data formatting error in reaction data, reaction data is not X (one) or (zero)
2 83 : input data formatting error in reaction data, specified joint has no reactions
2 84 : input data formatting error in reaction data, under-restrained structure
2 85 : input data formatting error in reaction data, fully restrained structure
2 86 : input data formatting error in extra joint inertia data, joint number out of range
2 87 : input data formatting error in extra beam mass data, frame element number out of
range
2 88 : input data formatting error in mass data, frame element with non-positive mass
2 9 : input data formatting error in matrix condensation data, number of joints with
condensed degrees of freedom are less than the total number of joints
2 9X : input data formatting error in matrix condensation data, joint number out of range
2 92 : input data formatting error in matrix condensation data, mode number out of
range
2 94 : input data formatting error in matrix condensation data, number of condensed
degrees of freedom greater than number of modes
2 X : input data formatting error in load data
2 X X : number of static load cases must be greater than zero
2 X 2 : number of static load cases must be less than 3
2 X2X : input data formatting error in joint load data, joint number out of range
2 X3X : input data formatting error in uniformly-distributed load data, number of
uniform loads is greater than the number of frame elements
2 X32 : input data formatting error in uniformly-distributed load data, frame element
number out of range
2 X4 : input data formatting error in trapezoidally-distributed load data, too many
trapezoidally distributed loads
2 X4X : input data formatting error in trapezoidally-distributed load data, frame element
number out of range
2 X42 : input data formatting error in trapezoidally-distributed load data, xX <
2 X43 : input data formatting error in trapezoidally-distributed load data, xX > x2
2 X44 : input data formatting error in trapezoidally-distributed load data, x2 > L
2 X5 : input data formatting error in internal concentrated load data, number
concentrated loads greater than number of frame elements
2 X5X : input data formatting error in internal concentrated load data, frame element
number out of range
2 X52 : input data formatting error in internal concentrated load data, x-location less
than or grater than L
2 X6 : input data formatting error in thermal load data, number thermal loads greater
than number of frame elements
2 X6X : input data formatting error in thermal load data, frame element number out of
range
2 X62 : input data formatting error in thermal load data, frame element number out of
range
2 X7X : input data formatting error in prescribed displacement data, prescribed
displacements may be applied only at coordinates with reactions
2 2 : memory allocation error
2 2 X : error in opening an output data file saving a vector of "floats"
2 2 2 : error in opening an output data file saving a vector of "ints"
2 2 3 : error in opening an output data file saving a matrix of "floats"
2 2 4 : error in opening an output data file saving a matrix of "doubles"
2 2 5 : error in opening an output data file saving a symmetric matrix of "floats"
2 2 6 : error in opening an output data file saving a symmetric matrix of "doubles"

X,

7




2 A GPL'able GUI
÷
is a Windows GUI for the 2 2 X 3 version of ÷
(Jan 3,
2 2). (See above.)
Work has been done on a Qt GUI (Fall 2 4)
A Microstran-Viewer interface is in the works here. (Summer 2 8)
A Google-sketchup interface is in the works here and possibly here. (Summer
2 8)
Wood truss analysis and design software that makes use of Frame3DD is in
development here (Winter 2 X ).
2 Consistent mass matrix including the effects of shear deformation on rotatory inertia
2 Dynamic time-history analysis with the HHT-alpha method
2 Spectral modal superposition
2 Member end joint releases
2 Linearly tapered frame elements
2 Sparse matrix storage and sparse matrix solvers
2 ... your recommendations ... send me an e-mail!

X-




This software was developed using methods described in the following texts. The two
primary sources are the texts by A. Kassimali and J.S. Przemieniecki. Other relevant books
and articles are:

X. Howard G. Allen, Background to Buckling, McGraw-Hill, X98 . ASIN: 7 84X 4


2. Klaus-Jurgen Bathe, Finite Element Procedures, Prentice-Hall, X995. ISBN:
X33 X4584
3. Arthur P. Boresi, Richard J. Schmidt, and Omar M. Sidebottom, Advanced Mechanics
of Materials, John Wiley & Sons, X993. ISBN: 47X55X57
4. Raymond W. Clough and Joseph Penzien, Dynamics of Structures, McGraw-Hill,
X993. ASIN: 7 XX392
5. J. P. Den Hartog, Advanced Strength of Materials, Dover Press, X987. ISBN:
486654 79
6. Thomas J. R. Hughes, The Finite Element Method: Linear Static and Dynamic Finite
Element Analysis, Dover Press, 2 . ISBN: 4864XX8X8
7. Aslam Kassimali, Matrix Analysis of Structures, Brooks/Cole, X999. ISBN:
5342 67
8. Jaroslav Mackerle, Finite element linear and nonlinear, static and dynamic analysis of
structural elements: a bibliography (X992-X995), Engineering Computations, vol. X4,
no. 4, pp. 347-44 , X997.
9. Jaroslav Mackerle, Finite element linear and nonlinear, static and dynamic analysis of
structural elements - an addendum - A bibliography (X996-X999), Engineering
Computations, vol. X7, no. 3, pp. 274-35X, 2 .
X . William McGuire, Richard H. Gallagher, and Ronald D. Ziemian, Matrix Structural
Analysis, 2nd ed. John Wiley, X999. ISBN: 47X3765X5
XX. W.D. Pilkey, Weize Kang and Uwe Schramm, New structural matrices for a beam
element with shear deformation, Finite Elements in Analysis and Design, vol. X9, pp.
25-44, X995.
X2. William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery,
Numerical Recipes in C: The Art of Scientific Computing, Cambridge University
Press, X993. ISBN: 52X43X 85
X3. J.S. Przemieniecki, Theory of Matrix Structural Analysis, Dover Press, X985. ISBN:
486649482
X4. Robert E. Sennett, Matrix Analysis of Structures, Waveland Press, 2 .ISBN:
X57766X435
X5. S. Timoshenko and J.N. Goodier, Theory of Elasticity, 2nd ed., McGraw Hill, X95X.
X6. Ansel C. Ugural and Saul K. Fenster, Advanced Strength and Applied Elasticity, 3rd
ed., Prentice-Hall, X995. ISBN: X3X37589X


Authors:

% " N;I" I"


„M;;

.; ID46!

I@M6!!4 ,,46!
L"
„
#
@.;

Source code for this document as well as Frame3dd itself is available from
http://www.sourceforge.net/projects/frame3dd/

Last update: Last updated X/3X/2 XX X:38:34 (see full revision log)

You might also like