Sie sind auf Seite 1von 303

pyNastran Documentation

Release 0.6.0

Steven Doyle Al Danial

January 02, 2014


Contents

1 pyNastran Manual 3
1.1 Brief Project Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Nonmenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 User: BDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Developer: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Developer: BDF Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 pyNastran Package 13
2.1 bdf Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 f06 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
2.3 utils Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
2.4 op2 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
2.5 op4 Package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

3 Indices and tables 295

Python Module Index 297

i
ii
pyNastran Documentation, Release 0.6.0

The pyNastran software interfaces to Nastrans complicated input and output files and provides a simplified
interface to read/edit/write the various files. The software is compatible currently being used on Windows,
Linux, and Mac.
The BDF reader/editor/writer supports about 210 cards including coordinate systems. Card objects have
methods to access data such as Mass, Area, etc. The BDF writer writes a small field formatted file, but makes
full use of the 8-character Nastran field. The OpenMDAO BDF parametrization syntax is also supported.
The OP2 reader supports static/transient results, which unless you analyzing frequency response data
should be good enough. It also supports F06 Writing for most of the objects. Results include: displacement,
velocity, acceleration, temperature, eigenvectors, eigenvalues, SPC forces, MPC forces, grid point forces,
load vectors, applied loads, strain energy, as well as stress and strain.
The F06 reader/writer works for simple problems, but its still preliminary. At this point, you should just
use the OP2 reader. Its faster, more robust, and supports more results. The F06 reader is more used as a
verification tool for the OP2 reader.
The Cython OP4 reader supports ASCII and binary dense matrices. The Python OP4 reader supports
ASCII and binary sparse and dense matrices.
A simple GUI has been developed that can view BDF models and display static stress results from the OP2.

Contents 1
pyNastran Documentation, Release 0.6.0

2 Contents
CHAPTER 1

pyNastran Manual

1.1 Brief Project Overview

Since the 1960s NASTRAN (NASA Structural ANalysis) has been used to solve struc-
tural/thermal/aerodynamic/dynamics/etc. problems. The file formats were originally developed by
MSC for a product now called MSC Nastran. There have been many spinoff version of NASTRAN that
have been created based on the 2001 source code release of MSC Nastran in 2002 after settlement with
the FTC (Federal Trade Commisson). There is now NX Nastran and NEi Nastran, which are developed
independently.
pyNastran is at its core an API (Application Programming Interface) to the legacy formats used by
Nastran. These files include the BDF, F06, OP2, OP4, and PCH files. Other code has been added to
pyNastran in order to drive development of the software in order to be able to solve other engineering
problems. For example, Code_Aster, an open-source finite element code developed by the EDF (Electricity
of France), has a Nastran to Code_Aster converter that is in development. The development has helped to
define the API for the loads in order to be able to extract them in a way that makes sense. However, this is
not the focus of the software.

1.1.1 Target Audience

pyNastran target audience are users of Nastran and therefore are expected to be familiar with the soft-
ware. This has greatly reduced the necessity of documenting every variable exhaustively as users can easily
reference existing Nastran documentation. The BDF file has roughly 700 cards availble to a user with 200
being currently supported by pyNastran. The majority of the cards, defined as separate Python classes, are
not documented. However, the Quick Reference Guide (QRG) defines each input to the card. A user with
the QRG should have little effort in understanding what the various objects do. However, for convenience,
its still good to document variables.
pyNastran target audience largely uses MATLAB, a matrix based programming language, and typically
has little experience with general programming. There are also users that know Python, but have never used
a class or a dictionary, which makes an API seems complicated. Additionally, while not difficult to build,

3
pyNastran Documentation, Release 0.6.0

the Cython OP4 reader, which requires a C compiler, has been a source of frustration for many users. That
said, most operations should be relatively easy to accomplish.

1.2 Nonmenclature

Symbol Description
[B] Displacement-to-Strain Matrix
[D] Material Matrix
E Youngs Modulus (F/L2 )
{F } Applied force vector
{Fg } Global applied force vector
{Fa } Reduced applied force vector
{f } Generalized (Modal) force vector
G Shear Modulus (F/L2 )
[J] Jacobian Matrix
[K] Stiffness matrix
[Ke ] Element stiffness matrix ( F/L2 )
[Kgg ] Global Stiffness Matrix
[Kaa ] Reduced Stiffness Matrix
k Spring stiffness ( F/L2 )
L Length (L)
L, M, N X,Y,Z Moment (FL)
Mx , My , Mz X,Y,Z Moment (FL)
[M ] Matrix
[ML ] Mass Matrix
[N ] Function Matrix
m mass (M)
nsm non-structural mass (M)
[T ] Transformation matrix
t thickness (L)
T translation (L)
R rotation (L/radians)
u generalized load (translation, rotation)
X, Y, Z X,Y,Z Force (F)
Fx , Fy , Fz X,Y,Z Force (F)
x, y, z displacement (L)
{x} generalized load (translation, rotation)
V Volume ( L3 )
Vi ith Volume ( L3 )
 strain, shear strain (L/L)
shear strain (F/L2 )
Poissons ratio
Natural frequencies (Hz)
Continued on next page

4 Chapter 1. pyNastran Manual


pyNastran Documentation, Release 0.6.0

Table 1.1 continued from previous page


Symbol Description
natural frequency (Hz)
density (M/L3 )
ij normal stress, shear stress (F/L2 )
ij shear stress (F/L2 )
rotation (radians)

1.3 User: BDF

This document is intended to be a reference guide for users.

1.3.1 Nodes

GRID

In NASTRAN, nodes can be in the global or a local coordinate frame (rectangular, cylindrical, spherical).
Each node may reference a different coordinate frame cp for the reference coordinate frame (what the value
is in the x1 , x2 , and x3 fields) and for the analysis coordinate frame aid.
Node Specific Variable Names:
Name Description
xyz Raw location <x1 , x2 , x3 > in the BDF
cp reference coordinate system
cd analysis coordinate system
Position location in an arbitrary coordinate system
UpdatePosition change the value of xyz and cp
resolveGrids update all the positions of the grids to a common coordinate system in an more
efficient way
Using the node object:
bdf = BDF()
bdf.readBDF(bdfName)
node = bdf.Node(nid)
node.Position() % gets the position of the node in the global frame
node.Position(cid=0) % same
node.Position(cid=1) % gets the position of the node in a local frame

node.UpdatePosition(bdf,array([1.,2.,3.]),cid=3) % change the location of the node

bdf.resolveGrids(cid=0) % change the xyz of all nodes to the same coordinate system as

bdf2 = BDF()
bdf2.readBDF(bdfNameAlt)
bdf.unresolveGrids(bdf2) % change the coordinte system back to the coordinate system in

1.3. User: BDF 5


pyNastran Documentation, Release 0.6.0

CORDx

A coordinate system may be defined by 3 points in any non-circular coordinate system or by 3 vectors.
Once cross-referenced a node may use its node.Position(cid) method to determine the position in
any frame defined by a coordinate system.

1.4 Developer: Getting Started

1.4.1 Code Formatting - PEP-8

pyNastran is attempting to implement Pythons PEP-8 formatting standard after not following it for mul-
tiple versions. Its a work in progress to upgrade the code, so try to follow it. The biggest challenge has
been to come up with a clear way to reference methods and very similar variable names. For example,
the element.Area() method uses the element.area variable in the case of the CQUAD4, but references el-
ement.areas in the case of a multi-segmented CBAR. Its recommended that developers use Spyder with
pylint integration to help with identifying PEP-8 deficiencies.
Most important points of Python PEP-8 (http://www.python.org/dev/peps/pep-0008/):
1. Use spaces (not tabs) when indenting code
2. Try to limit code to 80-characters width
3. Files are named as_follows.py
4. Classes are named AsFollows
5. Functions are are named as_follows() and private functions are named _as_follows()
6. Variable names**_have_embedded_underscores** or without any (e.g. self.elements). A private
variable would look _similar_to_a_function
7. Dont use import *
8. Break the rules if its clearer
9. Document functions/classes/variables

1.4.2 Additional Guidelines

1. pyNastran liberally uses classes (it has too many!), so try not to write more classes than necessary.
Functions are often better to avoid having extra functions in objects the user has immediate access to
(imagine having 100 functions to sift through) in an IDE. Watch this video for a better explanation.
Again, its a work in progress.
2. When writing classes, group similar classes in the same file to reduce having to search for a class
across multiple files (very common in Java).
3. When deprecating functions, throw a warning using the Python warnings module. Its easier to make
sure the rest of the code isnt using it this way. This is not nearly as important if its not a function the
user is likely to interact with.

6 Chapter 1. pyNastran Manual


pyNastran Documentation, Release 0.6.0

1.4.3 Documentation

pyNastran uses Doxygen for docstrings. Doxygen is nice because it allows LaTeX to be embedded in the
documentation and HTML docs are easily generated. Sphinx is another documentation format, It is known
that Sphinx also allows LaTeX and that it is much more commonly used.
Some guidelines for Doxygen:
@param in_variable_name a description goes here
@retval out_variable_name another description
@see look at AsFollows class or as_follows function
@note a message
@warning a warning
@todo something thats not done

1.5 Developer: BDF Reading

This document is a reference for developers of pyNastran, but are not necessarily people that are fa-
miliar with Nastran or even Finite Element Analysis (FEA).

1.5.1 bdf: Introduction

bdf module controls the model object that is instantiated with model = BDF() the BDF.__init__
method is called when model = BDF() is run. The pyNastran.bdf.bdf.BDF used to be very large
and was split (in a non-standard way) into multiple files that allowed for simpler development. The classes:
pyNastran.bdf.bdfInterface.bdf_Reader.BDFReader,
pyNastran.bdf.bdfInterface.getCard.GetMethods,
pyNastran.bdf.bdfInterface.addCard.AddMethods,
pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMesh,
pyNastran.bdf.bdfInterface.bdf_cardMethods.CardMethods,
pyNastran.bdf.bdfInterface.crossReference.XrefMesh
are basically bags of functions for the model object.
The pyNastran.bdf.bdf.BDF.cardsToRead attribute limits the cards that pyNastran processes
and can be modified by the user in order to fix bugs or make their code run faster.
Moving onto pyNastran.bdf.bdf.BDF._init_solution sets a series of alternate names for Nas-
tran solution types. For example, a solution 101 is a static solution (no acceleration) and will calculate
the displacements of the system [K]{x} = {F }. You can then extract stresses and strains. Other solution
numbers solve different equations.

1.5. Developer: BDF Reading 7


pyNastran Documentation, Release 0.6.0

In methods pyNastran.bdf.bdf.BDF._init_structural_defaults(),
pyNastran.bdf.bdf.BDF._init_aero_defaults(), pyNastran.bdf.bdf.BDF._init_thermal_def
the structural, aerodyanmic, and thermal card holders (e.g. model.materials) are defined as dictionaries.
Finally, the pyNastran.bdf.bdf.BDF.readBDF() method is defined. There are three sections to a
BDF/DAT/NAS file. BDF (Bulk Data File) is the file format used by MSC Nastran and the DAT (data?) file
is used by NX Nastran. NAS (Nastran) is also used.
The first section is the Executive Control Deck and contains a SOL 101 or SOL 103 or SOL STATIC
depending on the solution type. It ends when the CEND marker is found. Then the Case Control Deck
is read. Here, general solution information is listed, such as what outputs do you want and what loads are
applied (not all loads in the file are necessarily applied). Finally this section defines one or more subcases,
which are different load combinations. The last section is the Bulk Data Deck. This section stores 99% of
the file and this section introduces very specific formatting restrictions for cards.
A basic model will be made of nodes, elements, properties, and materials. For example, for a square plate
made of steel model GRID cards are used for the nodes, CQUAD4 or CTRIA3 cards are used for the
elements (the C generally indicates the card is an element so quadrilateral element and triangular element).
The element has a property (PSHELL) that defines the thickness. Similarly, properties generally start with
P. Finally, the property references a material (MAT1) that defines the material as steel. INCLUDE cards
may also be used to add additional files into the BDF.

1.5.2 bdf: Card Formatting

A card is at most 72-characters wide. Comments may follow the card if a $ sign is used.
The standard card is called small field format (single precision) and has 9 fields defined per line, each with
8-characters and are fixed width. Multiline cards are implied by leaving 8 spaces at the beginning of the
following line. Alternatively, a + sign may be used in the first 8 spaces.
The large field format (double precision) card uses a 1 8 + 4 16 to reach the 72-character width instead
of 1 8 + 8 8 characters. If the first line of a card is double precision, a * follows the card name, so all
card names are 7-characters or less. If the second line of a card is double precision, a * begins the line. A
single line of a small field formatted takes exactly two lines to write if large field format is used.
The CSV (comma separated value) format is similar to small field format. Its less picky then the 8-character
format, but much harder to read. It is still subject to the 9 fields per line restriction. If a CSV card has a * on
it, the card becomes a large field CSV formatted card and may have only 5 fields on the line (including the
blank field).
Although introduced as separate types of cards, small field format and large field format may be mixed and
matched. However, this only occurs for hand-edited BDFs. Theres also a difficult to understand format
known as a continuation card. This uses values from previous cards and is basically a for loop. Hundreds
of cards may be defined in just a few lines.

1.5.3 bdf : Parsing

A basic card is a GRID card. Once parsed, a standard grid card will have fields of [GRID, nodeID,
coord, x, y, z]. This section will discuss how a card is parsed.

8 Chapter 1. pyNastran Manual


pyNastran Documentation, Release 0.6.0

The pyNastran.bdf.bdf.BDF.readBDF() method must generalize the way files are opened be-
cause INCLUDE files may be used. Once the Executive and Case Control Decks are read (using simple
while loops), the pyNastran.bdf.bdf.BDF._read_bulk_data_deck() method is called.
This method (BDF._read_bulk_data_deck()) keeps looping over the file as long as there
are files opened (an INCLUDE file side effect) and calls: (rawCard, card, cardName) =
self._get_card(debug=False). cardName is just the cards name, while rawCard is the full,
unparsed card. card is the card parsed into fields as a card object, which is basically a list of fields
[GRID, nodeID, coord, x, y, z].
The basic idea of the self._get_card() method(see pyNastran.bdf.bdfInterface.bdf_cardMethods.Ca
is to make a self.linesPack, (pyNastran.bdf.bdf.BDF.linesPack)which is a list of 1500
lines that are stored in memory. When a new line is added to self.linesPack, it is first stripped of
comments in order to simplify parsing. If the linesPack is empty or 50 blank lines are found, the code
assumes an infinite loop has been entered and closes the file. If additional files are open, the linesPack
from the previous file will be used (INCLUDE file case).
Now that we have 1500 lines in linesPack, we must call: (i, tempcard) =
self._get_multi_line_card(i, tempcard) to get the card. tempcard starts
out as the first line in the card and afterwards contains all lines of the card. tempcard
will eventually become rawCard. Its important to note the tempcard passed into
pyNastran.bdf.bdfInterface.bdf_cardMethods.CardMethods._get_multi_line_card()
is a 72-character string (generally) and the tempcard output is a list of 8-character (or 16) width fields.
Why: the original data isnt needed, so the variable is reused.
pyNastran.bdf.bdfInterface.bdf_cardMethods.CardMethods._get_multi_line_card()
will search through the linesPack and try to end the card by looking for a non-whitespace character in
the first character position (all cards must have field[0] justified). If a * is found, its double precision,
if not its small field. Additionally, if a , is found its CSV format. So the formats are:
1. small field,
2. small field CSV,
3. large field,
4. large field CSV.
Once the format of the line is known, its an easy process to split the card (see
pyNastran.bdf.bdfInterface.bdf_cardMethods.CardMethods.processCard())
and turn it into a pyNastran.bdf.bdfInterface.BDF_Card.BDFCard object. Note that the first
field in any line beyond the first one must be blank and is ignored. This prevents cards defined in small field
and large field to have the same value defined in different positions of the list.
Finally, as Nastran is very specific in putting a decimal on float values, its easy to parse field values into
their proper type dynamically. This is especially important when a field may be defined as an integer, float,
a string, or be left blank and the variable is different depending on variable type. Strings, must being with
alphabetical characters (A, B, C) and are case insensitive, which is why a GRID card is called a GRID
card and not a grid card.

1.5. Developer: BDF Reading 9


pyNastran Documentation, Release 0.6.0

1.5.4 bdf : Card Object

A pyNastran.bdf.bdfInterface.BDF_Card.BDFCard object is basically a list of fields


of [GRID, nodeID, coord, x, y, z] with methods to get the 1st entry (nodeID) as
card.field(1) instead of fields[1] for a list. A card object is useful for setting defaults. The
x, y, and z values on the GRID card have defaults of 0.0, so card.field(3,0.0) may be used to
get the x coordinate. Finally, card.fields(3,5,[0.,0.,0.]) may be used to get xyz and set the
defaults in a single step. Additionally, the card object is useful when parsing continuation cards, but is
typically disabled.
After an excessively long branch of cardNames in pyNastran.bdf.BDF.readBDF(), the card ob-
ject is turned into a GRID, CTRIA3, CQUAD4, PSHELL, MAT1 or any of 200 other card types. There are
roughly as many nodes as there are elements, which make up roughly 95% of the cards in large models. The
difference in a large model and a small model, is the discretization and will change nodes, elements, loads,
and constraints. Loads and constraints are applied to only small portions of the model and (generally) only
the boundary of a model. The number of propertie and materials is very likely the same.
Most cards are stored in a dictionary based on their integer ID. IDs may be used only once, but if a card is
exactly duplicated, it is still valid.

1.5.5 shell: CQUAD4 Object

In bdf/cards/elements/shell.py, the pyNastran.bdf.cards.elements.shell.CQUAD4


is defined.
The pyNastran.bdf.cards.elements.shell.CQUAD4 is a shell-type element and must refer-
ence a PSHELL (isotropic property) or a PCOMP (composite property) card. An example of an isotropic
material is steel or aluminum and a composite material would be fiberglass or layers of carbon fiber/epoxy
resin at layed up at different angles.
The PSHELL may reference MAT1 (isotropic material) cards, while the PCOMP card may reference MAT1
or MAT8 (orthotropic material) cards. An orthotropic material is stronger in longitudinally than laterally
(e.g. fibers are oriented unidirectionally in a carbon fiber composite).
The pyNastran.bdf.cards.elements.shell.CQUAD4 class inherits from the
pyNastran.bdf.cards.elements.shell.QuadShell class which defines common meth-
ods to the various QUAD-type cards. There are additional QUAD element with different numbers of nodes
(8-CQUAD8, 9-CQUAD) and the CQUADR and CQUADX are axi-symmetric versions of the CQUAD4,
and CQUAD8 respectively. However, the Area(), Mass(), Density(), etc. methods are calculated in
the the same way for each card (although the axi-symmetric cards return mass per unit theta). The last thing
to note is rawFields and reprFields are very important to how the code integrates.
rawFields is used to check if a duplicated card is the same as another card and is also used for testing.
After reading and writing, reading back in, writing back out, reading back in, if the fields are the same,
then theres likely no error in reading a card (fields can still be missed while reading, so its not perfect).
rawFields returns a list of the fields (similar to the list-esque card object from before).
reprFields is analogous to the __repr__() method, and is an abbreviated way to write the card. For
example, the T1, T2, T3, and T4 values (thickness at nodes 1, 2, 3, 4) are generally 0.0 and instead are
set at an elemental level using the PSHELL card. If these fields were printed, the CQUAD4 card would be a

10 Chapter 1. pyNastran Manual


pyNastran Documentation, Release 0.6.0

two line card instead of a one line card. reprFields is used instead of __repr__() in order to be able
to write the card in large field or small field format. Defaults are generally not written by the __repr__()
method, but are written for certain fields (e.g. the xyz fields on the GRID card).
To get the CQUAD4, with an element ID of 1000, you would type:
elem = model.elements[1000]

or:
elem = model.Element(1000)

to use the function.


Then to print the card, type:
print(elem)

to see the Nastran formatted card. The __repr__() method is defined in


bdf/cards/baseCard.py the pyNastran.bdf.cards.baseCard class (which is used by
the pyNastran.bdf.cards.baseCard.Element class also defined in baseCard.py).

1.5.6 shell: Cross-Referencing the CQUAD4 Object

Previously, it was mentioned that the square plate model built with quads and triangles had a thickness and
a material. The nodes of the elements also have positions. The nodes further be defined in a rectangular,
cylindrical, or spherical coordinate system, so to get the mass of an element is actually quite involved.
Creating a function to access the mass becomes possible without passing the entire model object around to
every function through the use of cross-referencing.
Cross Referencing takes a CQUAD4 card and replaces the GRID references with actual GRID cards.
The GRID cards in turn reference two COORDx (CORD1R, CORD2R, CORD1C, COR2DC, CORD1S,
CORD2S) cards, which also may reference two CORDx cards. The CQUAD4 references a PSHELL or
PCOMP card. The PSHELL references a single MAT1 card, and as mentioned before the PCOMP card
may reference one or more MAT1/MAT8 cards. In order to calculate something simple like the mass of the
CQUAD4 requires the formula:
 nsm 
m = A t +
A

for a PSHELL or:


i=1
!
X nsm
m=A t +
A
i=0

for a PCOMP.
By using classes and functions, its easy to just call the element.MassPerArea() method and get the
proper data to apply the formula. Similarly, the element.Area() method calls the node.Position()

1.5. Developer: BDF Reading 11


pyNastran Documentation, Release 0.6.0

method to get the node in the global XYZ coordinate frame and can then find the area using vectors in a 3D
space:
1
A = |(n1 n3 ) (n2 n4 )|
2

(see http://en.wikipedia.org/wiki/Quadrilateral).

1.5.7 crossReference: Cross-Referencing Process

Cross referencing must first be done on the coordinate cards. Then, once theyre done, the nodes are cross
referenced. Once this is done, the coordinate systems may be resolved (CORD1x cards reference GRID
cards). Then elements, properties, materials, loads, boundary conditions, aerodynamic cards, thermal, dy-
namic, etc. cards are mapped. The order doesnt matter, but CORD1x cards and GRID cards must be
mapped first.
Cross Referencing is performed by looping over the card objects and calling the
card.crossReference() method. This will setup all cross-referencing and a full list of the
status of various cards is listed in bdf_crossReferencing.txt.

1.5.8 writeMesh.py: Writing the BDF

The BDF is written by looping through all the objects and calling the card.__repr__() method by
typing str(card).
Currently, only small field format is supported for writing. The list from reprFields() is passed into
fieldWriter.py function printCard(listObj) and it dynamically figures out how to write the
card based on the data type. For float values, the highest precision 8-character width field will be used even
if it uses Nastrans strange syntax of 1.2345+8 to represent a more standard 1.2345e+08.

12 Chapter 1. pyNastran Manual


CHAPTER 2

pyNastran Package

2.1 bdf Package

2.1.1 bdf Module

2.1.2 bdf_Methods Module

pyNastran.bdf.bdf_Methods.BDFMethodsDeprecated pyNastran.bdf.bdf_Methods.BDFMethods

class pyNastran.bdf.bdf_Methods.BDFMethods
Bases: pyNastran.bdf.bdf_Methods.BDFMethodsDeprecated
mass()
Calculates mass in the global coordinate system
mass_properties(reference_point=None)
Caclulates mass properties in the global system about the reference point. :param self: the BDF
object :param reference_point: an array that defines the origin of the frame.
default = <0,0,0>.

Returns mass the mass of the model


Returns cg the cg of the model as an array.
Returns I moment of inertia array([Ixx, Iyy, Izz, Ixy, Ixz, Iyz])

13
pyNastran Documentation, Release 0.6.0

I = mass * centroid * centroid

Ixx = m(dy 2 + dz 2 )

Iyz = m dy dz

where: .. math:: dx = x_{element} - x_{ref}


See Also:
http://en.wikipedia.org/wiki/Moment_of_inertia#Moment_of_inertia_tensor
sum_forces()
Sums applied forces for all load cases. Considers FORCE, FORCE1, FORCE2.
Returns Forces the forces as a numpy array

Warning: not validated

sum_moments(p0)
Sums applied forces & moments about a reference point p0 for all load cases. Considers FORCE,
FORCE1, FORCE2, MOMENT, MOMENT1, MOMENT2.
Parameters p0 the reference point
Returns Moments the moments as a numpy array
Returns Forces the forces as a numpy array
..warning:: not validated
class pyNastran.bdf.bdf_Methods.BDFMethodsDeprecated
Bases: object
Mass()

See Also:
mass
MassProperties()

See Also:
mass_properties
resolveGrids(cid=0)

See Also:
resolve_grids

14 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

sumForces()

See Also:
sum_forces
sumMoments(p0)

See Also:
sum_moments
unresolveGrids(femOld)

See Also:
unresolve_grids

2.1.3 caseControlDeck Module

pyNastran.bdf.caseControlDeck.CaseControlDeckDeprecated

pyNastran.bdf.caseControlDeck.CaseControlDeck

CaseControlD-
eck parsing and extraction class
class pyNastran.bdf.caseControlDeck.CaseControlDeck(lines, log=None)
Bases: object
CaseControlDeck parsing and extraction class
Parameters
self the CaseControlDeck object
lines list of lines that represent the case control deck ending with BEGIN BULK
log a :mod: logging object
_add_parameter_to_subcase(key, value, options, param_type, isubcase)
Internal method
self: the CaseControlDeck object
_clean_lines(lines)
Removes comment characters defined by a $.

2.1. bdf Package 15


pyNastran Documentation, Release 0.6.0

Parameters
self the CaseControlDeck object
lines the lines to clean.
_parse_data_from_user(param)
Parses a case control line
Parameters
self the CaseControlDeck object
param the variable to add
_parse_entry(lines)
Internal method for parsing a card of the case control deck
Parses a single case control deck card into 4 sections
1.paramName - obvious
2.Value - still kind of obvious
3.options - rarely used data
4.paramType - STRESS-type, SUBCASE-type, PARAM-type, SET-type, BEGIN_BULK-
type
Its easier with examples:
paramType = SUBCASE-type SUBCASE 1 -> paramName=SUBCASE value=1 options=[]
paramType = STRESS-type STRESS = ALL -> paramName=STRESS value=ALL op-
tions=[] STRAIN(PLOT) = 5 -> paramName=STRAIN value=5 options=[PLOT] TITLE
= stuff -> paramName=TITLE value=stuff options=[]
paramType = SET-type SET 1 = 10,20,30 -> paramName=SET value=[10,20,30] options = 1
paramType = BEGIN_BULK-type BEGIN BULK -> paramName=BEGIN value=BULK op-
tions = []
paramType = CSV-type PARAM,FIXEDB,-1 -> paramName=PARAM value=FIXEDB op-
tions = [-1]
The paramType is the macro form of the data (similar to integer, float, string). The value is
generally whats on the RHS of the equals sign (assuming its there). Options are modifiers on the
data. Form things like the PARAM card or the SET card they arent as clear, but the paramType
lets the program know how to format it when writing it out.
Parameters
self the CaseControlDeck object
lines list of lines
Returns paramName see brief
Returns value see brief

16 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Returns options see brief


Returns paramType see brief
_read(lines)
Reads the case control deck

Note: supports comment lines

Warning: doesnt check for 72 character width lines, but will follow that when its written
out

add_parameter_to_global_subcase(param)
Takes in a single-lined string and adds it to the global Subcase.
Parameters
self the CaseControlDeck object
param the variable to add

Note: dont worry about overbounding the line

>>> bdf = BDF()


>>> bdf.read_bdf(bdf_filename)
>>> bdf.case_control.add_parameter_to_global_subcase(DISP=ALL)
>>> print bdf.case_control
TITLE = DUMMY LINE
DISP = ALL

add_parameter_to_local_subcase(isubcase, param)
Takes in a single-lined string and adds it to a single Subcase.
Parameters
self the CaseControlDeck object
isubcase the subcase ID to add
param the variable to add

Note: dont worry about overbounding the line

>>> bdf = BDF()


>>> bdf.read_bdf(bdf_filename)
>>> bdf.case_control.add_parameter_to_local_subcase(1, DISP=ALL)
>>> print bdf.case_control
TITLE = DUMMY LINE
SUBCASE 1
DISP = ALL
>>>

2.1. bdf Package 17


pyNastran Documentation, Release 0.6.0

begin_bulk = None
stores a single copy of BEGIN BULK or BEGIN SUPER
convert_to_sol_200(model)
Takes a case control deck and changes it from a SOL xxx to a SOL 200
Parameters self the CaseControlDeck object

Todo
not done...

copy_subcase(i_from_subcase, i_to_subcase, overwrite_subcase=True)


Overwrites the parameters from one subcase to another.
Parameters
self the CaseControlDeck object
i_from_subcase the Subcase to pull the data from
i_to_subcase the Subcase to map the data to
overwrite_subcase NULLs i_to_subcase before copying i_from_subcase
create_new_subcase(isubcase)
Method create_new_subcase:
Parameters isubcase (int) the subcase ID

Warning: be careful you dont add data to the global subcase after running this...is this
True???

cross_reference(model)
delete_subcase(isubcase)
Deletes a subcase.
Parameters
self the CaseControlDeck object
isubcase (int) the Subcase to delete
finish_subcases()
Removes any unwanted data in the subcase...specifically the SUBCASE data member. Other-
wise it will print out after a key like stress.
Parameters self the CaseControlDeck object
get_local_subcase_list()
get_op2_data()
Gets the relevant op2 parameters required for a given subcase
Parameters self the CaseControlDeck object

18 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Todo
not done...

get_subcase_list()
get_subcase_parameter(isubcase, param_name)
Get the [value, options] of a subcases parameter. For example, for
STRESS(PLOT,POST)=ALL, param_name=STRESS, value=ALL, options=[PLOT, POST]
Parameters
self the CaseControlDeck object
isubcase the subcase ID to check
param_name the parameter name to get the [value, options] for
has_parameter(isubcase, param_name)
Checks to see if a parameter (e.g. STRESS) is defined in a certain subcase ID.
Parameters
self the CaseControlDeck object
isubcase the subcase ID to check
param_name the parameter name to look for
has_subcase(isubcase)
Checks to see if a subcase exists.
Parameters
self the CaseControlDeck object
isubcase (int) the subcase ID
Returns val does_subcase_exist (type = bool)
update_solution(isubcase, sol)
sol = STATICS, FLUTTER, MODAL, etc.
class pyNastran.bdf.caseControlDeck.CaseControlDeckDeprecated
Bases: object
pyNastran.bdf.caseControlDeck.verify_card(key, value, options, line)
pyNastran.bdf.caseControlDeck.verify_card2(key, value, options, line)
Make sure there are no obvious errors

2.1.4 fieldWriter Module

BDF card writing functions

2.1. bdf Package 19


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.fieldWriter.is_same(value1, value2)
Checks to see if 2 values are the same

Note: this method is used by almost every card when printing

pyNastran.bdf.fieldWriter.printCard(fields, tol=0.0)
pyNastran.bdf.fieldWriter.print_card(fields, size=8)
Prints a nastran-style card with 8 or 16-character width fields
Parameters
fields all the fields in the BDF card (no blanks)
size the width of a field (size=8 or 16)

Warning: 8 or 16 is required, but 16 is not checked for

pyNastran.bdf.fieldWriter.print_card_8(fields)
Prints a nastran-style card with 8-character width fields.
:fields all the fields in the BDF card (no blanks) .. note:: A small field format follows the 8-8-8-8-8-
8-8-8 = 80
format where the first 8 is the card name or blank (continuation). The last 8-character
field indicates an optional continuation, but because its a left-justified unneccessary field,
print_card doesnt use it.
pyNastran.bdf.fieldWriter.print_field(value)
Prints a single 8-character width field
Parameters value the value to print
Returns field an 8-character string
pyNastran.bdf.fieldWriter.print_float_8(value)
Prints a float in nastran 8-character width syntax using the highest precision possbile.
pyNastran.bdf.fieldWriter.print_int_card(fields)
Prints a nastran-style card with 8-character width fields. All fields (other than the first field) must be
integers. This is used to speed up SET cards.
Parameters fields The list of fields to write to a nastran card. The first field is a word,
all other fields are integers.

Warning: Blanks are not allowed!

pyNastran.bdf.fieldWriter.print_scientific_8(value)
Prints a value in 8-character scientific notation. This is a sub-method and shouldnt typically be called
See Also:
:func: print_float_8 for a better method

20 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.fieldWriter.set_blank_if_default(value, default)
Used when setting the output data of a card to clear default values
Parameters value the field value the may be set to None (blank) if value=default, the
default value for the field

Note: this method is used by almost every card when printing

pyNastran.bdf.fieldWriter.set_default_if_blank(value, default)
Used when initializing a card and the default value isnt set Used on PBARL

2.1.5 fieldWriter16 Module

pyNastran.bdf.fieldWriter16.print_card_16(fields)
Prints a nastran-style card with 16-character width fields.
Parameters fields all the fields in the BDF card (no blanks)

Note: A large field format follows the 8-16-16-16-16-8 = 80 format where the first 8 is the card name
or blank (continuation). The last 8-character field indicates an optional continuation, but because its
a left-justified unneccessary field, print_card doesnt use it.

pyNastran.bdf.fieldWriter16.print_field_16(value)
Prints a single 16-character width field
Parameters value the value to print
Returns field an 16-character string
pyNastran.bdf.fieldWriter16.print_float_16(value, tol=0.0)
Prints a float in nastran 16-character width syntax using the highest precision possbile. .. seealso::
print_float_8 .. warning:: completely unimplemented & untested
pyNastran.bdf.fieldWriter16.print_scientific_16(value)
Prints a value in 16-character scientific notation. This is a sub-method and shouldnt typically be called
See Also:
print_float_16 for a better method

2.1. bdf Package 21


pyNastran Documentation, Release 0.6.0

2.1.6 subcase Module

pyNastran.bdf.subcase.Subcase

Subcase creation/extraction class


class pyNastran.bdf.subcase.Subcase(id=0)
Bases: object
Subcase creation/extraction class
_add_data(key, value, options, param_type)
_simplify_data(key, value, options, param_type)
cross_reference(model)
Method crossReference:
Parameters
self the Subcase object
model the BDF object

Note: this is not integrated and probably never will be as its not really that necessary. its only
really useful when running an analysis.

finish_subcase()
Removes the subcase parameter from the subcase to avoid printing it in a funny spot
Parameters self the Subcase object
get_analysis_code(sol)
8 - post-buckling (maybe 7 depending on NLPARM???)

# not important
3/4 - differential stiffness (obsolete)
11 - old geometric nonlinear statics
12 - contran (???)

Todo
verify

22 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

get_device_code(options, value)
Gets the device code of a given set of options and value
Parameters
self the Subcase object
options the options for a parameter
value the value of the parameter
get_format_code(options, value)
Gets the format code that will be used by the op2 based on the options.
Parameters
self the Subcase object
options the options for a parameter
value the value of the parameter

Todo
not done...only supports REAL, IMAG, PHASE, not RANDOM

get_op2_data(sol, solmap_toValue)
get_parameter(param_name)
Gets the [value, options] for a subcase.
Parameters
self the Subcase object
param_name the case control parameter to check for
get_sort_code(options, value)
Gets the sort code of a given set of options and value
Parameters
self the Subcase object
options the options for a parameter
value the value of the parameter
get_stress_code(key, options, value)
Method get_stress_code:

Note: the individual element must take the stress_code and reduce

it to what the element can return. For example, for an isotropic CQUAD4 the fiber field doesnt
mean anything.
BAR - no von mises/fiber ISOTROPIC - no fiber

2.1. bdf Package 23


pyNastran Documentation, Release 0.6.0

Todo
how does the MATERIAL bit get turned on? Im assuming its element dependent...

get_table_code(sol, table_name, options)


Gets the table code of a given parameter. For example, the DISPLACMENT(PLOT,POST)=ALL
makes an OUGV1 table and stores the displacement. This has an OP2 table code of 1, unless
youre running a modal solution, in which case it makes an OUGV1 table of eigenvectors and
has a table code of 7.
Parameters
self the Subcase object
options the options for a parameter
value the value of the parameter
has_parameter(param_name)
Checks to see if a parameter name is in the subcase.
Parameters
self the Subcase object
param_name the case control parameter to check for
print_param(key, param)
Prints a single entry of the a subcase from the global or local subcase list.
Parameters self the Subcase object
solCodeMap = {64: 106, 1: 101, 66: 106, 68: 106, 76: 101, 144: 101, 21: 101, 24: 101, 26: 101, 99: 129, 187: 10
subcase_sorted(lst)
Does a smart sort on the keys such that SET cards increment in numerical order. Also puts the
sets first.
Parameters
self the Subcase object
lst the list of subcase list objects
Returns listB the sorted version of listA
write_subcase(subcase0)
Internal method to print a subcase
Parameters
self the Subcase object
subcase0 the global Subcase object

24 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.subcase.update_param_name(param_name)
Takes an abbreviated name and expands it so the user can type DISP or DISPLACEMENT and get
the same answer
Parameters param_name the parameter name to be standardized (e.g. DISP vs.
DIPLACEMENT)
..todo:: not a complete list

2.1.7 writePath Module

pyNastran.bdf.writePath.split_path(abspath)
pyNastran.bdf.writePath.write_include(filename, is_windows=True)

2.1.8 writePath Module

pyNastran.bdf.writePath.split_path(abspath)
pyNastran.bdf.writePath.write_include(filename, is_windows=True)

2.1.9 Subpackages

bdfInterface Package

addCard Module

pyNastran.bdf.bdfInterface.addCard.AddMethods

class pyNastran.bdf.bdfInterface.addCard.AddMethods
Bases: object
add_AEFACT(aefact, allowOverwrites=False)
add_AELINK(aelink)
add_AELIST(aelist)
add_AEPARM(aeparam)
add_AERO(aero)
add_AEROS(aero)

2.1. bdf Package 25


pyNastran Documentation, Release 0.6.0

add_AESTAT(aestat)
add_AESURF(aesurf )
add_ASET(setObj)
add_BSET(setObj)
add_CAERO(caero)
add_CSET(setObj)
add_DAREA(darea, allowOverwrites=False)
add_DCONSTR(dconstr)
add_DDVAL(ddval)
add_DEQATN(deqatn, allowOverwrites=False)
add_DESVAR(desvar)
add_DLINK(dlink)
add_DMI(dmi, allowOverwrites=False)
add_DMIG(dmig, allowOverwrites=False)
add_DMIJ(dmij, allowOverwrites=False)
add_DMIJI(dmiji, allowOverwrites=False)
add_DMIK(dmik, allowOverwrites=False)
add_DRESP(dresp)
add_DVMREL(dvmrel)
add_DVPREL(dvprel)
add_FLFACT(flfact)
add_FLUTTER(flutter)
add_FREQ(freq)
add_GUST(gust)
add_LSEQ(load)
add_MKAERO(mkaero)
add_NLPARM(nlparm)
add_NLPCI(nlpci)
add_PAERO(paero)
add_PARAM(param, allowOverwrites=False)
add_PBUSHT(prop, allowOverwrites=False)
add_PDAMPT(prop, allowOverwrites=False)

26 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

add_PELAST(prop, allowOverwrites=False)
add_PHBDY(prop)
add_QSET(setObj)
add_SESET(setObj)
add_SET(setObj)
add_SPLINE(spline)
add_SPOINT(spoint)
add_TRIM(trim, allowOverwrites=False)
add_TSTEP(tstep, allowOverwrites=False)
add_TSTEPNL(tstepnl, allowOverwrites=False)
add_cmethod(cMethod, allowOverwrites=False)
add_constraint(constraint)
add_constraint_MPC(constraint)
add_constraint_MPCADD(constraint)
add_constraint_SPC(constraint)
add_constraint_SPCADD(constraint)
add_convection_property(prop)
add_coord(coord, allowOverwrites=False)
add_creep_material(material, allowOverwrites=False)
Method add_creep_material: ..note:: May be removed in the future. Are CREEP cards materi-
als?
They have an MID, but reference structural materials.
add_damper_element(elem, allowOverwrites=False)
..warning:: can dampers have the same ID as a standard element?
add_element(elem, allowOverwrites=False)
add_load(load)
add_mass_element(elem, allowOverwrites=False)
add_material_dependence(material, allowOverwrites=False)
add_method(method, allowOverwrites=False)
add_node(node, allowOverwrites=False)
add_property(prop, allowOverwrites=False)
add_random_table(table)
add_rigid_element(elem, allowOverwrites=False)

2.1. bdf Package 27


pyNastran Documentation, Release 0.6.0

add_structural_material(material, allowOverwrites=False)
add_suport(suport)
add_table(table)
add_thermal_BC(bc, key)
add_thermal_element(elem)
same as add_element at the moment...
add_thermal_load(load)
add_thermal_material(material, allowOverwrites=False)

assign_type Module

pyNastran.bdf.bdfInterface.assign_type.blank(card, n, fieldname, de-


fault=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.components(card, n, fieldname)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.components_or_blank(card, n,
field-
name, de-
fault=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.double(card, n, fieldname)
Parameters
card BDF card as a list

28 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.double_or_blank(card, n, fieldname,
default=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.double_or_string(card, n, field-
name)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.double_string_or_blank(card, n,
field-
name,
de-
fault=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
Returns value a double, string, or default value
Raises SyntaxError if there is an invalid type
pyNastran.bdf.bdfInterface.assign_type.field(card, n, fieldname)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.fields(f, card, fieldname, i, j=None)

2.1. bdf Package 29


pyNastran Documentation, Release 0.6.0

Todo
improve fieldname

pyNastran.bdf.bdfInterface.assign_type.fields_or_blank(f, card, field-


name, i, j=None,
defaults=None)
pyNastran.bdf.bdfInterface.assign_type.getType(value)
Get the type of the input value in a form that is clear. :param value: the value to get the type of
pyNastran.bdf.bdfInterface.assign_type.integer(card, n, fieldname)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.integer_double_or_blank(card,
n,
field-
name,
de-
fault=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.integer_double_or_string(card,
n,
field-
name)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.integer_double_string_or_blank(card,
n,
field-
name,
de-
fault=None)

30 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.integer_or_blank(card, n, field-
name, de-
fault=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.integer_or_double(card, n, field-
name)
Parameters
card BDF card as a list
n field number
fieldname name of field
Returns value the value with the proper type
Raises SyntaxError if theres an invalid type
pyNastran.bdf.bdfInterface.assign_type.integer_or_string(card, n, field-
name)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.integer_string_or_blank(card,
n,
field-
name,
de-
fault=None)
Parameters

2.1. bdf Package 31


pyNastran Documentation, Release 0.6.0

card BDF card as a list


n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.interpretValue(valueRaw, card=,
debug=False)

See Also:
interpret_value
pyNastran.bdf.bdfInterface.assign_type.interpret_value(valueRaw,
card=, de-
bug=False)
Converts a value from nastran format into python format.
pyNastran.bdf.bdfInterface.assign_type.string(card, n, fieldname)
Parameters
card BDF card as a list
n field number
fieldname name of field
pyNastran.bdf.bdfInterface.assign_type.string_or_blank(card, n, fieldname,
default=None)
Parameters
card BDF card as a list
n field number
fieldname name of field
default the default value for the field (default=None)
pyNastran.bdf.bdfInterface.assign_type.string_parser(stringIn)
not used

BDF_Card Module

pyNastran.bdf.bdfInterface.BDF_Card.BDFCard

32 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.bdfInterface.BDF_Card.BDFCard(card=None, oldCar-


dObj=None, debug=False)
Bases: object
Is(cardName)
Returns True if the card is of type cardName
Parameters
self the object pointer
cardName the cardName to compare against
Returns IsACardName True/False
applyOldFields(cardCount=0)
Used for nastran = format
field(i, default=None)
Gets the ith field on the card
Parameters
self the object pointer
i the ith field on the card (following list notation)
default the default value for the field
Returns the value on the ith field
fields(i=0, j=None, defaults=None, debug=False)
Gets multiple fields on the card :param self: the object pointer :param i: the ith field on the card
(following list notation) :param j: the jth field on the card (None means till the end
of the card)

Parameters
defaults the default value for the field (as a list) len(defaults)=i-j-1
debug prints out the values at intermediate steps
Returns the values on the ith-jth fields

getOldField(i)
Used for nastran = format
index(i)
isSameName()
Used for nastran = format
nFields()
Gets how many fields are on the card
Parameters self the object pointer
Returns nfields the number of fields on the card

2.1. bdf Package 33


pyNastran Documentation, Release 0.6.0

replaceExpression(fieldNew, fieldOld, replaceChar=u=, replaceChar2=u)


Used for nastran = format
pyNastran.bdf.bdfInterface.BDF_Card.wipe_empty_fields(card)
Removes an trailing Nones from the card. Also converts empty strings to None.
Parameters card the fields on the card as a list
Returns shortCard the card with no trailing blank fields

bdf_cardMethods Module

pyNastran.bdf.bdfInterface.bdf_cardMethods.isLargeField(card)
Returns True if the card is in 16-character width fields
pyNastran.bdf.bdfInterface.bdf_cardMethods.make_single_streamed_card(log,
card,
de-
bug=False)
Takes a card that has been split b/c its a multiline card and gets rid of the required blanks in it.
pyNastran.bdf.bdfInterface.bdf_cardMethods.nastran_split(log, line,
is_large_field,
debug=False)
Splits a single BDF line into large field or small field format
Parameters
line (str) the BDF line
is_large_field (bool) a flag indicating small/large field format (True/False)
debug (bool) extra developer debug
Returns fields the 9 (small) or 5 (large) fields for the line

Note: CSV Format is handled by parse_csv

Note: tabs are handled prior to running this

pyNastran.bdf.bdfInterface.bdf_cardMethods.parse_csv(sline)
Parses a Nastran single-precision formatted CSV line

34 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

bdf_writeMesh Module

pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMeshDeprecated pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMesh

class pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMesh
Bases: pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMeshDeprecated
_write_aero(size)
Writes the aero cards
_write_aero_control(size)
Writes the aero control surface cards
_write_case_control_deck()
Writes the Case Control Deck. :param self: the BDF object
_write_common(size)
method to write the common outputs so none get missed... :param self: the BDF object :returns
msg: part of the bdf
_write_constraints(size)
Writes the constraint cards sorted by ID
_write_coords(size)
Writes the coordinate cards in a sorted order
_write_dmigs(size)
Parameters
self the BDF object
size large field (16) or small field (8)
Returns msg string representation of the DMIGs
_write_dynamic(size)
Writes the dynamic cards sorted by ID
_write_elements(size)
Writes the elements in a sorted order :param self: the BDF object
_write_elements_as_CTRIA3(size)
Takes the cquad4 elements and splits them
Returns msg string representation of the elements
_write_elements_properties(outfile, size)
Writes the elements and properties in and interspersed order
_write_executive_control_deck()
Writes the executive control deck. :param self: the BDF object

2.1. bdf Package 35


pyNastran Documentation, Release 0.6.0

_write_flutter(size)
Writes the flutter cards
_write_header()
Writes the executive and case control decks. :param self: the BDF object
_write_loads(size)
Writes the load cards sorted by ID
_write_materials(size)
Writes the materials in a sorted order
_write_nodes(outfile, size)
Writes the NODE-type cards :param self: the BDF object
_write_nodes_associated(f, size)
Writes the NODE-type in associated and unassociated groups. :param self: the BDF object ..
warning:: Sometimes crashes, probably on invalid BDFs.
_write_optimization(size)
Writes the optimization cards sorted by ID
_write_params(size)
Writes the PARAM cards :param self: the BDF object
_write_properties(size)
Writes the properties in a sorted order
_write_rejects(size)
Writes the rejected (processed) cards and the rejected unprocessed cardLines
_write_rigid_elements(size)
Writes the rigid elements in a sorted order
_write_sets(size)
Writes the SETx cards sorted by ID
_write_tables(size)
Writes the TABLEx cards sorted by ID
_write_thermal(size)
Writes the thermal cards
_write_thermal_materials(size)
Writes the thermal materials in a sorted order
auto_reject_bdf(infile_name)
This method parses supported cards, but does not group them into nodes, elements, properties,
etc.

Todo
maybe add the write method

36 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

echo_bdf(infile_name)
This method removes all comment lines from the bdf A write method is stil required.

Todo
maybe add the write method

write_as_CTRIA3(out_filename=ufem.out.bdf, size=8, debug=False)


Writes a series of CQUAD4s as CTRIA3s. All other cards are echoed. :param self: the BDF
object :param out_filename: the name to call the output bdf :param debug: developer debug
(unused) .. warning:: not tested in a long time
write_bdf(out_filename=ufem.out.bdf, interspersed=True, size=8, debug=False)
Writes the BDF.
Parameters
self the BDF object
out_filename the name to call the output bdf
debug developer debug (unused)
interspersed Writes a bdf with properties & elements interspersed like how
Patran writes the bdf. This takes slightly longer than if interspersed=False, but
makes it much easier to compare to a Patran-formatted bdf and is more clear.
(default=True)
size the field size (8 is recommended)
debug developer debug
class pyNastran.bdf.bdfInterface.bdf_writeMesh.WriteMeshDeprecated
Bases: object
echoBDF(infileName)

See Also:
echo_bdf
Deprecated since version will: be replaced in version 0.7 with echo_bdf
writeBDF(outFileName=ufem.out.bdf, size=8, debug=False)

See Also:
write_bdf
Deprecated since version will: be replaced in version 0.7 with write_bdf with interspersed=False
writeBDFAsPatran(outFileName=ufem.out.bdf, size=8, debug=False)

See Also:

2.1. bdf Package 37


pyNastran Documentation, Release 0.6.0

write_bdf
Deprecated since version will: be replaced in version 0.7 with write_bdf with an inter-
spersed=True

crossReference Module

pyNastran.bdf.bdfInterface.crossReference.XrefMesh

Links up the various cards


in the BDF.
class pyNastran.bdf.bdfInterface.crossReference.XrefMesh
Bases: object
Links up the various cards in the BDF.
The main BDF class defines all the parameters that are used.
_cross_reference_aero()
Links up all the aero cards
_cross_reference_constraints()
Links the SPCADD, SPC, SPCAX, SPCD, MPCADD, MPC cards.
_cross_reference_coordinates()
Links up all the coordinate cards to other coordinate cards and nodes
_cross_reference_elements()
Links the elements to nodes, properties (and materials depending on the card).
_cross_reference_loads()
Links the loads to nodes, coordinate systems, and other loads.
_cross_reference_materials()
Links the materials to materials (e.g. MAT1, CREEP) often this is a pass statement
_cross_reference_nodes()
Links the nodes to coordinate systems
_cross_reference_properties()
Links the properties to materials
crossReference(xref=True)
cross_reference(xref=True)
Links up all the cards to the cards they reference

38 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

getCard Module

pyNastran.bdf.bdfInterface.getCard.DeprecatedGetMethods pyNastran.bdf.bdfInterface.getCard.GetMethods

class pyNastran.bdf.bdfInterface.getCard.DeprecatedGetMethods
Bases: object
Flfact(sid, msg)
Grav(sid, msg)
class pyNastran.bdf.bdfInterface.getCard.GetMethods
Bases: pyNastran.bdf.bdfInterface.getCard.DeprecatedGetMethods
AELink(linkID, msg)
AEParam(aid, msg)
AEStat(aid, msg)
Aero(acsid, msg)
Aeros(acsid, msg)
CAero(eid, msg)
CMethod(sid, msg)
Coord(cid, msg)
DConstr(oid, msg)
DDVal(oid, msg)
DMIG(dname, msg)
Desvar(oid, msg)
Element(eid, msg)
Elements(eids, msg)
FLFACT(sid, msg)
Flutter(fid, msg)
Gust(sid, msg)
Load(sid, msg)
Material(mid, msg)
Materials(mids, msg)
Method(sid, msg)

2.1. bdf Package 39


pyNastran Documentation, Release 0.6.0

NLParm(nid, msg)
Node(nid, allowEmptyNodes=False, msg=u)
Nodes(nids, allowEmptyNodes=False, msg=u)
Returns a series of node objects given a list of node IDs
PAero(pid, msg)
Phbdy(pid, msg)
Properties(pids, msg)
Property(pid, msg)
RandomTable(tid, msg)
RigidElement(eid, msg)
SPC(conid, msg)
Set(sid, msg)
SetSuper(seid, msg)
Spline(eid, msg)
StructuralMaterial(mid, msg)
Table(tid, msg)
ThermalMaterial(mid, msg)
coordIDs()
elementIDs()
getElementIDsWithPID(pid)
getElementIDsWithPIDs(pids, msg=u)
getMaterialIDToPropertyIDsMap()
Returns a dictionary that maps a material ID to a list of properties

Note: all properties require an mid to be counted (except for PCOMP, which has multiple mids)

getNodeIDToElementIDsMap()
Returns a dictionary that maps a node ID to a list of elemnents

Todo
support 0d or 1d elements

. todo:: support elements with missing nodes (e.g. CQUAD8 with missing nodes)

getNodeIDsWithElement(eid)

40 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

getNodeIDsWithElements(eids, msg=u)
getPropertyIDToElementIDsMap()
Returns a dictionary that maps a property ID to a list of elemnents
materialIDs()
nCAeros()
nElements()
nNodes()
nodeIDs()
propertyIDs()
structuralMaterialIDs()
thermalMaterialIDs()

2.1. bdf Package 41


pyNastran Documentation, Release 0.6.0

42 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

cards Package

aero Module

pyNastran.bdf.cards.aero.CAERO3

pyNastran.bdf.cards.aero.AESURF

pyNastran.bdf.cards.aero.MKAERO1

pyNastran.bdf.cards.aero.TRIM

pyNastran.bdf.cards.aero.FLUTTER

pyNastran.bdf.cards.aero.AEPARM

pyNastran.bdf.cards.aero.CAERO1

pyNastran.bdf.cards.aero.PAERO2

pyNastran.bdf.cards.aero.AEFACT pyNastran.bdf.cards.aero.AEROS

pyNastran.bdf.cards.aero.Aero pyNastran.bdf.cards.aero.AERO

pyNastran.bdf.cards.aero.CAERO4 pyNastran.bdf.cards.aero.SPLINE2

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.aero.Spline pyNastran.bdf.cards.aero.SPLINE4

pyNastran.bdf.cards.aero.CSSCHD pyNastran.bdf.cards.aero.SPLINE5

pyNastran.bdf.cards.aero.CAERO5 pyNastran.bdf.cards.aero.SPLINE1

pyNastran.bdf.cards.aero.FLFACT

pyNastran.bdf.cards.aero.CAERO2

pyNastran.bdf.cards.aero.AELIST

pyNastran.bdf.cards.aero.MKAERO2

pyNastran.bdf.cards.aero.PAERO1

pyNastran.bdf.cards.aero.AELINK

pyNastran.bdf.cards.aero.GUST

pyNastran.bdf.cards.aero.AESURFS

pyNastran.bdf.cards.aero.AESTAT

All aero
2.1. bdfcards are defined in this file. This includes:
Package 43
pyNastran Documentation, Release 0.6.0

AEFACT
AELINK
AELIST
AEPARM
AESTAT
AESURF / AESURFS
AERO / AEROS
CSSCHD
CAERO1 / CAERO2 / CAERO3 / CAERO4 / CAERO5
FLFACT
FLUTTER
GUST
MKAERO1 / MKAERO2
PAERO1 / PAERO2
SPLINE1 / SPLINE2 / SPLINE4 / SPLINE5
All cards are BaseCard objects.
class pyNastran.bdf.cards.aero.AEFACT(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines real numbers for aeroelastic analysis.
AEFACT 97 .3 0.7 1.0
Di = None
Number (float)
rawFields()
reprFields()
sid = None
Set identification number. (Unique Integer > 0)
type = uAEFACT
class pyNastran.bdf.cards.aero.AELINK(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines relationships between or among AESTAT and AESURF entries, such that:

uD + ni=1 Ci uIi = 0.0

AELINK 10 INBDA OTBDA -2.0

44 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Cis = None
linking coefficient (real)
id = None
an ID=0 is applicable to the global subcase, ID=1 only subcase 1
independentLabels = None
defines the independent variable name (string)
label = None
defines the dependent variable name (string)
rawFields()
type = uAELINK
class pyNastran.bdf.cards.aero.AELIST(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a list of aerodynamic elements to undergo the motion prescribed with the AESURF Bulk Data
entry for static aeroelasticity.
1.These entries are referenced by the AESURF entry.
2.When the THRU option is used, all intermediate grid points must exist. The word THRU may
not appear in field 3 or 9 (2 or 9 for continuations).
3.Intervening blank fields are not allowed.
cleanIDs()
eids = None
List of aerodynamic boxes generated by CAERO1 entries to define a surface. (Integer > 0 or
THRU)
rawFields()
sid = None
Set identification number. (Integer > 0)
type = uAELIST
class pyNastran.bdf.cards.aero.AEPARM(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a general aerodynamic trim variable degree-of-freedom (aerodynamic extra point). The forces
associated with this controller will be derived from AEDW, AEFORCE and AEPRESS input data.
AEPARM ID LABEL UNITS

AEPARM 5 THRUST LBS


rawFields()
type = uAEPARM
class pyNastran.bdf.cards.aero.AERO(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Aero

2.1. bdf Package 45


pyNastran Documentation, Release 0.6.0

Gives basic aerodynamic parameters for unsteady aerodynamics.


1 2 3 4 5 6 7
AERO ACSID VELOCITY REFC RHOREF SYMXZ SYMXY
AERO 3 1.3+4 1.-5 1 -1
100.

rawFields()
reprFields()
type = uAERO
class pyNastran.bdf.cards.aero.AEROS(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Aero
Gives basic aerodynamic parameters for unsteady aerodynamics.
1 2 3 4 5 6 7 8
AEROS ACSID RCSID REFC REFB REFS SYMXZ SYMXY

AEROS 10 20 1
10. 100. 1000.

rawFields()
reprFields()
type = uAEROS
class pyNastran.bdf.cards.aero.AESTAT(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Specifies rigid body motions to be used as trim variables in static aeroelasticity.
AESTAT ID LABEL

AESTAT 5001 ANGLEA


rawFields()
type = uAESTAT
class pyNastran.bdf.cards.aero.AESURF(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Specifies an aerodynamic control surface as a member of the set of aerodynamic extra points. The
forces associated with this controller will be derived from rigid rotation of the aerodynamic model
about the hinge line(s) and from AEDW, AEFORCE and AEPRESS input data. The mass properties
of the control surface can be specified using an AESURFS entry.
AESURF ID LABEL CID1 ALID1 CID2 ALID2 EFF LDW
CREFC CREFS PLLIM PULIM HMLLIM HMULIM TQLLIM TQULIM
aesid = None
Controller identification number

46 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

alid1 = None
Identification of an AELIST Bulk Data entry that identifies all aerodynamic elements that make
up the control surface component. (Integer > 0)
cid1 = None
Identification number of a rectangular coordinate system with a y-axis that defines the hinge line
of the control surface component.
crefc = None
Reference chord length for the control surface. (Real>0.0; Default=1.0)
crefs = None
Reference surface area for the control surface. (Real>0.0; Default=1.0)
eff = None
Control surface effectiveness. See Remark 4. (Real != 0.0; Default=1.0)
hmllim = None
Lower and upper hinge moment limits for the control surface in force-length units. (Real, De-
fault = no limit) -> 1e8
label = None
Controller name.
ldw = None
Linear downwash flag. See Remark 2. (Character, one of LDW or NOLDW; Default=LDW).
pllim = None
Lower and upper deflection limits for the control surface in radians. (Real, Default = +/- pi/2)
rawFields()
reprFields()
tqllim = None
Set identification numbers of TABLEDi entries that provide the lower and upper deflection limits
for the control surface as a function of the dynamic pressure. (Integer>0, Default = no limit)
type = uAESURF
class pyNastran.bdf.cards.aero.AESURFS(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Optional specification of the structural nodes associated with an aerodynamic control surface that has
been defined on an AESURF entry. The mass associated with these structural nodes define the control
surface moment(s) of inertia about the hinge line(s). Specifies rigid body motions to be used as trim
variables in static aeroelasticity.
1 2 3 4 5 6 7
AESURFS ID LABEL LIST1 LIST2
AESURFS 6001 ELEV 6002 6003
rawFields()
type = uAESURFS

2.1. bdf Package 47


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.aero.Aero(card, data)


Bases: pyNastran.bdf.cards.baseCard.BaseCard
Base class for AERO and AEROS cards.
DisableGroundEffect()
EnableGroundEffect()
IsAntiSymmetricalXY()
IsAntiSymmetricalXZ()
IsSymmetricalXY()
IsSymmetricalXZ()
class pyNastran.bdf.cards.aero.CAERO1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines an aerodynamic macro element (panel) in terms of two leading edge locations and side chords.
This is used for Doublet-Lattice theory for subsonic aerodynamics and the ZONA51 theory for super-
sonic aerodynamics.:
+--------+-----+-----+----+-------+--------+--------+--------+------+

1|2|3|4|5|6|7|8|9|

CAERO1 EID PID CP NSPAN NCHORD LSPAN LCHORD IGID


X1 Y1 Z1 X12 X4 Y4 Z4 X43
1
| \
| \
| \
| 4
| |
| |
2------3

Cp()
Pid()
Points()
SetPoints(points)
cp = None
Coordinate system for locating point 1.
cross_reference(model)
eid = None
Element identification number

48 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pid = None
Property identification number of a PAERO2 entry.
rawFields()
reprFields()
type = uCAERO1
class pyNastran.bdf.cards.aero.CAERO2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Aerodynamic Body Connection Defines aerodynamic slender body and interference elements for
Doublet-Lattice aerodynamics.
1 | | | 3
| |
| |
2------4

Cp()
Lsb()
Pid()
Points()
SetPoints(points)
cp = None
Coordinate system for locating point 1.
cross_reference(model)
eid = None
Element identification number
igid = None
Interference group identification. Aerodynamic elements with different IGIDs are uncoupled.
(Integer >= 0)
lint = None
ID of an AEFACT data entry containing a list of division points for interference elements; used
only if NINT is zero or blank. (Integer > 0)
lsb = None
ID of an AEFACT Bulk Data entry for slender body division points; used only if NSB is zero or
blank. (Integer >= 0)
nint = None
Number of interference elements. If NINT > 0, then NINT equal divisions are assumed; if zero
or blank, specify a list of divisions in LINT. (Integer >= 0)
nsb = None
Number of slender body elements. If NSB > 0, then NSB equal divisions are assumed; if zero
or blank, specify a list of divisions in LSB. (Integer >= 0)

2.1. bdf Package 49


pyNastran Documentation, Release 0.6.0

p1 = None
Location of point 1 in coordinate system CP
pid = None
Property identification number of a PAERO2 entry.
rawFields()
reprFields()
type = uCAERO2
x12 = None
Length of body in the x-direction of the aerodynamic coordinate system. (Real > 0)
class pyNastran.bdf.cards.aero.CAERO3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Cp()
Pid()
cp = None
Coordinate system for locating point 1.
cross_reference(model)
eid = None
Element identification number
pid = None
Property identification number of a PAERO2 entry.
rawFields()
reprFields()
type = uCAERO3
class pyNastran.bdf.cards.aero.CAERO4(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Cp()
Pid()
cp = None
Coordinate system for locating point 1.
cross_reference(model)
eid = None
Element identification number
pid = None
Property identification number of a PAERO2 entry.
rawFields()
reprFields()

50 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

type = uCAERO4
class pyNastran.bdf.cards.aero.CAERO5
Bases: pyNastran.bdf.cards.baseCard.BaseCard
class pyNastran.bdf.cards.aero.CSSCHD(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a scheduled control surface deflection as a function of Mach number and angle of attack.:
+--------+-----+-------+--------+-------+-------+

1|2|3|4|5|6|

CSSCHD SlD AESID LALPHA LMACH LSCHD


AESid()
LAlpha()
LMach()
LSchd()
cross_reference(model)
rawFields()
reprFields()
type = uASSCHD
class pyNastran.bdf.cards.aero.FLFACT(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
# delta quantity approach
1 2 3 4 5 6 7
FLFACT SID F1 THRU FNF NF FMID
FLFACT 201 0.200 THRU 0.100 11 0.1333
rawFields()
type = uFLFACT
class pyNastran.bdf.cards.aero.FLUTTER(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines data needed to perform flutter analysis.
1 2 3 4 5 6 7 8 9
FLUTTER SID METHOD DENS MACH RFREQ IMETH NVALUE/OMAX EPS
FLUTTER 19 K 119 219 319 S 5 1.-4
_rawNValueOMax()

2.1. bdf Package 51


pyNastran Documentation, Release 0.6.0

_reprNValueOMax()
cross_reference(model)
get_density()
get_mach()
get_rfreq_vel()
rawFields()
type = uFLUTTER
class pyNastran.bdf.cards.aero.GUST(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a stationary vertical gust for use in aeroelastic response analysis.
1 2 3 4 5 6
GUST SID DLOAD WG X0 V
GUST 133 61 1.0 1.+4
0.

rawFields()
type = uGUST
class pyNastran.bdf.cards.aero.MKAERO1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Provides a table of Mach numbers (m) and reduced frequencies (k) for aerodynamic matrix calcula-
tion.
1 2 3 4 5 6 7 8 9
MKAERO1 m1 m2 m3 m4 m5 m6 m7 m8
k1 k2 k3 k4 k5 k6 k7 k8
addFreqs(mkaero)
getMach_rFreqs()
rawFields()
reprFields()
type = uMKAERO1
class pyNastran.bdf.cards.aero.MKAERO2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Provides a table of Mach numbers (m) and reduced frequencies (k) for aerodynamic matrix calcula-
tion.
1 2 3 4 5 6 7 8 9
MKAERO2 m1 k1 m2 k2 m3 k3 m4 k4
addFreqs(mkaero)

52 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

getMach_rFreqs()
rawFields()
reprFields()
type = uMKAERO2
class pyNastran.bdf.cards.aero.PAERO1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines associated bodies for the panels in the Doublet-Lattice method.:
PAERO1 PID B1 B2 B3 B4 B5 B6

Bodies()
rawFields()
reprFields()
type = uPAERO1
class pyNastran.bdf.cards.aero.PAERO2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines the cross-sectional properties of aerodynamic bodies.:
PAERO2 PID ORIENT WIDTH AR LRSB LRIB LTH1 LTH2
THI1 THN1 THI2 THN2 THI3 THN3

AR = None
Aspect ratio of the interference tube (height/width). float>0.
lrib = None
Identification number of an AEFACT entry containing a list of slender body half-widths at the
end points of the interference elements. If blank, the value of WIDTH will be used. (Integer > 0
or blank)
lrsb = None
Identification number of an AEFACT entry containing a list of slender body half-widths at the
end points of the slender body elements. If blank, the value of WIDTH will be used. (Integer >
0 or blank)
lth1 = None
dentification number of AEFACT entries for defining ? arrays for interference calculations.
(Integer >= 0)
orient = None
Orientation flag. Type of motion allowed for bodies. Refers to the aerodynamic coordinate
system of ACSID. See AERO entry. (Character = Z, Y, or ZY)
pid = None
Property identification number. (Integer > 0)
rawFields()
reprFields()

2.1. bdf Package 53


pyNastran Documentation, Release 0.6.0

type = uPAERO2
width = None
Reference half-width of body and the width of the constant width interference tube. (Real > 0.0)
class pyNastran.bdf.cards.aero.SPLINE1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Spline
Surface Spline Methods Defines a surface spline for interpolating motion and/or forces for aeroelastic
problems on aerodynamic geometries defined by regular arrays of aerodynamic points.:
SPLINE1 EID CAERO BOX1 BOX2 SETG DZ METH USAGE
NELEM MELEM

SPLINE1 3 111 115 122 14 0.

CAero()
Set()
cross_reference(model)
rawFields()
reprFields()
type = uSPLINE1
class pyNastran.bdf.cards.aero.SPLINE2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Spline
Linear Spline Defines a surface spline for interpolating motion and/or forces for aeroelastic problems
on aerodynamic geometries defined by regular arrays of aerodynamic points.:
SPLINE2 EID CAERO ID1 ID2 SETG DZ DTOR CID
DTHX DTHY None USAGE
SPLINE2 5 8 12 24 60 0. 1.0 3
1.

CAero()
Cid()
Set()
cross_reference(model)
rawFields()
reprFields()
type = uSPLINE2
class pyNastran.bdf.cards.aero.SPLINE4(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Spline
Surface Spline Methods Defines a curved surface spline for interpolating motion and/or forces for
aeroelastic problems on general aerodynamic geometries using either the Infinite Plate, Thin Plate or
Finite Plate splining method.:

54 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

SPLINE4 EID CAERO AELIST --- SETG DZ METH USAGE


NELEM MELEM
SPLINE4 3 111 115 --- 14 0. IPS

AEList()
CAero()
Set()
cross_reference(model)
rawFields()
reprFields()
type = uSPLINE4
class pyNastran.bdf.cards.aero.SPLINE5(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.aero.Spline
Linear Spline Defines a 1D beam spline for interpolating motion and/or forces for aeroelastic problems
on aerodynamic geometries defined by irregular arrays of aerodynamic points. The interpolating beam
supports axial rotation and bending in the yz-plane.:
SPLINE5 EID CAERO AELIST --- SETG DZ DTOR CID
DTHX DTHY --- USAGE

AEList()
CAero()
Cid()
Set()
cross_reference(model)
rawFields()
reprFields()
type = uSPLINE5
class pyNastran.bdf.cards.aero.Spline(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
class pyNastran.bdf.cards.aero.TRIM(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
label = None
Flag to request a rigid trim analysis (Real > 0.0 and < 1.0; Default = 1.0. A value of 0.0 provides
a rigid trim analysis, not supported
labels = None
The label identifying aerodynamic trim variables defined on an AESTAT or AESURF entry.
mach = None
Mach number. (Real > 0.0 and != 1.0)

2.1. bdf Package 55


pyNastran Documentation, Release 0.6.0

q = None
Dynamic pressure. (Real > 0.0)
rawFields()
sid = None
Trim set identification number. (Integer > 0)
type = uTRIM
uxs = None
The magnitude of the aerodynamic extra point degree-of-freedom. (Real)

baseCard Module

pyNastran.bdf.cards.baseCard.Property

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element

pyNastran.bdf.cards.baseCard.Material

class pyNastran.bdf.cards.baseCard.BaseCard
Bases: object
_verify(xref=False)
This method checks that all the card is various methods of the card work properly. Its only used
in testing.
buildTableLines(fields, nStart=1, nEnd=0)
Builds a table of the form:
DESVAR DVID1 DVID2 DVID3 DVID4 DVID5 DVID6 DVID7
DVID8 -etc.-
UM VAL1 VAL2 -etc.-

and then pads the rest of the fields with Nones


Parameters
fields the fields to enter, including DESVAR
nStart the number of blank fields at the start of the line (default=1)
nEnd the number of blank fields at the end of the line (default=0)

Note: will be used for DVPREL2, RBE1, RBE3

56 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Warning: only works for small field format???

comment()
isSameCard(card, debug=False)
isSameFields(fields1, fields2)
printRawFields(size=8)
A cards raw fields include all defaults for all fields
print_card(size=8)
reprFields()
repr_card(size=8)
writeCodeAster()
writeCodeAsterLoad(model, gridWord=unode)
class pyNastran.bdf.cards.baseCard.Element(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Pid()
returns the property ID of an element
_nodeIDs(nodes=None, allowEmptyNodes=False, msg=u)
returns nodeIDs for repr functions
isSameCard(element, debug=False)
nodePositions(model, nodes=None)
returns the positions of multiple node objects ## TODO: WRONG... nodes - node IDs
nodes = None
the list of node IDs for an element (default=None)
pid = 0
prepareNodeIDs(nids, allowEmptyNodes=False)
Verifies all node IDs exist and that theyre integers
class pyNastran.bdf.cards.baseCard.Material(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Base Material Class
Mid()
cross_reference(model)
isSameCard(mat, debug=False)
class pyNastran.bdf.cards.baseCard.Property(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Mid()

2.1. bdf Package 57


pyNastran Documentation, Release 0.6.0

Pid()
cross_reference(model)
isSameCard(prop, debug=False)
pyNastran.bdf.cards.baseCard.build_thru(packs, maxDV=None)
Takes a pack [1,7,2] and converts it into fields used by a SET card. The values correspond to the first
value, last value, and delta in the list. This means that [1,1001,2] represents 500 values. [1,1001,1]
represents 1001 values and will be written as [1,THRU,1001]..
Parameters
packs list of packs (list of 3 values: [first, last, delta] )
maxDV integer defining the max allowable delta between two values (de-
fault=None; no limit)
pyNastran.bdf.cards.baseCard.build_thru_float(packs, maxDV=None)
Takes a pack [1,7,2] and converts it into fields used by a SET card. The values correspond to the first
value, last value, and delta in the list. This means that [1,1001,2] represents 500 values. [1,1001,1]
represents 1001 values and will be written as [1,THRU,1001]..
Parameters
packs list of packs (list of 3 values: [first, last, delta] )
maxDV integer defining the max allowable delta between two values (de-
fault=None; no limit)
pyNastran.bdf.cards.baseCard.collapse_thru(fields)
pyNastran.bdf.cards.baseCard.collapse_thru_by(fields)
pyNastran.bdf.cards.baseCard.collapse_thru_by_float(fields)
pyNastran.bdf.cards.baseCard.condense(valueList)
Builds a list of packs (list of 3 values representing the first, last, and delta values for condensing a
SET card.
See Also:
build_thru
pyNastran.bdf.cards.baseCard.expand_thru(fields)
Expands a list of values of the form [1,5,THRU,9,13] to be [1,5,6,7,8,9,13]
pyNastran.bdf.cards.baseCard.expand_thru_by(fields)
Expands a list of values of the form [1,5,THRU,9,BY,2,13] to be [1,5,7,9,13]

Todo
not tested

Note: used for QBDY3, ???

58 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.baseCard.expand_thru_exclude(self, fields)
Expands a list of values of the form [1,5,THRU,11,EXCEPT,7,8,13] to be [1,5,6,9,10,11,13]

Warning: hasnt been tested

constraints Module

pyNastran.bdf.cards.constraints.SPCAX

pyNastran.bdf.cards.constraints.SPC pyNastran.bdf.cards.constraints.SPCD

pyNastran.bdf.cards.constraints.ConstraintObject pyNastran.bdf.cards.constraints.MPC
pyNastran.bdf.cards.constraints.MPCADD
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.constraints.Constraint pyNastran.bdf.cards.constraints.ConstraintADD
pyNastran.bdf.cards.constraints.SPCADD
pyNastran.bdf.cards.constraints.SUPORT1

pyNastran.bdf.cards.constraints.SPC1

pyNastran.bdf.cards.constraints.SUPORT

All constraint cards are defined in this file. This includes:


Constraint
SUPORT
SUPORT1
SPC
SPC1
SPCAX
SPCD
MPC
ConstraintADD
SPCADD
MPCADD
The ConstraintObject contain multiple constraints.
class pyNastran.bdf.cards.constraints.Constraint(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
rawFields()
class pyNastran.bdf.cards.constraints.ConstraintADD(card, data)
Bases: pyNastran.bdf.cards.constraints.Constraint
_reprSpcMpcAdd(fields)

2.1. bdf Package 59


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.constraints.ConstraintObject
Bases: object
Add(ADD_Constraint)
Bad name, but adds an SPCADD or MPCADD
ConstraintID()
_spc(spcID)
could be an spcadd/mpcadd or spc/mpc,spc1,spcd,spcax,suport1
append(constraint)
createConstraintsForID()
This function returns all the constraints with an given constraint ID. For example an MPCADD
that references 2 MPCADDs which reference 4 MPCs should return 4 MPCs (or rather the IDs
of those MPCs).

Todo
This function should also find unassociated constraints. not really done yet, idea needs to be
integrated/separated from cross-referencing. no point in doing it twice

cross_reference(model)
getConstraintIDs()
class pyNastran.bdf.cards.constraints.MPC(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint
conid = None
Set identification number. (Integer > 0)
constraints = None
Component number. (Any one of the Integers 1 through 6 for grid points; blank or zero for scalar
points.)
enforced = None
Coefficient. (Real; Default = 0.0 except A1 must be nonzero.)
gids = None
Identification number of grid or scalar point. (Integer > 0)
rawFields()
type = uMPC
class pyNastran.bdf.cards.constraints.MPCADD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.ConstraintADD
Defines a multipoint constraint equation of the form j Aj uj = 0 where uj represents degree-of-
freedom Cj at grid or scalar point Gj . mPCADD 2 1 3
cross_reference(i, node)

60 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

rawFields()
type = uMPCADD
class pyNastran.bdf.cards.constraints.SPC(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint
Defines enforced displacement/temperature (static analysis) velocity/acceleration (dynamic analysis).:
SPC SID G1 C1 D1 G2 C2 D2
SPC 2 32 3 -2.6 5

cross_reference(i, node)
getNodeDOFs(model)
rawFields()
type = uSPC
class pyNastran.bdf.cards.constraints.SPC1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint
SPC1 SID C G1 G2 G3 G4 G5 G6
G7 G8 G9 -etc.-

SPC1 3 246 209075 209096 209512 209513 209516


SPC1 3 2 1 3 10 9 6 5
2 8

SPC1 SID C G1 THRU G2


SPC1 313 12456 6 THRU 32

cross_reference(i, node)
rawFields()
type = uSPC1
class pyNastran.bdf.cards.constraints.SPCADD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.ConstraintADD
Defines a single-point constraint set as a union of single-point constraint sets defined on SPC or SPC1
entries.:
SPCADD 2 1 3

cross_reference(i, node)
organizeConstraints(model)
Figures out magnitudes of the loads to be applied to the various nodes. This includes figuring
out scale factors.
rawFields()
type = uSPCADD

2.1. bdf Package 61


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.constraints.SPCAX(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint
Defines a set of single-point constraints or enforced displacements for conical shell coordinates.:
SPCAX SID RID HID C D
SPCAX 2 3 4 13 6.0

c = None
Component identification number. (Any unique combination of the Integers 1 through 6.)
conid = None
Identification number of a single-point constraint set.
cross_reference(i, node)
d = None
Enforced displacement value
hid = None
Harmonic identification number. (Integer >= 0)
rawFields()
rid = None
Ring identification number. See RINGAX entry.
type = uSPCAX
class pyNastran.bdf.cards.constraints.SPCD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.SPC
Defines an enforced displacement value for static analysis and an enforced motion value (displace-
ment, velocity or acceleration) in dynamic analysis.:
SPCD SID G1 C1 D1 G2 C2 D2
SPCD 100 32 436 -2.6 5 2.9

rawFields()
type = uSPCD
class pyNastran.bdf.cards.constraints.SUPORT(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint
SUPORT ID1 C1 ID2 C2 ID3 C3 ID4 C4
SUPORT1 SID ID1 C1 ID2 C2 ID3 C3

rawFields()
type = uSUPORT
class pyNastran.bdf.cards.constraints.SUPORT1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.constraints.Constraint

62 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

SUPORT1 SID ID1 C1 ID2 C2 ID3 C3

rawFields()
type = uSUPORT1

coordinateSystems Module

pyNastran.bdf.cards.coordinateSystems.CORD3G
pyNastran.bdf.cards.coordinateSystems.CORD1S
pyNastran.bdf.cards.coordinateSystems.SphericalCoord
pyNastran.bdf.cards.coordinateSystems.CORD2S
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.coordinateSystems.Coord pyNastran.bdf.cards.coordinateSystems.Cord1x
pyNastran.bdf.cards.coordinateSystems.CORD1C
pyNastran.bdf.cards.coordinateSystems.CylindricalCoord
pyNastran.bdf.cards.coordinateSystems.CORD2C
pyNastran.bdf.cards.coordinateSystems.Cord2x
pyNastran.bdf.cards.coordinateSystems.CORD1R

pyNastran.bdf.cards.coordinateSystems.RectangularCoord
pyNastran.bdf.cards.coordinateSystems.CORD2R

class pyNastran.bdf.cards.coordinateSystems.CORD1C(card=None, nCoord=0,


data=None, comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord1x,
pyNastran.bdf.cards.coordinateSystems.CylindricalCoord
CORD1C CIDA G1A G2A G3A CIDB G1B G2B G3B

Intilizes the CORD1R


Parameters
self the CORD1C coordinate system object
card a BDFCard object
nCoord the coordinate location on the line (there are possibly 2 coordinates on
1 card)
data a list version of the fields (1 CORD1R only)
rawFields()
type = uCORD1C
class pyNastran.bdf.cards.coordinateSystems.CORD1R(card=None, nCoord=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord1x,
pyNastran.bdf.cards.coordinateSystems.RectangularCoord
CORD1R CIDA G1A G2A G3A CIDB G1B G2B G3B

Intilizes the CORD1R


Parameters
self the CORD1R coordinate system object

2.1. bdf Package 63


pyNastran Documentation, Release 0.6.0

nCoord the coordinate location on the line (there are possibly 2 coordinates on
1 card)
card a list version of the fields (1 CORD1R only)
rawFields()
type = uCORD1R
class pyNastran.bdf.cards.coordinateSystems.CORD1S(card=None, nCoord=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord1x,
pyNastran.bdf.cards.coordinateSystems.SphericalCoord
CORD1S CIDA G1A G2A G3A CIDB G1B G2B G3B

Intilizes the CORD1S


Parameters
self the CORD1S coordinate system object
card a BDFCard object
nCoord the coordinate location on the line (there are possibly 2 coordinates on
1 card)
data a list version of the fields (1 CORD1S only)
rawFields()
type = uCORD1S
class pyNastran.bdf.cards.coordinateSystems.CORD2C(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord2x,
pyNastran.bdf.cards.coordinateSystems.CylindricalCoord
Intilizes the CORD2C
Parameters
self the CORD2C coordinate system object
card a BDFCard object
data a list version of the fields (1 CORD2C only)
_verify(xref=False)
rawFields()
type = uCORD2C
class pyNastran.bdf.cards.coordinateSystems.CORD2R(card=None, data=[0, 0,
0.0, 0.0, 0.0, 0.0, 0.0,
1.0, 1.0, 0.0, 0.0], com-
ment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord2x,
pyNastran.bdf.cards.coordinateSystems.RectangularCoord

64 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Intilizes the CORD2R


Parameters
self the CORD2R coordinate system object
card a BDFCard object
data a list version of the fields (1 CORD2R only)
_verify(xref=False)
rawFields()
type = uCORD2R
class pyNastran.bdf.cards.coordinateSystems.CORD2S(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Cord2x,
pyNastran.bdf.cards.coordinateSystems.SphericalCoord
Intilizes the CORD2R
Parameters
self the CORD2S coordinate system object
card a BDFCard object
data a list version of the fields (1 CORD2S only)
_verify(xref=False)
rawFields()
type = uCORD2S
class pyNastran.bdf.cards.coordinateSystems.CORD3G(card=[0, 0, 0, 0, 0, 0, 0],
data=None, comment=u)
Bases: pyNastran.bdf.cards.coordinateSystems.Coord
Defines a general coordinate system using three rotational angles as functions of coordinate values in
the reference coordinate system. The CORD3G entry is used with the MAT9 entry to orient material
principal axes for 3-D composite analysis.:
CORD3G CID METHOD FORM THETAID1 THETAID2 THETAID3 CIDREF
CORD3G 100 E313 EQN 110 111 112 0

Intilizes the CORD3G


Parameters
self the CORD3G coordinate system object
card a list version of the fields
CidRef()
RotationX(ct, st)
RotationY(ct, st)

2.1. bdf Package 65


pyNastran Documentation, Release 0.6.0

RotationZ(ct, st)
coord3g_transformToGlobal(p, debug=False)
Parameters
self the coordinate system object
p the point to transform. TYPE=NUMPY.NDARRAY.
debug should debug messages be printed

Warning: not done, just setting up how youd do this

Note: per http://en.wikipedia.org/wiki/Euler_angles This means for example that a convention


named (YXZ) is the result of performing first an intrinsic Z rotation, followed by X and Y
rotations, in the moving axes (Note: the order of multiplication of matrices is the opposite of the
order in which theyre applied to a vector).

cross_reference(model)
rawFields()
type = uCORD3G
class pyNastran.bdf.cards.coordinateSystems.Coord(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a general CORDxx object
Parameters
self the coordinate system object
card a BDFCard object
data a list analogous to the card
Cid()
Gets the coordinate ID
T()
Gets the 6x6 transformation

[] = [Bij ]

 
0
[T ] =
0

isCrossReferenced = None
has the coordinate system been linked yet

66 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

isResolved = None
have all the transformation matricies been determined
normalize(v)
Normalizes v into a unit vector.
Parameters
self the coordinate system object
v the vector to normalize
Returns normalized v

v
vnorm =
|v|

reprFields()
setup(debug=False)

e13 = e3 e1
..math :: e12 = e2 e1
..math :: k =

rac{e_{12}}{|e_{12}|}

jdir = kimese13

j=

rac{j_{dir}}{|j_{dir}|}

i = jimesk

transformToGlobal(p, resolveAltCoord=True, debug=False)


Transforms a point from the local coordinate system to the reference coordinate frames global
coordinate system.

[pglobal ]13 = [plocal porigin ]13 [ij ]33

2.1. bdf Package 67


pyNastran Documentation, Release 0.6.0

where []ij is the transformation matrix



gx i gx j gx k
[]ij = gy i gy j gy k
gz i gz j gz k

g is the global directional vector (e.g. gx = [1, 0, 0])


ijk is the math:i^{th} direction in the local coordinate system

Parameters
self the coordinate system object
p the point to be transformed. Type=NUMPY.NDARRAY
resolveAltCoord should the CD field be resolved (default=True)
debug developer debug (default=False)

Warning: make sure you cross-reference before calling this

Warning: you probably shouldnt call this, call the Node methods Position and Position-
WRT

transformToLocal(p, M, debug=False)
Transforms the global point p to the local coordinate system
Parameters
self the coordinate system object
p the point to transform
M the transformation matrix to apply - created by transformToGlobal
debug developer debug

Note: uses the matrix as there is no linking from a global coordinate system to the local

Note: the matrix that comes in is the local to global, so we need to invert the matrix. The
inverse of the tranformation matrix [] is the transpose of the matrix.

pGlobal = (pLocal e1 )[] + e1

68 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

[]1 = []T

(pcoord e1 ) = (pGlobal e1 )[M ]T

(pcoord e1 )[M ] = pGlobal e1

(pcoord e1 )[M ] + e1 = pGlobal

Note: Be very careful of when you apply e1 . It gets removed whenever rotations are applied.
These equations need some TLC, but the methods are ok.

type = uCOORD
class pyNastran.bdf.cards.coordinateSystems.Cord1x(card, nCoord, data)
Bases: pyNastran.bdf.cards.coordinateSystems.Coord
G1()
G2()
G3()
NodeIDs()
Gets the integers for the node [g1,g2,g3]
Parameters self the coordinate system object
_verify(xref=False)
cid = None
the coordinate ID
cross_reference(model)
Links self.rid to a coordinate system.
Parameters
self the coordinate system object
model the BDF object
g1 = None
a Node at the origin
g2 = None
a Node on the z-axis

2.1. bdf Package 69


pyNastran Documentation, Release 0.6.0

g3 = None
a Node on the xz-plane
resolveCid()
Finds the position of the nodes used define the coordinate system and sets the ijk vectors
Parameters self the coordinate system object
rid = 0
to_CORD2x(model)
Converts a coordinate system from a CORD1x to a CORD2x
Parameters
self the coordinate system object
model a BDF model
class pyNastran.bdf.cards.coordinateSystems.Cord2x(card, data)
Bases: pyNastran.bdf.cards.coordinateSystems.Coord
Defines the CORD2x class
Parameters
self the coordinate system object
card a BDFCard object
data a list analogous to the card
Rid()
Gets the reference coordinate system self.rid
cid = None
coordinate system ID
cross_reference(model)
Links self.rid to a coordinate system.
Parameters
self the coordinate system object
model the BDF object

..warning:: Doesnt set rid to the coordinate system if its in the global. This isnt a prob-
lem, its meant to speed up the code in order to resolve extra coordinate systems.

e1 = None
origin in a point relative to the rid coordinate system
e2 = None
z-axis in a point relative to the rid coordinate system
e3 = None
a point on the xz-plane relative to the rid coordinate system

70 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

resolveCid()
Turns the coordinate system from being a coordinate system of type 1 depending on a type 2 to
a type 1 depending on nothing.
More generally, takes a coordinate system that depends on multiple levels of coordinate systems
and resolves them in order to resolve its coordinate frame. So, if a coordinate system is of type
2, this will effectively set rid to 0 with a type 2.
This should handle any number of coordinate systems or coordinate system types assuming there
is no circular references.
rid = None
reference coordinate system ID
class pyNastran.bdf.cards.coordinateSystems.CylindricalCoord
Bases: object
p
r = (x2 + y 2 )

y
= tan1
x

z=z

x = rcos()

y = rsin()

z=z

p = [x, y, z] + e1

http://en.wikipedia.org/wiki/Cylindrical_coordinate_system
See Also:
MSC Reference Manual (pdf).
XYZtoCoord(p)
coordToXYZ(p)

2.1. bdf Package 71


pyNastran Documentation, Release 0.6.0

y R
| /
| /
| / theta
*------------x

x = R cos()

y = R sin()

Parameters self the coordinate system object


class pyNastran.bdf.cards.coordinateSystems.RectangularCoord
Bases: object
XYZtoCoord(p)
coordToXYZ(p)
class pyNastran.bdf.cards.coordinateSystems.SphericalCoord
Bases: object
p
r = = (x2 + y 2 + z 2 )

y
= tan1
x

z 
= cos1
r

x = r cos() sin()

y = r sin() sin()

z = r cos()

72 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

p = [x, y, z] + e1

See Also:
http://en.wikipedia.org/wiki/Spherical_coordinate_system
See Also:
MSC Reference Manual (pdf).
XYZtoCoord(p)
coordToXYZ(p)

cquad4 Module

ctria3 Module

dmig Module

pyNastran.bdf.cards.dmig.DMIJ

pyNastran.bdf.cards.dmig.DMIG
pyNastran.bdf.cards.dmig.NastranMatrix
pyNastran.bdf.cards.dmig.DMIJI
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.dmig.DEQATN
pyNastran.bdf.cards.dmig.DMIK
pyNastran.bdf.cards.dmig.DMI

class pyNastran.bdf.cards.dmig.DEQATN(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.baseCard.BaseCard
evaluate(args)
type = uDEQATN
class pyNastran.bdf.cards.dmig.DMI(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
addColumn(card=None, data=None)
form = None
Form of the matrix: 1=Square (not symmetric); 2=Rectangular; 3=Diagonal (m=nRows,n=1);
4=Lower Triangular; 5=Upper Triangular; 6=Symmetric; 8=Identity (m=nRows, n=m)
isComplex()
isReal()

2.1. bdf Package 73


pyNastran Documentation, Release 0.6.0

readReal(card)
rename(newName)
tin = None
1-Real, Single Precision; 2=Real,Double Precision; 3=Complex, Single; 4=Complex, Double
tout = None
0-Set by cell precision
type = uDMI
class pyNastran.bdf.cards.dmig.DMIG(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dmig.NastranMatrix
Defines direct input matrices related to grid, extra, and/or scalar points. The matrix is defined by a
single header entry and one or more column entries. A column entry is required for each column with
nonzero elements.
type = uDMIG
class pyNastran.bdf.cards.dmig.DMIJ(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dmig.NastranMatrix
Direct Matrix Input at js-Set of the Aerodynamic Mesh Defines direct input matrices related to colla-
tion degrees-of-freedom (js-set) of aerodynamic mesh points for CAERO1, CAERO3, CAERO4 and
CAERO5 and for the slender body elements of CAERO2. These include W2GJ, FA2J and input pres-
sures and downwashes associated with AEPRESS and AEDW entries. The matrix is described by a
single header entry and one or more column entries. A column entry is required for each column with
nonzero elements. For entering data for the interference elements of a CAERO2, use DMIJI or DMI.
type = uDMIJ
class pyNastran.bdf.cards.dmig.DMIJI(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dmig.NastranMatrix
Direct Matrix Input at js-Set of the Interference Body Defines direct input matrices related to collation
degrees-of-freedom (js-set) of aerodynamic mesh points for the interference elements of CAERO2.
These include W2GJ, FA2J and input pressures and downwashes associated with AEPRESS and
AEDW entries. The matrix is described by a single header entry and one or more column entries.
A column entry is required for each column with nonzero elements. For entering data for the slender
elements of a CAERO2, or a CAERO1, 3, 4 or 5 use DMIJ or DMI.
type = uDMIJI
class pyNastran.bdf.cards.dmig.DMIK(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dmig.NastranMatrix
Direct Matrix Input at ks-Set of the Aerodynamic Mesh Defines direct input matrices related to phys-
ical (displacement) degrees-of-freedom (ks-set) of aerodynamic grid points. These include WKK,
WTFACT and input forces associated with AEFORCE entries. The matrix is described by a single
header entry and one or more column entries. A column entry is required for each column with
nonzero elements.
type = uDMIK

74 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.dmig.NastranMatrix(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Base class for the DMIG, DMIJ, DMIJI, DMIK matrices
addColumn(card=None, data=None, comment=u)
getDType(Type)
getMatrix(isSparse=False)
Builds the Matrix
Parameters
self the object pointer
isSparse should the matrix be returned as a sparse matrix (default=True).
Slower for dense matrices.
Returns M the matrix
Returns rows dictionary of keys=rowID, values=(Grid,Component) for the matrix
Returns cols dictionary of keys=columnID, values=(Grid,Component) for the matrix

Warning: isSparse WILL fail

ifo = None
4-Lower Triangular; 5=Upper Triangular; 6=Symmetric; 8=Identity (m=nRows, n=m)
isComplex()
isReal()
rename(newName)
tin = None
1-Real, Single Precision; 2=Real,Double Precision; 3=Complex, Single; 4=Complex, Double
tout = None
0-Set by cell precision
writeCodeAster()
assume set 1 = MAAX1,MAAX2, etc. and 100/n % on each
pyNastran.bdf.cards.dmig.db(p, pref )
sound pressure in decibels would capitalize it, but you wouldnt be able to call the function...
pyNastran.bdf.cards.dmig.dim(x, y)

Note: used for DEQATN

pyNastran.bdf.cards.dmig.logx(x, y)
log base x of y .. note:: used for DEQATN

2.1. bdf Package 75


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.dmig.mod(x, y)
x%y .. note:: used for DEQATN
pyNastran.bdf.cards.dmig.ssq(*listA)
sum of squares .. note:: used for DEQATN
pyNastran.bdf.cards.dmig.sum2(*listA)
sum of listA .. note:: used for DEQATN

dynamic Module

pyNastran.bdf.cards.dynamic.FREQ5

pyNastran.bdf.cards.dynamic.FREQ4

pyNastran.bdf.cards.dynamic.FREQ pyNastran.bdf.cards.dynamic.FREQ3

pyNastran.bdf.cards.dynamic.TSTEPNL pyNastran.bdf.cards.dynamic.FREQ1

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.dynamic.NLPCI pyNastran.bdf.cards.dynamic.FREQ2

pyNastran.bdf.cards.dynamic.NLPARM

pyNastran.bdf.cards.dynamic.TSTEP

All dynamic control cards are defined in this file. This includes:
FREQ
FREQ1
FREQ2 (not implemented)
FREQ3
FREQ4
FREQ5 (not implemented)
TSTEP
TSTEPNL
NLPARM
All cards are BaseCard objects.
class pyNastran.bdf.cards.dynamic.FREQ(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a set of frequencies to be used in the solution of frequency response problems.

76 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

1 2 3 4 5 6 7 8 9
FREQ SID F1 F2 etc.
addFrequencies(freqs)
Combines the frequencies from 1 FREQx object with another. All FREQi entries with the same
frequency set identification numbers will be used. Duplicate frequencies will be ignored.
Parameters
self the object pointer
freqs the frequencies for a FREQx object
addFrequencyObject(freq)
Parameters
self the object pointer
freq a FREQx object
See Also:
addFrequencies()
cleanFreqs()
getFreqs()
rawFields()
type = uFREQ
class pyNastran.bdf.cards.dynamic.FREQ1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dynamic.FREQ
Defines a set of frequencies to be used in the solution of frequency response problems by specification
of a starting frequency, frequency increment, and the number of increments desired.
1 2 3 4 5 6 7 8 9
FREQ1 SID F1 DF NDF

Note: this card rewrites as a FREQ card

type = uFREQ1
class pyNastran.bdf.cards.dynamic.FREQ2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dynamic.FREQ
Defines a set of frequencies to be used in the solution of frequency response problems by specification
of a starting frequency, final frequency, and the number of logarithmic increments desired.
1 2 3 4 5 6 7 8 9
FREQ2 SID F1 F2 NDF

Note: this card rewrites as a FREQ card

2.1. bdf Package 77


pyNastran Documentation, Release 0.6.0

type = uFREQ2
class pyNastran.bdf.cards.dynamic.FREQ3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dynamic.FREQ
type = uFREQ3
class pyNastran.bdf.cards.dynamic.FREQ4(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dynamic.FREQ
Defines a set of frequencies used in the solution of modal frequency response problems by specifying
the amount of spread around each natural frequency and the number of equally spaced excitation
frequencies within the spread.
1 2 3 4 5 6 7 8 9
FREQ4 SID F1 F2 FSPD NFM

Note: this card rewrites as a FREQ card

Todo
not done...

rawFields()
reprFields()
type = uFREQ4
class pyNastran.bdf.cards.dynamic.FREQ5(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.dynamic.FREQ
type = uFREQ5
class pyNastran.bdf.cards.dynamic.NLPARM(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a set of parameters for nonlinear static analysis iteration strategy.
1 2 3 4 5 6 7 8 9
NLPARM ID NINC DT KMETHOD KSTEP MAXITER CONV INTOUT
ESPU EPSP EPSW MAXDIV MAXQN MAXLS FSTRESS LSTOL
MAXBIS MAXR RTOLB CONV
rawFields()
reprFields()
type = uNLPARM
class pyNastran.bdf.cards.dynamic.NLPCI(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
rawFields()
reprFields()

78 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

type = uNLPCI
class pyNastran.bdf.cards.dynamic.TSTEP(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Transient Time Step Defines time step intervals at which a solution will be generated and output in
transient analysis.
1 2 3 4 5 6 7 8 9
TSTEP N1 DT1 NO1
N2 DT2 NO2
etc.
rawFields()
reprFields()
type = uTSTEP
class pyNastran.bdf.cards.dynamic.TSTEPNL(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines parametric controls and data for nonlinear transient structural or heat transfer analysis.
TSTEPNL is intended for SOLs 129, 159, and 600. Parameters for Nonlinear Transient Analysis.
1 2 3 4 5 6 7 8 9
TSTEPNL ID NDT DT NO METHOD KSTEP MAXITER CONV
ESPU EPSP EPSW MAXDIV MAXQN MAXLS FSTRESS
MAXBIS ADJUST MSTEP RB MAXR UTOL RTOLB
method = None

Note: not listed in all QRGs

rawFields()
reprFields()
type = uTSTEPNL

2.1. bdf Package 79


pyNastran Documentation, Release 0.6.0

materials Module

pyNastran.bdf.cards.materials.MAT2

pyNastran.bdf.cards.materials.AnisotropicMaterial pyNastran.bdf.cards.materials.MAT9

pyNastran.bdf.cards.materials.MAT5
pyNastran.bdf.cards.materials.ThermalMaterial
pyNastran.bdf.cards.materials.MAT4
pyNastran.bdf.cards.materials.HyperelasticMaterial
pyNastran.bdf.cards.materials.MATHP
pyNastran.bdf.cards.materials.MAT10

pyNastran.bdf.cards.materials.IsotropicMaterial pyNastran.bdf.cards.materials.MAT1
pyNastran.bdf.cards.baseCard.Material
pyNastran.bdf.cards.materials.OrthotropicMaterial pyNastran.bdf.cards.materials.MAT8

pyNastran.bdf.cards.baseCard.BaseCard
pyNastran.bdf.cards.materials.EQUIV pyNastran.bdf.cards.materials.MAT3

pyNastran.bdf.cards.materials.MaterialDependence pyNastran.bdf.cards.materials.CREEP

pyNastran.bdf.cards.materials.MAT11

pyNastran.bdf.cards.materials.MATS1

All dynamic control cards are defined in this file. This includes:
CREEP
MAT1 (isotropic solid/shell)
MAT2 (anisotropic)
MAT3 (linear orthotropic)
MAT4 (thermal)
MAT5 (thermal)
MAT8 (orthotropic shell)
MAT9 (anisotropic solid)
MAT10 (fluid element)
MATHP (hyperelastic)
All cards are Material objects.
class pyNastran.bdf.cards.materials.AnisotropicMaterial(card, data)
Bases: pyNastran.bdf.cards.baseCard.Material
Anisotropic Material Class
class pyNastran.bdf.cards.materials.CREEP(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.Material
Mid()
cross_reference(model)
rawFields()

80 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

reprFields()
type = uCREEP
class pyNastran.bdf.cards.materials.EQUIV(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.Material
mid = None
Identification number of a MAT1, MAT2, or MAT9 entry.
rawFields()
reprFields()
type = uEQUIV
class pyNastran.bdf.cards.materials.HyperelasticMaterial(card, data)
Bases: pyNastran.bdf.cards.baseCard.Material
Hyperelastic Material Class
class pyNastran.bdf.cards.materials.IsotropicMaterial(card, data)
Bases: pyNastran.bdf.cards.baseCard.Material
Isotropic Material Class
class pyNastran.bdf.cards.materials.MAT1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.IsotropicMaterial
Defines the material properties for linear isotropic materials.
1 2 3 4 5 6 7 8 9
MAT1 MID E G NU RHO A TREF GE
ST SC SS MCSID
D()
E()
G()
Nu()
Rho()
_verify(xref=False)
getG_default()
rawFields()
reprFields()
set_E_G_nu(card)
E
G=
2(1 + )

2.1. bdf Package 81


pyNastran Documentation, Release 0.6.0

type = uMAT1
writeCalculix(elementSet=uELSetDummyMat)
writeCodeAster()
class pyNastran.bdf.cards.materials.MAT10(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.Material
Defines material properties for fluid elements in coupled fluid-structural analysis.
1 2 3 4 5 6 7 8 9
MAT10 MID BULK RHO C GE
_verify(xref=False)
getBulkRhoC(card)

bulk = c2

rawFields()
reprFields()
type = uMAT10
class pyNastran.bdf.cards.materials.MAT11(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.baseCard.Material
Defines the material properties for a 3D orthotropic material for isoparametric solid elements.
1 2 3 4 5 6 7 8 9
MAT11 MID E1 E2 E3 NU12 NU13 NU23 G12
G13 G23 RHO A1 A2 A3 TREF GE
rawFields()
reprFields()
type = uMAT11
class pyNastran.bdf.cards.materials.MAT2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.AnisotropicMaterial
Defines the material properties for linear anisotropic materials for two-dimensional elements.
1 2 3 4 5 6 7 8 9
MAT2 MID G11 G12 G13 G22 G23 G33 RHO
A1 A2 A3 TREF GE ST SC SS
MCSID
Dplate()
Eq 9.1.6 in Finite Element Method using Matlab
Dsolid()
Eq 9.4.7 in Finite Element Method using Matlab

82 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

rawFields()
reprFields()
type = uMAT2
writeCalculix()
class pyNastran.bdf.cards.materials.MAT3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.OrthotropicMaterial
Defines the material properties for linear orthotropic materials used by the CTRIAX6 element entry.
1 2 3 4 5 6 7 8 9
MAT3 MID EX ETH EZ NUXTH NUTHZ NUZX RHO
GZX AX ATH AZ TREF GE
rawFields()
reprFields()
type = uMAT3
class pyNastran.bdf.cards.materials.MAT4(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.ThermalMaterial
Defines the constant or temperature-dependent thermal material properties for conductivity, heat ca-
pacity, density, dynamic viscosity, heat generation, reference enthalpy, and latent heat associated with
a single-phase change.
1 2 3 4 5 6 7 8 9
MAT4 MID K CP RHO MU H HGEN REFENTH
TCH TDELTA QLAT
rawFields()
reprFields()
type = uMAT4
class pyNastran.bdf.cards.materials.MAT5(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.ThermalMaterial
Defines the thermal material properties for anisotropic materials.
1 2 3 4 5 6 7 8 9
MAT5 MID KXX KXY KXZ KYY KYZ KZZ CP
RHO HGEN
K()
thermal conductivity matrix
kxx = None
Thermal conductivity (assumed default=0.0)
rawFields()
reprFields()

2.1. bdf Package 83


pyNastran Documentation, Release 0.6.0

type = uMAT5
class pyNastran.bdf.cards.materials.MAT8(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.OrthotropicMaterial
Defines the material property for an orthotropic material for isoparametric shell elements.
1 2 3 4 5 6 7 8 9
MAT8 MID E1 E2 NU12 G12 G1Z G2Z RHO
A1 A2 TREF Xt Xc Yt Yc S
GE1 F12 STRN
D()

Todo
what about G1z and G2z

E11()
E22()
G12()
Nu12()
_verify(xref=False)
e11 = None
..todo:: is this the correct default
e22 = None
..todo:: is this the correct default
nu12 = None
..todo:: is this the correct default
rawFields()
reprFields()
type = uMAT8
class pyNastran.bdf.cards.materials.MAT9(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.AnisotropicMaterial
Defines the material properties for linear, temperature-independent, anisotropic materials for solid
isoparametric elements (see PSOLID entry description).
1 2 3 4 5 6 7 8 9
MAT9 MID G11 G12 G13 G14 G15 G16 G22
G23 G24 G25 G26 G33 G34 G35 G36
G44 G45 G46 G55 G56 G66 RHO A1
A2 A3 A4 A5 A6 TREF GE

84 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

D()
_verify(xref=False)
mid = None
Material ID
rawFields()
reprFields()
type = uMAT9
class pyNastran.bdf.cards.materials.MATHP(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.HyperelasticMaterial
rawFields()
reprFields()
type = uMATHP
class pyNastran.bdf.cards.materials.MATS1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.materials.MaterialDependence
Specifies stress-dependent material properties for use in applications involving nonlinear materials.
This entry is used if a MAT1, MAT2 or MAT9 entry is specified with the same MID in a nonlinear
solution sequence (SOLs 106 and 129).
E(strain=None)
Gets E (Youngs Modulus) for a given strain.
Parameters
self the object pointer
strain the strain (None -> linear E value)
Returns E Youngs Modulus
Hf()
Mid()
Tid()
Type = None
Type of material nonlinearity. (NLELAST for nonlinear elastic or PLASTIC for elastoplas-
tic.)
Yf()
cross_reference(model)
h = None
Work hardening slope (slope of stress versus plastic strain) in units of stress. For elastic-perfectly
plastic cases, H=0.0. For more than a single slope in the plastic range, the stress-strain data must
be supplied on a TABLES1 entry referenced by TID, and this field must be blank

2.1. bdf Package 85


pyNastran Documentation, Release 0.6.0

hr = None
Hardening Rule, selected by one of the following values (Integer): (1) Isotropic (Default) (2)
Kinematic (3) Combined isotropic and kinematic hardening
limit1 = None
Initial yield point
limit2 = None
Internal friction angle, measured in degrees, for the Mohr-Coulomb and Drucker-Prager yield
criteria
mid = None
Identification number of a MAT1, MAT2, or MAT9 entry.
rawFields()
reprFields()
tid = None
Identification number of a TABLES1 or TABLEST entry. If H is given, then this field must be
blank.
type = uMATS1
yf = None
Yield function criterion, selected by one of the following values (1) Von Mises (2) Tresca (3)
Mohr-Coulomb (4) Drucker-Prager
class pyNastran.bdf.cards.materials.MaterialDependence(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
class pyNastran.bdf.cards.materials.OrthotropicMaterial(card, data)
Bases: pyNastran.bdf.cards.baseCard.Material
Orthotropic Material Class
class pyNastran.bdf.cards.materials.ThermalMaterial(card, data)
Bases: pyNastran.bdf.cards.baseCard.Material
Thermal Material Class

86 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

methods Module

pyNastran.bdf.cards.methods.EIGC

pyNastran.bdf.cards.methods.EIGRL

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.methods.Method pyNastran.bdf.cards.methods.EIGR

pyNastran.bdf.cards.methods.EIGB

pyNastran.bdf.cards.methods.EIGP

All method cards are defined in this file. This includes:


EIGB
EIGC
EIGR
EIGP
EIGRL
All cards are Method objects.
class pyNastran.bdf.cards.methods.EIGB(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.methods.Method
Defines data needed to perform buckling analysis
L1 = None
Eigenvalue range of interest. (Real, L1 < L2)
cross_reference(model)
method = None
Method of eigenvalue extraction. (Character: INV for inverse power method or SINV for
enhanced inverse power method.)
ndp = None
Desired number of positive and negative roots. (Integer>0; Default = 3*NEP)
nep = None
Estimate of number of roots in positive range not used for METHOD = SINV. (Integer > 0)
norm = None
Method for normalizing eigenvectors. (MAX or POINT;Default=MAX)
rawFields()
reprFields()

2.1. bdf Package 87


pyNastran Documentation, Release 0.6.0

sid = None
Set identification number. (Unique Integer > 0)
type = uEIGB
class pyNastran.bdf.cards.methods.EIGC(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.methods.Method
Defines data needed to perform complex eigenvalue analysis .. todo: not done
C = None
Component number. Required only if NORM=POINT and G is a geometric grid point. (1<In-
teger<6)
E = None
Convergence criterion. (Real > 0.0. Default values are: 10^-4 for METHOD = INV, 10^-15
for METHOD = HESS, E is machine dependent for METHOD = CLAN.)
G = None
Grid or scalar point identification number. Required only if NORM=POINT. (Integer>0)
cross_reference(model)
loadCLAN(nRows, card)
loadHESS_INV(nRows, card)
method = None
Method of complex eigenvalue extraction
norm = None
Method for normalizing eigenvectors
rawFields()
rawMethod()
reprFields()
reprMethod()
sid = None
Set identification number. (Unique Integer > 0)
type = uEIGC
class pyNastran.bdf.cards.methods.EIGP(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.methods.Method
Defines poles that are used in complex eigenvalue extraction by the Determinant method.
alpha1 = None
Coordinates of point in complex plane. (Real)
alpha2 = None
Coordinates of point in complex plane. (Real)
cross_reference(model)

88 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

m1 = None
Multiplicity of complex root at pole defined by point at ALPHAi and OMEGAi
m2 = None
Multiplicity of complex root at pole defined by point at ALPHAi and OMEGAi
omega1 = None
Coordinates of point in complex plane. (Real)
omega2 = None
Coordinates of point in complex plane. (Real)
rawFields()
reprFields()
sid = None
Set identification number. (Unique Integer > 0)
type = uEIGP
class pyNastran.bdf.cards.methods.EIGR(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.methods.Method
Defines data needed to perform real eigenvalue analysis
C = None
Component number. Required only if NORM=POINT and G is a geometric grid point. (1<In-
teger<6)
G = None
Grid or scalar point identification number. Required only if NORM=POINT. (Integer>0)
cross_reference(model)
f1 = None
Frequency range of interest
method = None
Method of eigenvalue extraction. (Character: INV for inverse power method or SINV for
enhanced inverse power method.)
ne = None
Estimate of number of roots in range (Required for METHOD = INV). Not used by SINV
method.
norm = None
Method for normalizing eigenvectors. (MAX or POINT; Default=MAX)
rawFields()
reprFields()
sid = None
Set identification number. (Unique Integer > 0)
type = uEIGR

2.1. bdf Package 89


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.methods.EIGRL(card=None, data=None, sol=None, com-


ment=u)
Bases: pyNastran.bdf.cards.methods.Method
Defines data needed to perform real eigenvalue (vibration or buckling) analysis with the Lanczos
method
cross_reference(model)
maxset = None
Number of vectors in block or set. Default is machine dependent
msglvl = None
Diagnostic level. (0 < Integer < 4; Default = 0)
nd = None
Number of roots desired
norm = None
Method for normalizing eigenvectors (Character: MASS or MAX)
rawFields()
reprFields()
shfscl = None
Estimate of the first flexible mode natural frequency (Real or blank)
sid = None
Set identification number. (Unique Integer > 0)
type = uEIGRL
v1 = None
For vibration analysis: frequency range of interest. For buckling analysis: eigenvalue range of
interest. See Remark 4. (Real or blank, -5 10e16 <= V1 < V2 <= 5.10e16)
class pyNastran.bdf.cards.methods.Method(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Generic class for all methods. Part of self.methods

90 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

nodes Module

pyNastran.bdf.cards.nodes.GRDSET

pyNastran.bdf.cards.nodes.POINT

pyNastran.bdf.cards.nodes.GRIDB

pyNastran.bdf.cards.nodes.Node pyNastran.bdf.cards.nodes.SPOINT

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.nodes.SPOINTs

pyNastran.bdf.cards.nodes.Ring pyNastran.bdf.cards.nodes.GRID

pyNastran.bdf.cards.nodes.RINGAX

class pyNastran.bdf.cards.nodes.GRDSET(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.nodes.Node
Defines default options for fields 3, 7, 8, and 9 of all GRID entries.
1 2 3 4 5 6 7 8 9
GRDSET CP CD PS SEID
Cd()
Cp()
SEid()
_verify(xref=False)
cd = None
Analysis coordinate system
cross_reference(model)
ps = None
Default SPC constraint on undefined nodes
rawFields()
reprFields()
seid = None
Superelement ID
type = uGRDSET
class pyNastran.bdf.cards.nodes.GRID(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.nodes.Node

2.1. bdf Package 91


pyNastran Documentation, Release 0.6.0

1 2 3 4 5 6 7 8 9
GRID NID CP X1 X2 X3 CD PS SEID
if coming from a BDF object, card is used if coming from the OP2, data is used
Cd()
Cp()
Nid()
Position(debug=False)
Gets the point in the global XYZ coordinate system.
Parameters
self the object pointer
debug developer debug
PositionWRT(model, cid, debug=False)
Gets the point which started in some arbitrary local coordinate system and returns it in the
desired coordinate system
Parameters
self the object pointer
model the BDF model object
cid the desired coordinate ID (int)
debug developer debug
Ps()
SEid()
UpdatePosition(model, xyz, cid)
_verify(xref )
cd = None
Analysis coordinate system
cp = None
Grid point coordinate system
cross_reference(model, grdset=None)
the gridset object will only update the fields that have not been set
nDOF()
nid = None
Node ID
ps = None
SPC constraint
rawFields()

92 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

reprFields()
seid = None
Superelement ID
type = uGRID
xyz = None
node location in local frame
class pyNastran.bdf.cards.nodes.GRIDB(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.nodes.Node
if coming from a BDF object, card is used if coming from the OP2, data is used
Cd()
_verify(xref=False)
rawFields()
reprFields()
type = uGRIDB
class pyNastran.bdf.cards.nodes.Node(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Generic Node base class
cross_reference(model)
class pyNastran.bdf.cards.nodes.POINT(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.nodes.Node
1 2 3 4 5 6 7 8 9
POINT NID CP X1 X2 X3
if coming from a BDF object, card is used if coming from the OP2, data is used
Cp()
Position(debug=False)
Gets the point in the global XYZ coordinate system.
Parameters
self the object pointer
debug developer debug
PositionWRT(model, cid, debug=False)
Gets the location of the GRID which started in some arbitrary local coordinate system and
returns it in the desired coordinate system.
Parameters
self the object pointer
model the BDF model object

2.1. bdf Package 93


pyNastran Documentation, Release 0.6.0

cid the desired coordinate ID (int)


debug developer debug (default=True)
Returns position the position of the GRID in an arbitrary coordinate system
UpdatePosition(model, xyz, cid)
cd = None
Analysis coordinate system
cp = None
Grid point coordinate system
cross_reference(model)
nDOF()
nid = None
Node ID
ps = None
SPC constraint
rawFields()
reprFields()
seid = None
Superelement ID
type = uPOINT
xyz = None
node location in local frame
class pyNastran.bdf.cards.nodes.RINGAX(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.nodes.Ring
Defines a ring for conical shell problems.
1 2 3 4 5 6 7 8 9
RINGAX MID R Z PS
Position()
rawFields()
type = uRINGAX
class pyNastran.bdf.cards.nodes.Ring(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Generic Ring base class
class pyNastran.bdf.cards.nodes.SPOINT(nid, comment=u)
Bases: pyNastran.bdf.cards.nodes.Node
Position()

94 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

cross_reference(model)
rawFields()
type = uSPOINT
class pyNastran.bdf.cards.nodes.SPOINTs(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.nodes.Node
1 2 3 4 5 6 7 8 9
SPOINT ID1 THRU ID2
SPOINT ID1 ID1 ID3 ID4 ID5 ID6 ID7 ID8
ID8 etc.
addSPoints(sList)
createSPOINTi()
cross_reference(model)
nDOF()
rawFields()
reprFields()
type = uSPOINT

nodes2 Module

pyNastran.bdf.cards.nodes2.GRIDs

class pyNastran.bdf.cards.nodes2.GRIDs
Bases: object
PositionWRT(model, nid, cid, debug=False)
Gets the point which started in some arbitrary local coordinate system and returns it in the
desired coordinate system
self : the NODEs object model : the BDF model object cid : int
the desired coordinate ID

nid [int] the desired node ID


debug [bool] developer debug (default=False)

position [(3,) array] The location of node ID nid in coordinate system C

2.1. bdf Package 95


pyNastran Documentation, Release 0.6.0

UpdatePosition(xyz, nid, cid)


add_grid(card=None, data=None, comment=u)
if coming from a BDF object, card is used if coming from the OP2, data is used
cd = None
Analysis coordinate system
comment(nid)
cp = None
Grid point coordinate system
finalize()
get_position(model, nid, debug=False)
get_positions(model, nids)
get_xyz(model, nid)
nid = None
Node ID
ps = None
SPC constraint
resolve_grids(model, cid=0)
Puts all nodes in a common coordinate system (mainly for cid testing)
self: the object pointer cid: the cid to resolve the nodes to (default=0)
Loses association with previous coordinate systems so to go back requires another fem
seid = None
Superelement ID
unresolve_grids(model, model_old)
Puts all nodes back to original coordinate system.
self: the object pointer model_old: the old model that hasnt lost its connection to
the node cids
hasnt been tested well...
write(f=None, nids=None)
Writes the BDF fields for the given set of node IDs.
f : file object nids : list/array/tuple
write a subset of nids (default=None -> all nodes)

out [string] a message of the unwritten cards

nids are useful when running interactively

96 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

>>> f = open(f.bdf, w)
>>> all_nids = [1, 2, 3, 4]
>>> bdf.nodes.write(f) # no output, but all_nids is written to f
>>>
>>> nids = [1, 4]
>>> bdf.nodes.write(f, nids) # write a subset of nodes to f
>>>
>>> bdf.nodes.write(nids=nids)
GRID 1 0 0.1 0.2 0.0
GRID 4 0 0.7 0.8 0.0

>>> bdf.nodes.write()
GRID 1 0 0.1 0.2 0.0
GRID 2 0 0.3 0.4 0.0
GRID 3 0 0.5 0.6 0.0
GRID 4 0 0.7 0.8 0.0

xyz = None
node location in local frame

optimization Module

pyNastran.bdf.cards.optimization.DOPTPRM

pyNastran.bdf.cards.optimization.DVMREL1

pyNastran.bdf.cards.optimization.DCONSTR

pyNastran.bdf.cards.optimization.DDVAL

pyNastran.bdf.cards.optimization.DLINK

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.optimization.OptConstraint pyNastran.bdf.cards.optimization.DVPREL1

pyNastran.bdf.cards.optimization.DVPREL2

pyNastran.bdf.cards.optimization.DSCREEN

pyNastran.bdf.cards.optimization.DRESP1

pyNastran.bdf.cards.optimization.DESVAR

pyNastran.bdf.cards.optimization.DRESP2

class pyNastran.bdf.cards.optimization.DCONSTR(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
rawFields()
reprFields()

2.1. bdf Package 97


pyNastran Documentation, Release 0.6.0

type = uDCONSTR
class pyNastran.bdf.cards.optimization.DDVAL(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
rawFields()
type = uDDVAL
class pyNastran.bdf.cards.optimization.DESVAR(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
rawFields()
reprFields()
type = uDESVAR
class pyNastran.bdf.cards.optimization.DLINK(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
Multiple Design Variable Linking Relates one design variable to one or more other design variables.:
DLINK ID DDVID C0 CMULT IDV1 C1 IDV2 C2
IDV3 C3 -etc.-

rawFields()
reprFields()
type = uDLINK
class pyNastran.bdf.cards.optimization.DOPTPRM(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
Design Optimization Parameters Overrides default values of parameters used in design optimization
DOPTPRM PARAM1 VAL1 PARAM2 VAL2 PARAM3 VAL3 PARAM4 VAL4
PARAM5 VAL5 -etc.-

defaults = {uDPMAX: 0.5, uETA1: 0.01, uETA2: 0.25, uETA3: 0.7, uP2RSET: None, uDPMIN: 0.0
rawFields()
type = uDOPTPRM
class pyNastran.bdf.cards.optimization.DRESP1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
DRESP1 1S1 CSTRAIN PCOMP 1 1 10000

rawFields()
type = uDRESP1

98 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.optimization.DRESP2(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
Design Sensitivity Equation Response Quantities Defines equation responses that are used in the de-
sign, either as constraints or as an objective.
c3 = None

Todo
or blank?

packParams()
rawFields()
reprFields()
type = uDRESP2
class pyNastran.bdf.cards.optimization.DSCREEN(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
nstr = None
Maximum number of constraints to be retained per region per load case. (Integer > 0; Default =
20)
rType = None
Response type for which the screening criteria apply. (Character)
rawFields()
reprFields()
trs = None
Truncation threshold. (Real; Default = -0.5)
type = uDSCREEN
class pyNastran.bdf.cards.optimization.DVMREL1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
Design Variable to Material Relation Defines the relation between a material property and design
variables.:
DVMREL1 ID TYPE MID MPNAME MPMIN MPMAX C0
DVID1 COEF1 DVID2 COEF2 DVID3 COEF3 -etc.-

Mid()
cross_reference(model)

2.1. bdf Package 99


pyNastran Documentation, Release 0.6.0

mpMin = None

Todo
bad default

rawFields()
reprFields()
type = uDVMREL1
class pyNastran.bdf.cards.optimization.DVPREL1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
DVPREL1 200000 PCOMP 2000 T2
200000 1.0

Pid()
cross_reference(model)
pMin = None
Minimum value allowed for this property. .. todo:: bad default (see DVMREL1)
rawFields()
reprFields()
type = uDVPREL1
class pyNastran.bdf.cards.optimization.DVPREL2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.optimization.OptConstraint
DVPREL2 ID TYPE PID PNAME/FID PMIN PMAX EQID
DESVAR DVID1 DVID2 DVID3 DVID4 DVID5 DVID6 DVID7
DVID8 -etc.-
DTABLE LABL1 LABL2 LABL3 LABL4 LABL5 LABL6 LABL7
LABL8 -etc.-

OptValue()
Pid()
Type = None
Name of a property entry, such as PBAR, PBEAM, etc
cross_reference(model)

Todo
add support for DEQATN cards to finish DVPREL2 xref

100 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

eqID = None

Todo
or blank?

oid = None
Unique identification number
pMax = None
Maximum value allowed for this property. (Real; Default = 1.0E20)
pMin = None
Minimum value allowed for this property. If FID references a stress recovery location field,
then the default value for PMIN is -1.0+35. PMIN must be explicitly set to a negative number
for properties that may be less than zero (for example, field ZO on the PCOMP entry). (Real;
Default = 1.E-15) .. todo:: bad default (see DVMREL1)
pNameFid = None
Property name, such as T, A, or field position of the property entry, or word position in the
element property table of the analysis model. Property names that begin with an integer such as
12I/T**3 may only be referred to by field position. (Character or Integer 0)
pid = None
Property entry identification number
rawFields()
reprFields()
..todo:: finish reprFields for DVPREL2
type = uDVPREL2
class pyNastran.bdf.cards.optimization.OptConstraint
Bases: pyNastran.bdf.cards.baseCard.BaseCard

params Module

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.params.PARAM

class pyNastran.bdf.cards.params.PARAM(card, data=None, comment=u)


Bases: pyNastran.bdf.cards.baseCard.BaseCard
rawFields()

2.1. bdf Package 101


pyNastran Documentation, Release 0.6.0

reprFields()
type = uPARAM

sets Module

pyNastran.bdf.cards.sets.QSET

pyNastran.bdf.cards.sets.ASET

pyNastran.bdf.cards.sets.ABCQSet pyNastran.bdf.cards.sets.CSET

pyNastran.bdf.cards.sets.SEBSET1 pyNastran.bdf.cards.sets.BSET

pyNastran.bdf.cards.sets.SET1 pyNastran.bdf.cards.sets.ASET1

pyNastran.bdf.cards.sets.ABQSet1 pyNastran.bdf.cards.sets.QSET1

pyNastran.bdf.cards.sets.SEBSET pyNastran.bdf.cards.sets.BSET1
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.sets.Set
pyNastran.bdf.cards.sets.CSET1
pyNastran.bdf.cards.sets.SESET
pyNastran.bdf.cards.sets.SetSuper
pyNastran.bdf.cards.sets.SEQSEP
pyNastran.bdf.cards.sets.SEQSET1

pyNastran.bdf.cards.sets.RADSET

pyNastran.bdf.cards.sets.SET3

class pyNastran.bdf.cards.sets.ABCQSet(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.sets.Set
Generic Class ASET, BSET, CSET, QSET cards inherit from.
Defines degrees-of-freedom in the analysis set (a-set):
ASET ID1 C1 ID2 C2 ID3 C3 ID4 C4
ASET 16 2 23 3516 1 4

IDs = None
Identifiers of grids points. (Integer > 0)
rawFields()
gets the raw card without any processing as a list for printing
class pyNastran.bdf.cards.sets.ABQSet1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Generic Class ASET1, BSET1, QSET1 cards inherit from.
Defines degrees-of-freedom in the analysis set (a-set).:

102 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

ASET1 C ID1 ID2 ID3 ID4 ID5 ID6 ID7


ID8 ID9
ASET1 C ID1 THRU ID2

IDs = None
Identifiers of grids points. (Integer > 0)
components = None
Component number. (Integer zero or blank for scalar points or any unique combination
of the Integers 1 through 6 for grid points with no embedded blanks.)
rawFields()
gets the raw card without any processing as a list for printing
class pyNastran.bdf.cards.sets.ASET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABCQSet
Defines degrees-of-freedom in the analysis set (a-set).:
ASET ID1 C1 ID2 C2 ID3 C3 ID4 C4
ASET 16 2 23 3516 1 4

type = uASET
class pyNastran.bdf.cards.sets.ASET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABQSet1
Defines degrees-of-freedom in the analysis set (a-set):
ASET1 C ID1 ID2 ID3 ID4 ID5 ID6 ID7
ID8 ID9
ASET1 C ID1 THRU ID2

type = uASET1
class pyNastran.bdf.cards.sets.BSET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABCQSet
Defines analysis set (a-set) degrees-of-freedom to be fixed (b-set) during generalized dynamic reduc-
tion or component mode synthesis calculations.:
BSET ID1 C1 ID2 C2 ID3 C3 ID4 C4
BSET 16 2 23 3516 1 4

type = uBSET
class pyNastran.bdf.cards.sets.BSET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABQSet1
type = uBSET1
class pyNastran.bdf.cards.sets.CSET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABCQSet
Defines analysis set (a-set) degrees-of-freedom to be fixed (b-set) during generalized dynamic reduc-
tion or component mode synthesis calculations.:

2.1. bdf Package 103


pyNastran Documentation, Release 0.6.0

CSET ID1 C1 ID2 C2 ID3 C3 ID4 C4


CSET 16 2 23 3516 1 4

type = uCSET
class pyNastran.bdf.cards.sets.CSET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Defines analysis set (a-set) degrees-of-freedom to be fixed (b-set) during generalized dynamic reduc-
tion or component mode synthesis calculations.:
CSET1 C ID1 ID2 ID3 ID4 ID5 ID6 ID7
ID8 ID9
CSET1 C ID1 THRU ID2
CSET1,,ALL

IDs = None
Identifiers of grids points. (Integer > 0)
rawFields()
gets the raw card without any processing as a list for printing
type = uCSET1
class pyNastran.bdf.cards.sets.QSET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABCQSet
Defines generalized degrees-of-freedom (q-set) to be used for dynamic reduction or component mode
synthesis.:
QSET ID1 C1 ID2 C2 ID3 C3 ID4 C4
QSET 16 2 23 3516 1 4

type = uQSET
class pyNastran.bdf.cards.sets.QSET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.ABQSet1
Defines generalized degrees-of-freedom (q-set) to be used for dynamic reduction or component mode
synthesis.
type = uQSET1
class pyNastran.bdf.cards.sets.RADSET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Specifies which radiation cavities are to be included for radiation enclosure analysis.:
RADSET ICAVITY1 ICAVITY2 ICAVITY3 ICAVITY4 ICAVITY5 ICAVITY6 ICAVITY7
ICAVITY8 ICAVITY9 -etc.-

IDs = None
Grid or scalar point identification number. (0 < Integer < 1000000; G1 < G2)
addRadsetObject(radset)

104 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

rawFields()
gets the raw card without any processing as a list for printing
type = uRADSET
class pyNastran.bdf.cards.sets.SEBSET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Defines boundary degrees-of-freedom to be fixed (b-set) during generalized dynamic reduction or
component mode calculations.:
SEBSET SEID ID1 C1 ID2 C2 ID3 C3
SEBSET C ID1 THRU ID2

components = None
Identifiers of grids points. (Integer > 0)
rawFields()
gets the raw card without any processing as a list for printing
class pyNastran.bdf.cards.sets.SEBSET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Defines boundary degrees-of-freedom to be fixed (b-set) during generalized dynamic reduction or
component mode calculations.:
SEBSET1 C ID1 ID2 ID3 ID4 ID5 ID6 ID7
ID8 ID9
SEBSET1 C ID1 THRU ID2

IDs = None
Identifiers of grids points. (Integer > 0)
rawFields()
gets the raw card without any processing as a list for printing
class pyNastran.bdf.cards.sets.SEQSEP(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.SetSuper
Used with the CSUPER entry to define the correspondence of the exterior grid points between an
identical or mirror-image superelement and its primary superelement.
IDs = None
Exterior grid point identification numbers for the primary superelement. (Integer > 0)
psid = None
Identification number for the primary superelement. (Integer >= 0).
rawFields()
gets the raw card without any processing as a list for printing
ssid = None
Identification number for secondary superelement. (Integer >= 0).
type = uSEQSEP

2.1. bdf Package 105


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.sets.SEQSET1(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.sets.Set
Defines the generalized degrees-of-freedom of the superelement to be used in generalized dynamic
reduction or component mode synthesis.:
SEQSET1 C ID1 ID2 ID3 ID4 ID5 ID6 ID7
ID8 ID9
SEQSET1 C ID1 THRU ID2

IDs = None
Identifiers of grids points. (Integer > 0)
rawFields()
gets the raw card without any processing as a list for printing
class pyNastran.bdf.cards.sets.SESET(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.SetSuper
Defines interior grid points for a superelement.
IDs = None
Grid or scalar point identification number. (0 < Integer < 1000000; G1 < G2)
add_SESET_Object(seset)
rawFields()
type = uSESET
class pyNastran.bdf.cards.sets.SET1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.sets.Set
Defines a list of structural grid points or element identification numbers.:
SET1 SID ID1 ID2 ID3 ID4 ID5 ID6 ID7
ID8 -etc.-
SET1 3 31 62 93 124 16 17 18
19
SET1 6 29 32 THRU 50 61 THRU 70
17 57

IDs = None
List of structural grid point or element identification numbers. (Integer > 0 or THRU;
for the THRU option, ID1 < ID2 or SKIN; in field 3)
IsSkin()
rawFields()
gets the raw card without any processing as a list for printing
sid = None
Unique identification number. (Integer > 0)
type = uSET1

106 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.sets.SET3(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.sets.Set
Defines a list of grids, elements or points.:
SET3 SID DES ID1 ID2 ID3 ID4 ID5 ID6
ID7 ID8 -etc-
SET3 1 POINT 11 12

IDs = None
Identifiers of grids points, elements, points or properties. (Integer > 0)
IsElement()
IsGrid()
IsPoint()
IsProperty()
desc = None
Set description (Character). Valid options are GRID, ELEM, POINT and PROP.
rawFields()
Gets the raw card without any processing as a list for printing
sid = None
Unique identification number. (Integer > 0)
type = uSET1
class pyNastran.bdf.cards.sets.Set(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Generic Class all SETx cards inherit from
IDs = None
list of IDs in the SETx
SetIDs()
gets the IDs of the SETx
cleanIDs()
eliminates duplicate IDs from self.IDs and sorts self.IDs
reprFields()
sid = None
Unique identification number. (Integer > 0)
class pyNastran.bdf.cards.sets.SetSuper(card, data)
Bases: pyNastran.bdf.cards.sets.Set
Generic Class all Superelement SETx cards inherit from.
IDs = None

2.1. bdf Package 107


pyNastran Documentation, Release 0.6.0

list of IDs in the SESETx


seid = None
Superelement identification number. Must be a primary superelement. (Integer >= 0)

tables Module

pyNastran.bdf.cards.tables.TABLEM3

pyNastran.bdf.cards.tables.TABLEST

pyNastran.bdf.cards.tables.TABLES1

pyNastran.bdf.cards.tables.TABLEM1

pyNastran.bdf.cards.tables.TABLEM4

pyNastran.bdf.cards.tables.Table pyNastran.bdf.cards.tables.TABLED2

pyNastran.bdf.cards.tables.TABLED1
pyNastran.bdf.cards.tables.TableObj
pyNastran.bdf.cards.tables.TIC
pyNastran.bdf.cards.baseCard.BaseCard
pyNastran.bdf.cards.tables.TABLED3

pyNastran.bdf.cards.tables.TABLEM2

pyNastran.bdf.cards.tables.RandomTable pyNastran.bdf.cards.tables.TABRNDG

pyNastran.bdf.cards.tables.TABRND1

All table cards are defined in this file. This includes:


Table
TABLED1 - Dynamic Table = f(Time, Frequency)
TABLED2
TABLED3
TABLEM1 - Material table = f(Temperature)
TABLEM2
TABLEM3
TABLEM4
TABLES1 - Material table = f(Stress)
TABLEST

108 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

RandomTable * TABRND1
TABRNDG
TIC
All tables have a self.table parameter that is a TableObj
class pyNastran.bdf.cards.tables.RandomTable(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
type = uTABLE??
class pyNastran.bdf.cards.tables.TABLED1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED1
class pyNastran.bdf.cards.tables.TABLED2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED2
class pyNastran.bdf.cards.tables.TABLED3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED3
class pyNastran.bdf.cards.tables.TABLEM1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
type = uTABLEM1
class pyNastran.bdf.cards.tables.TABLEM2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEM2
class pyNastran.bdf.cards.tables.TABLEM3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()

2.1. bdf Package 109


pyNastran Documentation, Release 0.6.0

reprFields()
type = uTABLEM3
class pyNastran.bdf.cards.tables.TABLEM4(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEM4
class pyNastran.bdf.cards.tables.TABLES1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLES1
class pyNastran.bdf.cards.tables.TABLEST(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEST
class pyNastran.bdf.cards.tables.TABRND1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.RandomTable
map_axis(axis)
parse_fields(xy, nrepeated, isData=False)
rawFields()
reprFields()
type = uTABRND1
class pyNastran.bdf.cards.tables.TABRNDG(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.RandomTable
Gust Power Spectral Density
Defines the power spectral density (PSD) of a gust for aeroelastic response analysis.
LU = None
Scale of turbulence divided by velocity (units of time; Real)
Type = None
PSD Type: 1. von Karman; 2. Dryden
WG = None
Root-mean-square gust velocity. (Real)
rawFields()

110 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

reprFields()
tid = None
Table identification number. (Integer >0)
type = uTABRNDG
class pyNastran.bdf.cards.tables.TIC(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
Transient Initial Condition
Defines values for the initial conditions of variables used in structural transient analysis. Both dis-
placement and velocity values may be specified at independent degrees-of-freedom. This entry may
not be used for heat transfer analysis.
rawFields()
reprFields()
type = uTIC
class pyNastran.bdf.cards.tables.Table(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
map_axis(axis)
parse_fields(xy, nrepeated, isData=False)
class pyNastran.bdf.cards.tables.TableObj(xy, nrepeated, isData=False)
Bases: object
Parameters
self the Table Object
xy the X/Y data with an ENDT appended
nrepeated ???
isData did this come from the OP2/BDF (True -> OP2)
_cleanup_xy(xy, isData=False)
Removes the ENDT field.
Parameters
xy the xy data as a table with alternating x, y entries
isData did this come from the OP2/BDF (True -> OP2)
_crash_fields(xy, nrepeated, nxy)
Creates the print message if there was an error
Parameters
xy the xy data as a table with alternating x, y entries
nrepeated ???
nxy ???

2.1. bdf Package 111


pyNastran Documentation, Release 0.6.0

fields()

tables Module

pyNastran.bdf.cards.tables.TABLEM3

pyNastran.bdf.cards.tables.TABLEST

pyNastran.bdf.cards.tables.TABLES1

pyNastran.bdf.cards.tables.TABLEM1

pyNastran.bdf.cards.tables.TABLEM4

pyNastran.bdf.cards.tables.Table pyNastran.bdf.cards.tables.TABLED2

pyNastran.bdf.cards.tables.TABLED1
pyNastran.bdf.cards.tables.TableObj
pyNastran.bdf.cards.tables.TIC
pyNastran.bdf.cards.baseCard.BaseCard
pyNastran.bdf.cards.tables.TABLED3

pyNastran.bdf.cards.tables.TABLEM2

pyNastran.bdf.cards.tables.RandomTable pyNastran.bdf.cards.tables.TABRNDG

pyNastran.bdf.cards.tables.TABRND1

All table cards are defined in this file. This includes:


Table
TABLED1 - Dynamic Table = f(Time, Frequency)
TABLED2
TABLED3
TABLEM1 - Material table = f(Temperature)
TABLEM2
TABLEM3
TABLEM4
TABLES1 - Material table = f(Stress)
TABLEST
RandomTable * TABRND1
TABRNDG

112 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

TIC
All tables have a self.table parameter that is a TableObj
class pyNastran.bdf.cards.tables.RandomTable(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
type = uTABLE??
class pyNastran.bdf.cards.tables.TABLED1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED1
class pyNastran.bdf.cards.tables.TABLED2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED2
class pyNastran.bdf.cards.tables.TABLED3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLED3
class pyNastran.bdf.cards.tables.TABLEM1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
type = uTABLEM1
class pyNastran.bdf.cards.tables.TABLEM2(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEM2
class pyNastran.bdf.cards.tables.TABLEM3(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEM3

2.1. bdf Package 113


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.tables.TABLEM4(card=None, data=None, comment=u)


Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEM4
class pyNastran.bdf.cards.tables.TABLES1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLES1
class pyNastran.bdf.cards.tables.TABLEST(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
rawFields()
reprFields()
type = uTABLEST
class pyNastran.bdf.cards.tables.TABRND1(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.RandomTable
map_axis(axis)
parse_fields(xy, nrepeated, isData=False)
rawFields()
reprFields()
type = uTABRND1
class pyNastran.bdf.cards.tables.TABRNDG(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.RandomTable
Gust Power Spectral Density
Defines the power spectral density (PSD) of a gust for aeroelastic response analysis.
LU = None
Scale of turbulence divided by velocity (units of time; Real)
Type = None
PSD Type: 1. von Karman; 2. Dryden
WG = None
Root-mean-square gust velocity. (Real)
rawFields()
reprFields()

114 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

tid = None
Table identification number. (Integer >0)
type = uTABRNDG
class pyNastran.bdf.cards.tables.TIC(card=None, data=None, comment=u)
Bases: pyNastran.bdf.cards.tables.Table
Transient Initial Condition
Defines values for the initial conditions of variables used in structural transient analysis. Both dis-
placement and velocity values may be specified at independent degrees-of-freedom. This entry may
not be used for heat transfer analysis.
rawFields()
reprFields()
type = uTIC
class pyNastran.bdf.cards.tables.Table(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
map_axis(axis)
parse_fields(xy, nrepeated, isData=False)
class pyNastran.bdf.cards.tables.TableObj(xy, nrepeated, isData=False)
Bases: object
Parameters
self the Table Object
xy the X/Y data with an ENDT appended
nrepeated ???
isData did this come from the OP2/BDF (True -> OP2)
_cleanup_xy(xy, isData=False)
Removes the ENDT field.
Parameters
xy the xy data as a table with alternating x, y entries
isData did this come from the OP2/BDF (True -> OP2)
_crash_fields(xy, nrepeated, nxy)
Creates the print message if there was an error
Parameters
xy the xy data as a table with alternating x, y entries
nrepeated ???
nxy ???
fields()

2.1. bdf Package 115


pyNastran Documentation, Release 0.6.0

Subpackages

elements Package

pyNastran.bdf.cards.elements.bars.CONROD

pyNastran.bdf.cards.elements.bars.CTUBE
pyNastran.bdf.cards.elements.bars.RodElement
pyNastran.bdf.cards.elements.bars.CROD
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.bars.CBEAM3
pyNastran.bdf.cards.elements.bars.LineElement pyNastran.bdf.cards.elements.bars.CBAR
pyNastran.bdf.cards.elements.bars.CBEAM
pyNastran.bdf.cards.elements.bars.CBEND

bars Module
class pyNastran.bdf.cards.elements.bars.CBAR(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.LineElement
CBAR EID PID GA GB X1 X2 X3 OFFT
PA PB W1A W2A W3A W1B W2B W3B

or:
CBAR EID PID GA GB G0 OFFT
PA PB W1A W2A W3A W1B W2B W3B

CBAR 22062 4 21798 21799 0.0+0 0.0+0 -1.


0.0+0 0.0+0 -9. 0.0+0 0.0+0 -9.

Area()
Centroid()
Eid()
Ga()
Gb()
I1()
I2()
J()
Lambda(model, debug=True)
2d [l,m,0,0, l,m,0,0] [0,0,l,m, 0,0,l,m] L*k = 2x4*W4x4
3d [l,m,n,0,0,0, l,m,n,0,0,0] [0,0,0,l,m,n, 0,0,0,l,m,n]
Length()
Mid()
Nsm()
Stiffness(model, grav, is3D)

116 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Stiffness1D(model)
_verify(xref )
asterType = uCBAR
cross_reference(model)
getX_G0_defaults()
initX_G0(card)
nodeIDs()
offt = None

Todo
offt can be an integer; translate to char

rawFields()

Todo
not perfectly accurate

reprFields()
type = uCBAR
class pyNastran.bdf.cards.elements.bars.CBEAM(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.CBAR
CBEAM EID PID GA GB X1 X2 X3 OFFT/BIT
PA PB W1A W2A W3A W1B W2B W3B
SA SB

or:
CBEAM EID PID GA GB G0 - - OFFT/BIT
PA PB W1A W2A W3A W1B W2B W3B
SA SB

Area()
Mid()
Nsm()
Stiffness(model, r, A, E, I)
from makeTruss???
cross_reference(model)

2.1. bdf Package 117


pyNastran Documentation, Release 0.6.0

getOfft_Bit_defaults()
initOfftBit(card)
isOfft = None

Todo
is this correct???

offt = None

Todo
is this correct???

rawFields()
reprFields()
type = uCBEAM
class pyNastran.bdf.cards.elements.bars.CBEAM3(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.CBAR
Defines a three-node beam element
Length()

L = gb ga

cross_reference(model)
rawFields()
reprFields()
type = uCBEAM3
class pyNastran.bdf.cards.elements.bars.CBEND(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.LineElement
Area()
rawFields()
reprFields()
type = uCBEND

118 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.elements.bars.CONROD(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.elements.bars.RodElement
Area()
C()
torsional constant
Centroid()
E()
returns the Youngs Modulus, :math:E$
G()
returns the Shear Modulus, G
J()
returns the Polar Moment of Inertia, J
MassPerLength()
Mid()
Nsm()
Placeholder method for the non-structural mass
Nu()
returns Poissons Ratio,
Pid()
Rho()
returns the material density,
_verify(xref )
cross_reference(model)
rawFields()
reprFields()
type = uCONROD
writeCodeAster()
class pyNastran.bdf.cards.elements.bars.CROD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.RodElement
Area()
Centroid()
MassPerLength()
Mid()
Nsm()

2.1. bdf Package 119


pyNastran Documentation, Release 0.6.0

_verify(xref )
rawFields()
reprFields()
type = uCROD
class pyNastran.bdf.cards.elements.bars.CTUBE(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bars.RodElement
Area()
Centroid()
Mass()
Nsm()
_verify(xref )
rawFields()
type = uCTUBE
class pyNastran.bdf.cards.elements.bars.LineElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
Area()
returns the area of the element face
C()
torsional constant
E()
returns the Youngs Modulus, E
G()
returns the Shear Modulus, G
I11()
returns the Moment of Inertia, I11
I12()
returns the Moment of Inertia, I12
I22()
returns the Moment of Inertia, I22
J()
returns the Polar Moment of Inertia, J
Length()
Gets the length, L, of the element.
q
L = (nx2 nx1 )2 + (ny2 ny1 )2 + (nz2 nz1 )2

120 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Parameters self the object pointer


Mass()
Get the mass of the element.

m = (A + nsm) L

MassPerLength()
Get the mass per unit length, :math: rac{m}{L}
Nsm()
Placeholder method for the non-structural mass, nsm
Nu()
Get Poissons Ratio, :math: u
Rho()
Get the material density, :math: ho
cross_reference(model)
class pyNastran.bdf.cards.elements.bars.RodElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
Lambda(model, debug=True)

2d [l,m,0,0]
[0,0,l,m]

3d [l,m,n,0,0,0]
[0,0,0,l,m,n]

Length()
Gets the length of the element.
q
L = (nx2 nx1 )2 + (ny2 ny1 )2 + (nz2 nz1 )2

Parameters self the CROD/CONROD/CTUBE element


Mass()
get the mass of the element.

m = (A + nsm) L

Rho()
returns the material density

2.1. bdf Package 121


pyNastran Documentation, Release 0.6.0

Rmatrix(model, is3D)
where [R]ij is the tranformation matrix

gx e x gx e y gx e z
[R]ij = gy e x gy e y gy e z
gz e x gz e y gz e z

Stiffness(model, grav, is3D)


Stiffness1D(model)

Todo
remove this method after making sure it still works

cross_reference(model)
displacementStress(model, q, dofs)
displacementStressF06(model, q, dofs)
nodeIDs()

pyNastran.bdf.cards.elements.bush.CBUSH1D

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.bush.BushElement pyNastran.bdf.cards.elements.bush.CBUSH

pyNastran.bdf.cards.elements.bush.CBUSH2D

bush Module All bush elements are defined in this file. This includes:
CBUSH
CBUSH1D
CBUSH2D
All bush elements are BushElement and Element objects.
class pyNastran.bdf.cards.elements.bush.BushElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
Cid()
Mass()
class pyNastran.bdf.cards.elements.bush.CBUSH(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bush.BushElement
Cid()

122 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Ga()
Gb()
OCid()
_verify(model, xref )
cid = None
Element coordinate system identification. A 0 means the basic coordinate system.
If CID is blank, then the element coordinate system is determined from GO or Xi.
(default=blank=element-based)
cross_reference(model)
nodeIDs()
ocid = None
Coordinate system identification of spring-damper offset. See Remark 9. (Integer > -1; Default
= -1, which means the offset point lies on the line between GA and GB
rawFields()
reprFields()
s = None
Location of spring damper (0 <= s <= 1.0)
si = None
Components of spring-damper offset in the OCID coordinate system if OCID > 0.
type = uCBUSH
class pyNastran.bdf.cards.elements.bush.CBUSH1D(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bush.BushElement
Ga()
Gb()
_verify(model, xref )
cross_reference(model)
nodeIDs()
rawFields()
type = uCBUSH1D
class pyNastran.bdf.cards.elements.bush.CBUSH2D(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.bush.BushElement
2-D Linear-Nonlinear Connection Defines the connectivity of a two-dimensional Linear-Nonlinear
element.
Ga()

2.1. bdf Package 123


pyNastran Documentation, Release 0.6.0

Gb()
_verify(model, xref )
cross_reference(model)
nodeIDs()
rawFields()
type = uCBUSH2D

pyNastran.bdf.cards.elements.damper.CDAMP5

pyNastran.bdf.cards.elements.damper.CDAMP3

pyNastran.bdf.cards.elements.damper.CDAMP4
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.damper.DamperElement pyNastran.bdf.cards.elements.damper.LineDamper
pyNastran.bdf.cards.elements.damper.CDAMP2

pyNastran.bdf.cards.elements.damper.CDAMP1

pyNastran.bdf.cards.elements.damper.CVISC

damper Module All damper elements are defined in this file. This includes:
CDAMP1
CDAMP2
CDAMP3
CDAMP4
CDAMP5
CVISC
All damper elements are DamperElement and Element objects.
class pyNastran.bdf.cards.elements.damper.CDAMP1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper
B()
c1 = None
component number
cross_reference(model)
isSameCard(elem, debug=False)
nodeIDs()
rawFields()
type = uCDAMP1
class pyNastran.bdf.cards.elements.damper.CDAMP2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper

124 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

B()
b = None
Value of the scalar damper (Real)
c1 = None
component number
cross_reference(model)
nodeIDs()
rawFields()
type = uCDAMP2
class pyNastran.bdf.cards.elements.damper.CDAMP3(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper
B()
cross_reference(model)
nodeIDs()
rawFields()
type = uCDAMP3
class pyNastran.bdf.cards.elements.damper.CDAMP4(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper
B()
b = None
Value of the scalar damper (Real)
cross_reference(model)
nodeIDs()
rawFields()
type = uCDAMP4
class pyNastran.bdf.cards.elements.damper.CDAMP5(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper
cross_reference(model)
nodeIDs()
pid = None
Property ID
rawFields()
type = uCDAMP5

2.1. bdf Package 125


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.elements.damper.CVISC(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.elements.damper.LineDamper
B()
nodeIDs()
rawFields()
reprFields()
type = uCVISC
class pyNastran.bdf.cards.elements.damper.DamperElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
class pyNastran.bdf.cards.elements.damper.LineDamper(card, data)
Bases: pyNastran.bdf.cards.elements.damper.DamperElement
cross_reference(model)

pyNastran.bdf.cards.elements.elements.CRAC3D
pyNastran.bdf.cards.elements.elements.CrackElement
pyNastran.bdf.cards.elements.elements.CRAC2D
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.elements.CFAST

pyNastran.bdf.cards.elements.elements.CGAP

elements Module All ungrouped elements are defined in this file. This includes:
CFAST
CGAP
CRAC2D
CRAC3D
All ungrouped elements are Element objects.
class pyNastran.bdf.cards.elements.elements.CFAST(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.baseCard.Element
cross_reference(model)
rawFields()
reprFields()
type = uCFAST
class pyNastran.bdf.cards.elements.elements.CGAP(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.baseCard.Element
Cid()

126 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Ga()
Gb()
cross_reference(model)
rawFields()
type = uCGAP
class pyNastran.bdf.cards.elements.elements.CRAC2D(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.elements.CrackElement
nodeIDs()
rawFields()
type = uCRAC2D
class pyNastran.bdf.cards.elements.elements.CRAC3D(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.elements.CrackElement
nodeIDs()
rawFields()
type = uCRAC3D
class pyNastran.bdf.cards.elements.elements.CrackElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
cross_reference(model)
type = uCrack

pyNastran.bdf.cards.elements.mass.CMASS2

pyNastran.bdf.cards.elements.mass.CONM1

pyNastran.bdf.cards.elements.mass.CMASS4
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.mass.PointElement pyNastran.bdf.cards.elements.mass.PointMassElement
pyNastran.bdf.cards.elements.mass.CONM2

pyNastran.bdf.cards.elements.mass.CMASS1

pyNastran.bdf.cards.elements.mass.CMASS3

mass Module All mass elements are defined in this file. This includes:
CMASS1
CMASS2
CMASS3
CMASS4
CONM1
CONM2

2.1. bdf Package 127


pyNastran Documentation, Release 0.6.0

All mass elements are PointMassElement and Element objects.


class pyNastran.bdf.cards.elements.mass.CMASS1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Defines a scalar mass element. CMASS2 EID M G1 C1 G2 C2 CMASS1 EID PID G1 C1 G2 C2
Eid()
Mass()
Pid()
_verify(xref=False)
cross_reference(model)
rawFields()
type = uCMASS1
class pyNastran.bdf.cards.elements.mass.CMASS2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Defines a scalar mass element without reference to a property entry. CMASS2 EID M G1 C1 G2 C2
Centroid()
Centroid is assumed to be c=(g1+g2)/2. If g2 is blank, then the centroid is the location of g1.
G1()
G2()
Mass()
cross_reference(model)
nodeIDs()
rawFields()
reprFields()
type = uCMASS2
class pyNastran.bdf.cards.elements.mass.CMASS3(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Defines a scalar mass element that is connected only to scalar points. CMASS3 EID PID S1 S2
Mass()
cross_reference(model)
Links up the propertiy ID
isSameCard(elem, debug=False)
rawFields()

128 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

type = uCMASS3
class pyNastran.bdf.cards.elements.mass.CMASS4(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Defines a scalar mass element that is connected only to scalar points, without reference to a property
entry CMASS4 EID M S1 S2
Mass()
cross_reference(model)
isSameCard(elem, debug=False)
rawFields()
type = uCMASS4
class pyNastran.bdf.cards.elements.mass.CONM1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Concentrated Mass Element Connection, General Form Defines a 6 x 6 symmetric mass matrix at a
geometric grid point:
CONM1 EID G CID M11 M21 M22 M31 M32
M33 M41 M42 M43 M44 M51 M52 M53
M54 M55 M61 M62 M63 M64 M65 M66

[M] = [M11 M21 M31 M41 M51 M61]


[ M22 M32 M42 M52 M62]
[ M33 M43 M53 M63]
[ M44 M54 M64]
[ Sym M55 M65]
[ M66]

Cid()
MassMatrix()
Nid()
cross_reference(model)
nodeIDs()
rawFields()
reprFields()
type = uCONM1
class pyNastran.bdf.cards.elements.mass.CONM2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.mass.PointMassElement
Parameters
self the CONM2 object

2.1. bdf Package 129


pyNastran Documentation, Release 0.6.0

eid element ID
nid node ID
cid coordinate frame of the offset (-1=absolute coordinates)
X offset vector
I mass moment of inertia matrix about the CG
CONM2 501274 11064 132.274

Centroid()
Cid()
Eid()
Inertia()
Returns the 3x3 inertia matrix .. warning:: doesnt handle offsets or coordinate systems
Mass()
Nid()
_verify(xref=False)
cross_reference(model)
nodeIDs()
rawFields()
reprFields()
type = uCONM2
writeCodeAster()
class pyNastran.bdf.cards.elements.mass.PointElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
class pyNastran.bdf.cards.elements.mass.PointMassElement(card, data)
Bases: pyNastran.bdf.cards.elements.mass.PointElement
Mass()

pyNastran.bdf.cards.elements.rigid.RBE3

pyNastran.bdf.cards.elements.rigid.RBE1

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.rigid.RigidElement pyNastran.bdf.cards.elements.rigid.RBE2

pyNastran.bdf.cards.elements.rigid.RBAR

pyNastran.bdf.cards.elements.rigid.RBAR1

rigid Module All rigid elements are defined in this file. This includes:

130 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

RBAR
RBAR1
RBE1
RBE2
RBE3
All rigid elements are RigidElement and Element objects.
class pyNastran.bdf.cards.elements.rigid.RBAR(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.rigid.RigidElement
RBAR EID GA GB CNA CNB CMA CMB ALPHA
RBAR 5 1 2 123456 6.5-6

rawFields()
reprFields()
type = uRBAR
class pyNastran.bdf.cards.elements.rigid.RBAR1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.rigid.RigidElement
RBAR1 EID GA GB CB ALPHA
RBAR1 5 1 2 123 6.5-6

rawFields()
reprFields()
type = uRBAR1
class pyNastran.bdf.cards.elements.rigid.RBE1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.rigid.RigidElement
rawFields()
reprFields()
type = uRBE1
class pyNastran.bdf.cards.elements.rigid.RBE2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.rigid.RigidElement
alpha = None
Grid point identification numbers at which dependent degrees-of-freedom are assigned. (Integer
> 0)
cm = None
Component numbers of the dependent degrees-of-freedom in the global coordinate system at
grid points GMi. (Integers 1 through 6 with no embedded blanks.)

2.1. bdf Package 131


pyNastran Documentation, Release 0.6.0

convertToMPC(mpcID)

Ai ui + Aj uj = 0

where ui are the base DOFs (max=6):


mpc sid g1 c1 a1 g2 c2 a2
rbe2 eid gn cm g1 g2 g3 g4

eid = None
Element identification number
gn = None
Identification number of grid point to which all six independent degrees-of-freedom for the
element are assigned. (Integer > 0)
rawFields()
reprFields()
type = uRBE2
writeCodeAster()
Converts to a LIAISON SOLIDE for dofs 123456. For other dof combinations, general MPC
equations are written
class pyNastran.bdf.cards.elements.rigid.RBE3(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.elements.rigid.RigidElement

Todo
not done, needs testing badly

eid refgrid refc WtCG_groups = [wt,ci,Gij] Gmi Cmi alpha


alpha = None
thermal expansion coefficient
rawFields()
reprFields()
type = uRBE3
class pyNastran.bdf.cards.elements.rigid.RigidElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
cross_reference(model)

shell Module

solid Module

132 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.elements.springs.CELAS2

pyNastran.bdf.cards.elements.springs.CELAS4
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Element pyNastran.bdf.cards.elements.springs.SpringElement
pyNastran.bdf.cards.elements.springs.CELAS1

pyNastran.bdf.cards.elements.springs.CELAS3

springs Module All spring elements are defined in this file. This includes:
CELAS1
CELAS2
CELAS3
CELAS4
All spring elements are SpringElement and Element objects.
class pyNastran.bdf.cards.elements.springs.CELAS1(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.springs.SpringElement
K()
_verify(xref=False)
asterType = uCELAS1
c1 = None
component number
cross_reference(model)
isSameCard(elem, debug=False)
nodeIDs()
pid = None
property ID
rawFields()
type = uCELAS1
class pyNastran.bdf.cards.elements.springs.CELAS2(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.springs.SpringElement
K()
_verify(xref=False)
asterType = uCELAS2
c1 = None
component number
cross_reference(model)

2.1. bdf Package 133


pyNastran Documentation, Release 0.6.0

ge = None
damping coefficient
isSameCard(elem, debug=False)
k = None
stiffness of the scalar spring
nodeIDs()
rawFields()
reprFields()
s = None
stress coefficient
type = uCELAS2
writeCodeAster()
class pyNastran.bdf.cards.elements.springs.CELAS3(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.springs.SpringElement
K()
asterType = uCELAS3
cross_reference(model)
isSameCard(elem, debug=False)
pid = None
property ID
rawFields()
s1 = None
Scalar point identification numbers
type = uCELAS3
class pyNastran.bdf.cards.elements.springs.CELAS4(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.elements.springs.SpringElement
K()
asterType = uCELAS4
cross_reference(model)
isSameCard(elem, debug=False)
k = None
stiffness of the scalar spring
rawFields()

134 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

s1 = None
Scalar point identification numbers
type = uCELAS4
class pyNastran.bdf.cards.elements.springs.SpringElement(card, data)
Bases: pyNastran.bdf.cards.baseCard.Element
Centroid()
Eid()
K()
Lambda(model)
:: 2d [l,m,0,0]
[0,0,l,m]

3d [l,m,n,0,0,0] [0,0,0,l,m,n]

Length()
Returns the length, L, of a bar/rod/beam element.
q
L = (nx2 nx1 )2 + (ny2 ny1 )2 + (nz2 nz1 )2

Parameters self the object pointer


Returns Length the length of the element

Note: the model must be cross-referenced already

Mass()
Stiffness(model)
reprFields()

loads Package

2.1. bdf Package 135


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.loads.loads.SLOAD

pyNastran.bdf.cards.loads.loads.LoadCombination pyNastran.bdf.cards.loads.loads.DLOAD
pyNastran.bdf.cards.loads.loads.Load

pyNastran.bdf.cards.loads.loads.RFORCE

pyNastran.bdf.cards.loads.loads.DAREA
pyNastran.bdf.cards.loads.loads.TLOAD2

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.loads.loads.LSEQ
pyNastran.bdf.cards.loads.loads.RLOAD1

pyNastran.bdf.cards.loads.loads.TabularLoad
pyNastran.bdf.cards.loads.loads.RLOAD2

pyNastran.bdf.cards.loads.loads.TLOAD1
pyNastran.bdf.cards.loads.loads.RandomLoad

pyNastran.bdf.cards.loads.loads.RANDPS

loads Module All static loads are defined in this file. This includes:
LSEQ
DLOAD
DAREA
SLOAD
TLOAD1
TLOAD2
RFORCE
RLOAD1
RLOAD2
RANDPS
class pyNastran.bdf.cards.loads.loads.DAREA(card=None, nOffset=0, data=None,
comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines scale (area) factors for static and dynamic loads. In dynamic analysis, DAREA is used in
conjunction with ACSRCE, RLOADi and TLOADi entries.
DAREA SID P1 C1 A1 P2 C2 A2
DAREA 3 6 2 8.2 15 1 10.1

rawFields()
type = uDAREA
class pyNastran.bdf.cards.loads.loads.DLOAD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.LoadCombination
rawFields()
reprFields()
type = uDLOAD

136 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.loads.LSEQ(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines a sequence of static load sets

Todo
how does this work...

Lid()
LoadID(lid)
Tid()
cross_reference(model)
getLoads()
rawFields()
reprFields()
type = uLSEQ
class pyNastran.bdf.cards.loads.loads.Load(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
defines the DefaultLoad class
Cid()
nodeIDs(nodes=None)
returns nodeIDs for repr functions
type = uDefLoad
class pyNastran.bdf.cards.loads.loads.LoadCombination(card, data)
Bases: pyNastran.bdf.cards.loads.loads.Load
LoadID(lid)
cross_reference(model)
getLoads()
loadIDs = None
individual loadIDs (corresponds to scaleFactors)
scale = None
overall scale factor
scaleFactors = None
individual scale factors (corresponds to loadIDs)
sid = None
load ID

2.1. bdf Package 137


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.loads.RANDPS(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.loads.loads.RandomLoad
Power Spectral Density Specification
Defines load set power spectral density factors for use in random analysis having the frequency de-
pendent form:

Sjk (F ) = (X + iY )G(F )

Tid()
cross_reference(model)
getLoads()
j = None
Subcase identification number of the excited load set. (Integer > 0)
k = None
Subcase identification number of the applied load set. (Integer >= 0; K >= J)
rawFields()
reprFields()
sid = None
Random analysis set identification number. (Integer > 0) Defined by RANDOM in the Case
Control Deck.
tid = None
Identification number of a TABRNDi entry that defines G(F).
type = uRANDPS
x = None
Components of the complex number. (Real)
class pyNastran.bdf.cards.loads.loads.RFORCE(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
Cid()
Nid()
cross_reference(model)
getLoads()
rawFields()
reprFields()
type = uRFORCE

138 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.loads.RLOAD1(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.loads.loads.TabularLoad
Defines a frequency-dependent dynamic load of the form for use in frequency response problems.

{P (f )} = {A} [C(f ) + iD(f )]ei{2f }

RLOAD1 SID EXCITEID DELAY DPHASE TC TD TYPE


RLOAD1 5 3 1

Tc()
Td()
cross_reference(model)
getLoads()
rawFields()
reprFields()
type = uRLOAD1
class pyNastran.bdf.cards.loads.loads.RLOAD2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.TabularLoad
Defines a frequency-dependent dynamic load of the form for use in frequency response problems.

{P (f )} = {A} B(f )ei{(f )+2f }

RLOAD2 SID EXCITEID DELAY DPHASE TB TP TYPE


RLOAD2 5 3 1

LoadID()
Tb()
Tp()
cross_reference(model)
getLoads()
rawFields()
reprFields()
type = uRLOAD2

2.1. bdf Package 139


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.loads.RandomLoad(card, data)


Bases: pyNastran.bdf.cards.baseCard.BaseCard
class pyNastran.bdf.cards.loads.loads.SLOAD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
Static Scalar Load
Defines concentrated static loads on scalar or grid points.

Note: Can be used in statics OR dynamics.

If Si refers to a grid point, the load is applied to component T1 of the displacement coordinate system
(see the CD field on the GRID entry).
Nid(node)
cross_reference(model)
getLoads()

Todo
not done

rawFields()
reprFields()
sid = None
load ID
type = uSLOAD
class pyNastran.bdf.cards.loads.loads.TLOAD1(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.TabularLoad
Transient Response Dynamic Excitation, Form 1
Defines a time-dependent dynamic load or enforced motion of the form:

{P (t)} = {A} F (t )

for use in transient response analysis.


Tid()
Type = None
Defines the type of the dynamic excitation. (LOAD,DISP, VELO, ACCE)
cross_reference(model)

140 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

delay = None
If it is a non-zero integer, it represents the identification number of DELAY Bulk Data entry that
defines . If it is real, then it directly defines the value of that will be used for all degrees-of-
freedom that are excited by this dynamic load entry. See also Remark 9. (Integer >= 0, real or
blank)
exciteID = None
Identification number of DAREA or SPCD entry set or a thermal load set (in heat transfer anal-
ysis) that defines {A}. (Integer > 0)
getLoads()
rawFields()
reprFields()
sid = None
load ID
tid = None
Identification number of TABLEDi entry that gives F(t). (Integer > 0)
type = uTLOAD1
us0 = None
Factor for initial displacements of the enforced degrees-of-freedom. (Real; Default = 0.0)
vs0 = None
Factor for initial velocities of the enforced degrees-of-freedom. (Real; Default = 0.0)
class pyNastran.bdf.cards.loads.loads.TLOAD2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.TabularLoad
Transient Response Dynamic Excitation, Form 1
Defines a time-dependent dynamic load or enforced motion of the form:

{P (t)} = {A} F (t )

for use in transient response analysis.


T1 = None
Time constant. (Real >= 0.0)
T2 = None
Time constant. (Real; T2 > T1)
Type = None
Defines the type of the dynamic excitation. (Integer; character or blank; Default = 0)
b = None
Growth coefficient. (Real; Default = 0.0)
c = None
Exponential coefficient. (Real; Default = 0.0)

2.1. bdf Package 141


pyNastran Documentation, Release 0.6.0

cross_reference(model)
frequency = None
Frequency in cycles per unit time. (Real >= 0.0; Default = 0.0)
getLoads()
phase = None
Phase angle in degrees. (Real; Default = 0.0)
rawFields()
reprFields()
sid = None
load ID SID must be unique for all TLOAD1, TLOAD2, RLOAD1, RLOAD2, and ACSRCE
entries.
type = uTLOAD2
us0 = None
Factor for initial displacements of the enforced degrees-of-freedom. (Real; Default = 0.0)
vs0 = None
Factor for initial velocities of the enforced degrees-of-freedom (Real; Default = 0.0)
class pyNastran.bdf.cards.loads.loads.TabularLoad(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard

pyNastran.bdf.cards.loads.staticLoads.MOMENT1

pyNastran.bdf.cards.loads.staticLoads.MOMENT
pyNastran.bdf.cards.loads.staticLoads.Moment

pyNastran.bdf.cards.loads.staticLoads.MOMENT2
pyNastran.bdf.cards.loads.staticLoads.PLOADX1
pyNastran.bdf.cards.loads.staticLoads.FORCE2
pyNastran.bdf.cards.loads.staticLoads.Force
pyNastran.bdf.cards.loads.staticLoads.FORCE
pyNastran.bdf.cards.loads.staticLoads.PLOAD2
pyNastran.bdf.cards.loads.loads.Load pyNastran.bdf.cards.loads.staticLoads.FORCE1
pyNastran.bdf.cards.loads.staticLoads.PLOAD
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.loads.staticLoads.GRAV
pyNastran.bdf.cards.loads.loads.LoadCombination pyNastran.bdf.cards.loads.staticLoads.LOAD
pyNastran.bdf.cards.loads.staticLoads.ACCEL1
pyNastran.bdf.cards.loads.staticLoads.PLOAD4

pyNastran.bdf.cards.loads.staticLoads.PLOAD1

staticLoads Module All static loads are defined in this file. This includes:
LOAD
GRAV
ACCEL1
FORCE1
FORCE2
MOMENT

142 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

PLOAD
PLOAD2
PLOAD3
PLOAD4
PLOADX1
class pyNastran.bdf.cards.loads.staticLoads.ACCEL1(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Acceleration Load
Defines static acceleration loads at individual GRID points.
Cid()
N = None
Components of the acceleration vector measured in coordinate system CID. (Real; at least one
Ni != 0)
cid = None
Coordinate system identification number. (Integer>0: Default=0)
cross_reference(model)
nodeIDs(nodes=None)
returns nodeIDs for repr functions
nodes = None
nodes to apply the acceleration to
rawFields()
scale = None
Acceleration vector scale factor. (Real)
sid = None
Load set identification number (Integer>0)
type = uACCEL1
class pyNastran.bdf.cards.loads.staticLoads.FORCE(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Force
FORCE 3 1 100. 0. 0. 1.

Cid()
F()
cross_reference(model)

Todo

2.1. bdf Package 143


pyNastran Documentation, Release 0.6.0

cross reference and fix repr function

rawFields()
reprFields()
type = uFORCE
class pyNastran.bdf.cards.loads.staticLoads.FORCE1(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Force
Defines a static concentrated force at a grid point by specification of a magnitude and two grid points
that determine the direction.
G1()
G2()
NodeID()
cross_reference(model)

Todo
cross reference and fix repr function

rawFields()
reprFields()
type = uFORCE1
class pyNastran.bdf.cards.loads.staticLoads.FORCE2(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Force
Defines a static concentrated force at a grid point by specification of a magnitude and four grid points
that determine the direction.
FORCE2 SID G F G1 G2 G3 G4

G1()
G2()
G3()
G4()
NodeID()
cross_reference(model)

Todo

144 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

cross reference and fix repr function

rawFields()
reprFields()
type = uFORCE2
class pyNastran.bdf.cards.loads.staticLoads.Force(card, data)
Bases: pyNastran.bdf.cards.loads.loads.Load
Generic class for all Forces
F()
getLoads()
getReducedLoads()
normalize()
adjust the vector to a unit length scale up the magnitude of the vector
organizeLoads(model)
transformLoad()
type = uForce
class pyNastran.bdf.cards.loads.staticLoads.GRAV(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
Defines acceleration vectors for gravity or other acceleration loading.:
GRAV SID CID A N1 N2 N3 MB
GRAV 1 3 32.2 0.0 0.0 -1.0

Cid()
GravityVector()
returns the gravity vector in absolute coordinates
N = None
Acceleration vector components measured in coordinate system CID
cid = None
Coordinate system identification number.
cross_reference(model)
getLoads()
mb = None
Indicates whether the CID coordinate system is defined in the main Bulk Data Section (MB =
-1) or the partitioned superelement Bulk Data Section (MB = 0). Coordinate systems referenced
in the main Bulk Data Section are considered stationary with respect to the assembly basic
coordinate system. See Remark 10. (Integer; Default = 0)

2.1. bdf Package 145


pyNastran Documentation, Release 0.6.0

organizeLoads(model)
rawFields()
reprFields()
scale = None
scale factor
sid = None
Set identification number
transformLoad()
type = uGRAV
class pyNastran.bdf.cards.loads.staticLoads.LOAD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.loads.loads.LoadCombination
getLoadIDs()

Note: requires a cross referenced load

getLoadTypes()

Note: requires a cross referenced load

getReducedLoads()
Get all load objects in a simplified form, which means all scale factors are already applied and
only base objects (no LOAD cards) will be returned.

Todo
lots more object types to support

organizeLoads(model)
Figures out magnitudes of the loads to be applied to the various nodes. This includes figuring
out scale factors.
rawFields()
reprFields()
type = uLOAD
writeCalculixGRAV(gx, gy, gz)
writeCodeAsterLoad(model, gridWord=unode)

146 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.staticLoads.MOMENT(card=None, data=None,


comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Moment
Defines a static concentrated moment at a grid point by specifying a scale factor and a vector that
determines the direction.:
MOMENT SID G CID M N1 N2 N3
MOMENT 2 5 6 2.9 0.0 1.0 0.0

Cid()
cross_reference(model)

Todo
cross reference and fix repr function

rawFields()
reprFields()
type = uMOMENT
class pyNastran.bdf.cards.loads.staticLoads.MOMENT1(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Moment
Defines a static concentrated moment at a grid point by specifying a magnitude and two grid points
that determine the direction.:
MOMENT1 SID G M G1 G2

G1()
G2()
cross_reference(model)

Todo
cross reference and fix repr function

get_node_id()
rawFields()
reprFields()
type = uMOMENT1
class pyNastran.bdf.cards.loads.staticLoads.MOMENT2(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.staticLoads.Moment

2.1. bdf Package 147


pyNastran Documentation, Release 0.6.0

Defines a static concentrated moment at a grid point by specification of a magnitude and four grid
points that determine the direction.:
MOMENT2 SID G M G1 G2 G3 G4

cross_reference(model)

Todo
cross reference and fix repr function

rawFields()
reprFields()
type = uMOMENT2
class pyNastran.bdf.cards.loads.staticLoads.Moment(card, data)
Bases: pyNastran.bdf.cards.loads.loads.Load
Generic class for all Moments
M()
getLoads()
getReducedLoads()
normalize()
adjust the vector to a unit length scale up the magnitude of the vector
organizeLoads(model)
transformLoad()
type = uMoment
class pyNastran.bdf.cards.loads.staticLoads.PLOAD(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
cross_reference(model)

Todo
cross reference and fix repr function

getLoads()
rawFields()
reprFields()
type = uPLOAD

148 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.loads.staticLoads.PLOAD1(card=None, data=None,


comment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
cross_reference(model)

Todo
cross reference and fix repr function

getLoads()
rawFields()
reprFields()
type = uPLOAD1
validScales = [uLE, uFR, uLEPR, uFRPR]
validTypes = [uFX, uFY, uFZ, uFXE, uFYE, uFZE, uMX, uMY, uMZ, uMXE, uMYE, uM
class pyNastran.bdf.cards.loads.staticLoads.PLOAD2(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
cross_reference(model)

Todo
cross reference and fix repr function

getLoads()
rawFields()
reprFields()
type = uPLOAD2
class pyNastran.bdf.cards.loads.staticLoads.PLOAD4(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
Cid()
Eid(eid)
cid = None
Coordinate system identification number. See Remark 2. (Integer >= 0;Default=0)
cross_reference(model)
eids = None
used for CPENTA, CHEXA

2.1. bdf Package 149


pyNastran Documentation, Release 0.6.0

g1 = None
used for solid element only
g34 = None
g3/g4 - different depending on CHEXA/CPENTA or CTETRA
getElementIDs(eid=None)
getLoads()
rawFields()
reprFields()
transformLoad()
Warning: sorl=SURF is supported (not LINE)

Warning: ldir=NORM is supported (not X,Y,Z)

type = uPLOAD4
class pyNastran.bdf.cards.loads.staticLoads.PLOADX1(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.loads.loads.Load
cross_reference(model)
getLoads()
rawFields()
reprFields()
type = uPLOADX1

properties Package

bars Module

pyNastran.bdf.cards.properties.bush.PBUSH2D

pyNastran.bdf.cards.properties.bush.PBUSH
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.bush.BushingProperty
pyNastran.bdf.cards.properties.bush.PBUSHT

pyNastran.bdf.cards.properties.bush.PBUSH1D

bush Module All bush properties are defined in this file. This includes:
PBUSH
PBUSH1D

150 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

PBUSH2D (not implemented)


PBUSHT (not implemented)
All bush properties are BushingProperty and Property objects.
class pyNastran.bdf.cards.properties.bush.BushingProperty(card, data)
Bases: pyNastran.bdf.cards.baseCard.Property
cross_reference(model)
type = uBushingProperty
class pyNastran.bdf.cards.properties.bush.PBUSH(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.bush.BushingProperty
_verify(xref=False)
getB(card, iStart)
getGE(card, iStart)
getK(card, iStart)
getRCV(card, iStart)
pid = None
Property ID
rawFields()
reprFields()
type = uPBUSH
class pyNastran.bdf.cards.properties.bush.PBUSH1D(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.bush.BushingProperty
_damperFields()
_generFields()
_shockFields()
_springFields()
getDamper(card, iStart)
getGener(card, iStart)
getShockA(card, iStart)
getSpring(card, iStart)
pid = None
Property ID
rawFields()
reprFields()

2.1. bdf Package 151


pyNastran Documentation, Release 0.6.0

type = uPBUSH1D
class pyNastran.bdf.cards.properties.bush.PBUSH2D(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.bush.BushingProperty
type = uPBUSH2D
class pyNastran.bdf.cards.properties.bush.PBUSHT(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.bush.BushingProperty
type = uPBUSHT

pyNastran.bdf.cards.properties.damper.PDAMPT

pyNastran.bdf.cards.properties.damper.PDAMP5
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.damper.DamperProperty
pyNastran.bdf.cards.properties.damper.PDAMP

pyNastran.bdf.cards.properties.damper.PVISC

damper Module All damper properties are defined in this file. This includes:
PDAMP
PDAMP5 (not implemented)
PDAMPT
PVISC
All damper properties are DamperProperty and Property objects.
class pyNastran.bdf.cards.properties.damper.DamperProperty(card, data)
Bases: pyNastran.bdf.cards.baseCard.Property
cross_reference(model)
class pyNastran.bdf.cards.properties.damper.PDAMP(card=None, nPDAMP=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.properties.damper.DamperProperty
b = None
Force per unit velocity (Real)
pid = None
Property ID
rawFields()
reprFields()
type = uPDAMP
class pyNastran.bdf.cards.properties.damper.PDAMP5(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.damper.DamperProperty

152 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Defines the damping multiplier and references the material properties for damping. CDAMP5 is
intended for heat transfer analysis only.
Mid()
b = None
Damping multiplier. (Real > 0.0) B is the mass that multiplies the heat capacity CP on the MAT4
or MAT5 entry.
cross_reference(model)
mid = None
Material ID
pid = None
Property ID
rawFields()
reprFields()
type = uPDAMP5
class pyNastran.bdf.cards.properties.damper.PDAMPT(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.damper.DamperProperty
Tbid()
cross_reference(model)
pid = None
Property ID
rawFields()
reprFields()
tbid = None
Identification number of a TABLEDi entry that defines the damping force per-unit velocity ver-
sus frequency relationship
type = uPDAMPT
class pyNastran.bdf.cards.properties.damper.PVISC(card=None, nPVISC=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.properties.damper.DamperProperty
cross_reference(model)
rawFields()
reprFields()
type = uPVISC

2.1. bdf Package 153


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.properties.mass.PMASS
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.mass.PointProperty
pyNastran.bdf.cards.properties.mass.NSM

mass Module All mass properties are defined in this file. This includes:
NSM
PMASS
All mass properties are PointProperty and Property objects.
class pyNastran.bdf.cards.properties.mass.NSM(card=None, nOffset=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.properties.mass.PointProperty
Defines a set of non structural mass.
rawFields()
reprFields()
type = uNSM
validProperties = [uPSHELL, uPCOMP, uPBAR, uPBARL, uPBEAM, uPBEAML, uPBCOMP
Set points to either Property entries or Element entries. Properties are:
class pyNastran.bdf.cards.properties.mass.PMASS(card=None, nOffset=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.properties.mass.PointProperty
Mass()
_verify(xref=False)
pid = None
Property ID
rawFields()
reprFields()
type = uPMASS
class pyNastran.bdf.cards.properties.mass.PointProperty(card, data)
Bases: pyNastran.bdf.cards.baseCard.Property
cross_reference(model)

154 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.properties.properties.PRAC3D

pyNastran.bdf.cards.properties.properties.CrackProperty pyNastran.bdf.cards.properties.properties.PRAC2D

pyNastran.bdf.cards.properties.properties.SolidProperty pyNastran.bdf.cards.properties.properties.PLSOLID

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.properties.PFAST pyNastran.bdf.cards.properties.properties.PSOLID

pyNastran.bdf.cards.properties.properties.PCONEAX

pyNastran.bdf.cards.properties.properties.PGAP

properties Module All ungrouped properties are defined in this file. This includes:
PFAST
PGAP
PLSOLID (SolidProperty)
PSOLID (SolidProperty)
PRAC2D (CrackProperty)
PRAC3D (CrackProperty)
PCONEAX (not done)
class pyNastran.bdf.cards.properties.properties.CrackProperty(card,
data)
Bases: pyNastran.bdf.cards.baseCard.Property
Mid()
class pyNastran.bdf.cards.properties.properties.PCONEAX(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.baseCard.Property
Mid1()
Mid2()
Mid3()
cross_reference(model)
mid1 = None
Material ID
pid = None
Property ID
rawFields()
reprFields()
type = uPCONEAX

2.1. bdf Package 155


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.properties.properties.PFAST(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.baseCard.Property
Mass()
Mcid()
cross_reference(model)
d = None
diameter of the fastener
ge = None
Structural damping
kr1 = None
Rotational stiffness values in directions 1-3
kt1 = None
stiffness values in directions 1-3
mass = None
Lumped mass of fastener
mcid = None
Specifies the element stiffness coordinate system
pid = None
Property ID
rawFields()
reprFields()
type = uPFAST
class pyNastran.bdf.cards.properties.properties.PGAP(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.baseCard.Property
Defines the properties of the gap element (CGAP entry).
cross_reference(model)
f0 = None
preload
ka = None
axial stiffness of closed gap
kb = None
axial stiffness of open gap
kt = None
transverse stiffness of closed gap

156 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

mu1 = None
static friction coeff
mu2 = None
kinetic friction coeff
pid = None
Property ID
rawFields()
reprFields()
type = uPGAP
u0 = None
initial gap opening
class pyNastran.bdf.cards.properties.properties.PLSOLID(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.properties.SolidProperty
Defines a fully nonlinear (i.e., large strain and large rotation) hyperelastic solid element. PLSOLID
PID MID STR PLSOLID 20 21
cross_reference(model)
mid = None
Material ID
pid = None
Property ID
rawFields()
str = None
Location of stress and strain output
type = uPLSOLID
class pyNastran.bdf.cards.properties.properties.PRAC2D(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.properties.CrackProperty
CRAC2D Element Property Defines the properties and stress evaluation techniques to be used with
the CRAC2D structural element.
cross_reference(model)
gamma = None
Exponent used in the displacement field. See Remark 4. (Real; Default = 0.5)
iPlane = None
Plane strain or plane stress option. Use 0 for plane strain; 1 for plane stress. (Integer = 0 or 1)

2.1. bdf Package 157


pyNastran Documentation, Release 0.6.0

mid = None
Material ID
nsm = None
Non-structural mass per unit area.(Real >= 0.0; Default = 0)
phi = None
Angle (in degrees) relative to the element x-axis along which stress intensity factors are to be
calculated. See Remark 4. (Real; Default = 180.0)
pid = None
Property ID
rawFields()
reprFields()
type = uPRAC2D
class pyNastran.bdf.cards.properties.properties.PRAC3D(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.properties.CrackProperty
CRAC3D Element Property Defines the properties of the CRAC3D structural element.
cross_reference(model)
gamma = None
Exponent used in the displacement field. See Remark 4. (Real; Default = 0.5)
mid = None
Material ID
phi = None
Angle (in degrees) relative to the element x-axis along which stress intensity factors are to be
calculated. See Remark 4. (Real; Default = 180.0)
pid = None
Property ID
rawFields()
reprFields()
type = uPRAC3D
class pyNastran.bdf.cards.properties.properties.PSOLID(card=None,
data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.properties.SolidProperty
PSOLID PID MID CORDM IN STRESS ISOP FCTN PSOLID 1 1 0 PSOLID 2 100 6 TWO GRID
REDUCED
_verify(xref )

158 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

mid = None
Material ID
pid = None
Property ID
rawFields()
reprFields()
type = uPSOLID
writeCalculix(elementSet=999)
class pyNastran.bdf.cards.properties.properties.SolidProperty(card,
data)
Bases: pyNastran.bdf.cards.baseCard.Property
Rho()

pyNastran.bdf.cards.properties.shell.PCOMP
pyNastran.bdf.cards.properties.shell.CompositeShellProperty
pyNastran.bdf.cards.properties.shell.PCOMPG
pyNastran.bdf.cards.properties.shell.PLPLANE
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.shell.ShellProperty
pyNastran.bdf.cards.properties.shell.PSHELL

pyNastran.bdf.cards.properties.shell.PSHEAR

shell Module All shell properties are defined in this file. This includes:
PCOMP
PCOMPG
PLPLANE
PSHEAR
PSHELL
All shell properties are ShellProperty and Property objects.
class pyNastran.bdf.cards.properties.shell.CompositeShellProperty(card,
data)
Bases: pyNastran.bdf.cards.properties.shell.ShellProperty
MassPerArea(iply=uall, method=unplies)
Gets the Mass/Area for the property.
m X
= (t) + nsm
A

or
m X
nsm = (t)
A

2.1. bdf Package 159


pyNastran Documentation, Release 0.6.0

and
mi
= rhoi ti + nsmi
A

where nsmi is the non-structural mass of the ith ply


Parameters
self the PCOMP object
iply the string all (default) or the mass per area of the ith ply
method the method to compute MassPerArea
Case 1 (iply = all)
method has no effect because the total nsm is defined
Case 2 (iply != all)
method nplies smear the nsm based on nplies (default)
nsmi = nsm/nplies # smear based on nplies
Case 3 (iply != all)
method rho*t smear the nsm based on the mass distribution
nsm
nsmi = i ti P
(i ti )

nsm
nsmi = i ti m
A nsm

Case 4 (iply != all)


method t smear the nsm based on the thickness distribution
nsm
nsmi = ti P
(ti )

Note: final mass calculation will be done later

Material(iply)
Gets the material of the ith ply (not the ID unless its not cross-referenced)
Parameters
self the PCOMP/PCOMPG object

160 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

iply the ply ID (starts from 0)


Mid(iply)
Gets the Material ID of the ith ply.
Parameters
self the PCOMP/PCOMPG object
iply the ply ID (starts from 0)
Mids()
Gets the material IDs of all the plies
Parameters self the PCOMP/PCOMPG object
Returns mids the material IDs
Nsm()
Gets the non-structural mass ith ply
Parameters self the PCOMP/PCOMPG object
Rho(iply)
Gets the density of the ith ply
Parameters
self the PCOMP/PCOMPG object
iply the ply ID (starts from 0)
Theta(iply)
Gets the ply angle of the ith ply (not the ID)
Parameters
self the PCOMP/PCOMPG object
iply the ply ID (starts from 0)
Thickness(iply=uall)
Gets the thickness of the ith ply.
Parameters
self the PCOMP object
iply the string all (default) or the mass per area of the ith ply
_adjust_ply_id(iply)
Gets the ply ID thats stored in self.plies.
When a ply is not symmetric, this function returns the input iply. When a ply is symmetrical and
the iply value is greater than the number of plies, we return the mirrored ply. For the case of a
symmetrical ply, the element will always have an even number of layers.
Parameters
self the PCOMP object

2.1. bdf Package 161


pyNastran Documentation, Release 0.6.0

iply the ply ID


Raises IndexError if iply is invalid
Case 1 (nplies=6, len(plies)=3, lam=SYM):
ply 2
ply 1
ply 0
------- sym
ply 0 / 3
ply 1 / 4
ply 2 / 5
Ask for ply 3, return ply 0
Ask for ply 4, return ply 1
Ask for ply 5, return ply 2

Case 2 (nplies=5, len(plies)=5, lam=NO):


ply 5
ply 4
ply 3
ply 1
ply 0
Ask for ply 3, return ply 1
Ask for ply 4, return ply 2

cross_reference(model)
Links the Material IDs to the materials. :param self: the PCOMP/PCOMPG object :param
model: a BDF object
get_z_locations()
Gets the z locations for the various plies.
Parameters
self the PCOMP/PCOMPG object
iply the ply ID (starts from 0)
Assume there are 2 plies, each of 1.0 thick, starting from z = 0.
>>> pcomp.get_z_locations()
[0., 1., 2.]

isSameCard(prop, debug=False)
isSymmetrical()
Is the laminate symmetrical? :returns; True or False
nPlies()
Gets the number of plies including the core.
if Lam=SYM:
returns nPlies*2 (even)
else:
returns nPlies

162 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

sout(iply)
Gets the ply angle of the ith ply (not the ID)
Parameters
self the PCOMP/PCOMPG object
iply the ply ID (starts from 0)
class pyNastran.bdf.cards.properties.shell.PCOMP(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.properties.shell.CompositeShellProperty
PCOMP 701512 0.0+0 1.549-2 0.0+0 0.0+0 SYM
300704 3.7-2 0.0+0 YES 300704 3.7-2 45. YES
300704 3.7-2 -45. YES 300704 3.7-2 90. YES
300705 .5 0.0+0 YES

TRef = None
Reference Temperature (default=0.0)
_verify(xref=False)
ft = None
Failure Theory
[HILL, HOFF, TSAI, STRN, None]
lam = None
symmetric flag - default = No Symmetry (NO)
nsm = None
Non-Structural Mass per unit Area
pid = None
Property ID
plies = None
list of plies
rawFields()
reprFields()
type = uPCOMP
class pyNastran.bdf.cards.properties.shell.PCOMPG(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.shell.CompositeShellProperty
GlobalPlyID(iply)
_verify(xref=False)
rawFields()
reprFields()
type = uPCOMPG

2.1. bdf Package 163


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.properties.shell.PLPLANE(card=None, data=None,


comment=u)
Bases: pyNastran.bdf.cards.properties.shell.ShellProperty
Cid()
Mid()
_verify(xref=False)
cross_reference(model)
pid = None
Property ID
rawFields()
reprFields()
type = uPLPLANE
class pyNastran.bdf.cards.properties.shell.PSHEAR(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.shell.ShellProperty
Defines the properties of a shear panel (CSHEAR entry). PSHEAR PID MID T NSM F1 F2
isSameCard(prop, debug=False)
mid = None
Material ID
pid = None
Property ID
rawFields()
type = uPSHEAR
class pyNastran.bdf.cards.properties.shell.PSHELL(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.shell.ShellProperty
PSHELL PID MID1 T MID2 12I/T**3 MID3 TS/T NSM
Z1 Z2 MID4
PSHELL 41111 1 1.0000 1 1 0.02081

D()
MassPerArea()
Calculates mass per area.

rac{m}{A} = nsm + ho t
Mid()

164 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Mid1()
Mid2()
Mid3()
Mid4()
Nsm()
Rho()
Thickness()
_verify(xref=False)
cross_reference(model)
get_z_locations()
mid()
mid2 = None
Material identification number for bending
nsm = None
Non-structural Mass
pid = None
Property ID
rawFields()
reprFields()
t = None
thickness
twelveIt3 = None
Scales the moment of interia of the element based on the moment of interia for a plate
..math:: I = frac{12I}{t^3} I_{plate}
type = uPSHELL
writeCalculix(marker=umarkerDummyProp, elementSet=uELsetDummyProp)
writeCodeAster()
http://www.caelinux.org/wiki/index.php/Contrib:KeesWouters/shell/static
http://www.caelinux.org/wiki/index.php/Contrib:KeesWouters/platedynamics
The angle_rep is a direction angle, use either angle(a,b) or vecteur(x,y,z) coque_ncou is the
number of gauss nodes along the thickness, for linear analysis one node is sufficient.
class pyNastran.bdf.cards.properties.shell.ShellProperty(card, data)
Bases: pyNastran.bdf.cards.baseCard.Property

2.1. bdf Package 165


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.cards.properties.springs.PELAS
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.baseCard.Property pyNastran.bdf.cards.properties.springs.SpringProperty
pyNastran.bdf.cards.properties.springs.PELAST

springs Module All spring properties are defined in this file. This includes:
PELAS
PELAST
All spring properties are SpringProperty and Property objects.
class pyNastran.bdf.cards.properties.springs.PELAS(card=None, nPELAS=0,
data=None, comment=u)
Bases: pyNastran.bdf.cards.properties.springs.SpringProperty
Specifies the stiffness, damping coefficient, and stress coefficient of a scalar elastic (spring) element
(CELAS1 or CELAS3 entry).
K()
_verify(xref=False)
cross_reference(model)
ge = None
Damping coefficient, . See Remarks 5. and 6. (Real) To obtain the damping coefficient GE,
multiply the critical damping ratio c/c0 by 2.0.
k = None
Ki Elastic property value. (Real)
pid = None
Property identification number. (Integer > 0)
rawFields()
reprFields()
s = None
Stress coefficient. (Real)
type = uPELAS
writeCodeAster()

Todo
check if there are 1 (DISCRET => K_T_D_N) or

2 (DISCRET_2D => K_T_D_L) nodes


class pyNastran.bdf.cards.properties.springs.PELAST(card=None, data=None,
comment=u)
Bases: pyNastran.bdf.cards.properties.springs.SpringProperty

166 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Frequency Dependent Elastic Property Defines the frequency dependent properties for a PELAS Bulk
Data entry.
The PELAST entry is ignored in all solution sequences except frequency response (108) or nonlinear
analyses (129).
Pid()
Tgeid()
Returns the table ID for nondimensional structural damping coefficient vs. frequency (c/c0 vs
freq)
Tkid()
Returns the table ID for force per unit displacement vs frequency (k=F/d vs freq)
Tknid()
Returns the table ID for nondimensional force vs. displacement
cross_reference(model)
pid = None
Property identification number. (Integer > 0)
tgeid = None
Identification number of a TABLEDi entry that defines the nondimensional structural damping
coefficient vs. frequency relationship. (Integer > 0; Default = 0)
tkid = None
Identification number of a TABLEDi entry that defines the force per unit displacement vs. fre-
quency relationship. (Integer > 0; Default = 0)
tknid = None
Identification number of a TABELDi entry that defines the nonlinear force vs. displacement
relationship. (Integer > 0; Default = 0)
type = uPELAST
class pyNastran.bdf.cards.properties.springs.SpringProperty(card, data)
Bases: pyNastran.bdf.cards.baseCard.Property

thermal Package

pyNastran.bdf.cards.thermal.loads.QBDY1

pyNastran.bdf.cards.thermal.loads.QHBDY

pyNastran.bdf.cards.thermal.loads.QBDY3
pyNastran.bdf.cards.thermal.loads.ThermalLoad
pyNastran.bdf.cards.thermal.loads.TEMP
pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.thermal.thermal.ThermalCard
pyNastran.bdf.cards.thermal.loads.ThermalLoadDefault pyNastran.bdf.cards.thermal.loads.QBDY2

pyNastran.bdf.cards.thermal.loads.TEMPD

loads Module

2.1. bdf Package 167


pyNastran Documentation, Release 0.6.0

class pyNastran.bdf.cards.thermal.loads.QBDY1(card=None, data=None, com-


ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoad
Defines a uniform heat flux into CHBDYj elements.
Eid(eid)
Eids()
cross_reference(model)
eids = None

Todo
use expand_thru_by ???

getLoads()
nQFluxTerms()
qFlux = None
Heat flux into element (FLOAT)
rawFields()
reprFields()
sid = None
Load set identification number. (Integer > 0)
type = uQBDY1
class pyNastran.bdf.cards.thermal.loads.QBDY2(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoad
Defines a uniform heat flux load for a boundary surface.
Eid()
cross_reference(model)
eid = None
Identification number of an CHBDYj element. (Integer > 0)
getLoads()
nQFluxTerms()
qFlux = None
Heat flux at the i-th grid point on the referenced CHBDYj element. (Real or blank)
rawFields()
reprFields()

168 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

sid = None
Load set identification number. (Integer > 0)
type = uQBDY2
class pyNastran.bdf.cards.thermal.loads.QBDY3(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoad
Defines a uniform heat flux load for a boundary surface.
Eid(eid)
Eids()
Q0 = None
Heat flux into element
cntrlnd = None
Control point for thermal flux load. (Integer > 0; Default = 0)
cross_reference(model)
eids = None
CHBDYj element identification numbers
getLoads()

Todo
return loads

rawFields()
reprFields()
sid = None
Load set identification number. (Integer > 0)
type = uQBDY3
class pyNastran.bdf.cards.thermal.loads.QHBDY(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoad
Defines a uniform heat flux into a set of grid points.
Q0 = None
Magnitude of thermal flux into face. Q0 is positive for heat into the surface. (Real)
af = None
Area factor depends on type. (Real > 0.0 or blank)
cross_reference(model)
getLoads()

2.1. bdf Package 169


pyNastran Documentation, Release 0.6.0

grids = None
Grid point identification of connected grid points. (Integer > 0 or blank)
rawFields()
reprFields()
sid = None
Load set identification number. (Integer > 0)
type = uQHBDY
class pyNastran.bdf.cards.thermal.loads.TEMP(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoad
Defines temperature at grid points for determination of thermal loading, temperature-dependent ma-
terial properties, or stress recovery.:
TEMP SID G1 T1 G2 T2 G3 T3
TEMP 3 94 316.2 49 219.8

add(tempObj)
cross_reference(model)
getLoads()

Todo
return loads

rawFields()
Writes the TEMP card
reprFields()
Writes the TEMP card
sid = None
Load set identification number. (Integer > 0)
temperatures = None
dictionary of temperatures where the key is the grid ID (Gi) and the value is the temperature (Ti)
type = uTEMP
class pyNastran.bdf.cards.thermal.loads.TEMPD(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.loads.ThermalLoadDefault
Defines a temperature value for all grid points of the structural model that have not been given a
temperature on a TEMP entry
add(tempd_obj)
cross_reference(model)

170 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

reprFields()
Writes the TEMPD card
temperatures = None
dictionary of temperatures where the key is the set ID (SIDi) and the value is the temperature
(Ti)
type = uTEMPD
class pyNastran.bdf.cards.thermal.loads.ThermalLoad(card, data)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalCard
class pyNastran.bdf.cards.thermal.loads.ThermalLoadDefault(card, data)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalCard

pyNastran.bdf.cards.thermal.thermal.RADM

pyNastran.bdf.cards.thermal.thermal.CONV

pyNastran.bdf.cards.thermal.thermal.ThermalBC pyNastran.bdf.cards.thermal.thermal.CONVM

pyNastran.bdf.cards.thermal.thermal.RADBC

pyNastran.bdf.cards.thermal.thermal.PHBDY

pyNastran.bdf.cards.baseCard.BaseCard pyNastran.bdf.cards.thermal.thermal.ThermalCard pyNastran.bdf.cards.thermal.thermal.ThermalProperty pyNastran.bdf.cards.thermal.thermal.PCONVM

pyNastran.bdf.cards.thermal.thermal.PCONV

pyNastran.bdf.cards.thermal.thermal.CHBDYE
pyNastran.bdf.cards.thermal.thermal.ThermalElement
pyNastran.bdf.cards.thermal.thermal.CHBDYP

pyNastran.bdf.cards.thermal.thermal.CHBDYG

thermal Module
class pyNastran.bdf.cards.thermal.thermal.CHBDYE(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalElement
Defines a boundary condition surface element with reference to a heat conduction element.
_verify(xref=False)
cross_reference(model)
eid = None
Surface element ID number for a side of an element. (0 < Integer < 100,000,000)
eid2 = None
A heat conduction element identification
hexMap = {1: [4, 3, 2, 1], 2: [1, 2, 6, 5], 3: [2, 3, 7, 6], 4: [3, 4, 8, 7], 5: [4, 1, 5, 8], 6: [5, 6, 7, 8]}
iViewBack = None
A VIEW entry identification number for the back face
iViewFront = None
A VIEW entry identification number for the front face
pentMap = {1: [3, 2, 1], 2: [1, 2, 5, 4], 3: [2, 3, 6, 5], 4: [3, 1, 4, 6], 5: [4, 5, 6]}

2.1. bdf Package 171


pyNastran Documentation, Release 0.6.0

radMidBack = None
RADM identification number for back face of surface element (Integer > 0)
radMidFront = None
RADM identification number for front face of surface element (Integer > 0)
rawFields()
reprFields()

Todo
is this done

side = None
A consistent element side identification number (1 < Integer < 6)
sideMaps = {uCQUAD4: [1, 2, 3, 4], uCHEXA: {1: [4, 3, 2, 1], 2: [1, 2, 6, 5], 3: [2, 3, 7, 6], 4: [3, 4, 8, 7], 5:
tetMap = {1: [1, 3, 2], 2: [1, 2, 4], 3: [2, 3, 4], 4: [3, 1, 4]}
type = uCHBDYE
class pyNastran.bdf.cards.thermal.thermal.CHBDYG(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalElement
Defines a boundary condition surface element without reference to a property entry.
Type = None
Surface type
_verify(xref=False)
cross_reference(model)
eid = None
Surface element ID
grids = None
Grid point IDs of grids bounding the surface (Integer > 0)
iViewBack = None
A VIEW entry identification number for the back face
iViewFront = None
A VIEW entry identification number for the front face
radMidBack = None
RADM identification number for back face of surface element (Integer > 0)
radMidFront = None
RADM identification number for front face of surface element (Integer > 0)
rawFields()
reprFields()

172 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

type = uCHBDYG
class pyNastran.bdf.cards.thermal.thermal.CHBDYP(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalElement
Defines a boundary condition surface element with reference to a PHBDY entry
ce = None
Coordinate system for defining orientation vector. (Integer > 0; Default = 0
cross_reference(model)
e1 = None
Components of the orientation vector in coordinate system CE. The origin of the orientation
vector is grid point G1. (Real or blank)
eid = None
Surface element ID
g0 = None
Orientation grid point. (Integer > 0; Default = 0)
g1 = None
Grid point identification numbers of grids bounding the surface. (Integer > 0)
gmid = None
Grid point identification number of a midside node if it is used with the line type surface element.
iViewBack = None
A VIEW entry identification number for the back face.
iViewFront = None
A VIEW entry identification number for the front face.
pid = None
PHBDY property entry identification numbers. (Integer > 0)
radMidBack = None
RADM identification number for back face of surface element. (Integer > 0)
radMidFront = None
RADM identification number for front face of surface element. (Integer > 0)
rawFields()
reprFields()
type = uCHBDYP
class pyNastran.bdf.cards.thermal.thermal.CONV(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalBC
Specifies a free convection boundary condition for heat transfer analysis through connection to a
surface element (CHBDYi entry).
TA(i=None)

2.1. bdf Package 173


pyNastran Documentation, Release 0.6.0

TA2 = None
Ambient points used for convection 0s are allowed for TA2 and higher. (Integer > 0 for TA1
and Integer > 0 for TA2 through TA8; Default for TA2 through TA8 is TA1.)
cntrlnd = None
Control point for free convection boundary condition.
cross_reference(model)
eid = None
CHBDYG, CHBDYE, or CHBDYP surface element identification number. (Integer > 0)
flmnd = None
Point for film convection fluid property temperature
pconID = None
Convection property identification number of a PCONV entry
rawFields()
reprFields()
type = uCONV
class pyNastran.bdf.cards.thermal.thermal.CONVM(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalBC
Specifies a forced convection boundary condition for heat transfer analysis through connection to a
surface element (CHBDYi entry).
cross_reference(model)
film_node()
rawFields()
reprFields()
type = uCONV
class pyNastran.bdf.cards.thermal.thermal.PCONV(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalProperty
Specifies the free convection boundary condition properties of a boundary condition surface element
used for heat transfer analysis.
ce = None
Coordinate system for defining orientation vector. (Integer > 0;Default = 0
chlen = None
Characteristic length
e1 = None
Components of the orientation vector in coordinate system CE. The origin of the orientation
vector is grid point G1. (Real or blank)

174 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

expf = None
Free convection exponent as implemented within the context of the particular form that is chosen
form = None
Type of formula used for free convection. (Integer 0, 1, 10, 11, 20, or 21)
ftype = None
Formula type for various configurations of free convection
gidin = None
Grid ID of the referenced inlet point
mid = None
Material property identification number. (Integer > 0)
pconid = None
Convection property identification number. (Integer > 0)
rawFields()
reprFields()
tid = None
Identification number of a TABLEHT entry that specifies the two variable tabular function of
the free convection heat transfer coefficient
type = uPCONV
class pyNastran.bdf.cards.thermal.thermal.PCONVM(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalProperty
Specifies the free convection boundary condition properties of a boundary condition surface element
used for heat transfer analysis.
coef = None
Constant coefficient used for forced convection
exppi = None
Prandtl number convection exponent for heat transfer into the workingfluid. (Real > 0.0; Default
= 0.0)
exppo = None
Prandtl number convection exponent for heat transfer into the working fluid. (Real > 0.0; Default
= 0.0)
expr = None
Reynolds number convection exponent. (Real > 0.0; Default = 0.0)
flag = None
Flag for mass flow convection. (Integer = 0 or 1; Default = 0)
form = None
Type of formula used for free convection. (Integer 0, 1, 10, 11, 20, or 21)
mid = None
Material property identification number. (Integer > 0)

2.1. bdf Package 175


pyNastran Documentation, Release 0.6.0

pconid = None
Convection property identification number. (Integer > 0)
rawFields()
reprFields()
type = uPCONVM
class pyNastran.bdf.cards.thermal.thermal.PHBDY(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalProperty
A property entry referenced by CHBDYP entries to give auxiliary geometric information for boundary
condition surface elements
af = None
Area factor of the surface used only for CHBDYP element TYPE = POINT, TYPE = LINE,
TYPE = TUBE, or TYPE = ELCYL. For TYPE = TUBE, AF is the constant thickness of
the hollow tube. (Real > 0.0 or blank)
d1 = None
Diameters associated with the surface. Used with CHBDYP element
TYPE=ELCYL,TUBE,FTUBE
pid = None
Property identification number. (Unique Integer among all PHBDY entries). (Integer > 0)
rawFields()
reprFields()
type = uPHBDY
class pyNastran.bdf.cards.thermal.thermal.RADBC(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalBC
Specifies an CHBDYi element face for application of radiation boundary conditions
Eid(eid)
Eids()
cntrlnd = None
Control point for thermal flux load. (Integer > 0; Default = 0)
cross_reference(model)
eids = None
CHBDYi element identification number
famb = None
Radiation view factor between the face and the ambient point. (Real > 0.0)
nodamb = None
NODAMB Ambient point for radiation exchange. (Integer > 0)
rawFields()

176 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

reprFields()
type = uRADBC
class pyNastran.bdf.cards.thermal.thermal.RADM(card=None, data=None, com-
ment=u)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalBC
Defines the radiation properties of a boundary element for heat transfer analysis
radmid = None
Material identification number
reprFields()
type = uRADM
class pyNastran.bdf.cards.thermal.thermal.ThermalBC(card, data)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalCard
class pyNastran.bdf.cards.thermal.thermal.ThermalCard(card, data)
Bases: pyNastran.bdf.cards.baseCard.BaseCard
cross_reference(model)
isSameCard(obj, debug=False)
class pyNastran.bdf.cards.thermal.thermal.ThermalElement(card, data)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalCard
Pid()
nodeIDs()
pid = 0
class pyNastran.bdf.cards.thermal.thermal.ThermalProperty(card, data)
Bases: pyNastran.bdf.cards.thermal.thermal.ThermalCard

test Package

all_tests Module

bdf_test Module

bdf_unit_tests Module

compare_card_content Module

pyNastran.bdf.test.compare_card_content.assert_fields(card1, card2)
pyNastran.bdf.test.compare_card_content.compare_aero_content(fem1,
fem2)

2.1. bdf Package 177


pyNastran Documentation, Release 0.6.0

pyNastran.bdf.test.compare_card_content.compare_card_content(fem1,
fem2)
pyNastran.bdf.test.compare_card_content.compare_matrices(fem1, fem2)
pyNastran.bdf.test.compare_card_content.compare_optimization_content(fem1,
fem2)
pyNastran.bdf.test.compare_card_content.compare_thermal_content(fem1,
fem2)

get_uniq_fields Module

test_bdf Module

test_field_writer Module

unittest.case.TestCase pyNastran.bdf.test.test_eld_writer.TestFieldWriter

class pyNastran.bdf.test.test_field_writer.TestFieldWriter(methodName=runTest)
Bases: unittest.case.TestCase
Create an instance of the class that will use the named test method when executed. Raises a ValueError
if the instance does not have a method with the specified name.
test_2()
test_field_defaults()
test_field_vals_8()
test_floats_negative_8()
test_floats_positive_8()
test_ints_16()
test_ints_8()
test_print_card_8()
test_strings_16()
test_strings_8()
pyNastran.bdf.test.test_field_writer.compare(valueIn)

178 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

test_field_writer Module

unittest.case.TestCase pyNastran.bdf.test.test_eld_writer.TestFieldWriter

class pyNastran.bdf.test.test_field_writer.TestFieldWriter(methodName=runTest)
Bases: unittest.case.TestCase
Create an instance of the class that will use the named test method when executed. Raises a ValueError
if the instance does not have a method with the specified name.
test_2()
test_field_defaults()
test_field_vals_8()
test_floats_negative_8()
test_floats_positive_8()
test_ints_16()
test_ints_8()
test_print_card_8()
test_strings_16()
test_strings_8()
pyNastran.bdf.test.test_field_writer.compare(valueIn)

Subpackages

cards Package

test_beams Module

test_constraints Module

test_coords Module

test_rigid Module

2.1. bdf Package 179


pyNastran Documentation, Release 0.6.0

test_shells Module

unit Package

line_parsing Module
pyNastran.bdf.test.unit.line_parsing._parseEntry(lines)
pyNastran.bdf.test.unit.line_parsing.parseSetSline(listA)
pyNastran.bdf.test.unit.line_parsing.parseSetType(i, line, lines, key, value)

unittest.case.TestCase pyNastran.bdf.test.unit.test_assign_type.ExtendedTestCase pyNastran.bdf.test.unit.test_assign_type.Test

test_assign_type Module
class pyNastran.bdf.test.unit.test_assign_type.ExtendedTestCase(methodName=runTest)
Bases: unittest.case.TestCase
Create an instance of the class that will use the named test method when executed. Raises a ValueError
if the instance does not have a method with the specified name.
assertRaisesWithMessage(msg, func, *args, **kwargs)
class pyNastran.bdf.test.unit.test_assign_type.Test(methodName=runTest)
Bases: pyNastran.bdf.test.unit.test_assign_type.ExtendedTestCase
Create an instance of the class that will use the named test method when executed. Raises a ValueError
if the instance does not have a method with the specified name.
run_function(f, card, exact)
run_function_default(f, card, exact, default)
test_bad()
test_blank()
value = integer(card, n, fieldname)
test_components()
test_double()
value = double(card, n, fieldname)
test_double_or_blank()
value = double_or_blank(card, n, fieldname, default=None)
test_integer()
value = integer(card, n, fieldname)
test_integer_double_or_blank()
value = double_or_blank(card, n, fieldname, default=None)

180 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

test_integer_or_blank()
value = integer_or_blank(card, n, fieldname)
test_string()
value = string(card, n, fieldname)

test_mass Module

2.2 f06 Package

2.2.1 f06 Module

pyNastran.f06.tables.oug.OUG

pyNastran.f06.tables.oes.OES

pyNastran.f06.f06.F06Deprecated pyNastran.f06.f06.F06

pyNastran.f06.tables.oqg.OQG

pyNastran.f06.f06Writer.F06Writer

class pyNastran.f06.f06.F06(f06FileName, debug=False, log=None)


Bases: pyNastran.f06.tables.oes.OES, pyNastran.f06.tables.oug.OUG,
pyNastran.f06.tables.oqg.OQG, pyNastran.f06.f06Writer.F06Writer,
pyNastran.f06.f06.F06Deprecated
Initializes the F06 object
F06filename the file to be parsed
Makegeom reads the BDF tables (default=False)
Debug prints data about how the F06 was parsed (default=False)
Log a logging object to write debug messages to
See Also:
import logging

2.2. f06 Package 181


pyNastran Documentation, Release 0.6.0

getComplexEigenvalues()

C O M P L E X E I G E N V A L U E S U M M A R Y

ROOT EXTRACTION EIGENVALUE FREQUENCY DAMPING


NO. ORDER (REAL) (IMAG) (CYCLES) COEFFICIENT 1 6 0.0 6.324555E+01
1.006584E+01 0.0 2 5 0.0 6.324555E+01 1.006584E+01 0.0

getElementStrainEnergies()
EIGENVALUE = -3.741384E-04 CYCLES = 3.078479E-03
ELEMENTSTRAINENERGIES

ELEMENT-TYPE = QUAD4 * TOTAL ENERGY OF ALL ELEMENTS IN PROBLEM = -1.188367E


MODE 1 * TOTAL ENERGY OF ALL ELEMENTS IN SET -1 = -1.188367E-05
ELEMENT-ID STRAIN-ENERGY PERCENT OF TOTAL STRAIN-ENERGY-DENSITY
1 -5.410134E-08 -0.0929 -4.328107E-05 2 -3.301516E-09 -0.0057
-2.641213E-06

getGridPointSingularities()

G R I D P O I N T S I N G U L A R I T Y T A B L E

POINT TYPE FAILED STIFFNESS OLD USET NEW USET


ID DIRECTION RATIO EXCLUSIVE UNION EXCLUSIVE UNION 1 G 4
0.00E+00 B F SB S * 1 G 5 0.00E+00 B F SB S *

getGridWeight()
getMaxAppliedLoads()
getMaxDisplacements()
getMaxSpcForces()
getRealEigenvalues()

R E A L E I G E N V A L U E S

MODE EXTRACTION EIGENVALUE RADIANS CYCLES GENERALIZED GENERALIZED

NO. ORDER MASS STIFFNESS 1 1 6.158494E+07 7.847607E+03 1.248985E+03


1.000000E+00 6.158494E+07

getRealEigenvectors(marker)

182 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

::
SUBCASE 1

EIGENVALUE = 6.158494E+07 CYCLES = 1.248985E+03 R E A L E I G E N V E C T


ORNO.1
POINT ID. TYPE T1 T2 T3 R1 R2 R3
1 G 2.547245E-17 -6.388945E-16 2.292728E+00 -1.076928E-15 2.579163E-17
0.0
2002 G -6.382321E-17 -1.556607E-15 3.242408E+00 -6.530917E-16 1.747180E-17
0.0

analysis_code = 2 (Normal modes)


table_code = 7 (Eigenvector)
device_code = 1 (Print)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
#s_code = 0 (Stress)
num_wide = 8 (???)

getTempGradientsFluxes()
isMarker(marker)
returns True if the word follows the N A S T R A N P A T T E R N
parseLine(sline, Format)
Self the object pointer
Sline list of strings (split line)
Format list of types [int,str,float,float,float] that maps to sline
parseLineBlanks(sline, Format)
allows blanks
parseLineGradientsFluxes(sline, Format)
print_results()
processF06()
readGradientFluxesTable()
readSubcaseNameID()
readTable(Format)
Reads displacement, spc/mpc forces
Self the object pointer

2.2. f06 Package 183


pyNastran Documentation, Release 0.6.0

Format
See Also:
parseLine
read_f06()
Reads the F06 file
Self the object pointer
skip(iskip)
start_log(log=None, debug=False)
Sets up a dummy logger if one is not provided
Self the object pointer
Log a python logging object
Debug adds debug messages (True/False)
class pyNastran.f06.f06.F06Deprecated
Bases: object
readF06()
... seealso::: read_f06

2.2.2 f06Writer Module

pyNastran.f06.f06Writer.F06WriterDeprecated

pyNastran.f06.f06Writer.F06Writer

class pyNastran.f06.f06Writer.F06Writer(model=tria3)
Bases: object
load_op2(isTesting=False)
make_f06_header()
If this class is inherited, the F06 Header may be overwritten
make_stamp(Title)
If this class is inherited, the PAGE stamp may be overwritten
set_f06_name(model)
writeF06(f06OutName, is_mag_phase=False, makeFile=True, deleteObjects=True)

184 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

write_f06(f06OutName, is_mag_phase=False, make_file=True, delete_objects=True)


Writes an F06 file based on the data we have stored in the object
Self the F06 object
F06outname the name of the F06 file to write
Is_mag_phase should complex data be written using Magnitude/Phase instead of
Real/Imaginary (default=False; Real/Imag) Real objects dont use this parameter.
Make_file
True -> makes a file
False -> makes a StringIO object for testing (default=True)
class pyNastran.f06.f06Writer.F06WriterDeprecated
Bases: object
loadOp2(isTesting=False)

See Also:
load_op2
writeF06(f06OutName, is_mag_phase=False, makeFile=True, deleteObjects=True)

See Also:
write_f06
pyNastran.f06.f06Writer.make_end()
pyNastran.f06.f06Writer.make_f06_header()
pyNastran.f06.f06Writer.make_stamp(Title)

2.2.3 f06_classes Module

pyNastran.f06.f06_classes.MaxDisplacement

class pyNastran.f06.f06_classes.MaxDisplacement(data)
Bases: object
write_f06(pageStamp=, pageNum=1)

2.2. f06 Package 185


pyNastran Documentation, Release 0.6.0

2.2.4 f06_formatting Module

pyNastran.f06.f06_formatting.writeFloats10E(vals)
pyNastran.f06.f06_formatting.writeFloats12E(vals)
pyNastran.f06.f06_formatting.writeFloats13E(vals)
pyNastran.f06.f06_formatting.writeFloats8p4F(vals)
pyNastran.f06.f06_formatting.writeImagFloats13E(vals, isMagPhase)

2.2.5 matlabWriter Module

pyNastran.f06.matlabWriter.MatlabWriter

class pyNastran.f06.matlabWriter.MatlabWriter(model=tria3)
Bases: object
load_op2(isTesting=False)
make_f06_header()
If this class is inherited, the F06 Header may be overwritten
make_stamp(Title)
If this class is inherited, the PAGE stamp may be overwritten
setF06Name(model)
write_matlab(mFileOutName, is_mag_phase=False, delete_objects=True)
Writes an F06 file based on the data we have stored in the object
Parameters
self the object pointer
mFileOutName the name of the M (Matlab) file to write
is_mag_phase should complex data be written using Magnitude/Phase in-
stead of Real/Imaginary (default=False; Real/Imag) Real objects dont use this
parameter.
pyNastran.f06.matlabWriter.makeEnd()
pyNastran.f06.matlabWriter.make_f06_header()
pyNastran.f06.matlabWriter.make_stamp(Title)

186 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

2.2.6 matlabWriter Module

pyNastran.f06.matlabWriter.MatlabWriter

class pyNastran.f06.matlabWriter.MatlabWriter(model=tria3)
Bases: object
load_op2(isTesting=False)
make_f06_header()
If this class is inherited, the F06 Header may be overwritten
make_stamp(Title)
If this class is inherited, the PAGE stamp may be overwritten
setF06Name(model)
write_matlab(mFileOutName, is_mag_phase=False, delete_objects=True)
Writes an F06 file based on the data we have stored in the object
Parameters
self the object pointer
mFileOutName the name of the M (Matlab) file to write
is_mag_phase should complex data be written using Magnitude/Phase in-
stead of Real/Imaginary (default=False; Real/Imag) Real objects dont use this
parameter.
pyNastran.f06.matlabWriter.makeEnd()
pyNastran.f06.matlabWriter.make_f06_header()
pyNastran.f06.matlabWriter.make_stamp(Title)

2.2. f06 Package 187


pyNastran Documentation, Release 0.6.0

2.2.7 Subpackages

tables Package

oes Module

pyNastran.f06.tables.oes.OES

class pyNastran.f06.tables.oes.OES
Bases: object
getBarHeader(isStrain)
getBarStrain()
getBarStress()

S T R E S S E S I N B A R E L E M E N T S
ELEMENT SA1 SA2 SA3 SA4 AXIAL
ID. SB1 SB2 SB3 SB4 STRESS
12 0.0 0.0 0.0 0.0 1.020730E+0
0.0 0.0 0.0 0.0

analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 5 (Stress)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress)
num_wide = 8 (???)

getQuadCompositeStress()

S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M
ELEMENT PLY STRESSES IN FIBER AND MATRIX DIRECTIONS INTER-LAMINAR STRESSES
ID ID NORMAL-1 NORMAL-2 SHEAR-12 SHEAR XZ-MAT SHEAR YZ-MAT
181 1 3.18013E+04 5.33449E+05 1.01480E+03 -7.06668E+01 1.90232E+04
181 2 1.41820E+05 1.40805E+05 1.25412E+05 -1.06000E+02 2.85348E+04

188 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

element_type = 33 b/c not bilinear


getQuadHeader(nHeaderLines, isStrain, elementNumber)
getQuadStrains()
getQuadStress()
getQuadStressBilinear()

S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T S ( Q U A D 4

ELEMENT FIBER STRESSES IN ELEMENT COORD SYSTEM PRINCIPAL STRESSES (ZERO SHE

ID GRID-ID DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE MAJOR MINOR VON M

6 CEN/4 -1.250000E-01 -4.278394E+02 8.021165E+03 -1.550089E+02 -88.9493 8.024007E+03 -4.3

1.250000E-01 5.406062E+02 1.201854E+04 -4.174177E+01 -89.7916


1.201869E+04 5.404544E+02 1.175778E+04

4 -1.250000E-01 -8.871141E+02 7.576036E+03 -1.550089E+02 -88.9511 7.578874E+03 -8.899523


1.250000E-01 -8.924081E+01 1.187899E+04 -4.174177E+01 -89.8002
1.187913E+04 -8.938638E+01 1.192408E+04

getRodHeader(isStrain)
analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 5 (Stress)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress)
num_wide = 8 (???)
getRodStrain()
getRodStress()

S T R E S S E S I N R O D E L E M E N T S ( C R O D )

ELEMENT AXIAL SAFETY TORSIONAL SAFETY ELEMENT AXIAL SAFETY TORSIONAL SAFE

2.2. f06 Package 189


pyNastran Documentation, Release 0.6.0

ID. STRESS MARGIN STRESS MARGIN ID. STRESS MARGIN STRESS MARGIN
14 2.514247E+04 1.758725E+02 15 2.443757E+04 2.924619E+01

getSolidHeader(eType, n, isStrain)
analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 5 (Stress/Strain)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress/Strain)
num_wide = 8 (???)
getSolidStrainHexa()
getSolidStrainPenta()
getSolidStrainTetra()
getSolidStressHexa()
getSolidStressPenta()
getSolidStressTetra()
getTriHeader(isStrain)
analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 5 (Stress)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress)
num_wide = 8 (???)
getTriStrain()
getTriStress()

S T R E S S E S I N T R I A N G U L A R E L E M E N
ELEMENT FIBER STRESSES IN ELEMENT COORD SYSTEM PRIN
ID. DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE
8 -1.250000E-01 -1.303003E+02 1.042750E+04 -1.456123E+02 -89.2100
1.250000E-01 -5.049646E+02 1.005266E+04 -2.132942E+02 -88.8431

analysis_code = 1 (Statics)

190 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

device_code = 1 (Print)
table_code = 5 (Stress)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress)
num_wide = 8 (???)

make_stress_bits(isFiberDistance=False, isMaxShear=True, isStrain=True, isRodOr-


Solid=False)
read3DStress(eType, n)
readBarStress()
ELEMENT SA1 SA2 SA3 SA4 AXIAL SA-MAX SA-MIN M.S.-T
ID. SB1 SB2 SB3 SB4 STRESS SB-MAX SB-MIN M.S.-C
12 0.0 0.0 0.0 0.0 1.020730E+04 1.020730E+04 1.020730E+04 0.0 0.0 0.0 0.0
1.020730E+04 1.020730E+04
readQuadBilinear()
readRodStress()

S T R E S S E S I N R O D E L E M E N T S ( C R O D )

ELEMENT AXIAL SAFETY TORSIONAL SAFETY ELEMENT AXIAL SAFETY TORSIONAL SAFE

ID. STRESS MARGIN STRESS MARGIN ID. STRESS MARGIN STRESS MARGIN
14 2.514247E+04 1.758725E+02 15 2.443757E+04 2.924619E+01

readSolidStrain(eType, n)
readSolidStress(eType, n)
readTriStress(eType)
ELEMENT FIBER STRESSES IN ELEMENT COORD SYSTEM PRINCIPAL STRESSES (ZERO SHE

ID. DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE MAJOR MINOR VON MISES

8 -1.250000E-01 -1.303003E+02 1.042750E+04 -1.456123E+02 -89.2100 1.042951E+04 -1.323082E


1.250000E-01 -5.049646E+02 1.005266E+04 -2.132942E+02 -88.8431
1.005697E+04 -5.092719E+02 1.032103E+04

2.2. f06 Package 191


pyNastran Documentation, Release 0.6.0

oqg Module

pyNastran.f06.tables.oqg.OQG

class pyNastran.f06.tables.oqg.OQG
Bases: object
getMpcForces()
getSpcForces()

oug Module

pyNastran.f06.tables.oug.OUG

class pyNastran.f06.tables.oug.OUG
Bases: object
getComplexDisplacement()

BACKWARD WHIRL

POINT-ID = 101
C O M P L E X D I S P L A C E M E N T V E C
(MAGNITUDE/PHASE)

FREQUENCY TYPE T1 T2 T3 R1
2.000000E+01 G 3.242295E-16 1.630439E-01 1.630439E-01 1.691497E-17
196.0668 90.0000 180.0000 63.4349

table_code = 1 (Displacement)
format_code = 3 (Magnitude/Phase)
sort_bits = [0,1,1] (Sort1,Real/Imaginary,RandomResponse)
analysis_code = 5 (Frequency)

192 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

sort_code = 2 (Random Response)

getDisplacement()
::
DISPLACEMENTVECTOR

POINT ID. TYPE T1 T2 T3 R1 R2 R3 1 G 9.663032E-05 0.0 -2.199001E-04 0.0 -


9.121119E-05 0.0 2 G 0.0 0.0 0.0 0.0 0.0 0.0 3 G 0.0 0.0 0.0 0.0 0.0 0.0

analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 1 (Displacement)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
num_wide = 8 (???)

getTemperatureVector()

LOAD STEP = 1.00000E+00


T E M P E R A T U R E V E C T O R

POINT ID. TYPE ID VALUE ID+1 VALUE ID+2 VALUE ID+3 VALUE
1 S 1.300000E+03 1.300000E+03 1.300000E+03 1.300000E+03 1
7 S 1.300000E+03 1.300000E+03 1.300000E+03 1.300000E+03
analysis_code = 1 (Statics)
device_code = 1 (Print)
table_code = 1 (Displacement/Temperature)
sort_code = 0 (Sort2,Real,Sorted Results) => sort_bits = [0,0,0]
format_code = 1 (Real)
s_code = 0 (Stress)
num_wide = 8 (???)

parseLineTemperature(sline, Format)
readTemperatureTable()

test Package

f06_test Module

f06_unit_tests Module

test_f06 Module

pyNastran.f06.test.test_f06.main()

2.2. f06 Package 193


pyNastran Documentation, Release 0.6.0

pyNastran.f06.test.test_f06.run_arg_parse()
pyNastran.f06.test.test_f06.run_f06(f06file, iSubcases=[], write_f06=True,
printF06=False, debug=False, stopOnFail-
ure=True)
pyNastran.f06.test.test_f06.run_lots_of_files(files, debug=True, save-
Cases=True, skipFiles=[], sto-
pOnFailure=False, nStart=0,
nStop=1000000000)

test_f06 Module

pyNastran.f06.test.test_f06.main()
pyNastran.f06.test.test_f06.run_arg_parse()
pyNastran.f06.test.test_f06.run_f06(f06file, iSubcases=[], write_f06=True,
printF06=False, debug=False, stopOnFail-
ure=True)
pyNastran.f06.test.test_f06.run_lots_of_files(files, debug=True, save-
Cases=True, skipFiles=[], sto-
pOnFailure=False, nStart=0,
nStop=1000000000)

Subpackages

2.3 utils Package

2.3.1 gui_choices Module

Dialog pyNastran.utils.gui_choices.GetChoices

class pyNastran.utils.gui_choices.GetChoices(parent, args=None)


Bases: Dialog
on_cancel(event)
on_ok(event)
on_select_all(event)
pyNastran.utils.gui_choices.bold(obj)

194 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.utils.gui_choices.get_choices(names=None)
pyNastran.utils.gui_choices.get_string_width(name)
pyNastran.utils.gui_choices.main(names)

2.3.2 gui_io Module

pyNastran.utils.gui_io.load_file_dialog(Title, wx_wildcard, qt_wildcard,


dirname=)
pyNastran.utils.gui_io.save_file_dialog(Title, wx_wildcard, qt_wildcard,
dirname=)

2.3.3 log Module

pyNastran.utils.log.SimpleLogger

class pyNastran.utils.log.SimpleLogger(level=debug, log_func=<function


stderr_logging at 0x2377320>)
Bases: object
Simple logger object. In future might be changed to use Python logging module. Two levels are sup-
ported: debug and info. Info level discards debug messages, debug level displays all messages.

Note: Logging module is currently not supported because I dont know how to repoint the log file if
the program is called a second time. Poor logging can result in:
1.double logging to a single file
2.all longging going to one file
This is really only an issue when calling logging multiple times, such as in an optimization loop or
testing.

Parameters
level level of logging: info or debug
log_func funtion that will be used to print log. It should take one argument:
string that is produces by a logger. Default: print messages to stderr using see
stderr_logging() function.

2.3. utils Package 195


pyNastran Documentation, Release 0.6.0

critical(msg)
Log CRITICAL message :param msg: message to be logged
debug(msg)
Log DEBUG message :param msg: message to be logged
error(msg)
Log ERROR message :param msg: message to be logged
exception(msg)
Log EXCEPTION message :param msg: message to be logged
info(msg)
Log INFO message :param msg: message to be logged
msg_typ(typ, msg)
Log message of a given type :param typ: type of a message (e.g. INFO) :param msg: message
to be logged
properties()
Return tuple: line number and filename
simple_msg(msg, typ=None)
Log message directly without any altering. :param msg: message to be looged without any
alteration.
warning(msg)
Log WARNING message :param msg: message to be logged
pyNastran.utils.log.get_logger(log=None, level=debug)
This function is useful as it will instantiate a simpleLogger object if log=None. :param log: a logger
object or None :param level: level of logging: info or debug
pyNastran.utils.log.make_log(display=False)
Creates pyNastran.log file with information about working environment, such as Python version,
platform, architecture, etc. Useful for debugging.
Parameters display do not only create file but also print log information
pyNastran.utils.log.stderr_logging(typ, msg)
Default logging function. Takes a text and outputs to stderr. :param typ: messeage type :param msg:
message to be displayed
Message will have format typ: msg

2.3.4 mathematics Module

2.3.5 __init__ Module

pyNastran.utils.__init__.__object_attr(obj, mode, attr_type)


list object attributes of a given type
pyNastran.utils.__init__.de_obscure(num, debug=False)
Unpacks an obscured positive number...similar to binary, but base 52. A base 52 value takes up a

196 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

fewer characters than a base 10 number which helps to do Mat12345678 when theres an 8 character
limit on variable names.
>>> obscure(35214)
kbn
>>> de_obscure(kbn)
35214

Parameters debug display additional information about conversion process


Returns integer value of shortened version of a number

See Also:
:func: obscure
pyNastran.utils.__init__.get_files_of_type(dirname, extension=.txt, max-
Size=100.0)
Gets the list of all the files with a given extension in the specified directory
Parameters
dirname the directory name
extension list of filetypes to get (default=.txt)
maxSize size in MB for max file size
Returns list of all the files with a given extension in the specified directory
pyNastran.utils.__init__.is_binary(filename)
Return true if the given filename is binary.
Raises IOError if the file cannot be opened.
Returns True if filename is a binary file (contains null byte) and False otherwise.
Based on the idea (..seealso:: http://bytes.com/topic/python/answers/21222-determine-file-type-
binary-text) that file is binary if it contains null.

Warning: this may not work for unicode.

pyNastran.utils.__init__.is_string(value)
pyNastran.utils.__init__.list_print(lst)
Prints a list, numpy array, or numpy matrix in an abbreviated format. Supported element types: None,
string, numbers. Useful for debugging.
Parameters lst list, numpy array or numpy matrix
Returns the clean string representation of the object
pyNastran.utils.__init__.object_attributes(obj, mode=public)
List the names of attributes of a class as strings. Returns public attributes as default.
Parameters

2.3. utils Package 197


pyNastran Documentation, Release 0.6.0

obj the object for checking


mode defines what kind of attributes will be listed * public - names that do
not begin with underscore * private - names that begin with single underscore
* both - private and public * all - all attributes that are defined for the object
Returns sorted list of the names of attributes of a given type or None if the mode is wrong
pyNastran.utils.__init__.object_methods(obj, mode=public)
List the names of methods of a class as strings. Returns public methods as default.
Parameters
obj the object for checking
mode defines what kind of methods will be listed * public - names that do
not begin with underscore * private - names that begin with single underscore
* both - private and public * all - all methods that are defined for the object
Returns sorted list of the names of methods of a given type or None if the mode is wrong
pyNastran.utils.__init__.obscure(num, debug=False)
Takes a large positive number and shrinks it down...similar to binary, but base 52. A base 52 value
takes up a fewer characters than a base 10 number, which helps to do Mat12345678 when theres an
8 character limit on variable names.
>>> obscure(35214)
kbn
>>> de_obscure(kbn)
35214

Parameters
num positive integer number
debug display additional information about conversion process
Returns shortened version of num

pyNastran.utils.__init__.print_bad_path(path)
Prints information about the existence (access possibility) of the parts of the given path. Useful for
debugging when the path to a given file is wrong.
Parameters path path to check
Returns string with informations whether access to parts of the path is possible
pyNastran.utils.__init__.write_array(a, nspaces=0)
pyNastran.utils.__init__.write_class(name, obj, nspaces=0, nbase=0)
pyNastran.utils.__init__.write_dict(obj, nspaces, nbase, isClass)
pyNastran.utils.__init__.write_list(obj, nspaces, nbase, isClass)

198 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.utils.__init__.write_object_attributes(name, obj, nspaces=0,


nbase=0, isClass=True,
debug=False)
Writes a series of nested objects
pyNastran.utils.__init__.write_tuple(obj, nspaces, nbase, isClass)
pyNastran.utils.__init__.write_value(obj, nspaces, nbase=0, isClass=False)

2.3.6 __init__ Module

pyNastran.utils.__init__.__object_attr(obj, mode, attr_type)


list object attributes of a given type
pyNastran.utils.__init__.de_obscure(num, debug=False)
Unpacks an obscured positive number...similar to binary, but base 52. A base 52 value takes up a
fewer characters than a base 10 number which helps to do Mat12345678 when theres an 8 character
limit on variable names.
>>> obscure(35214)
kbn
>>> de_obscure(kbn)
35214

Parameters debug display additional information about conversion process


Returns integer value of shortened version of a number

See Also:
:func: obscure
pyNastran.utils.__init__.get_files_of_type(dirname, extension=.txt, max-
Size=100.0)
Gets the list of all the files with a given extension in the specified directory
Parameters
dirname the directory name
extension list of filetypes to get (default=.txt)
maxSize size in MB for max file size
Returns list of all the files with a given extension in the specified directory
pyNastran.utils.__init__.is_binary(filename)
Return true if the given filename is binary.
Raises IOError if the file cannot be opened.
Returns True if filename is a binary file (contains null byte) and False otherwise.
Based on the idea (..seealso:: http://bytes.com/topic/python/answers/21222-determine-file-type-
binary-text) that file is binary if it contains null.

2.3. utils Package 199


pyNastran Documentation, Release 0.6.0

Warning: this may not work for unicode.

pyNastran.utils.__init__.is_string(value)
pyNastran.utils.__init__.list_print(lst)
Prints a list, numpy array, or numpy matrix in an abbreviated format. Supported element types: None,
string, numbers. Useful for debugging.
Parameters lst list, numpy array or numpy matrix
Returns the clean string representation of the object
pyNastran.utils.__init__.object_attributes(obj, mode=public)
List the names of attributes of a class as strings. Returns public attributes as default.
Parameters
obj the object for checking
mode defines what kind of attributes will be listed * public - names that do
not begin with underscore * private - names that begin with single underscore
* both - private and public * all - all attributes that are defined for the object
Returns sorted list of the names of attributes of a given type or None if the mode is wrong
pyNastran.utils.__init__.object_methods(obj, mode=public)
List the names of methods of a class as strings. Returns public methods as default.
Parameters
obj the object for checking
mode defines what kind of methods will be listed * public - names that do
not begin with underscore * private - names that begin with single underscore
* both - private and public * all - all methods that are defined for the object
Returns sorted list of the names of methods of a given type or None if the mode is wrong
pyNastran.utils.__init__.obscure(num, debug=False)
Takes a large positive number and shrinks it down...similar to binary, but base 52. A base 52 value
takes up a fewer characters than a base 10 number, which helps to do Mat12345678 when theres an
8 character limit on variable names.
>>> obscure(35214)
kbn
>>> de_obscure(kbn)
35214

Parameters
num positive integer number
debug display additional information about conversion process
Returns shortened version of num

200 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.utils.__init__.print_bad_path(path)
Prints information about the existence (access possibility) of the parts of the given path. Useful for
debugging when the path to a given file is wrong.
Parameters path path to check
Returns string with informations whether access to parts of the path is possible
pyNastran.utils.__init__.write_array(a, nspaces=0)
pyNastran.utils.__init__.write_class(name, obj, nspaces=0, nbase=0)
pyNastran.utils.__init__.write_dict(obj, nspaces, nbase, isClass)
pyNastran.utils.__init__.write_list(obj, nspaces, nbase, isClass)
pyNastran.utils.__init__.write_object_attributes(name, obj, nspaces=0,
nbase=0, isClass=True,
debug=False)
Writes a series of nested objects
pyNastran.utils.__init__.write_tuple(obj, nspaces, nbase, isClass)
pyNastran.utils.__init__.write_value(obj, nspaces, nbase=0, isClass=False)

2.3.7 Subpackages

test Package

test_utils Module

pyNastran.utils.test.test_utils.A pyNastran.utils.test.test_utils.B

unittest.case.TestCase pyNastran.utils.test.test_utils.TestUtils

class pyNastran.utils.test.test_utils.A
Bases: object
_getA()
getA()
class pyNastran.utils.test.test_utils.B(b)
Bases: pyNastran.utils.test.test_utils.A
_getB()
c=7

2.3. utils Package 201


pyNastran Documentation, Release 0.6.0

getB()
class pyNastran.utils.test.test_utils.TestUtils(methodName=runTest)
Bases: unittest.case.TestCase
Create an instance of the class that will use the named test method when executed. Raises a ValueError
if the instance does not have a method with the specified name.
setUp()
test_is_binary()
test_list_print()
test_object_attributes_introspection()
test_object_attributes_introspection_2()
test_object_attributes_introspection_3(*args, **kwargs)
test_object_methods_introspection()
test_obscure()

2.4 op2 Package

2.4.1 fortranFile Module

pyNastran.op2.fortranFile.FortranFile

class pyNastran.op2.fortranFile.FortranFile
Bases: object
endian = None
the endian of the processor (typically < for Windows/Linux/Mac, > for old HPCs)
currently does nothing
getNMarkers(nMarkers, rewind=False)
Gets the next N markers, verifies theyre correct
get_block_int_entry(data, n)
given a data set, grabs the nth word and casts it as an integer
get_data(n)
Gets a data set of length N

202 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

get_doubles(data)
Unpacks a data set into a series of doubles
get_floats(data)
Unpacks a data set into a series of floats
get_floats2(data, endian)
Unpacks a data set into a series of floats
get_ints(data)
Unpacks a data set into a series of ints
get_ints2(data, endian)
Unpacks a data set into a series of ints
get_longs(data)
Unpacks a data set into a series of longs
get_marker(expected=None, debug=True)
get_strings(data)
Unpacks a data set into a series of characters
get_strings2(data, endian)
Unpacks a data set into a series of characters
get_table_code(expected=None, debug=True)
goto(n)
Jumps to position n in the file
Parameters
self the object pointer
n the position to goto

Note: n>0

has_more_tables()
is_table_done(expectedMarkers)
print_block(data, nMax=200)
Prints a data set in int/float/double/string format to determine table info. doesnt move cursor.

Note: this is a great function for debugging

print_block2(data, endian)
Prints a data set in int/float/double/string format to determine table info. This oesnt move the
cursor.

Note: this is a great function for debugging

2.4. op2 Package 203


pyNastran Documentation, Release 0.6.0

print_section(nBytes)
Prints data, but doesnt move the cursor
Parameters
self the object pointer
nBytes the number of bytes to print the data specs on
Returns msg ints/floats/strings of the next nBytes (handles poorly sized nBytes; un-
crashable :) )

Note: this the BEST function when adding new cards/tables/debugging

print_section2(nBytes, endian)
Prints data, but doesnt move the cursor
Parameters
self the object pointer
nBytes the number of bytes to print the data specs on
Returns msg ints/floats/strings of the next nBytes (handles poorly sized nBytes; un-
crashable :) )

Note: this the BEST function when adding new cards/tables/debugging

read_block()
Reads a fortran formatted data block
nWords data1 data2 data3 nWords
read_data(n)
read_double_block()
Reads a fortran formatted block
..note:: assumes that the data is made up of doubles only
read_doubles(nData, debug=True)
Reads a list of nDoubles
Parameters
self the object pointer
nData the number of doubles to read
debug for developer: debug combined with make_op2_debug
read_float_block()
Reads a fortran formatted block

204 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

..note:: assumes that the data is made up of floats only


read_floats(nData, debug=True)
Reads nFloats
read_full_block()
Reads a fortran formatted data block
nWords data1 data2 data3 nWords includes nWords in the output
read_full_int_block()
Reads a fortran formatted data block ..note:: assumes that the data is made up of integers only
nWords data1 data2 data3 nWords includes nWords in the output
read_header(expected=None, debug=True)
A header is defined as (4,i,4), where i is an integer
read_hollerith()
Doesnt really read a hollerith, its an integer of value=528, which corresponds to the length of
iTable=3
read_int_block()
Reads a fortran formatted block
..note:: assumes that the data is made up of integers only
read_ints(nInts, debug=True)
Reads a list of nIntegers
Parameters
self the object pointer
nInts the number of ints to read
debug for developer: debug combined with make_op2_debug
read_marker(expected=None)
read_markers(markers, table_name=None, debug=False, printErrorOnFailure=True)
Reads a set of predefined markers e.g. [-3,1,0] and makes sure it is correct.
A marker (e.g. a -3) is a series of 3 integers [4,-3,4]. Typically 3 markers are put together (e.g.
[-3,1,0]) such that the integers are [4,-3,4, 4,1,4, 4,0,4] to mark important parts of the table.
Markers will increment during table reading, such that the first marker is [-1,1,0], then [-2,1,0],
etc. Tables will end (or really the next table starts) when a [-1,1,0] or a [0,1,0] marker is found.
# Verify the following statement... Occassionally, buffer markers will be embedded inside the
marker [-3,1,0], (e.g. [4,2^16,4] <- the default BUFFSIZE), which make reading the marker
more difficult.
read_string(nData)
Reads nCharacters that are assumed to be a string
read_string_block(debug=True)
Reads a fortran formatted block

2.4. op2 Package 205


pyNastran Documentation, Release 0.6.0

..note:: assumes that the data is made up of characters only


read_table_name(rewind=True, debug=True, stopOnFailure=True)
Peeks into a table to check its name
rewind(n)
Rewinds the file nBytes

Warning: doesnt support a full rewind, only a partial

scan(n)
Same as skip, but actually reads the data instead of using seek
set_endian(endian=u<)
Sets the endian

Todo
hasnt been implemented

skip(n)
Skips nBits
skip_next_table(buffer_size=10000)
Skips a table

Todo
fix bugs

2.4.2 op2 Module

2.4.3 op2Codes Module

pyNastran.op2.op2Codes.Op2Codes

class pyNastran.op2.op2Codes.Op2Codes
Bases: object
code_information()
prints the general table information DMAP - page 60-63

206 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

get_element_type(eCode)
isRandomResponse()
isReal()
isRealImaginaryOrMagnitudePhase()
isRealOrRandom()
isSort2()
isSortedResponse()
isStress()
isThermal()
is_magnitude_phase()
is_real_imaginary()
is_sort1()
print_table_code(table_code)

2.4.4 op2_helper Module

pyNastran.op2.op2_helper.polar_to_real_imag(mag, phase)
Converts magnitude-phase to real-imaginary so all complex results are consistent
Parameters
mag magnitude c^2
phase phase angle phi (degrees; theta)
Returns realValue the real component a of a+bi
Returns imagValue the imaginary component b of a+bi
pyNastran.op2.op2_helper.realImagToMagPhase(realImag)
returns the magnitude and phase (degrees) of a complex number

2.4.5 op2_helper Module

pyNastran.op2.op2_helper.polar_to_real_imag(mag, phase)
Converts magnitude-phase to real-imaginary so all complex results are consistent
Parameters
mag magnitude c^2
phase phase angle phi (degrees; theta)
Returns realValue the real component a of a+bi
Returns imagValue the imaginary component b of a+bi

2.4. op2 Package 207


pyNastran Documentation, Release 0.6.0

pyNastran.op2.op2_helper.realImagToMagPhase(realImag)
returns the magnitude and phase (degrees) of a complex number

2.4.6 Subpackages

resultObjects Package

op2_Objects Module

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject

class pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject
Bases: pyNastran.op2.op2Codes.Op2Codes
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
name()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.resultObjects.op2_Objects.ScalarObject(data_code,
isubcase,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject
_append_data_member(varName, valueName)
this appends a data member to a variable that may or may not exist
_apply_data_code()
_get_data_code()
_recast_grid_type(grid_type)
converts a grid_type integer to a string
_set_data_members()
_start_data_member(var_name, value_name)
get_unsteady_value()
get_var(name)
is_imaginary()
is_real()
print_data_members()
Prints out the unique vals of the case. Uses a provided list of data_code[dataNames] to set
the values for each subcase. Then populates a list of self.name+s (by using setattr) with the
current value. For example, if the variable name is mode, we make self.modes. Then to extract

208 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

the values, we build a list of of the variables that were set like this and then loop over then to
print their values.
This way there is no dependency on one result type having [mode] and another result type
having [mode,eigr,eigi].
set_var(name, value)
update_data_code(data_code)
update_dt(data_code, dt)
this method is called if the object already exits and a new time step is found

tableObject Module

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.ComplexTableObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.TableObject

class pyNastran.op2.resultObjects.tableObject.BaseTable
Bases: object
_finalize()
_get_headers()
_get_shape()
_increase_size(dt, nnodes)
_is_full(nnodes)
_preallocate(dt, nnodes)
get_stats()
class pyNastran.op2.resultObjects.tableObject.ComplexTableObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.BaseTable,
pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_get_float_complex()
_write_f06_block(words, header, pageStamp, f, pageNum=1, is_mag_phase=False)
_write_f06_transient_block(words, header, pageStamp, f, pageNum=1,
is_mag_phase=False)
add_f06_data(data, transient)
is_imaginary()

2.4. op2 Package 209


pyNastran Documentation, Release 0.6.0

is_real()
update_dt(data_code, dt, read_mode)
class pyNastran.op2.resultObjects.tableObject.TableObject(data_code,
is_sort1,
isubcase, dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.BaseTable,
pyNastran.op2.resultObjects.op2_Objects.ScalarObject
ATO_words()
CRM_words()
PSD_words()
RMS_words()
ZERO_words()
_get_float_complex()
_write_f06_block(words, header, pageStamp, f, pageNum=1)
_write_f06_transient_block(words, header, pageStamp, f, pageNum=1)
add_array_f06_data(data, transient)
add_f06_data(data, transient)
get_table_marker()
isATO()
Auto-Correlation Function
isCRM()
Correlated Root-Mean Square
isPSD()
Power Spectral Density
isRMS()
Root-Mean Square
isZERO()
Zero Crossings
is_imaginary()
is_real()

210 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

tables Package

destab Module

pyNastran.op2.tables.destab.DESTAB

class pyNastran.op2.tables.destab.DESTAB
Bases: object
readDesvar(data)
readTable_DesTab()

ept Module

mpt Module

pyNastran.op2.tables.mpt.MPT

class pyNastran.op2.tables.mpt.MPT
Bases: object
addOp2Material(mat)
readCREEP(data)
CREEP(1003,10,245) - record 1
readMAT1(data)
MAT1(103,1,77) - record 2
readMAT10(data)
MAT10(2801,28,365) - record 9
readMAT2(data)
MAT2(203,2,78) - record 3
readMAT3(data)
MAT3(1403,14,122) - record 4

2.4. op2 Package 211


pyNastran Documentation, Release 0.6.0

readMAT4(data)
MAT4(2103,21,234) - record 5
readMAT5(data)
MAT5(2203,22,235) - record 6
readMAT8(data)
MAT8(2503,25,288) - record 7
readMAT9(data)
MAT9(2603,26,300) - record 9 .. todo:: buggy
readMATHP(data)
MATHP(4506,45,374) - Record 11
readMATS1(data)
MATS1(503,5,90) - record 12
readMATT1(data)
readMATT2(data)
readMATT3(data)
readMATT4(data)
readMATT5(data)
readMATT9(data)
readNLPARM(data)
NLPARM(3003,30,286) - record 27
readNLPCI(data)
readRADM(data)
RADM(8802,88,413) - record 25 .. todo:: add object
readTSTEPNL(data)
TSTEPNL(3103,31,337) - record 29
readTable_MPTS()

r1tab Module

pyNastran.op2.tables.r1tab.R1TAB

class pyNastran.op2.tables.r1tab.R1TAB
Bases: object

212 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

readTable_R1TAB()

resultTable Module

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStressStrain pyNastran.op2.tables.r1tab.R1TAB

pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexElementsStressStrain pyNastran.op2.tables.oes_stressStrain.oes.OES

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsStressStrain2 pyNastran.op2.tables.lama_eigenvalues.lama.LAMA

pyNastran.op2.tables.ogf_gridPointForces.ogf.OGF

pyNastran.op2.tables.oee_energy.oee.OEE
pyNastran.op2.tables.resultTable.ResultTable
pyNastran.op2.tables.oqg_constraintForces.oqg.OQG

pyNastran.op2.tables.oef_forces.complexForces.ComplexForces pyNastran.op2.tables.oug.oug.OUG

pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements pyNastran.op2.tables.oef_forces.oef.OEF

pyNastran.op2.tables.oef_forces.realForces.RealForces pyNastran.op2.tables.opg_appliedLoads.opg.OPG

pyNastran.op2.tables.destab.DESTAB

class pyNastran.op2.tables.resultTable.ResultTable
Bases: pyNastran.op2.tables.oqg_constraintForces.oqg.OQG,
pyNastran.op2.tables.oug.oug.OUG, pyNastran.op2.tables.oef_forces.oef.OEF,
pyNastran.op2.tables.opg_appliedLoads.opg.OPG, pyNastran.op2.tables.oes_stressSt
pyNastran.op2.tables.oee_energy.oee.OEE, pyNastran.op2.tables.ogf_gridPointForce
pyNastran.op2.tables.r1tab.R1TAB, pyNastran.op2.tables.destab.DESTAB,
pyNastran.op2.tables.lama_eigenvalues.lama.LAMA
_add_data_parameter(data, name, Type, field_num, applyNonlinearFactor=True, fixDe-
viceCode=False)
Extracts the binary value and adds it to the self.data_code dictionary.
Parameters
data the binary stream
name the name of the parameter
Type the type of the value i=integer, f=float, ssss=string
field_num the field where the parameter is located
applyNonlinearFactor this parameter is the major nonlinear parameter
(e.g. time, frequency, mode) and will be applied to self.nonlinear_factor; de-
fault=True (only 1 per nonlinear subcase)
fixDeviceCode removes the device_code from the parameter (e.g. eid = 201
-> 20); default=False
>>> self.mode = self.get_values(data,i,5) ## mode number
>>>

_apply_data_code_value(name, value)
_set_null_nonlinear_factor()

2.4. op2 Package 213


pyNastran Documentation, Release 0.6.0

createThermalTransientObject(resultName, objClass, is_sort1)


create_transient_object(storageObj, classObj, debug=False)
Creates a transient object (or None if the subcase should be skippied).
Parameters
storageObj the dictionary to store the object in (e.g. self.bars)
classObj the class object to instantiate
debug developer debug

Note: dt can also be load_step depending on the class

extractSort1(eidDevice, dt)
extractSort2(timeFreq, eid)
handle_results_buffer(func, resultName, name, debug=False)
Method for getting results without recursion, which for large OP2s is necessary to prevent going
past the recursion limit.
Works by knowing that:
the end of an unbuffered table has a: - [4]
the end of an table with a buffer has a: - [4,4,x,4] where x is the next buffer size, which may
have another
buffer
the end of the final buffer block has - nothing!

Parameters
self the object pointer
func the function to recursively call (the function that called this)
result_name the name of the result object the output will go to
name the unique name of the case, which will indicate to the user what data
is being saved using a GUI
debug developer debug

Note: The code knows that the large buffer is the default size and the only way there will be
a smaller buffer is if there are no more buffers. So, the op2 is shifted by 1 word (4 bytes) to
account for this end shift. An extra marker value is read, but no big deal. Beyond that its just
appending some data to the binary string and calling the function thats passed in.
We append the data since we read the first 10.5 blocks of data into memory, but could only
extract the first 10.0 blocks. We take the 0.5 block and combine it with the next set of blocks
until we have no more blocks to read.

214 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Warning: Dont modify this without LOTS of testing. Its a VERY important function

not_implemented_or_skip(msg=u)
stops if code is in development and continues otherwise
readDUMMY_Data()
creates a dummy object and skips the results
readTable4(table4Data, flag, iTable)
loops over repeated table -4s
readTable4DataSetup(table4Data, iTable)
Checks to see if table 4 is done, loads the data, and handles skipping
readTableA_DUMMY()
reads a dummy geometry table
readTableB_DUMMY()
reads a dummy results table
readTable_DUMMY_3(iTable)
sets dummy parameters
read_results_table(table3, table4Data, flag=0)
updateSort1()
updateSort2()
update_dt_map()
Interfaces with setTransientTimes(times) to limit the amount of output that is in the transient
results. This allows for models with 1000s of time steps that would otherwise crash with memory
errors to run. Every result may be extracted if the OP2 is read multiple times.
While not ideal, this function prevents having to drastically change the code to support large
models, which would make the OP2 reader not as useful for reasonably sized models.
The code works by taking the user-provided array of values for a given subcase and b/c its an
array can be subtracted from the current value of dt. Then the minimum absolute value is found
and that is mapped back to the original value. If a closer value to the target user-specified value
is found, the previous result will be deleted, which keeps memory usage down. The new result
will then be read. If a dt is not closer than an existing value to a given case, that case will not be
read.
pyNastran.op2.tables.resultTable.get_close_num(v1, v2, closePoint)

2.4. op2 Package 215


pyNastran Documentation, Release 0.6.0

resultTable Module

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStressStrain pyNastran.op2.tables.r1tab.R1TAB

pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexElementsStressStrain pyNastran.op2.tables.oes_stressStrain.oes.OES

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsStressStrain2 pyNastran.op2.tables.lama_eigenvalues.lama.LAMA

pyNastran.op2.tables.ogf_gridPointForces.ogf.OGF

pyNastran.op2.tables.oee_energy.oee.OEE
pyNastran.op2.tables.resultTable.ResultTable
pyNastran.op2.tables.oqg_constraintForces.oqg.OQG

pyNastran.op2.tables.oef_forces.complexForces.ComplexForces pyNastran.op2.tables.oug.oug.OUG

pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements pyNastran.op2.tables.oef_forces.oef.OEF

pyNastran.op2.tables.oef_forces.realForces.RealForces pyNastran.op2.tables.opg_appliedLoads.opg.OPG

pyNastran.op2.tables.destab.DESTAB

class pyNastran.op2.tables.resultTable.ResultTable
Bases: pyNastran.op2.tables.oqg_constraintForces.oqg.OQG,
pyNastran.op2.tables.oug.oug.OUG, pyNastran.op2.tables.oef_forces.oef.OEF,
pyNastran.op2.tables.opg_appliedLoads.opg.OPG, pyNastran.op2.tables.oes_stressSt
pyNastran.op2.tables.oee_energy.oee.OEE, pyNastran.op2.tables.ogf_gridPointForce
pyNastran.op2.tables.r1tab.R1TAB, pyNastran.op2.tables.destab.DESTAB,
pyNastran.op2.tables.lama_eigenvalues.lama.LAMA
_add_data_parameter(data, name, Type, field_num, applyNonlinearFactor=True, fixDe-
viceCode=False)
Extracts the binary value and adds it to the self.data_code dictionary.
Parameters
data the binary stream
name the name of the parameter
Type the type of the value i=integer, f=float, ssss=string
field_num the field where the parameter is located
applyNonlinearFactor this parameter is the major nonlinear parameter
(e.g. time, frequency, mode) and will be applied to self.nonlinear_factor; de-
fault=True (only 1 per nonlinear subcase)
fixDeviceCode removes the device_code from the parameter (e.g. eid = 201
-> 20); default=False
>>> self.mode = self.get_values(data,i,5) ## mode number
>>>

_apply_data_code_value(name, value)
_set_null_nonlinear_factor()
createThermalTransientObject(resultName, objClass, is_sort1)

216 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

create_transient_object(storageObj, classObj, debug=False)


Creates a transient object (or None if the subcase should be skippied).
Parameters
storageObj the dictionary to store the object in (e.g. self.bars)
classObj the class object to instantiate
debug developer debug

Note: dt can also be load_step depending on the class

extractSort1(eidDevice, dt)
extractSort2(timeFreq, eid)
handle_results_buffer(func, resultName, name, debug=False)
Method for getting results without recursion, which for large OP2s is necessary to prevent going
past the recursion limit.
Works by knowing that:
the end of an unbuffered table has a: - [4]
the end of an table with a buffer has a: - [4,4,x,4] where x is the next buffer size, which may
have another
buffer
the end of the final buffer block has - nothing!

Parameters
self the object pointer
func the function to recursively call (the function that called this)
result_name the name of the result object the output will go to
name the unique name of the case, which will indicate to the user what data
is being saved using a GUI
debug developer debug

Note: The code knows that the large buffer is the default size and the only way there will be
a smaller buffer is if there are no more buffers. So, the op2 is shifted by 1 word (4 bytes) to
account for this end shift. An extra marker value is read, but no big deal. Beyond that its just
appending some data to the binary string and calling the function thats passed in.
We append the data since we read the first 10.5 blocks of data into memory, but could only
extract the first 10.0 blocks. We take the 0.5 block and combine it with the next set of blocks
until we have no more blocks to read.

2.4. op2 Package 217


pyNastran Documentation, Release 0.6.0

Warning: Dont modify this without LOTS of testing. Its a VERY important function

not_implemented_or_skip(msg=u)
stops if code is in development and continues otherwise
readDUMMY_Data()
creates a dummy object and skips the results
readTable4(table4Data, flag, iTable)
loops over repeated table -4s
readTable4DataSetup(table4Data, iTable)
Checks to see if table 4 is done, loads the data, and handles skipping
readTableA_DUMMY()
reads a dummy geometry table
readTableB_DUMMY()
reads a dummy results table
readTable_DUMMY_3(iTable)
sets dummy parameters
read_results_table(table3, table4Data, flag=0)
updateSort1()
updateSort2()
update_dt_map()
Interfaces with setTransientTimes(times) to limit the amount of output that is in the transient
results. This allows for models with 1000s of time steps that would otherwise crash with memory
errors to run. Every result may be extracted if the OP2 is read multiple times.
While not ideal, this function prevents having to drastically change the code to support large
models, which would make the OP2 reader not as useful for reasonably sized models.
The code works by taking the user-provided array of values for a given subcase and b/c its an
array can be subtracted from the current value of dt. Then the minimum absolute value is found
and that is mapped back to the original value. If a closer value to the target user-specified value
is found, the previous result will be deleted, which keeps memory usage down. The new result
will then be read. If a dt is not closer than an existing value to a given case, that case will not be
read.
pyNastran.op2.tables.resultTable.get_close_num(v1, v2, closePoint)

Subpackages

geom Package

218 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.geom.dit.DIT

dit Module
class pyNastran.op2.tables.geom.dit.DIT
Bases: object
readGust(data)
GUST(1005,10,174) - the marker for Record 1
readTable1(func, data)
readTable2(func, data)
readTable3(func, data)
readTableD1(data)
TABLED1(1105,11,133) - the marker for Record 4
readTableD2(data)
TABLED2(1205,12,134) - the marker for Record 5
readTableD3(data)
TABLED3(1305,13,140) - the marker for Record 6
readTableM1(data)
TABLEM1(105,1,93) - the marker for Record 9
readTableM2(data)
TABLEM2(205,2,94) - the marker for Record 10
readTableM3(data)
TABLEM3(305,3,95) - the marker for Record 11
readTableM4(data)
TABLEM4(405,4,96) - the marker for Record 12
readTable_DIT()

pyNastran.op2.tables.geom.dynamics.DYNAMICS

dynamics Module
class pyNastran.op2.tables.geom.dynamics.DYNAMICS
Bases: object

2.4. op2 Package 219


pyNastran Documentation, Release 0.6.0

readDArea(data)
DAREA(27,17,182) - the marker for Record 2
readDLoad(data)
DLOAD(57,5,123) - Record 4
readDPhase(data)
DPHASE(77,19,184) - Record 5
readDelay(data)
DELAY(37,18,183) - Record 3
readEPoint(data)
EPOINT(707,7,124) - Record 12
readEigb(data)
EIGB(107,1,86) - Record 7
readEigc(data)
EIGC(207,2,87) - Record 8
readEigp(data)
EIGP(257,4,158) - Record 9
readEigr(data)
EIGR(307,3,85) - Record 10
readEigrl(data)
EIGRL(308,8,348) - Record 11
readFreq(data)
FREQ(1307,13,126) - Record 13
readFreq1(data)
FREQ1(1007,10,125) - Record 14
readFreq2(data)
FREQ2(1107,11,166) - Record 15
readFreq3(data)
FREQ3(1407,14,39) - Record 16
readFreq4(data)
FREQ4(1507,15,40) - Record 17
readFreq5(data)
FREQ5(1607,16,41) - Record 18
readRLoad1(data)
RLOAD1(5107,51,131) - Record 26
readRLoad2(data)
RLOAD2(5107,51,131) - Record 27
readTLoad1(data)
TLOAD1(7107,71,138) - Record 37

220 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

readTLoad2(data)
TLOAD2(7207,72,139) - Record 37
readTStep(data)
TSTEP(8307,83,142) - Record 38
readTable_DYNAMICS()

pyNastran.op2.tables.geom.geom1.Geometry1

geom1 Module
class pyNastran.op2.tables.geom.geom1.Geometry1
Bases: object
readCord1C(data)
(1701,17,6) - the marker for Record 1
readCord1R(data)
(1801,18,5) - the marker for Record 2
readCord1S(data)
(1901,19,7) - the marker for Record 3
readCord2C(data)
(2001,20,9) - the marker for Record 4
readCord2R(data)
(2101,21,8) - the marker for Record 5
readCord2S(data)
(2201,22,10) - the marker for Record 6
readCord3G(data)
(14301,143,651) - the marker for Record 7 .. todo:: isnt this a CORD3G, not a CORD3R ???
readGrid(data)
(4501,45,1) - the marker for Record 17
readSEQGP(data)
(5301,53,4) - the marker for Record 27
readTable_Geom1()
readTable_Geom1N()
readTable_Geom1S()

geom2 Module

2.4. op2 Package 221


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.geom.geom3.Geometry3

geom3 Module
class pyNastran.op2.tables.geom.geom3.Geometry3
Bases: object
readFORCE(data)
FORCE(4201,42,18) - the marker for Record 3
readFORCE1(data)
FORCE1(4001,40,20) - the marker for Record 4
readFORCE2(data)
FORCE2(4101,41,22) - the marker for Record 5
readGRAV(data)
GRAV(4401,44,26) - the marker for Record 7
readLOAD(data)
(4551, 61, 84) - the marker for Record 8 .. todo:: add object
readLOADCYH(data)
readLSEQ(data)
readMOMENT(data)
MOMENT(4801,48,19) - the marker for Record 13
readMOMENT1(data)
MOMENT1(4601,46,21) - the marker for Record 14
readMOMENT2(data)
MOMENT2(4701,47,23) - the marker for Record 15
readPLOAD(data)
readPLOAD1(data)
PLOAD2(6802,68,199) - the marker for Record 17
readPLOAD2(data)
PLOAD2(6802,68,199) - the marker for Record 18
readPLOAD3(data)
PLOAD3(7109,71,255) - the marker for Record 19
readPLOAD4(data)
PLOAD4(7209,72,299) - the marker for Record 20
readPLOADX1(data)

222 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

readQBDY1(data)
QBDY1(4509,45,239) - the marker for Record 24
readQBDY2(data)
QBDY2(4909,49,240) - the marker for Record 25
readQBDY3(data)
QBDY3(2109,21,414) - the marker for Record 26
readRFORCE(data)
readSLOAD(data)
readTEMP(data)
TEMP(5701,57,27) - the marker for Record 32 .. warning:: buggy
readTEMPD(data)
TEMPD(5641,65,98) - the marker for Record 33 .. todo:: add object
readTEMPP1(data)
readTEMPP2(data)
readTEMPP3(data)
readTEMPRB(data)
readTable_Geom3()
readTable_Geom3S()

pyNastran.op2.tables.geom.geom4.Geometry4

geom4 Module
class pyNastran.op2.tables.geom.geom4.Geometry4
Bases: object
readASET(data)
ASET(5561,76,215) - Record 1
readASET1(data)
ASET1(5571,77,216) - Record 2
readBNDGRID(data)
BNDGRID(10200,102,473) - Record 3
readCYAX(data)
CYAX(1510,15,328) - Record 8

2.4. op2 Package 223


pyNastran Documentation, Release 0.6.0

readCYJOIN(data)
CYJOIN(5210,52,257) - Record 9
readCYSYM(data)
CYSYM(1710,17,330) - Record 11
readMPC(data)
MPC(4901,49,17) - Record 16
readMPCADD(data)
MPCADD(4891,60,83) - Record 17
readOMIT1(data)
OMIT1(4951,63,92) - Record 19
readQSET1(data)
QSET1(610, 6, 316) - Record 21
readRBAR(data)
RBAR(6601,66,292) - Record 22
readRBE1(data)
RBE1(6801,68,294) - Record 23
readRBE2(data)
RBE2(6901,69,295) - Record 24
readRBE3(data)
RBE3(7101,71,187) - Record 25
readRROD(data)
RROD(6501,65,291) - Record 30
readRSPLINE(data)
RSPLINE(7001,70,186) - Record 31
readRSSCON(data)
RSSCON(7201,72,398) - Record 32
readSEQSET1(data)
SEQSET1(1210,12,322) - Record 40
readSPC(data)
SPC(5501,55,16) - Record 44
readSPC1(data)
SPC1(5481,58,12) - Record 45
readSPCADD(data)
SPCADD(5491,59,13) - Record 46
readSPCD(data)
SPCD(5110,51,256) - Record 47
readSPCDE(data)
readSPCDF(data)

224 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

readSPCDG(data)
readSPCE(data)
readSPCEB(data)
readSPCF(data)
readSPCFB(data)
readSPCGB(data)
readSUPORT(data)
SUPORT(5601,56, 14) - Record 59
readSUPORT1(data)
SUPORT1(10100,101,472) - Record 60
readTable_Geom4()
readTable_Geom4S()
readUSET(data)
readUSET1(data)

geometryTables Module

lama_eigenvalues Package

pyNastran.op2.tables.lama_eigenvalues.lama.LAMA

lama Module
class pyNastran.op2.tables.lama_eigenvalues.lama.LAMA
Bases: object
readTable_LAMA()
readTable_LAMA_3(iTable)
readTable_LAMA_4(iTable)

pyNastran.op2.tables.lama_eigenvalues.lama_objects.ComplexEigenvalues
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject
pyNastran.op2.tables.lama_eigenvalues.lama_objects.RealEigenvalues

2.4. op2 Package 225


pyNastran Documentation, Release 0.6.0

lama_objects Module
class pyNastran.op2.tables.lama_eigenvalues.lama_objects.ComplexEigenvalues(isubcase)
Bases: pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject
addF06Line(data)
add_f06_data(data)
get_stats()
isComplex()
isReal()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.lama_eigenvalues.lama_objects.RealEigenvalues(isubcase)
Bases: pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject
addF06Line(data)
add_f06_data(data)
get_stats()
isComplex()
isReal()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f=None, is_mag_phase=False)

oee_energy Package

pyNastran.op2.tables.oee_energy.oee.OEE

oee Module
class pyNastran.op2.tables.oee_energy.oee.OEE
Bases: object
Table of energy
OEE_Strain4(name)
OEE_Strain5(name)
_delete_attributes_OEE()
readTable_OEE()
read_OEE_data()

226 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

read_strain_energy_table_18()
read_table_OEE_3(iTable)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oee_energy.oee_objects.StrainEnergyObject

oee_objects Module
class pyNastran.op2.tables.oee_energy.oee_objects.StrainEnergyObject(data_code,
is_sort1,
isub-
case,
dt=None,
read_mode=0)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
E L E M E N T S T R A I N E N E R G I E S

ELEMENT-TYPE = QUAD4 * TOTAL ENERGY OF ALL ELEMENTS IN PROBLEM = 9.817708E+


SUBCASE 1 * TOTAL ENERGY OF ALL ELEMENTS IN SET 1 = 4.192036E+

ELEMENT-ID STRAIN-ENERGY PERCENT OF TOTAL STRAIN-ENERGY-DENSITY


12 2.291087E+07 2.3336 2.291087E+02
13 1.582968E+07 1.6124 1.055312E+02
14 6.576075E+07 6.6982 3.288037E+02

add(dt, out)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, out)
delete_transient(dt)
get_stats()
get_transients()
update_dt(data_code, dt)
this method is called if the object already exits and a new time step is found

oef_forces Package

2.4. op2 Package 227


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.oef_forces.complexForces.ComplexForces

complexForces Module

class pyNastran.op2.tables.oef_forces.complexForces.ComplexForces
Bases: object
OEF_Beam_alt(name)
OEF_Bend_alt(name)
OEF_CBar_alt(name)
OEF_CBush_alt(name)
OEF_CVisc_alt(name)
OEF_Force_VUTRIA_alt(name)
OEF_Force_VU_alt(name)
OEF_PentaPressure_alt(name)
OEF_Plate2_alt(name)
OEF_Plate_alt(name)
OEF_Rod_alt(name)
OEF_Shear_alt(name)
OEF_Spring_alt(name)

pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements

pyNastran.op2.tables.oef_forces.realForces.RealForces pyNastran.op2.tables.oef_forces.oef.OEF

pyNastran.op2.tables.oef_forces.complexForces.ComplexForces

oef Module
class pyNastran.op2.tables.oef_forces.oef.OEF
Bases: pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements,
pyNastran.op2.tables.oef_forces.realForces.RealForces,
pyNastran.op2.tables.oef_forces.complexForces.ComplexForces
Table of element forces

228 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

OEF_ForceCode()
Gets the numwide codes for the element to determine if the real or complex result should be
found. The format and sort codes do not always give the right answer...
_delete_attributes_OEF()
readTable_OEF()
read_OEF_data()
OEF1X - DOEF1 -
read_OEF_data_table4()
read_OEF_forces()
read_table_OEF_3(iTable)

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexSpringForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexForce_VU_2D

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBarForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPlate2Force

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexDamperForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexRodForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPlateForce
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject
pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexBendForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCShearForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexViscForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBushForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexForce_VU

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBeamForce

pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPentaPressureForce

oef_complexForceObjects Module
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexBendForce(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, nidA, bm1A, bm2A, sp1A, sp2A, axialA, torqueA, nidB, bm1B, bm2B,
sp1B, sp2B, axialB, torqueB)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

2.4. op2 Package 229


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBarForce(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBeamForce(data_co
is_sort1
isub-
case,
dt,
read_m
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillNewObject(dt, eid, nid, sd, bm1, bm2, ts1, ts2, af, ttrq, wtrq)
_fillObject(dt, eid, nid, sd, bm1, bm2, ts1, ts2, af, ttrq, wtrq)
add(dt, data)
addNewElement(dt, data)
addNewElementSort1(dt, data)
addNewElementSort2(eid, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCBushForce(data_co
is_sort1
isub-
case,
dt,
read_m
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject

230 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexCShearForce(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, f41, f21, f12, f32, f23, f43, f34, f14, kf1, s12, kf2, s23, kf3, s34, kf4,
s41)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexDamperForce(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexForce_VU(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nNodes, dt, data)

2.4. op2 Package 231


pyNastran Documentation, Release 0.6.0

addSort2(nNodes, eid, data)


add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexForce_VU_2D(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, parent, coord, icord, theta, forces)
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPentaPressureFor

Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPlate2Force(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(eid, dt, data)

232 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

addNewElement(eid, dt, data)


addNewElementSort1(eid, dt, data)
addNewElementSort2(dt, eid, data)
addSort2(dt, eid, data)
add_new_transient(dt)
add_sort1(eid, dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexPlateForce(data_co
is_sort1
isub-
case,
dt,
read_m
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexRodForce(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexSpringForce(data_
is_sor
isub-
case,
dt,
read_

2.4. op2 Package 233


pyNastran Documentation, Release 0.6.0

Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_complexForceObjects.ComplexViscForce(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealRodForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBeamForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCGapForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealBendForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPlate2Force

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBushForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealForce_VU

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealForce_VU_2D

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPentaPressureForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealDamperForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBarForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPlateForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealViscForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealSpringForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBar100Force

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealConeAxForce

pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCShearForce

oef_forceObjects Module

234 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealBendForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, nidA, bm1A, bm2A, sp1A, sp2A, axialA, torqueA, nidB, bm1B, bm2B,
sp1B, sp2B, axialB, torqueB)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBar100Force(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBarForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_get_shape()
_increase_size(dt, nelements)
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)

2.4. op2 Package 235


pyNastran Documentation, Release 0.6.0

add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBeamForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, nid, sd, bm1, bm2, ts1, ts2, af, ttrq, wtrq)
_fillObjectNew(dt, eid, nid, sd, bm1, bm2, ts1, ts2, af, ttrq, wtrq)
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addNewElement(dt, data)
addNewElementSort1(dt, data)
addNewElementSort2(eid, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCBushForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

236 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCGapForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealCShearForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, f41, f21, f12, f32, f23, f43, f34, f14, kf1, s12, kf2, s23, kf3, s34, kf4,
s41)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealConeAxForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

2.4. op2 Package 237


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealDamperForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealForce_VU(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealForce_VU_2D(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_fillObject(dt, eid, parent, coord, icord, theta, forces)
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)

238 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPentaPressureForce(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPlate2Force(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(eid, dt, data)
addNewElement(eid, dt, data)
addNewElementSort1(eid, dt, data)
addNewElementSort2(dt, eid, data)
addSort2(dt, eid, data)
add_new_transient(dt)
add_sort1(eid, dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealPlateForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)

2.4. op2 Package 239


pyNastran Documentation, Release 0.6.0

addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealRodForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealSpringForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oef_forces.oef_forceObjects.RealViscForce(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)

240 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

oef_Objects Module

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VU_3D

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VU

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_1D

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VUBEAM

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_CONV

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_CHBDYx

pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_2D_3D

oef_thermalObjects Module
class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_1D(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_2D_3D(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()

2.4. op2 Package 241


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_CHBDYx(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_CONV(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(dt, data)
addSort2(eid, data)
add_new_transient(dt)
add_sort1(dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VU(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()

242 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VUBEAM(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()
class pyNastran.op2.tables.oef_forces.oef_thermalObjects.HeatFlux_VU_3D(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nNodes, dt, data)
addSort2(nNodes, eid, data)
add_new_transient(dt)
add_sort1(nNodes, dt, data)
get_stats()

pyNastran.op2.tables.oef_forces.realForces.RealForces

realForces Module

class pyNastran.op2.tables.oef_forces.realForces.RealForces
Bases: object
OEF_Beam(name)
OEF_Bend(name)
OEF_CBar(name)
OEF_CBar100(name)

2.4. op2 Package 243


pyNastran Documentation, Release 0.6.0

OEF_CBush(name)
OEF_CGap(name)
OEF_CVisc(name)
OEF_ConeAx(name)
OEF_Force_VU(name)
OEF_Force_VUTRIA(name)
OEF_PentaPressure(name)
OEF_Plate(name)
OEF_Plate2(name)
OEF_Rod(name)
OEF_Shear(name)
OEF_Spring(name)
OEF_aCode()
getOEF_FormatStart()
Returns an i or an f depending on if its SORT2 or not. Also returns an extraction function that
is called on the first argument

pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements

thermal_elements Module

class pyNastran.op2.tables.oef_forces.thermal_elements.ThermalElements
Bases: object
OEF_1D(name)
OEF_2D_3D(name)
num_wide==10
OEF_CHBDYx(name)
OEF_CONV(name)
OEF_VUBeam_Element(name)
OEF_VU_3D_Element(name)
OEF_VU_Element(name)

244 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

read_OEF_thermal()

oes_stressStrain Package

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStressStrain

pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexElementsStressStrain pyNastran.op2.tables.oes_stressStrain.oes.OES

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsStressStrain2

oes Module
class pyNastran.op2.tables.oes_stressStrain.oes.OES
Bases: pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElemen
pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexEleme
pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsSt
Table of stresses/strains
OES_StressStrainCode()
Gets the numwide codes for the element to determine if the real / complex / random result should
be found. The format and sort codes do not always give the right answer...
_delete_attributes_OES()
_read_element_table()
makeOES_Object(stress, stressObject, stressName, strain, strainObject, strainName)
Creates a stress/strain object if necessary
parse_stress_code()
s_code = 0 -> stress_bits = [0,0,0,0,0] s_code = 1 -> stress_bits = [0,0,0,0,1] s_code = 2 ->
stress_bits = [0,0,0,1,0] s_code = 3 -> stress_bits = [0,0,0,1,1] etc. s_code = 32 -> stress_bits =
[1,1,1,1,1]
stress_bits[0] = 0 -> isMaxShear=True isVonMises=False stress_bits[0] = 1 -> isMaxS-
hear=False isVonMises=True
stress_bits[1] = 0 -> isStress=True isStrain=False stress_bits[2] = 0 -> isFiberCurvature=True
isFiberDistance=False stress_bits[3] = 0 -> duplicate of Bit[1] (stress/strain) stress_bits[4] = 0
-> material coordinate system flag
readOESRT_Data()
readOES_Data()
readTable_OES()
readTable_OES_3(iTable)
readTable_OES_4_Data(iTable)

2.4. op2 Package 245


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStressStrain pyNastran.op2.tables.oes_stressStrain.oesnlxr.OESNLXR

oesnlxr Module
class pyNastran.op2.tables.oes_stressStrain.oesnlxr.OESNLXR
Bases: pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElemen
Table of stresses/strains
_delete_attributes_OESNLXR()
readOESNLXR_Data_format1_sort0()
readOESNLXR_ElementTable()
readTable_OESNLXR()
readTable_OESNLXR_3(iTable)
readTable_OESNLXR_4_Data(iTable)

pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearQuadObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearRodObject

pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.HyperelasticQuadObject

oes_nonlinear Module
class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.HyperelasticQuadObject(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid_sort1(dt, data)
add_new_transient(dt)
add_sort1(dt, eid, data)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearQuadObject(data_code
is_sort1,
isub-
case,
dt,
read_mode

246 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid_sort1(eType, dt, data)


add_new_transient(dt)
add_sort1(dt, data)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=None)
class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearRodObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_transient(dt)
add_sort1(eType, dt, data)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
ELEMENT-ID = 102
NONLINEARSTRESSESINRODELEMENTS(CROD)

TIME AXIAL STRESS EQUIVALENT TOTAL STRAIN EFF. STRAIN EFF. CREEP LIN. TORSIO
STRESS PLASTIC/NLELAST STRAIN STRESS

2.000E-02 1.941367E+01 1.941367E+01 1.941367E-04 0.0 0.0 0.0 3.000E-02 1.941367E+01


1.941367E+01 1.941367E-04 0.0 0.0 0.0

pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearQuadObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearRodObject

pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.HyperelasticQuadObject

oes_nonlinear Module

2.4. op2 Package 247


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.HyperelasticQuadObject(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid_sort1(dt, data)
add_new_transient(dt)
add_sort1(dt, eid, data)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearQuadObject(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid_sort1(eType, dt, data)


add_new_transient(dt)
add_sort1(dt, data)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=None)
class pyNastran.op2.tables.oes_stressStrain.oes_nonlinear.NonlinearRodObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_transient(dt)
add_sort1(eType, dt, data)

248 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
ELEMENT-ID = 102
NONLINEARSTRESSESINRODELEMENTS(CROD)

TIME AXIAL STRESS EQUIVALENT TOTAL STRAIN EFF. STRAIN EFF. CREEP LIN. TORSIO
STRESS PLASTIC/NLELAST STRAIN STRESS

2.000E-02 1.941367E+01 1.941367E+01 1.941367E-04 0.0 0.0 0.0 3.000E-02 1.941367E+01


1.941367E+01 1.941367E-04 0.0 0.0 0.0

Subpackages

complex Package

pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexElementsStressStrain

elementsStressStrain Module
class pyNastran.op2.tables.oes_stressStrain.complex.elementsStressStrain.ComplexEleme
Bases: object
OES_CBAR_34_alt(name)
OES_CBUSH1D_40_alt(name)
OES_CBUSH_102_alt(name)
OES_CQUAD4NL_90_alt(name)
OES_CQUAD4_144_alt(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR MI-
NOR,VONMISES
OES_CQUAD4_33_alt(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY
OES_CTRIA3_74_alt(name)
DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR,MINOR,VONMISES
stress is extracted at the centroid

2.4. op2 Package 249


pyNastran Documentation, Release 0.6.0

OES_Elas1_alt(name)
genericStressReader - works on CROD_1, CELAS2_12 stress & strain format_code=1
sort_code=1 (eid,axial,axial,torsion,torsion)
OES_Rod1_alt(name)
genericStressReader - works on CROD_1, CELAS2_12 stress & strain format_code=1
sort_code=1 (eid,axial,axial,torsion,torsion)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.complex.oes_bars.ComplexBarStrainObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_bars.ComplexBarStressObject

oes_bars Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_bars.ComplexBarStrainObject(d
is
is
ca
d
re
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# s_code=10 S T R A I N S I N B A R E L E M E N T S ( C B A R )
ELEMENT SA1 SA2 SA3 SA4 AXIAL SA-MAX SA-MIN M.S.-T ID. SB1 SB2 SB3 SB4
STRAIN SB-MAX SB-MIN M.S.-C
_write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, e1a, e2a, e3a, e4a, axial, e1b, e2b, e3b, e4b)
add_new_eid_sort1(eType, dt, eid, e1a, e2a, e3a, e4a, axial, e1b, e2b, e3b, e4b)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()
class pyNastran.op2.tables.oes_stressStrain.complex.oes_bars.ComplexBarStressObject(d
is
is
ca
d
re
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code=0
COMPLEXSTRESSESINBARELEMENTS(CBAR)
(MAGNITUDE/PHASE)

250 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

ELEMENT LOCATION LOCATION LOCATION LOCATION AVERAGE ID. 1 2 3 4


AXIAL STRESS
1 ENDA 9.331276E+04 9.331276E+04 9.331276E+04 9.331276E+04 0.0
180.0000 0.0 0.0 180.0000 0.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


addNewEid100(dt, out)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, s1a, s2a, s3a, s4a, axial, s1b, s2b, s3b, s4b)
add_new_eid_sort1(eType, dt, eid, s1a, s2a, s3a, s4a, axial, s1b, s2b, s3b, s4b)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_bush.ComplexBushStressObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.complex.oes_bush.ComplexBushStrainObject

oes_bush Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_bush.ComplexBushStrainObject(

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# s_code=10 S T R A I N S I N B A R E L E M E N T S ( C B A R )
ELEMENT SA1 SA2 SA3 SA4 AXIAL SA-MAX SA-MIN M.S.-T ID. SB1 SB2 SB3 SB4
STRAIN SB-MAX SB-MIN M.S.-C
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, tx, ty, tz, rx, ry, rz)
add_new_eid_sort1(eType, dt, eid, tx, ty, tz, rx, ry, rz)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)

2.4. op2 Package 251


pyNastran Documentation, Release 0.6.0

get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.complex.oes_bush.ComplexBushStressObject(

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code=0
COMPLEXSTRESSESINBARELEMENTS(CBAR)
(MAGNITUDE/PHASE)

ELEMENT LOCATION LOCATION LOCATION LOCATION AVERAGE ID. 1 2 3 4


AXIAL STRESS
1 ENDA 9.331276E+04 9.331276E+04 9.331276E+04 9.331276E+04 0.0
180.0000 0.0 0.0 180.0000 0.0

_write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)


_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, tx, ty, tz, rx, ry, rz)
add_new_eid_sort1(eType, dt, eid, tx, ty, tz, rx, ry, rz)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_bush1d.ComplexBush1DStressObject

oes_bush1d Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_bush1d.ComplexBush1DStressObj

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code=0

252 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

COMPLEXSTRESSESINBARELEMENTS(CBAR)
(MAGNITUDE/PHASE)

ELEMENT LOCATION LOCATION LOCATION LOCATION AVERAGE ID. 1 2 3 4


AXIAL STRESS
1 ENDA 9.331276E+04 9.331276E+04 9.331276E+04 9.331276E+04 0.0
180.0000 0.0 0.0 180.0000 0.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
add_new_eid(eType, dt, eid, fe, ue, ao, ae)
add_new_eid_sort1(eType, dt, eid, fe, ue, ao, ae)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.complex.oes_plates.ComplexPlateStrainObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_plates.ComplexPlateStressObject

oes_plates Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_plates.ComplexPlateStrainObje

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# ??? - is this just 11
ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIPA
ID. CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

# s_code=11
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIP
ID GRID-ID CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

# s_code=15
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT FIBER STRAINS IN ELEMENT COORD SYSTEM PRINCIPA
ID. DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

2.4. op2 Package 253


pyNastran Documentation, Release 0.6.0

# s_code=10
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIP
ID GRID-ID CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add(dt, eid, nodeID, curvature, exx, eyy, exy)
addNewNode(dt, eid, nodeID, curvature, exx, eyy, exy)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, nodeID, curvature, exx, eyy, exy)
add_new_eid_sort1(eType, dt, eid, nodeID, curvature, exx, eyy, exy)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, nodeID, curvature, exx, eyy, exy)
delete_transient(dt)
getHeaders()
get_stats()
get_transients()
writeF06_Quad4_Bilinear(eid, n, is_mag_phase)
writeF06_Quad4_BilinearTransient(dt, eid, n, is_mag_phase)
writeF06_Tri3(eid, is_mag_phase)
writeF06_Tri3Transient(dt, eid, is_mag_phase)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.complex.oes_plates.ComplexPlateStressObje

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
C O M P L E X S T R E S S E S I N Q U A D R I L A T E R A L E
(REAL/IMAGINARY)

ELEMENT FIBRE - STRESSES IN ELEMENT


ID GRID-ID DISTANCE NORMAL-X NORMA

0 100 CEN/8 -2.500000E-02 0.0 / 0.0 0.0 / 0.0 0.0 / 0.0 2.500000E-02 0.0 / 0.0 0.0 / 0.0 0.0 / 0.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)

254 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

add(dt, eid, nodeID, fd, oxx, oyy, txy)


addNewNode(dt, eid, nodeID, fd, oxx, oyy, txy)
addNewNodeSort1(dt, eid, nodeID, fd, oxx, oyy, txy)
add_f06_data(data, transient)
add_new_eid(eType, dt, eid, nodeID, fd, oxx, oyy, txy)
add_new_eid_sort1(eType, dt, eid, nodeID, fd, oxx, oyy, txy)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, nodeID, fd, oxx, oyy, txy)
delete_transient(dt)
getHeaders()
get_stats()
get_transients()
writeF06_Quad4_Bilinear(eid, n, is_mag_phase)
writeF06_Quad4_BilinearTransient(dt, eid, n, is_mag_phase)
writeF06_Tri3(eid, is_mag_phase)
writeF06_Tri3Transient(dt, eid, is_mag_phase)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodStrainObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodStressObject

pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodDamperObject

oes_rods Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodDamperObject(d
is
is
ca
d
re
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
class pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodStrainObject(d
is
is
ca
d
re
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

_write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

2.4. op2 Package 255


pyNastran Documentation, Release 0.6.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
add_new_eid(dt, eid, out)
add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_transients()
class pyNastran.op2.tables.oes_stressStrain.complex.oes_rods.ComplexRodStressObject(d
is
is
ca
d
re
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

_write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)


_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
add_new_eid(dt, eid, out)
add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
getLength()
get_transients()

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.complex.oes_springs.ComplexCelasStressObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.complex.oes_springs.ComplexCelasStrainObject

oes_springs Module
class pyNastran.op2.tables.oes_stressStrain.complex.oes_springs.ComplexCelasStrainObj

256 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

add_new_eid(dt, eid, strain)


add_new_eid_sort1(dt, eid, strain)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_transients()
class pyNastran.op2.tables.oes_stressStrain.complex.oes_springs.ComplexCelasStressObj

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
S T R E S S E S I N S C A L A R S P R I N G S (
TIME STRESS TIME STRESS TIME STR
0.0 0.0 5.000000E-02 0.0 1.000000E-01 0.0
2.000000E-01 0.0 2.500000E-01 0.0 3.000000E-01 0.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)

Todo
improve formatting

add_new_eid(dt, eid, stress)


add_new_eid_sort1(dt, eid, stress)
add_new_eid_sort2(eid, dt, stress)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

Todo
doesnt write...

2.4. op2 Package 257


pyNastran Documentation, Release 0.6.0

random Package

real Package

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStressStrain

elementsStressStrain Module
class pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain.RealElementsStr
Bases: object
OESRT_CQUAD4_95(name)
OES_CBEAM_94(name)
OES_CBUSH1D_40(name)
OES_CELAS_224_225(name)
OES_CGAPNL_86(name)
OES_CQUAD4NL_90(name)
OES_CQUADR_82(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR MI-
NOR,VONMISES
OES_QUAD4FD_139(name)
Hyperelastic Quad 36+4*7*4 = 148
OES_RODNL_89_92(name)
OES_TETRANL_85_PENTANL_91_CHEXANL_93(name)
The DMAP manual says fields 3-18 repeat 9 times. but they dont. They repeat 8 times. Other
DMAP cards are correct with their repeat statements.
stress is extracted at the centroid CTETRANL_ - 4 nodes CPENTANL_91 - 7 nodes CHEX-
ANL_93 - 9 nodes
OES_Thermal(debug=False)
OES_VUHEXA_145_VUPENTA_146_VUTETRA_147(name)
VUTETRA - 4 nodes VUPENTA 146 - 6 nodes VUHEXA 145 - 8 nodes
OES_VUQUAD_189(name)
OES_field1()
dummyPass(name)
skipOES_Element()

258 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsStressStrain2

elementsStressStrain2 Module
OES_CBUSH_102 - bushStress / bushStrain
CBUSH (102) linear 1 node (centroid)
OES_CELAS_224_225 - nonlinearSpringStress - TODO CELAS1 (224???) nonlinear (centroid)
CELAS2 (???) nonlinear (centroid) CELAS3 (225???) nonlinear (centroid)
class pyNastran.op2.tables.oes_stressStrain.real.elementsStressStrain2.RealElementsSt
Bases: object
OES_CBAR_34(name)
OES_CBEAM_2(name)
OES_CBUSH_102(name)
OES_CQUAD4_144(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR MI-
NOR,VONMISES
OES_CQUAD4_33(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR MI-
NOR,VONMISES
OES_CQUAD4_95(name)
GRID-ID DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR MI-
NOR,VONMISES composite quad
95 - CQUAD4 96 - CQUAD8 97 - CTRIA3 98 - CTRIA6 (composite)
OES_CSOLID_39_67_68(name)
stress is extracted at the centroid self.element_type in [39, 67, 68]: # ctetra/chexa/cpenta (linear)
CTETRA_39 CPENTA_67 CHEXA_68
OES_CTRIA3_74(name)
DISTANCE,NORMAL-X,NORMAL-Y,SHEAR-XY,ANGLE,MAJOR,MINOR,VONMISES
stress is extracted at the centroid
OES_CTRIAX6_53(name)

Todo
not done...

2.4. op2 Package 259


pyNastran Documentation, Release 0.6.0

OES_basicElement(name)
genericStressReader - works on CROD_1, CELAS2_12 stress & strain format_code=1
sort_code=0 (eid,axial,axialMS,torsion,torsionMS)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_bars.BarStressObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_bars.RealBarResults

pyNastran.op2.tables.oes_stressStrain.real.oes_bars.BarStrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_bars Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_bars.BarStrainObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_bars.RealBarResults
# s_code=10
S T R A I N S I N B A R E L E M E N T S
ELEMENT SA1 SA2 SA3 SA4 AXIAL
ID. SB1 SB2 SB3 SB4 STRAIN

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_bars.BarStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_bars.RealBarResults
::
# s_code=0 S T R E S S E S I N B A R E L E M E N T S ( C B A R )
ELEMENT SA1 SA2 SA3 SA4 AXIAL SA-MAX SA-MIN M.S.-T ID. SB1 SB2 SB3 SB4
STRESS SB-MAX SB-MIN M.S.-C
_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
getLength()

260 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)


class pyNastran.op2.tables.oes_stressStrain.real.oes_bars.RealBarResults
Bases: object
_finalize(dt)
_get_shape()
_increase_size(dt, nelements, nnodes)
_increment(nnodes, nelements)
_preallocate(dt, nnodes, nelements)
_write_f06_helper(words, header, pageStamp, f, pageNum)
_write_f06_transient_helper(words, header, pageStamp, f, pageNum=1,
is_mag_phase=False)
get_stats()

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamStressObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamResultsObject

pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamStrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_beams Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamResultsObject
Bases: object
_finalize(dt)
_get_shape()
_increase_size(dt, nelements, nnodes)
_increment(nnodes, nelements)
_preallocate(dt, nnodes, nelements)
getLength1()
getLength2()
getLengthTotal()
get_stats()
class pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamStrainObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamResultsObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

_get_headers()

2.4. op2 Package 261


pyNastran Documentation, Release 0.6.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_beams.BeamResultsObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
[1,0,0]
S T R E S S E S I N B E A M E L E M E N T S ( C B E A M )
STAT DIST/
ELEMENT-ID GRID LENGTH SXC SXD SXE SXF
1 1 0.000 -3.125000E+04 -3.125000E+04 -3.125000E+04 -3.125000E+04 -3
2 1.000 -3.125000E+04 -3.125000E+04 -3.125000E+04 -3.125000E+04 -3

_BeamStressObject__write_f06_transient(header, pageStamp, f, pageNum=1,


is_mag_phase=False)
_get_headers()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_bush.BushStrainObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_bush.RealBushResults

pyNastran.op2.tables.oes_stressStrain.real.oes_bush.BushStressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

oes_bush Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_bush.BushStrainObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_bush.RealBushResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_bush.BushStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_bush.RealBushResults,

262 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_bush.RealBushResults
Bases: object
_finalize(dt)
_get_shape()
_increase_size(dt, nelements)
_increment(nelements)
_preallocate(dt, nelements)
_write_f06_helper(words, pageStamp, f, pageNum, is_mag_phase)
_write_f06_transient_helper(words, header, pageStamp, f, pageNum,
is_mag_phase)
get_stats()
get_transients()
is_imaginary()
is_real()

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.real.oes_bush1d.Bush1DStressObject

oes_bush1d Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_bush1d.Bush1DStressObject(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code=0
COMPLEXSTRESSESINBARELEMENTS(CBAR)
(MAGNITUDE/PHASE)

ELEMENT LOCATION LOCATION LOCATION LOCATION AVERAGE ID. 1 2 3 4


AXIAL STRESS
1 ENDA 9.331276E+04 9.331276E+04 9.331276E+04 9.331276E+04 0.0
180.0000 0.0 0.0 180.0000 0.0

2.4. op2 Package 263


pyNastran Documentation, Release 0.6.0

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
add_new_eid(eType, dt, eid, fe, ue, ve, ao, ae, ep, fail)
add_new_eid_sort1(eType, dt, eid, fe, ue, ve, ao, ae, ep, fail)
add_new_transient(dt)
initializes the transient variables
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.CompositePlateStressObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.RealCompositePlate

pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.CompositePlateStrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_compositePlates Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.CompositePlateSt

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.RealComposi
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
:: ??? ELEMENT PLY STRESSES IN FIBER AND MATRIX DIRECTIONS INTER-LAMINAR
STRESSES PRINCIPAL STRESSES (ZERO SHEAR) MAX
ID ID NORMAL-1 NORMAL-2 SHEAR-12 SHEAR XZ-MAT SHEAR YZ-MAT
ANGLE MAJOR MINOR SHEAR
_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, eid, e11, e22, e12, e1z, e2z, angle, majorP, minorP, evm)
add_new_eid(eType, dt, eid, e11, e22, e12, e1z, e2z, angle, majorP, minorP, evm)
all points are located at the centroid
add_new_eid_sort1(eType, dt, eid, e11, e22, e12, e1z, e2z, angle, majorP, minorP, evm)
all points are located at the centroid
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, e11, e22, e12, e1z, e2z, angle, majorP, minorP, evm)
getHeaders()

264 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.CompositePlateSt

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.RealComposi
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code = 0
S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E
ELEMENT PLY STRESSES IN FIBER AND MATRIX DIRECTIONS INTER-LAMINAR STRESSES PRIN
ID ID NORMAL-1 NORMAL-2 SHEAR-12 SHEAR XZ-MAT SHEAR YZ-MAT ANG

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, eid, o11, o22, t12, t1z, t2z, angle, majorP, minorP, ovm)
add_f06_data(data, transient, eType)
:: S T R E S S E S I N L A Y E R E D C O M P O S I T E E L E M E N T S ( Q U A D 4 )
ELEMENT PLY STRESSES IN FIBER AND MATRIX DIRECTIONS INTER-LAMINAR STRESSES P

ID ID NORMAL-1 NORMAL-2 SHEAR-12 SHEAR XZ-MAT SHEAR YZ-MAT ANGLE MAJOR M


151 1 -1.02406E+04 4.18348E+05 4.14359E+02 -8.62021E+00 1.86352E+04 89.94
4.18348E+05 -1.02410E+04 2.14295E+05
add_new_eid(eType, dt, eid, o11, o22, t12, t1z, t2z, angle, majorP, minorP, ovm)
all points are located at the centroid
add_new_eid_sort1(eType, dt, eid, o11, o22, t12, t1z, t2z, angle, majorP, minorP, ovm)
all points are located at the centroid
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, o11, o22, t12, t1z, t2z, angle, majorP, minorP, ovm)
getHeaders()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_compositePlates.RealCompositePla
Bases: object
_finalize(dt)
_get_shape()

2.4. op2 Package 265


pyNastran Documentation, Release 0.6.0

_increase_size(dt, nloops, eid_nlayers, etype)


_is_full(nloops)
_preallocate(dt, nloops)
get_element_types()
get_stats()

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.real.oes_gap.NonlinearGapStressObject

oes_gap Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_gap.NonlinearGapStressObject(data
is_so
isub
case
dt,
read
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid(dt, eid, cpx, shy, shz, au, shv, shw, slv, slp, form1, form2)
add_new_eid_sort1(dt, eid, cpx, shy, shz, au, shv, shw, slv, slp, form1, form2)
add_new_eid_sort2(eid, dt, cpx, shy, shz, au, shv, shw, slv, slp, form1, form2)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_objects Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object(data_code,
isub-
case,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_isCurvatureOld()
getOrderedETypes(validTypes)
Parameters validTypes list of valid element types e.g. [CTRIA3, CTRIA6,
CQUAD4, CQUAD8]
Returns TypesOut the ordered list of types

266 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Returns orderedETypes dictionary of key=Type; value=list of IDs; to write


isCurvature()
isFiberDistance()
isMaxShear()
isVonMises()
class pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject(data_code,
isub-
case,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object

isStrain()
isStress()
update_dt(data_code, dt)
class pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject(data_code,
isub-
case,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object

isStrain()
isStress()
update_dt(data_code, dt)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_plates.PlateStressObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_plates.RealPlateResults

pyNastran.op2.tables.oes_stressStrain.real.oes_plates.PlateStrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_plates Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_plates.PlateStrainObject(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_plates.RealPlateResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# ??? - is this just 11
ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIPA
ID. CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

# s_code=11
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T

2.4. op2 Package 267


pyNastran Documentation, Release 0.6.0

ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIP


ID GRID-ID CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

# s_code=15
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT FIBER STRAINS IN ELEMENT COORD SYSTEM PRINCIPA
ID. DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

# s_code=10
S T R A I N S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT STRAIN STRAINS IN ELEMENT COORD SYSTEM PRINCIP
ID GRID-ID CURVATURE NORMAL-X NORMAL-Y SHEAR-XY ANGLE

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add_f06_data(data, transient)
writeF06_Tri3Transient(dt, eid)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_plates.PlateStressObject(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_plates.RealPlateResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
ELEMENT FIBER STRESSES IN ELEMENT COORD SYSTEM PRINCIPA
ID. DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE
6 CEN/4 -1.250000E-01 -4.278394E+02 8.021165E+03 -1.550089E+02 -88.9493
1.250000E-01 5.406062E+02 1.201854E+04 -4.174177E+01 -89.7916

S T R E S S E S I N Q U A D R I L A T E R A L E L E M E N T
ELEMENT FIBER STRESSES IN ELEMENT COORD SYSTEM PRINCIP
ID GRID-ID DISTANCE NORMAL-X NORMAL-Y SHEAR-XY ANGLE
6 CEN/4 -1.250000E-01 -4.278394E+02 8.021165E+03 -1.550089E+02 -88.9493
1.250000E-01 5.406062E+02 1.201854E+04 -4.174177E+01 -89.7916

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
_write_matlab_tri3(eid)
add_f06_data(data, transient)
getOrderedETypes(valid_types)
Parameters validTypes list of valid element types e.g. [CTRIA3, CTRIA6,
CQUAD4, CQUAD8]

268 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

Returns TypesOut the ordered list of types


Returns orderedETypes dictionary of key=Type; value=list of IDs; to write
writeF06_Tri3Transient(dt, eid)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(name, isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_plates.RealPlateResults
Bases: object
_finalize(dt)
_get_first_type_index()
_get_shape()
_increase_size(dt, nnodes, nelements)
_is_full(nnodes, nelements)
_preallocate(dt, nnodes, nelements)
nodes will create self.data elements will create self.element_data
data is primary, so nodes are input first
_write_f06_helper(msgPacks, pageStamp, f, pageNum)
_write_f06_transient_helper(msgPacks, header, pageStamp, f, pageNum=1,
is_mag_phase=False)
get_element_types()
get_stats()

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodDamperObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodStressObject

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodStrainObject

oes_rods Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodDamperObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

get_stats()

2.4. op2 Package 269


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodStrainObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# s_code=1
S T R A I N S I N R O D E L E M E N T S (
ELEMENT AXIAL SAFETY TORSIONAL SAFETY
ID. STRAIN MARGIN STRAIN MARGIN

# s_code=10
S T R A I N S I N R O D E L E M E N T S
ELEMENT AXIAL SAFETY TORSIONAL SAFETY ELEMENT AXIAL
ID. STRAIN MARGIN STRAIN MARGIN ID. STRAIN
1001 1.000000E+00 1.0E+00 1.250000E+00 3.0E+00 1007 1.000000E+

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
add_new_eid(dt, eid, out)
add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_rods.RodStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# format_code=1 stressCode=0
S T R E S S E S I N R O D E L E M E N T S
ELEMENT AXIAL SAFETY TORSIONAL SAFETY ELEMENT AXIA
ID. STRESS MARGIN STRESS MARGIN ID. STRES
1 5.000000E+03 0.0 2 0.0

270 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

# format_code=1 stressCode=0
S T R E S S E S I N R O D E L E M E N T S
ELEMENT AXIAL SAFETY TORSIONAL SAFETY ELEMENT AXIAL
ID. STRESS MARGIN STRESS MARGIN ID. STRESS

_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)


add_f06_data(data, transient)
add_new_eid(dt, eid, out)
add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.real.oes_shear.ShearStressObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.real.oes_shear.ShearStrainObject

oes_shear Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_shear.ShearStrainObject(data_code,
is_sort1,
isub-
case,
dt=None)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

add_new_eid(dt, eid, out)


add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables .. note:: make sure you set self.dt first
getLength()
get_stats()
get_transients()

2.4. op2 Package 271


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.real.oes_shear.ShearStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# format_code=1 sort_code=0 stressCode=0
S T R E S S E S I N S H E A R P A N E L S (
ELEMENT MAX AVG SAFETY ELEMENT MAX
ID. SHEAR SHEAR MARGIN ID. SHEAR
328 1.721350E+03 1.570314E+03 7.2E+01

add_new_eid(dt, eid, out)


add_new_eid_sort1(dt, eid, out)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_solids.SolidStrainObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_solids.RealSolidResults

pyNastran.op2.tables.oes_stressStrain.real.oes_solids.SolidStressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

oes_solids Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_solids.RealSolidResults
Bases: object
_finalize(dt)
_get_shape()
_increase_size(dt, nelements, nnodes)
_increment(nnodes, nelements)
_preallocate(dt, nnodes, nelements)
_write_f06(header, pageStamp, f, pageNum)
_write_f06_transient(header, pageStamp, f, pageNum)
evm(e11, e22, e33, e12, e13, e23)
http://en.wikipedia.org/wiki/Von_Mises_yield_criterion
get_element_types()
get_stats()

272 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

octahedral(e11, e22, e33, e12, e13, e23)


http://en.wikipedia.org/wiki/Von_Mises_yield_criterion
pressure(o1, o2, o3)
returns the hydrostatic pressure .. math:: o_{pressure} = frac{o_1+o_2+o_3}{-3.0}
http://en.wikipedia.org/wiki/Stress_%28mechanics%29
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_solids.SolidStrainObject(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_solids.RealSolidResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# code=[1,0,11]
S T R A I N S I N H E X A H E D R O N S O L I D E L E M
CORNER ------CENTER AND CORNER POINT STRESSES--------- DIR
ELEMENT-ID GRID-ID NORMAL SHEAR PRINCIPAL -A-
1 0GRID CS 8 GP
CENTER X 4.499200E+02 XY -5.544791E+02 A 1.000000E+04 LX 0.00
Y 4.094179E+02 YZ 5.456968E-12 B -1.251798E+02 LY 0.00
Z 1.000000E+04 ZX -4.547474E-13 C 9.845177E+02 LZ 1.00

# code=[1,0,10]
S T R A I N S I N T E T R A H E D R O N S O L I D E L E M
CORNER ------CENTER AND CORNER POINT STRAINS--------- DIR
ELEMENT-ID GRID-ID NORMAL SHEAR PRINCIPAL -A-
4 0GRID CS 4 GP
CENTER X -2.288232E-04 XY 1.240506E-04 A 9.631978E-04 LX-0.10
Y -2.289814E-04 YZ -2.369997E-04 B -2.909276E-04 LY-0.10
Z 9.383460E-04 ZX -2.369997E-04 C -1.917288E-04 LZ 0.99

_get_f06_header()
_get_headers()
add_f06_data(data, transient)
process_f06_data()

S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S (
CORNER ------CENTER AND CORNER POINT STRESSES--------- DIR. COSINES

ELEMENT-ID GRID-ID NORMAL SHEAR PRINCIPAL -A- -B- -C- PRESSURE VON MISES

2 0GRID CS 6 GP
CENTER X -1.829319E+03 XY 7.883865E+01 A 1.033182E+04 LX-0.12 0.71 0.70 -2.115135E+03
Y -1.825509E+03 YZ -1.415218E+03 B -2.080181E+03 LY-0.12 0.69-0.71 Z

2.4. op2 Package 273


pyNastran Documentation, Release 0.6.0

1.000023E+04 ZX -1.415218E+03 C -1.906232E+03 LZ 0.99 0.16 0.00

class pyNastran.op2.tables.oes_stressStrain.real.oes_solids.SolidStressObject(data_code
is_sort1,
isub-
case,
dt,
read_mode
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_solids.RealSolidResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# s_code=0
N O N L I N E A R S T R E S S E S I N T E T R A H E D R O N S O L I D
ELEMENT GRID/ POINT STRESSES/ TOTAL STRAINS
ID GAUSS ID X Y Z XY YZ
3 GRID CENTER 6.6667E+02 2.6667E+03 2.6667E+03 -1.3333E+03 2.6667E+03 -1.
1.6667E-05 6.6667E-05 6.6667E-05 -6.6667E-05 1.3333E-04 -6.

# s_code=1
S T R E S S E S I N H E X A H E D R O N S O L I D E L E
CORNER ------CENTER AND CORNER POINT STRESSES--------- DIR
ELEMENT-ID GRID-ID NORMAL SHEAR PRINCIPAL -A-
1 0GRID CS 8 GP
CENTER X 4.499200E+02 XY -5.544791E+02 A 1.000000E+04 LX 0.00
Y 4.094179E+02 YZ 5.456968E-12 B -1.251798E+02 LY 0.00
Z 1.000000E+04 ZX -4.547474E-13 C 9.845177E+02 LZ 1.00

_get_f06_header()
_get_headers()
add_f06_data(data, transient)
process_f06_data()

S T R E S S E S I N P E N T A H E D R O N S O L I D E L E M E N T S (
CORNER ------CENTER AND CORNER POINT STRESSES--------- DIR. COSINES

ELEMENT-ID GRID-ID NORMAL SHEAR PRINCIPAL -A- -B- -C- PRESSURE VON MISES

2 0GRID CS 6 GP
CENTER X -1.829319E+03 XY 7.883865E+01 A 1.033182E+04 LX-0.12 0.71 0.70 -2.115135E+03
Y -1.825509E+03 YZ -1.415218E+03 B -2.080181E+03 LY-0.12 0.69-0.71 Z
1.000023E+04 ZX -1.415218E+03 C -1.906232E+03 LZ 0.99 0.16 0.00

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject pyNastran.op2.tables.oes_stressStrain.real.oes_springs.CelasStrainObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults pyNastran.op2.tables.oes_stressStrain.real.oes_springs.CelasStressObject

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject pyNastran.op2.tables.oes_stressStrain.real.oes_springs.NonlinearSpringStressObject

oes_springs Module

274 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.real.oes_springs.CelasStrainObject(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

add_new_eid(dt, eid, out)


add_new_eid_sort1(dt, eid, out)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()
class pyNastran.op2.tables.oes_stressStrain.real.oes_springs.CelasStressObject(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
::
STRESSESINSCALARSPRINGS(CELAS2)
TIME STRESS TIME STRESS TIME STRESS TIME STRESS
0.0 0.0 5.000000E-02 0.0 1.000000E-01 0.0 1.500000E-01 0.0 2.000000E-01 0.0 2.500000E-01
0.0 3.000000E-01 0.0 3.500000E-01 0.0
add_new_eid(dt, eid, out)
add_new_eid_sort1(dt, eid, out)
add_new_eid_sort2(eid, dt, out)
add_new_transient(dt)
initializes the transient variables
getLength()
get_stats()
get_transients()

2.4. op2 Package 275


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.real.oes_springs.NonlinearSpringStressObj

Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject

add_new_eid(eType, dt, eid, force, stress)


add_new_eid_sort1(eType, dt, eid, force, stress)
add_new_eid_sort2(eType, eid, dt, force, stress)
add_new_transient(dt)
initializes the transient variables
get_stats()
get_transients()
class pyNastran.op2.tables.oes_stressStrain.real.oes_springs.RealSpringResults
Bases: object
_get_shape()
_increase_size(dt, nelements)
_increment(nnodes, nelements)

pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
pyNastran.op2.tables.oes_stressStrain.real.oes_triax.TriaxStressObject

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oes_stressStrain.real.oes_objects.OES_Object pyNastran.op2.tables.oes_stressStrain.real.oes_triax.RealTriaxObject

pyNastran.op2.tables.oes_stressStrain.real.oes_triax.TriaxStrainObject
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject

oes_triax Module
class pyNastran.op2.tables.oes_stressStrain.real.oes_triax.RealTriaxObject
Bases: object
_finalize(dt)
_get_shape()
_increase_size(dt, nnodes, nelements)
_is_full(nnodes, nelements)
_preallocate(dt, nnodes, nelements)
nodes will create self.data elements will create self.element_data
data is primary, so nodes are input first
get_stats()

276 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oes_stressStrain.real.oes_triax.TriaxStrainObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_triax.RealTriaxObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StrainObject
# format_code=1 sort_code=0 stressCode=0
S T R A I N S I N T R I A X 6 E L E M E N T S
ELEMENT GRID ID STRAINS IN MATERIAL COORD SYSTEM MAX MAG
ID RADIAL AZIMUTHAL AXIAL SHEAR PRINCIPAL
5351 0 -9.726205E+02 -1.678908E+03 -1.452340E+03 -1.325111E+02 -1.678908E+0
4389 -9.867789E+02 -1.624276E+03 -1.388424E+03 -9.212539E+01 -1.624276E+0

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, eid, nid, rs, azs, As, ss, maxp, emax, ects)
add_f06_data(data, transient)
add_new_eid(dt, eid, nid, rs, azs, As, ss, maxp, tmax, octs)
add_new_eid_sort1(dt, eid, nid, rs, azs, As, ss, maxp, emax, ects)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, nid, rs, azs, As, ss, maxp, emax, ects)
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.oes_stressStrain.real.oes_triax.TriaxStressObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.tables.oes_stressStrain.real.oes_triax.RealTriaxObject,
pyNastran.op2.tables.oes_stressStrain.real.oes_objects.StressObject
# format_code=1 sort_code=0 stressCode=0
S T R E S S E S I N T R I A X 6 E L E M E N T
ELEMENT GRID ID STRESSES IN MATERIAL COORD SYSTEM MAX MAG
ID RADIAL AZIMUTHAL AXIAL SHEAR PRINCIPAL
5351 0 -9.726205E+02 -1.678908E+03 -1.452340E+03 -1.325111E+02 -1.678908E+0
4389 -9.867789E+02 -1.624276E+03 -1.388424E+03 -9.212539E+01 -1.624276E+0

_get_headers()
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)

2.4. op2 Package 277


pyNastran Documentation, Release 0.6.0

add(dt, eid, nid, rs, azs, As, ss, maxp, tmax, octs)
add_f06_data(data, transient)
add_new_eid(dt, eid, nid, rs, azs, As, ss, maxp, tmax, octs)
add_new_eid_sort1(dt, eid, nid, rs, azs, As, ss, maxp, tmax, octs)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eid, nid, rs, azs, As, ss, maxp, tmax, octs)
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

ogf_gridPointForces Package

pyNastran.op2.tables.ogf_gridPointForces.ogf.OGF

ogf Module
class pyNastran.op2.tables.ogf_gridPointForces.ogf.OGF
Bases: object
Table of Grid Point Forces
_delete_attributes_OGF()
readOGF_Data()
readOGF_Data_table19()
readOGF_numWide10(name)
readOGF_numWide16(name)
readTable_OGF()
readTable_OGF_3(iTable)
readThermal4()

pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects.GridPointForcesObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject
pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects.ComplexGridPointForcesObject

ogf_Objects Module

278 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects.ComplexGridPointForcesObje

Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
get_stats()
class pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects.GridPointForcesObject(data_
is_sor
isub-
case,
dt,
read_
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_write_f06_transient(header, pageStamp, f, pageNum=1)
add(dt, eKey, eid, elemName, f1, f2, f3, m1, m2, m3)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eKey, eid, elemName, f1, f2, f3, m1, m2, m3)
delete_transient(dt)
get_stats()
get_transients()
update_dt(data_code, freq)
write_f06(header, pageStamp, f, pageNum=1)

pyNastran.op2.tables.ogf_gridPointForces.ogs_surfaceStresses.GridPointStressesVolumeObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject
pyNastran.op2.tables.ogf_gridPointForces.ogs_surfaceStresses.GridPointStressesObject

ogs_surfaceStresses Module
class pyNastran.op2.tables.ogf_gridPointForces.ogs_surfaceStresses.GridPointStressesO

Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_GridPointStressesObject__write_f06_transient(header, pageS-
tamp, f, pageNum=1,
is_mag_phase=False)
add(dt, eKey, eid, elemName, nx, ny, txy, angle, majorP, minorP, tmax, ovm)

2.4. op2 Package 279


pyNastran Documentation, Release 0.6.0

add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eKey, eid, elemName, nx, ny, txy, angle, majorP, minorP, tmax, ovm)
delete_transient(dt)
get_stats()
get_transients()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.ogf_gridPointForces.ogs_surfaceStresses.GridPointStressesV

Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
_GridPointStressesVolumeObject__write_f06_transient(header, pageS-
tamp, f, pa-
geNum=1,
is_mag_phase=False)
_write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
add(dt, eKey, nx, ny, nz, txy, tyz, txz, pressure, ovm)
add_new_transient(dt)
initializes the transient variables
add_sort1(dt, eKey, nx, ny, nz, txy, tyz, txz, pressure, ovm)
delete_transient(dt)
get_stats()
get_transients()

opg_appliedLoads Package

pyNastran.op2.tables.opg_appliedLoads.opg.OPG

opg Module
class pyNastran.op2.tables.opg_appliedLoads.opg.OPG
Bases: object
Table of element forces

280 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

_delete_attributes_OPG()
readOGS1_Data_table26()
readOGS1_Data_table27()
readOGS1_table26_numWide11(name)
readOGS1_table27_numWide9(name)
readOPGForces(name)

Todo
needs some work...

readOPG_Data_table12()
readOPG_Data_table19()
readOPG_Data_table2()
readTable_OPG()
read_OPG_data()
read_table_OPG_3(iTable)

pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.LoadVectorObject
pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVelocityVectorObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVector
pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalLoadVectorObject
pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ComplexLoadVectorObject

opg_loadVector Module
class pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ComplexLoadVectorObject(dat
is_
isu
cas
dt,
rea
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.LoadVectorObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject

2.4. op2 Package 281


pyNastran Documentation, Release 0.6.0

_write_f06_transient(header, pageStamp, f, pageNum=1)


write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalLoadVectorObject(dat
is_
isu
cas
dt,
rea
Bases: pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVector
class pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVector(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
class pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVelocityVectorObjec

Bases: pyNastran.op2.tables.opg_appliedLoads.opg_loadVector.ThermalVector

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.opg_appliedLoads.opg_Objects.AppliedLoadsObject

opg_Objects Module
class pyNastran.op2.tables.opg_appliedLoads.opg_Objects.AppliedLoadsObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nodeID, eid, source, v1, v2, v3, v4, v5, v6)
addTransient(nodeID, eid, source, v1, v2, v3, v4, v5, v6)
add_node(nodeID, eid, source, v1, v2, v3, v4, v5, v6)

282 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.opg_appliedLoads.opnl_forceVector.ForceVectorObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.opg_appliedLoads.opnl_forceVector.ComplexForceVectorObject

opnl_forceVector Module
class pyNastran.op2.tables.opg_appliedLoads.opnl_forceVector.ComplexForceVectorObject

Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.opg_appliedLoads.opnl_forceVector.ForceVectorObject(data_cod
is_sort1,
isub-
case,
dt,
read_mo
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)

oqg_constraintForces Package

pyNastran.op2.tables.oqg_constraintForces.oqg.OQG

oqg Module
class pyNastran.op2.tables.oqg_constraintForces.oqg.OQG
Bases: object
Table of spc/mpc forces/momenets
_delete_attributes_OQG()
readOQG_Data()
readOQG_Data_table3()

2.4. op2 Package 283


pyNastran Documentation, Release 0.6.0

readOQG_Data_table39()
readTable_OQG()
readTable_OQG_3(iTable)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oqg_constraintForces.oqg_mpcForces.ComplexMPCForcesObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oqg_constraintForces.oqg_mpcForces.MPCForcesObject

oqg_mpcForces Module
class pyNastran.op2.tables.oqg_constraintForces.oqg_mpcForces.ComplexMPCForcesObject(

Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oqg_constraintForces.oqg_mpcForces.MPCForcesObject(data_code
is_sort1,
isub-
case,
dt=None,
read_mode
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oqg_constraintForces.oqg_spcForces.SPCForcesObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oqg_constraintForces.oqg_spcForces.ComplexSPCForcesObject

oqg_spcForces Module
class pyNastran.op2.tables.oqg_constraintForces.oqg_spcForces.ComplexSPCForcesObject(

Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)

284 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oqg_constraintForces.oqg_spcForces.SPCForcesObject(data_code
is_sort1,
isub-
case,
dt=None,
read_mode
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oqg_constraintForces.oqg_thermalGradientAndFlux.ComplexTemperatureGradientAndFluxObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oqg_constraintForces.oqg_thermalGradientAndFlux.TemperatureGradientAndFluxObject

oqg_thermalGradientAndFlux Module
class pyNastran.op2.tables.oqg_constraintForces.oqg_thermalGradientAndFlux.ComplexTem

Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oqg_constraintForces.oqg_thermalGradientAndFlux.Temperatur

Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)

oug Package

2.4. op2 Package 285


pyNastran Documentation, Release 0.6.0

pyNastran.op2.tables.oug.oug.OUG

oug Module
class pyNastran.op2.tables.oug.oug.OUG
Bases: object
Table of displacements/velocities/acceleration/heat flux/temperature
OUG_ComplexTable(name)
OUG_RealTable(name)
_delete_attributes_OUG()
getOUG_FormatStart()
Returns an i or an f depending on if its SORT2 or not. Also returns an extraction function that
is called on the first argument
readOUG_Data_table1(debug=False)
OUGV1 - global coordinate system in sort 1 OUPV1 - scaled response spectra in sort 1 OUG-
PSD2 - PSD in sort 2 OUGATO2 - auto-correlated in sort 2
readOUG_Data_table10()
readOUG_Data_table11()
readOUG_Data_table7()
readTable_OUG()
readTable_OUG2()
readThermal4()
read_OUG2_data()
read_OUG_data()
read_table_OUG2_3(iTable)
read_table_OUG_3(iTable)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oug.oug_accelerations.AccelerationObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oug.oug_accelerations.ComplexAccelerationObject

oug_accelerations Module

286 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oug.oug_accelerations.AccelerationObject(data_code,
is_sort1,
isub-
case,
dt=None,
read_mode=0)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oug.oug_accelerations.ComplexAccelerationObject(data_code,
is_sort1,
isub-
case,
dt=None,
read_mode=0)
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oug.oug_displacements.DisplacementObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oug.oug_displacements.ComplexDisplacementObject

oug_displacements Module
class pyNastran.op2.tables.oug.oug_displacements.ComplexDisplacementObject(data_code,
is_sort1,
isub-
case,
dt=None,
read_mode=0)
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oug.oug_displacements.DisplacementObject(data_code,
is_sort1,
isub-
case,
dt=None,
read_mode=0)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)

2.4. op2 Package 287


pyNastran Documentation, Release 0.6.0

write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)


write_matlab(isubcase, f, is_mag_phase=False)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oug.oug_eigenvectors.EigenVectorObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oug.oug_eigenvectors.ComplexEigenVectorObject

pyNastran.op2.tables.oug.oug_eigenvectors.RealEigenVectorObject

oug_eigenvectors Module
class pyNastran.op2.tables.oug.oug_eigenvectors.ComplexEigenVectorObject(data_code,
is_sort1,
isub-
case,
imode,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
eigenvalues()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f=None, is_mag_phase=False)
class pyNastran.op2.tables.oug.oug_eigenvectors.EigenVectorObject(data_code,
is_sort1,
isub-
case,
imode,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
EIGENVALUE = 6.158494E+07
CYCLES = 1.248985E+03 R E A L E I G E N V E C T O R N O . 1

POINT ID. TYPE T1 T2 T3 R1


1 G 2.547245E-17 -6.388945E-16 2.292728E+00 -1.076928E-15 2.579
2002 G -6.382321E-17 -1.556607E-15 3.242408E+00 -6.530917E-16 1.747
2003 G 0.0 0.0 0.0 0.0 0.0

eigenvalues()
read_f06_data(data_code, data)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
EIGENVALUE = 6.158494E+07 CYCLES = 1.248985E+03 R E A L E I G E N V E C T O R
NO.1
POINT ID. TYPE T1 T2 T3 R1 R2 R3
1 G 2.547245E-17 -6.388945E-16 2.292728E+00 -1.076928E-15 2.579163E-17
0.0
2002 G -6.382321E-17 -1.556607E-15 3.242408E+00 -6.530917E-16 1.747180E-17 0.0
2003 G 0.0 0.0 0.0 0.0 0.0 0.0

288 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oug.oug_eigenvectors.RealEigenVectorObject(data_code,
isub-
case,
imode,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
R E A L E I G E N V E C T O R N O . 1
POINT ID. TYPE T1 T2 T3 R1
1 G 0.0 0.0 0.0 0.0 1.260
7 G 9.999849E-01 0.0 6.728968E-03 0.0 8.021

eigenvalues()
modes()
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
EIGENVALUE = 6.158494E+07 R E A L E I G E N V E C T O R N O . 1
POINT ID. TYPE T1 T2 T3 R1 R2 R3
1 G 2.547245E-17 -6.388945E-16 2.292728E+00 -1.076928E-15 2.579163E-17
0.0
2002 G -6.382321E-17 -1.556607E-15 3.242408E+00 -6.530917E-16 1.747180E-17 0.0
2003 G 0.0 0.0 0.0 0.0 0.0 0.0
write_matlab(isubcase, f, is_mag_phase=False)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.tables.oug.oug_Objects.FluxObject

oug_Objects Module
class pyNastran.op2.tables.oug.oug_Objects.FluxObject(data_code, isubcase,
dt=None)
Bases: pyNastran.op2.resultObjects.op2_Objects.ScalarObject
add(nodeID, gridType, v1, v2, v3, v4=None, v5=None, v6=None)
delete_transient(dt)
get_transients()
write_op2(block3, device_code=1)
Creates the binary data for writing the table .. warning:: hasnt been tested...

pyNastran.op2.resultObjects.tableObject.BaseTable
pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oug.oug_temperatures.TemperatureObject
pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject

oug_temperatures Module

2.4. op2 Package 289


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.tables.oug.oug_temperatures.TemperatureObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_get_headers()
_get_stats()
_write_f06_block(words, header, pageStamp, f, pageNum)
_write_f06_transient(header, pageStamp, f, pageNum=1)
_write_f06_transient_block(words, header, pageStamp, f, pageNum)
add_f06_data(data, transient)
delete_transient(dt)
get_transients()
update_dt(data_code, dt)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
pyNastran.op2.tables.oug.oug_temperatures.write_pack(node, grid_type,
pack)

pyNastran.op2.op2Codes.Op2Codes pyNastran.op2.resultObjects.op2_Objects.BaseScalarObject pyNastran.op2.resultObjects.op2_Objects.ScalarObject pyNastran.op2.resultObjects.tableObject.ComplexTableObject pyNastran.op2.tables.oug.oug_velocities.ComplexVelocityObject

pyNastran.op2.resultObjects.tableObject.BaseTable pyNastran.op2.resultObjects.tableObject.TableObject pyNastran.op2.tables.oug.oug_velocities.VelocityObject

oug_velocities Module
class pyNastran.op2.tables.oug.oug_velocities.ComplexVelocityObject(data_code,
is_sort1,
isub-
case,
dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.ComplexTableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)
write_matlab(isubcase, f, is_mag_phase=False)
class pyNastran.op2.tables.oug.oug_velocities.VelocityObject(data_code,
is_sort1,
isubcase, dt,
read_mode)
Bases: pyNastran.op2.resultObjects.tableObject.TableObject
_write_f06_transient(header, pageStamp, f, pageNum=1, is_mag_phase=False)

290 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

write_f06(header, pageStamp, f, pageNum=1, is_mag_phase=False)


write_matlab(isubcase, f, is_mag_phase=False)

test Package

op2_test Module

op2_unit_tests Module

test_op2 Module

__init__ Module

__init__ Module

Subpackages

writer Package

oesWriter Module

pyNastran.op2.writer.oesWriter.Oes1Writer

class pyNastran.op2.writer.oesWriter.Oes1Writer
Bases: object
writeOES1()
writes isotropic/composite stress/strain .. todo:: assumes s_code=0 (stress) or 10 (strain)

2.4. op2 Package 291


pyNastran Documentation, Release 0.6.0

op2Writer Module

pyNastran.op2.writer.ougWriter.Ougv1Writer
pyNastran.op2.writer.op2Writer.Op2Writer
pyNastran.op2.writer.oesWriter.Oes1Writer

class pyNastran.op2.writer.op2Writer.Op2Writer
Bases: pyNastran.op2.writer.ougWriter.Ougv1Writer,
pyNastran.op2.writer.oesWriter.Oes1Writer
aCode_tCode(approach_code, table_code, sort_code)
combineApproachDeviceCodes(approach_code)
combineTableSortCodes(table_code, sort_code)
hollerith = H\x02\x00\x00
pack(format, *vals)
packTitle(isubcase)
print_header(word, nChars)
writeOp2(op2Name)
writeStart()
write_markers(markers)
takes -5,1,0 -> [4,5,4, 4,1,4, 4,0,4] and puts it into binary
write_string_block(word, nChars)
OUG - 1 word = 4 characters OUGV - 1 word = 4 characters OUGV1 - 2 words = 8
characters 12345678 - 2 words = 8 characters nWords = round(ceil(len(word)/4.)) nChars =
nWords*4 != len(word) just set nChars and dont overthink it too much

ougWriter Module

pyNastran.op2.writer.ougWriter.Ougv1Writer

292 Chapter 2. pyNastran Package


pyNastran Documentation, Release 0.6.0

class pyNastran.op2.writer.ougWriter.Ougv1Writer
Bases: object
writeOUGV1()
writeOUG_displacements(isubcase, data, thermal=0)
this function writes table 3 for the OUGV1 Table .. todo:: add the buffer and block caps

2.5 op4 Package

2.5.1 circular Module

2.5.2 op4 Module

2.5.3 performance Module

2.5.4 setup Module

2.5.5 test_loadop4 Module

2.5.6 test_loadop4 Module

2.5.7 Subpackages

test Package

op4_test Module

2.5. op4 Package 293


pyNastran Documentation, Release 0.6.0

294 Chapter 2. pyNastran Package


CHAPTER 3

Indices and tables

genindex
modindex
search

295
pyNastran Documentation, Release 0.6.0

296 Chapter 3. Indices and tables


Python Module Index

p pyNastran.bdf.cards.elements.rigid,
pyNastran.bdf.bdf_Methods, 13 130
pyNastran.bdf.bdfInterface.addCard, pyNastran.bdf.cards.elements.springs,
25 133
pyNastran.bdf.cards.loads.loads, 136
pyNastran.bdf.bdfInterface.assign_type,
28 pyNastran.bdf.cards.loads.staticLoads,
pyNastran.bdf.bdfInterface.BDF_Card, 142
32 pyNastran.bdf.cards.materials, 80
pyNastran.bdf.cards.methods,
pyNastran.bdf.bdfInterface.bdf_cardMethods, 87
34 pyNastran.bdf.cards.nodes, 91
pyNastran.bdf.cards.nodes2, 95
pyNastran.bdf.bdfInterface.bdf_writeMesh,
35 pyNastran.bdf.cards.optimization, 97
pyNastran.bdf.cards.params, 101
pyNastran.bdf.bdfInterface.crossReference,
38 pyNastran.bdf.cards.properties.bush,
pyNastran.bdf.bdfInterface.getCard, 150
39 pyNastran.bdf.cards.properties.damper,
pyNastran.bdf.cards.aero, 43 152
pyNastran.bdf.cards.baseCard, 56 pyNastran.bdf.cards.properties.mass,
pyNastran.bdf.cards.constraints, 59 154
pyNastran.bdf.cards.properties.properties,
pyNastran.bdf.cards.coordinateSystems,
63 155
pyNastran.bdf.cards.dmig, 73 pyNastran.bdf.cards.properties.shell,
pyNastran.bdf.cards.dynamic, 76 159
pyNastran.bdf.cards.elements.bars, pyNastran.bdf.cards.properties.springs,
116 166
pyNastran.bdf.cards.elements.bush, pyNastran.bdf.cards.sets, 102
122 pyNastran.bdf.cards.tables, 112
pyNastran.bdf.cards.elements.damper, pyNastran.bdf.cards.thermal.loads,
124 167
pyNastran.bdf.cards.thermal.thermal,
pyNastran.bdf.cards.elements.elements,
126 171
pyNastran.bdf.cards.elements.mass, pyNastran.bdf.caseControlDeck, 15
127 pyNastran.bdf.fieldWriter, 19

297
pyNastran Documentation, Release 0.6.0

pyNastran.bdf.fieldWriter16, 21 pyNastran.op2.tables.oef_forces.oef_complexFor
pyNastran.bdf.subcase, 22 229
pyNastran.op2.tables.oef_forces.oef_forceObjec
pyNastran.bdf.test.compare_card_content,
177 234
pyNastran.bdf.test.test_field_writer, pyNastran.op2.tables.oef_forces.oef_thermalObj
179 241
pyNastran.bdf.test.unit.line_parsing, pyNastran.op2.tables.oef_forces.realForces,
180 243
pyNastran.op2.tables.oef_forces.thermal_elemen
pyNastran.bdf.test.unit.test_assign_type,
180 244
pyNastran.bdf.writePath, 25 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.f06.f06, 181 249
pyNastran.f06.f06_classes, 185 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.f06.f06_formatting, 186 250
pyNastran.f06.f06Writer, 184 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.f06.matlabWriter, 187 251
pyNastran.f06.tables.oes, 188 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.f06.tables.oqg, 192 252
pyNastran.f06.tables.oug, 192 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.f06.test.test_f06, 194 253
pyNastran.op2.fortranFile, 202 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.op2.op2_helper, 207 255
pyNastran.op2.op2Codes, 206 pyNastran.op2.tables.oes_stressStrain.complex.
pyNastran.op2.resultObjects.op2_Objects, 256
208 pyNastran.op2.tables.oes_stressStrain.oes,
pyNastran.op2.resultObjects.tableObject, 245
209 pyNastran.op2.tables.oes_stressStrain.oes_nonl
pyNastran.op2.tables.destab, 211 247
pyNastran.op2.tables.geom.dit, 219 pyNastran.op2.tables.oes_stressStrain.oesnlxr,
pyNastran.op2.tables.geom.dynamics, 246
219 pyNastran.op2.tables.oes_stressStrain.real.ele
pyNastran.op2.tables.geom.geom1, 221 258
pyNastran.op2.tables.geom.geom3, 222 pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.geom.geom4, 223 260
pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.lama_eigenvalues.lama,
225 261
pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.lama_eigenvalues.lama_objects,
225 262
pyNastran.op2.tables.mpt, 211 pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.oee_energy.oee, 263
226 pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.oee_energy.oee_objects,264
227 pyNastran.op2.tables.oes_stressStrain.real.oes
266
pyNastran.op2.tables.oef_forces.complexForces,
228 pyNastran.op2.tables.oes_stressStrain.real.oes
pyNastran.op2.tables.oef_forces.oef, 266
228 pyNastran.op2.tables.oes_stressStrain.real.oes
267

298 Python Module Index


pyNastran Documentation, Release 0.6.0

pyNastran.op2.test.__init__, 291
pyNastran.op2.tables.oes_stressStrain.real.oes_rods,
269 pyNastran.op2.writer.oesWriter, 291
pyNastran.op2.writer.op2Writer, 292
pyNastran.op2.tables.oes_stressStrain.real.oes_shear,
271 pyNastran.op2.writer.ougWriter, 292
pyNastran.utils.__init__, 199
pyNastran.op2.tables.oes_stressStrain.real.oes_solids,
272 pyNastran.utils.gui_choices, 194
pyNastran.utils.gui_io, 195
pyNastran.op2.tables.oes_stressStrain.real.oes_springs,
274 pyNastran.utils.log, 195
pyNastran.utils.test.test_utils, 201
pyNastran.op2.tables.oes_stressStrain.real.oes_triax,
276
pyNastran.op2.tables.ogf_gridPointForces.ogf,
278
pyNastran.op2.tables.ogf_gridPointForces.ogf_Objects,
278
pyNastran.op2.tables.ogf_gridPointForces.ogs_surfaceStresses,
279
pyNastran.op2.tables.opg_appliedLoads.opg,
280
pyNastran.op2.tables.opg_appliedLoads.opg_loadVector,
281
pyNastran.op2.tables.opg_appliedLoads.opg_Objects,
282
pyNastran.op2.tables.opg_appliedLoads.opnl_forceVector,
283
pyNastran.op2.tables.oqg_constraintForces.oqg,
283
pyNastran.op2.tables.oqg_constraintForces.oqg_mpcForces,
284
pyNastran.op2.tables.oqg_constraintForces.oqg_spcForces,
284
pyNastran.op2.tables.oqg_constraintForces.oqg_thermalGradientAndFlux,
285
pyNastran.op2.tables.oug.oug, 286
pyNastran.op2.tables.oug.oug_accelerations,
286
pyNastran.op2.tables.oug.oug_displacements,
287
pyNastran.op2.tables.oug.oug_eigenvectors,
288
pyNastran.op2.tables.oug.oug_Objects,
289
pyNastran.op2.tables.oug.oug_temperatures,
289
pyNastran.op2.tables.oug.oug_velocities,
290
pyNastran.op2.tables.r1tab, 212
pyNastran.op2.tables.resultTable,
216

Python Module Index 299

Das könnte Ihnen auch gefallen