beam
Module¶
- All beam properties are defined in this file. This includes:
PBEAM
PBEAML
PBCOMP
PBRSECT
All beams are LineProperty objects. Multi-segment beams are IntegratedLineProperty objects.
-
class
pyNastran.bdf.cards.properties.beam.
PBCOMP
(pid, mid, y, z, c, mids, area=0.0, i1=0.0, i2=0.0, i12=0.0, j=0.0, nsm=0.0, k1=1.0, k2=1.0, m1=0.0, m2=0.0, n1=0.0, n2=0.0, symopt=0, comment='')[source]¶ Bases:
pyNastran.bdf.cards.properties.bars.LineProperty
1
2
3
4
5
6
7
8
9
PBCOMP
PID
MID
A
I1
I2
I12
J
NSM
K1
K2
M1
M2
N1
N2
SYMOPT
Y1
Z1
C1
MID1
Y2
Z2
C2
MID2
…
…
…
Creates a PBCOMP card
- Parameters
- pidint
Property ID
- midint
Material ID
- midsList[int]
Material ID for the i-th integration point
- y / zList[float]
The (y,z) coordinates of the lumped areas in the element coordinate system
- cList[float]; default=0.0
Fraction of the total area for the i-th lumped area default not supported…
- areafloat
Area of beam cross section
- i1 / i2float; default=0.0
Area moment of inertia about plane 1/2 about the neutral axis
- i12float; default=0.0
area product of inertia
- jfloat; default=0.0
Torsional moment of interia
- nsmfloat; default=0.0
Nonstructural mass per unit length
- k1 / k2float; default=1.0
Shear stiffness factor K in K*A*G for plane 1/2
- m1 / m2float; default=0.0
The (y,z) coordinates of center of gravity of nonstructural mass
- n1 / n2float; default=0.0
The (y,z) coordinates of neutral axis
- symoptint; default=0
Symmetry option to input lumped areas for the beam cross section 0 < Integer < 5
- commentstr; default=’’
a comment for the card
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBCOMP card from
BDF.add_card(...)
- Parameters
- cardBDFCard()
a BDFCard object
- commentstr; default=’’
a comment for the card
-
cross_reference
(model: BDF) → None[source]¶ Cross links the card so referenced cards can be extracted directly
- Parameters
- modelBDF()
the BDF object
-
j
= None¶ Polar Moment of Inertia \(J\)
-
mid
= None¶ Material ID
-
nsm
= None¶ Non-structural mass per unit length \(\frac{m}{L}\)
-
pid
= None¶ Property ID
-
repr_fields
()[source]¶ Gets the fields in their simplified form
- Returns
- fieldsList[varies]
the fields that define the card
-
type
= 'PBCOMP'¶
-
class
pyNastran.bdf.cards.properties.beam.
PBEAM
(pid, mid, xxb, so, area, i1, i2, i12, j, nsm=None, c1=None, c2=None, d1=None, d2=None, e1=None, e2=None, f1=None, f2=None, k1=1.0, k2=1.0, s1=0.0, s2=0.0, nsia=0.0, nsib=None, cwa=0.0, cwb=None, m1a=0.0, m2a=0.0, m1b=None, m2b=None, n1a=0.0, n2a=0.0, n1b=None, n2b=None, comment='')[source]¶ Bases:
pyNastran.bdf.cards.properties.bars.IntegratedLineProperty
Defines the properties of a beam element (CBEAM entry). This element may be used to model tapered beams.
PBEAM
PID
MID
A(A)
I1(A)
I2(A)
I12(A)
J(A)
NSM(A)
C1(A)
C2(A)
D1(A)
D2(A)
E1(A)
E2(A)
F1(A)
F2(A)
The next two continuations are repeated for each intermediate station as described in Remark 5. and SO and X/XB must be specified.
SO
X/XB
A
I1
I2
I12
J
NSM
C1
C2
D1
D2
E1
E2
F1
F2
The last two continuations are: +——-+——-+——-+——-+——–+——–+——-+——-+ | K1 | K2 | S1 | S2 | NSI(A) | NSI(B) | CW(A) | CW(B) | +——-+——-+——-+——-+——–+——–+——-+——-+ | M1(A) | M2(A) | M1(B) | M2(B) | N1(A) | N2(A) | N1(B) | N2(B) | +——-+——-+——-+——-+——–+——–+——-+——-+
Todo
fix 0th entry of self.so, self.xxb
Creates a PBEAM card
- Parameters
- pidint
property id
- midint
material id
- xxbList[float]
The percentage locations along the beam [0., …, 1.]
- soList[str]
YES, YESA, NO
- areaList[float]
area
- i1, i2, i12, jList[float]
moments of inertia
- nsmList[float]
nonstructural mass per unit length
- c1/c2, d1/d2, e1/e2, f1/f2List[float]; default=None -> [0.]*nxxb
the y/z locations of the stress recovery points c1 - point C.y c2 - point C.z
- k1 / k2float; default=1.
Shear stiffness factor K in K*A*G for plane 1/2.
- s1 / s2float; default=0.
Shear relief coefficient due to taper for plane 1/2.
- nsia / nsiafloat; default=0. / nsia
non structural mass moment of inertia per unit length about nsm center of gravity at Point A/B.
- cwa / cwbfloat; default=0. / cwa
warping coefficient for end A/B.
- m1a / m2afloat; default=0. / 0.
y/z coordinate of center of gravity of nonstructural mass for end A.
- m1b / m2bfloat; default=m1a / m2a
y/z coordinate of center of gravity of nonstructural mass for end B.
- n1a / n2afloat; default=0. / 0.
y/z coordinate of neutral axis for end A.
- n1b / n2bfloat; default=n1a / n2a
y/z coordinate of neutral axis for end B.
- commentstr; default=’’
a comment for the card
-
_interpolate_sections
()[source]¶ now we interpolate to fix up missing data from arrays that were potentially out of order (they’re sorted now)
we’ve also already checked xxb=0.0 and xxb=1.0 for I1, I2, I12, J
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBEAM card from
BDF.add_card(...)
- Parameters
- cardBDFCard()
a BDFCard object
- commentstr; default=’’
a comment for the card
-
cross_reference
(model: BDF) → None[source]¶ Cross links the card so referenced cards can be extracted directly
- Parameters
- modelBDF()
the BDF object
-
cwa
= None¶ warping coefficient for end A.
-
cwb
= None¶ warping coefficient for end B.
-
k1
= None¶ Shear stiffness factor K in K*A*G for plane 1.
-
k2
= None¶ Shear stiffness factor K in K*A*G for plane 2.
-
m1a
= None¶ y coordinate of center of gravity of nonstructural mass for end A.
-
m1b
= None¶ y coordinate of center of gravity of nonstructural mass for end B.
-
m2a
= None¶ z coordinate of center of gravity of nonstructural mass for end A.
-
m2b
= None¶ z coordinate of center of gravity of nonstructural mass for end B.
-
mid
= None¶ Material ID
-
n1a
= None¶ y coordinate of neutral axis for end A.
-
n1b
= None¶ y coordinate of neutral axis for end B.
-
n2a
= None¶ z coordinate of neutral axis for end A.
-
n2b
= None¶ z coordinate of neutral axis for end B.
-
nsia
= None¶ non structural mass moment of inertia per unit length about nsm center of gravity at Point A.
-
nsib
= None¶ non structural mass moment of inertia per unit length about nsm center of gravity at Point B.
-
pid
= None¶ Property ID
-
repr_fields
()[source]¶ Gets the fields in their simplified form
- Returns
- fieldsList[varies]
the fields that define the card
-
s1
= None¶ Shear relief coefficient due to taper for plane 1.
-
s2
= None¶ Shear relief coefficient due to taper for plane 2.
-
type
= 'PBEAM'¶
-
class
pyNastran.bdf.cards.properties.beam.
PBEAML
(pid: int, mid: int, beam_type: str, xxb, dims, so=None, nsm=None, group: str = 'MSCBML0', comment: str = '')[source]¶ Bases:
pyNastran.bdf.cards.properties.bars.IntegratedLineProperty
1
2
3
4
5
6
7
8
9
PBEAML
PID
MID
GROUP
TYPE
DIM1(A)
DIM2(A)
etc.
DIMn(A)
NSM(A)
SO(1)
X(1)/XB
DIM1(1)
DIM2(1)
etc.
DIMn(1)
NSM(1)
SO(2)
X(2)/XB
DIM1(2)
DIM2(2)
etc.
DIMn(2)
NSM(m)
etc.
SO(m)
X(m)/XB
DIM1(m)
etc.
DIMn(m)
NSM(m)
SO(B)
1.0
DIM1(B)
DIM2(B)
etc.
DIMn(B)
NSM(B)
Creates a PBEAML card
- Parameters
- pidint
property id
- midint
material id
- beam_typestr
the section profile
- xxbList[float]
The percentage locations along the beam [0., …, 1.]
- dimsList[dim]
- dimList[float]
The dimensions for each section
- soList[str]; default=None
YES, YESA, NO None : [0.] * len(xxb)
- nsmList[float]; default=None
nonstructural mass per unit length None : [0.] * len(xxb)
- groupstr; default=’MSCBML0’
this parameter can lead to a very broken deck with a very bad error message; don’t touch it!
- commentstr; default=’’
a comment for the card
-
Area
()[source]¶ Gets the Area \(A\) of the PBEAML.
\[A = \int \, A(x) dx\]Notes
a spline is fit to \(A(x)\) and then integrated.
-
MassPerLength
()[source]¶ Gets the mass per length \(\frac{m}{L}\) of the PBEAML.
\[\frac{m}{L} = A(x) \rho + nsm\]\[\frac{m}{L} = nsm L + \rho \int \, A(x) dx\]
-
property
Type
¶ gets Type
-
_properties
= ['valid_types', 'Type']¶
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBEAML card from
BDF.add_card(...)
- Parameters
- cardBDFCard()
a BDFCard object
- commentstr; default=’’
a comment for the card
-
beam_type
= None¶ Section Type (e.g. ‘ROD’, ‘TUBE’, ‘I’, ‘H’)
-
cross_reference
(model: BDF) → None[source]¶ Cross links the card so referenced cards can be extracted directly
- Parameters
- modelBDF()
the BDF object
- .. warning:: For structural problems, PBEAML entries must
reference a MAT1 material entry
- .. warning:: For heat-transfer problems, the MID must
reference a MAT4 or MAT5 material entry.
- .. todo:: What happens when there are 2 subcases?
-
mid
= None¶ Material ID
-
pid
= None¶ Property ID
-
repr_fields
()[source]¶ Gets the fields in their simplified form
- Returns
- fieldsList[varies]
the fields that define the card
-
type
= 'PBEAML'¶
-
valid_types
= {'BAR': 2, 'BOX': 4, 'BOX1': 6, 'CHAN': 4, 'CHAN1': 4, 'CHAN2': 4, 'CROSS': 4, 'DBOX': 10, 'H': 4, 'HAT': 4, 'HAT1': 5, 'HEXA': 3, 'I': 6, 'I1': 4, 'L': 4, 'ROD': 1, 'T': 4, 'T1': 4, 'T2': 4, 'TUBE': 2, 'TUBE2': 2, 'Z': 4}¶
-
class
pyNastran.bdf.cards.properties.beam.
PBMSECT
(pid, mid, form, options, comment='')[source]¶ Bases:
pyNastran.bdf.cards.properties.bars.LineProperty
not done
dummy init
-
MassPerLength
()[source]¶ Gets the mass per length \(\frac{m}{L}\) of the CBEAM.
\[\frac{m}{L} = A \rho + nsm\]
-
_properties
= ['outp_id']¶
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBMSECT card from
BDF.add_card(...)
- Parameters
- cardList[str]
this card is special and is not a
BDFCard
like other cards- commentstr; default=’’
a comment for the card
-
cross_reference
(model: BDF) → None[source]¶ Cross links the card so referenced cards can be extracted directly
- Parameters
- modelBDF()
the BDF object
-
mid
= None¶ Material ID
-
property
outp_id
¶
-
pid
= None¶ Property ID
-
plot
(model, figure_id=1, show=False)[source]¶ Plots the beam section
- Parameters
- modelBDF()
the BDF object
- figure_idint; default=1
the figure id
- showbool; default=False
show the figure when done
-
type
= 'PBMSECT'¶
-
-
pyNastran.bdf.cards.properties.beam.
update_pbeam_negative_integer
(pname_fid)[source]¶ Converts the negative PBEAM value to a positive one
- Parameters
- pname_fidint
for a PBEAM this should be between [-5, -167] the negative values correspond to the numbers in the MPT OP2 table
- Returns
- pname_fidstr
a pname is of ‘J(3)’ is far more clear than -37
- TODO: only handles istation=0 for now (e.g., ‘J(1)’)