shell Module

Inheritance diagram of pyNastran.bdf.cards.properties.shell

All shell properties are defined in this file. This includes:

  • PCOMP

  • PCOMPG

  • PLPLANE

  • PSHEAR

  • PSHELL

  • PPLANE

All shell properties are Property objects.

class pyNastran.bdf.cards.properties.shell.CompositeShellProperty[source]

Bases: pyNastran.bdf.cards.base_card.Property

Common class for:
  • PCOMP

  • PCOMPG

dummy init

MassPerArea(iply='all', method='nplies', tflag: int = 1, tscales=None)[source]
MassPerArea_structure() → float[source]
Material(iply) → Union[MAT1, MAT8, MAT9][source]

Gets the material of the \(i^{th}\) ply (not the ID unless it is not cross-referenced).

Parameters
iplyint

the ply ID (starts from 0)

Mid(iply) → int[source]

Gets the Material ID of the \(i^{th}\) ply.

Parameters
iplyint/str; default=’all’

the string ‘all’ (default) or the mass per area of the \(i^{th}\) ply

Returns
material_idint

the material id of the ith ply

Mids() → List[int][source]
Nsm() → float[source]
Rho(iply: int) → float[source]
property TRef
Theta(iply: int) → float[source]
Thickness(iply: Union[int, str] = 'all', tflag: int = 1, tscales=None)[source]
_adjust_ply_id(iply: int) → int[source]

Gets the ply ID that’s 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
iplyint

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: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

get_density(iply) → float[source]

Gets the density of the \(i^{th}\) ply

Parameters
iplyint

the ply ID (starts from 0)

get_mass_per_area(iply='all', method: str = 'nplies') → float[source]

Gets the Mass/Area for the property.

\[\frac{m}{A} = \sum(\rho t) + nsm\]

or

\[\frac{m}{A} - nsm = \sum(\rho t)\]

and

\[\frac{m_i}{A} = rho_i t_i + nsm_i\]

where \(nsm_i\) is the non-structural mass of the \(i^{th}\) ply

Parameters
iplystr/int; default=’all’

str : the string ‘all’ (default) or the mass per area of the \(i^{th}\) ply

methodstr

the method to compute MassPerArea {nplies, rho*t, t}

  • 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 \(n_{plies}\) (default)

    \(nsm_i = nsm / n_{plies}\) # smear based on nplies

  • Case 3 (iply != all)

    method ‘rho*t’ smear the nsm based on the mass distribution

    \[nsm_i = \rho_i t_i \frac{nsm}{\sum(\rho_i t_i)}\]
    \[nsm_i = \rho_i t_i \frac{nsm}{\frac{m}{A} - nsm}\]
  • Case 4 (iply != all)

    method ‘t’ smear the nsm based on the thickness distribution

    \[nsm_i = t_i \frac{nsm}{\sum(t_i)}\]
.. note:: final mass calculation will be done later
get_mass_per_area_rho(rhos: List[float], iply='all', method: str = 'nplies') → float[source]

Gets the Mass/Area for the property.

\[\frac{m}{A} = \sum(\rho t) + nsm\]

or

\[\frac{m}{A} - nsm = \sum(\rho t)\]

and

\[\frac{m_i}{A} = rho_i t_i + nsm_i\]

where \(nsm_i\) is the non-structural mass of the \(i^{th}\) ply

Parameters
rhosList[float]

the densities of each ply

iplystr/int; default=’all’

the mass per area of the \(i^{th}\) ply

methodstr

the method to compute MassPerArea {nplies, rho*t, t}

  • 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 \(n_{plies}\) (default)

    \(nsm_i = nsm / n_{plies}\) # smear based on nplies

  • Case 3 (iply != all)

    method ‘rho*t’ smear the nsm based on the mass distribution

    \[nsm_i = \rho_i t_i \frac{nsm}{\sum(\rho_i t_i)}\]
    \[nsm_i = \rho_i t_i \frac{nsm}{\frac{m}{A} - nsm}\]
  • Case 4 (iply != all)

    method ‘t’ smear the nsm based on the thickness distribution

    \[nsm_i = t_i \frac{nsm}{\sum(t_i)}\]
.. note:: final mass calculation will be done later
get_mass_per_area_structure(rhos: List[float]) → float[source]

