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: - pid : int
Property ID
- mid : int
Material ID
- mids : List[int]
Material ID for the i-th integration point
- y / z : List[float]
The (y,z) coordinates of the lumped areas in the element coordinate system
- c : List[float]; default=0.0
Fraction of the total area for the i-th lumped area default not supported…
- area : float
Area of beam cross section
- i1 / i2 : float; default=0.0
Area moment of inertia about plane 1/2 about the neutral axis
- i12 : float; default=0.0
area product of inertia
- j : float; default=0.0
Torsional moment of interia
- nsm : float; default=0.0
Nonstructural mass per unit length
- k1 / k2 : float; default=1.0
Shear stiffness factor K in K*A*G for plane 1/2
- m1 / m2 : float; default=0.0
The (y,z) coordinates of center of gravity of nonstructural mass
- n1 / n2 : float; default=0.0
The (y,z) coordinates of neutral axis
- symopt : int; default=0
Symmetry option to input lumped areas for the beam cross section 0 < Integer < 5
- comment : str; default=’‘
a comment for the card
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBCOMP card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
cross_reference
(self, model)[source]¶ Cross links the card so referenced cards can be extracted directly
Parameters: - model : BDF()
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
(self)[source]¶ Gets the fields in their simplified form
Returns: - fields : List[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: - pid : int
property id
- mid : int
material id
- xxb : List[float]
The percentage locations along the beam [0., …, 1.]
- so : List[str]
YES, YESA, NO
- area : List[float]
area
- i1, i2, i12, j : List[float]
moments of inertia
- nsm : List[float]
nonstructural mass per unit length
- c1/c2, d1/d2, e1/e2, f1/f2 : List[float]; default=None -> [0.]*nxxb
the y/z locations of the stress recovery points c1 - point C.y c2 - point C.z
- k1 / k2 : float; default=1.
Shear stiffness factor K in K*A*G for plane 1/2.
- s1 / s2 : float; default=0.
Shear relief coefficient due to taper for plane 1/2.
- nsia / nsia : float; default=0. / nsia
non structural mass moment of inertia per unit length about nsm center of gravity at Point A/B.
- cwa / cwb : float; default=0. / cwa
warping coefficient for end A/B.
- m1a / m2a : float; default=0. / 0.
y/z coordinate of center of gravity of nonstructural mass for end A.
- m1b / m2b : float; default=m1a / m2a
y/z coordinate of center of gravity of nonstructural mass for end B.
- n1a / n2a : float; default=0. / 0.
y/z coordinate of neutral axis for end A.
- n1b / n2b : float; default=n1a / n2a
y/z coordinate of neutral axis for end B.
- comment : str; default=’‘
a comment for the card
-
_interpolate_sections
(self)[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: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
cross_reference
(self, model)[source]¶ Cross links the card so referenced cards can be extracted directly
Parameters: - model : BDF()
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
(self)[source]¶ Gets the fields in their simplified form
Returns: - fields : List[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, mid, beam_type, xxb, dims, so=None, nsm=None, group='MSCBML0', comment='')[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: - pid : int
property id
- mid : int
material id
- beam_type : str
the section profile
- xxb : List[float]
The percentage locations along the beam [0., …, 1.]
- dims : List[dim]
- dim : List[float]
The dimensions for each section
- so : List[str]; default=None
YES, YESA, NO None : [0.] * len(xxb)
- nsm : List[float]; default=None
nonstructural mass per unit length None : [0.] * len(xxb)
- group : str; default=’MSCBML0’
this parameter can lead to a very broken deck with a very bad error message; don’t touch it!
- comment : str; default=’‘
a comment for the card
-
Area
(self)[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
(self)[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\]
-
Type
¶ gets Type
-
_properties
= ['valid_types', 'Type']¶
-
classmethod
add_card
(card, comment='')[source]¶ Adds a PBEAML card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
beam_type
= None¶ Section Type (e.g. ‘ROD’, ‘TUBE’, ‘I’, ‘H’)
-
cross_reference
(self, model)[source]¶ Cross links the card so referenced cards can be extracted directly
Parameters: - model : BDF()
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
(self)[source]¶ Gets the fields in their simplified form
Returns: - fields : List[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
-
MassPerLength
(self)[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: - card : List[str]
this card is special and is not a
BDFCard
like other cards- comment : str; default=’‘
a comment for the card
-
cross_reference
(self, model)[source]¶ Cross links the card so referenced cards can be extracted directly
Parameters: - model : BDF()
the BDF object
-
mid
= None¶ Material ID
-
outp_id
¶
-
pid
= None¶ Property ID
-
plot
(self, model, figure_id=1, show=False)[source]¶ Plots the beam section
Parameters: - model : BDF()
the BDF object
- figure_id : int; default=1
the figure id
- show : bool; 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_fid : int
for a PBEAM this should be between [-5, -167] the negative values correspond to the numbers in the MPT OP2 table
Returns: - pname_fid : str
a pname is of ‘J(3)’ is far more clear than -37
- TODO: only handles istation=0 for now (e.g., ‘J(1)’)