Gets the Mass/Area for the property structure only (doesn’t consider nsm).

\[\frac{m}{A} = \sum(\rho t)\]
Parameters
rhosList[float]

the densities of each ply

get_material_id(iply: int) → int[source]
get_material_ids()[source]
get_nonstructural_mass() → float[source]

Gets the non-structural mass \(i^{th}\) ply

get_sout(iply) → str[source]

Gets the the flag identifying stress/strain outpur of the \(i^{th}\) ply (not the ID). default=’NO’.

Parameters
iplyint

the ply ID (starts from 0)

get_theta(iply) → float[source]

Gets the ply angle of the \(i^{th}\) ply (not the ID)

Parameters
iplyint

the ply ID (starts from 0)

get_thetas() → numpy.ndarray[source]
get_thickness(iply: Union[int, str] = 'all') → float[source]

Gets the thickness of the \(i^{th}\) ply.

Parameters
iplyint/str; default=’all’

the string ‘all’ (default) or the mass per area of the \(i^{th}\) ply

Returns
thicknessfloat

the thickness of the ply or plies

get_thicknesses() → numpy.ndarray[source]
get_z_locations() → numpy.ndarray[source]

Gets the z locations for the various plies.

Parameters
iplyint

the ply ID (starts from 0)

Assume there are 2 plies, each of 1.0 thick, starting from :math:`z=0`.
>>> pcomp.get_z_locations()
[0., 1., 2.]
property is_symmetrical

Is the laminate symmetrical?

Returns
is_symmetricalbool

is the SYM flag active?

property material_ids

Gets the material IDs of all the plies

Returns
midsMATx

the material IDs

property nplies

Gets the number of plies including the core.

if Lam=SYM:
  returns nplies * 2   (even)
else:
  returns nplies
sout(iply: int) → str[source]
uncross_reference() → None[source]

Removes cross-reference links

class pyNastran.bdf.cards.properties.shell.PCOMP(pid: int, mids: List[int], thicknesses: List[float], thetas: Optional[List[float]] = None, souts: Optional[List[str]] = None, nsm: float = 0.0, sb: float = 0.0, ft: Optional[str] = None, tref: float = 0.0, ge: float = 0.0, lam: Optional[str] = None, z0: Optional[float] = None, comment: str = '')[source]

Bases: pyNastran.bdf.cards.properties.shell.CompositeShellProperty

1

2

3

4

5

6

7

8

9

PCOMP

PID

Z0

NSM

SB

FT

TREF

GE

LAM

MID1

T1

THETA1

SOUT1

MID2

T2

THETA2

SOUT2

MID3

T3

THETA3

SOUT3

etc.

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

YES

300704

3.7-2

-45.

YES

300704

3.7-2

YES

300705

.5

0.0+0

YES

Creates a PCOMP card

pidint

property id

midsList[int, …, int]

material ids for each ply

thicknessesList[float, …, float]

thicknesses for each ply

thetasList[float, …, float]; default=None

ply angle None : [0.] * nplies

soutsList[str, …, str]; default=None

should the stress? be printed; {YES, NO} None : [NO] * nplies

nsmfloat; default=0.

nonstructural mass per unit area

sbfloat; default=0.

Allowable shear stress of the bonding material. Used by the failure theory

ftstr; default=None

failure theory; {HILL, HOFF, TSAI, STRN, None}

treffloat; default=0.

reference temperature

gefloat; default=0.

structural damping

lamstr; default=None

symmetric flag; {SYM, MEM, BEND, SMEAR, SMCORE, None} None : not symmmetric

z0float; default=None

Distance from the reference plane to the bottom surface None : -1/2 * total_thickness

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
_properties = ['_field_map', 'plies', 'nplies', 'material_ids']
classmethod add_card(card: BDFCard, comment='')[source]

Adds a PCOMP card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

ft = None

Failure Theory [‘HILL’, ‘HOFF’, ‘TSAI’, ‘STRN’, None]

get_ABD_matrices(theta_offset: float = 0.0) → numpy.ndarray[source]

Gets the ABD matrix

Parameters
theta_offsetfloat

rotates the ABD matrix; measured in degrees

get_Qbar_matrix(mid_ref, theta: float) → numpy.ndarray[source]

theta must be in radians

get_Sbar_matrix(mid_ref, theta: float) → numpy.ndarray[source]

theta must be in radians

get_individual_ABD_matrices(theta_offset: float = 0.0) → Tuple[np.ndarray, np.ndarray, np.ndarray][source]

Gets the ABD matrix

Parameters
theta_offsetfloat

rotates the ABD matrix; measured in degrees

get_z0_z1_zmean()[source]
is_balanced_symmetric(debug=True)[source]

assumes materials with different mids are unique

lam = None

symmetric flag - default = No Symmetry (=None)

nsm = None

Non-Structural Mass per unit Area

pid = None

Property ID

property plies
raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

tref = None

Reference Temperature (default=0.0)

type = 'PCOMP'
update_by_pname_fid(pname_fid: Union[str, int], value: Union[int, float, str]) → None[source]
validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PCOMPG(pid: int, global_ply_ids: List[int], mids: List[int], thicknesses: List[float], thetas: Optional[List[float]] = None, souts: Optional[List[str]] = None, nsm: float = 0.0, sb: float = 0.0, ft: Optional[str] = None, tref: float = 0.0, ge: float = 0.0, lam: Optional[str] = None, z0: Optional[float] = None, comment: str = '')[source]

Bases: pyNastran.bdf.cards.properties.shell.CompositeShellProperty

1

2

3

4

5

6

7

8

9

PCOMPG

PID

Z0

NSM

SB

FT

TREF

GE

LAM

GPLYID1

MID1

T1

THETA1

SOUT1

GPLYID2

MID2

T2

THETA2

SOUT2

Creates a PCOMPG card

Parameters
pidint

property id

global_ply_idsList[int]

the ply id

midsList[int, …, int]

material ids for each ply

thicknessesList[float, …, float]

thicknesses for each ply

thetasList[float, …, float]; default=None

ply angle None : [0.] * nplies

soutsList[str, …, str]; default=None

should the stress? be printed; {YES, NO} None : [NO] * nplies

nsmfloat; default=0.

nonstructural mass per unit area

sbfloat; default=0.

Allowable shear stress of the bonding material. Used by the failure theory

ftstr; default=None

failure theory; {HILL, HOFF, TSAI, STRN, None}

treffloat; default=0.

reference temperature

gefloat; default=0.

structural damping

lamstr; default=None

symmetric flag; {SYM, MEM, BEND, SMEAR, SMCORE, None} None : not symmmetric

z0float; default=None

Distance from the reference plane to the bottom surface None : -1/2 * total_thickness

commentstr; default=’’

a comment for the card

GlobalPlyID(iply: int) → int[source]

returns the global ply id for the specified layer

classmethod _init_from_empty()[source]
_properties = ['_field_map', 'plies', 'nplies', 'material_ids']
classmethod add_card(card: BDFCard, comment: str = '')[source]

Adds a PCOMPG card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

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

property plies
pname_fid_map = {}
raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

tref = None

Reference Temperature (default=0.0)

type = 'PCOMPG'
update_by_pname_fid(pname_fid: Union[str, int], value) → None[source]
validate() → None[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PLPLANE(pid, mid, cid=0, stress_strain_output_location='GRID', comment='')[source]

Bases: pyNastran.bdf.cards.base_card.Property

Fully Nonlinear Plane Element Properties (SOL 601) Defines the properties of a fully nonlinear (i.e., large strain and large rotation) hyperelastic plane strain or axisymmetric element.

1

2

3

4

5

PLPLANE

PID

MID

CID

STR

MSC

1

2

3

4

5

6

PLPLANE

PID

MID

CID

STR

T

NX

Referenced by:

#- CQUAD, CQUAD4, CQUAD8, CQUADX, CTRIA3, CTRIA6, CTRIAX (MSC) #- CPLSTS3, CPLSTS4, CPLSTS6, CPLSTS8 entries (NX 10)

Creates a PLPLANE card, which defines the properties of a fully nonlinear (i.e., large strain and large rotation) hyperelastic plane strain or axisymmetric element.

Parameters
pidint

property id

midint

material id; MATHP / MATHE

cidint; default=0

???

stress_strain_output_locationstr; default=’GRID’

???

commentstr; default=’’

a comment for the card

Cid()[source]
Mid()[source]

returns the material id

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds a PLPLANE 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

pid = None

Property ID

raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

type = 'PLPLANE'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PPLANE(pid, mid, t=0.0, nsm=0.0, formulation_option=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.Property

NX specific card

MassPerArea(tflag=1, tscales=None)[source]

Calculates mass per area.

\[\]

rac{m}{A} = nsm + ho t

Mid()[source]

returns the material id

Thickness()[source]

returns the thickness of the element

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds a PPLANE 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

pid = None

Property ID

raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

type = 'PPLANE'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PSHEAR(pid: int, mid: int, t: float, nsm: float = 0.0, f1: float = 0.0, f2: float = 0.0, comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.Property

Defines the properties of a shear panel (CSHEAR entry).

1

2

3

4

5

6

7

PSHEAR

PID

MID

T

NSM

F1

F2

Creates a PSHEAR card

Parameters
pidint

property id

midint

material id

tfloat

shear panel thickness

nsmfloat; default=0.

nonstructural mass per unit length

f1float; default=0.0

Effectiveness factor for extensional stiffness along edges 1-2 and 3-4

f2float; default=0.0

Effectiveness factor for extensional stiffness along edges 2-3 and 1-4

commentstr; default=’’

a comment for the card

MassPerArea(tflag=1, tscales=None)[source]

Calculates mass per area.

\[\]

rac{m}{A} = nsm + ho t

Mid()[source]

returns the material id

Rho()[source]

returns the material density

Thickness()[source]

returns the thickness of the element

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds a PSHEAR 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

mid = None

Material ID

pid = None

Property ID

pname_fid_map = {4: 't', 'T': 't'}
raw_fields()[source]
type = 'PSHEAR'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PSHELL(pid: int, mid1: Optional[int] = None, t: Optional[float] = None, mid2: Optional[int] = None, twelveIt3: float = 1.0, mid3: Optional[int] = None, tst: float = 0.833333, nsm: float = 0.0, z1: Optional[float] = None, z2: Optional[float] = None, mid4: Optional[int] = None, comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.Property

1

2

3

4

5

6

7

8

9

PSHELL

PID

MID1

T

MID2

12I/T**3

MID3

TS/T

NSM

Z1

Z2

MID4

PSHELL

41111

1

1.0000

1

1

0.02081

Creates a PSHELL card

Parameters
pidint

property id

mid1int; default=None

defines membrane material defines element density (unless blank)

mid2int; default=None

defines bending material defines element density if mid1=None

mid3int; default=None

defines transverse shear material (only defined if mid2 > 0)

mid4int; default=None

defines membrane-bending coupling material (only defined if mid1 > 0 and mid2 > 0; can’t be mid1/mid2)

twelveIt3float; default=1.0

Bending moment of inertia ratio, 12I/T^3. Ratio of the actual bending moment inertia of the shell, I, to the bending moment of inertia of a homogeneous shell, T^3/12. The default value is for a homogeneous shell.

nsmfloat; default=0.0

non-structural mass per unit area

z1 / z2float; default=None

fiber distance location 1/2 for stress/strain calculations z1 default : -t/2 if thickness is defined z2 default : t/2 if thickness is defined

commentstr; default=’’

a comment for the card

MassPerArea(tflag=1, tscales=None)[source]

Calculates mass per area.

\[\]

rac{m}{A} = nsm + ho t

MassPerArea_no_xref(model, tflag=1, tscales=None)[source]

Calculates mass per area.

\[\]

rac{m}{A} = nsm + ho t

MassPerArea_structure()[source]

Calculates mass per area without considering non-structural mass.

\[\]

rac{m}{A} = nsm + ho t

Mid() → Optional[int][source]

returns the material id used for mass

Mid1() → Optional[int][source]

returns the extension material id

Mid2() → Optional[int][source]

returns the bending material id

Mid3() → Optional[int][source]
Mid4() → Optional[int][source]
Nsm() → float[source]

returns the non-structural mass

Rho() → float[source]

returns the material density

Thickness(tflag: int = 1, tscales=None)[source]

returns the thickness of the element

classmethod add_card(card, comment='')[source]

Adds a PSHELL card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

classmethod add_card_lax(card, comment='')[source]

see add_card

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

classmethod export_to_hdf5(h5_file, model, pids)[source]

exports the properties in a vectorized way

get_ABD_matrices(theta_offset=0.0) → numpy.ndarray[source]

Gets the ABD matrix

Parameters
theta_offsetfloat

rotates the ABD matrix; measured in degrees

get_Qbar_matrix(mid_ref, theta=0.0)[source]

theta must be in radians

get_Sbar_matrix(mid_ref, theta=0.0)[source]

theta must be in radians

get_individual_ABD_matrices(theta_offset: float = 0.0) → Tuple[np.ndarray, np.ndarray, np.ndarray][source]

Gets the ABD matrix

Parameters
theta_offsetfloat

rotates the ABD matrix; measured in degrees

http://www2.me.rochester.edu/courses/ME204/nx_help/index.html#uid:id503291
Understanding Classical Lamination Theory
get_z_locations() → List[float][source]

returns the locations of the bottom and top surface of the shell

property material_ids

returns the material ids

materials()[source]

returns the material objects referenced by the shell

mid2 = None

Material identification number for bending -1 for plane strin

property mid_ref

returns the material used for mass

nsm = None

Non-structural Mass

pid = None

Property ID

pname_fid_map = {4: 't', 'T': 't', 6: 'twelveIt3', 8: 'tst'}
raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

t = None

thickness

tst = None

Transverse shear thickness ratio, . Ratio of the shear thickness, ts/t, to the membrane thickness of the shell, t. The default value is for a homogeneous shell.

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 = 'PSHELL'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.properties.shell.PTRSHL(pid: int, mid1: int, t: List[float], mid2: int, I: List[float], mid3: int, ts: List[float], nsm: float, z: List[float], comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.Property

1

2

3

4

5

6

7

8

9

PTRSHL

PID

MID1

T1

T3

T5

MID2

I1

I3

I5

MID3

TS1

TS3

TS5

NSM

Z11

Z21

Z13

Z23

Z15

Z25

PTRSHL

10

20

3.0

6.0

4.0

30

2.25

18.0

5.33

40

2.5

5.0

3.5

50.0

1.5

-1.5

3.0

-3.0

2.0

-2.0

Creates a PTRSHL card

Parameters
pidint

property id

mid1int; default=None

defines membrane material

T1 / T3 / T5float

Thickness at vertices 1, 3, and 5 of the element, respectively

mid2int

Material identification number for bending; mid2 > 0

I1 / I3 / I5float

Area moments of inertia per unit width at the vertices 1, 3, and 5 of the element, respectively (Real >= 0.0).

mid3int

Material identification number for transverse shear; mid3 >= 0

ts1 / ts3 / ts5float

Transverse shear thickness at the vertices 1, 3, and 5 of the element, respectively (Real >= 0.0).

nsmfloat

Nonstructural mass per unit area (Real)

Z11, Z21, Z13, Z23, Z15, Z25float

Fiber distances for stress computation at grid points G1, G3, and G5 respectively, positive according to the right-hand sequence defined on the CTRSHL card (Real >= 0.0).

I = None

inertia (I1, I3, I5)

MassPerArea(tflag=1, tscales=None)[source]

Calculates mass per area.

\[\]

rac{m}{A} = nsm + ho t

Mid()[source]

returns the material ID of an element

Returns
midint

the Material ID

Mid1()[source]

returns the extension material id

Mid2()[source]

returns the bending material id

Mid3()[source]
Nsm()[source]

returns the non-structural mass

Rho()[source]

returns the material density

Thickness(tflag=1, tscales=None)[source]

returns the thickness of the element

classmethod add_card(card, comment='')[source]

Adds a PTRSHL 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

property material_ids

returns the material ids

materials()[source]

returns the material objects referenced by the shell

pid = None

Property ID

raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

t = None

thickness (T1, T3, T5)

ts = None

thickness (TS1, TS3, TS5)

type = 'PTRSHL'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

pyNastran.bdf.cards.properties.shell.get_2d_plate_transform(theta)[source]

theta must be in radians

pyNastran.bdf.cards.properties.shell.map_failure_theory_int(ft: int) → str[source]