shell Module

digraph inheritance3c94153c66 { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.bdf.cards.base_card.BaseCard" [URL="../pyNastran.bdf.cards.base_card.html#pyNastran.bdf.cards.base_card.BaseCard",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Defines a series of base methods for every card class"]; "pyNastran.bdf.cards.base_card.Element" [URL="../pyNastran.bdf.cards.base_card.html#pyNastran.bdf.cards.base_card.Element",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="defines the Element class"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.base_card.Element" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTN3" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTN3",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx3" -> "pyNastran.bdf.cards.elements.shell.CPLSTN3" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTN4" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTN4",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx4" -> "pyNastran.bdf.cards.elements.shell.CPLSTN4" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTN6" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTN6",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx6" -> "pyNastran.bdf.cards.elements.shell.CPLSTN6" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTN8" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTN8",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx8" -> "pyNastran.bdf.cards.elements.shell.CPLSTN8" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTS3" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTS3",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+---------+-------+-------+----+----+----+-------+-------+-----+"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CPLSTS3" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTS4" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTS4",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+---------+-------+-------+----+-------+----+-------+-------+------+"]; "pyNastran.bdf.cards.elements.shell.CPLSTx4" -> "pyNastran.bdf.cards.elements.shell.CPLSTS4" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTS6" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTS6",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx6" -> "pyNastran.bdf.cards.elements.shell.CPLSTS6" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTS8" [URL="#pyNastran.bdf.cards.elements.shell.CPLSTS8",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top"]; "pyNastran.bdf.cards.elements.shell.CPLSTx8" -> "pyNastran.bdf.cards.elements.shell.CPLSTS8" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTx3" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="+---------+-------+-------+----+----+----+-------+"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CPLSTx3" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTx4" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="+---------+-------+-------+----+----+----+----+-------+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CPLSTx4" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTx6" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CPLSTx6" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CPLSTx8" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CPLSTx8" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CQUAD" [URL="#pyNastran.bdf.cards.elements.shell.CQUAD",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+-------+-------+-----+----+------------+----+----+----+----+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CQUAD" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CQUAD4" [URL="#pyNastran.bdf.cards.elements.shell.CQUAD4",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-------+-------+----+----+----+----+------------+---------+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CQUAD4" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CQUAD8" [URL="#pyNastran.bdf.cards.elements.shell.CQUAD8",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-------+-----+----+----+----+----+------------+-------+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CQUAD8" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CQUADR" [URL="#pyNastran.bdf.cards.elements.shell.CQUADR",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-------+-------+----+----+----+----+------------+---------+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CQUADR" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CSHEAR" [URL="#pyNastran.bdf.cards.elements.shell.CSHEAR",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-------+-------+----+----+----+----+"]; "pyNastran.bdf.cards.elements.shell.QuadShell" -> "pyNastran.bdf.cards.elements.shell.CSHEAR" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CTRIA3" [URL="#pyNastran.bdf.cards.elements.shell.CTRIA3",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-------+-------+----+----+----+------------+---------+"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CTRIA3" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CTRIA6" [URL="#pyNastran.bdf.cards.elements.shell.CTRIA6",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+------------+---------+----+----+----+----+----+-----+"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CTRIA6" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.CTRIAR" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="+--------+-------+-------+----+----+----+------------+---------+"]; "pyNastran.bdf.cards.elements.shell.TriShell" -> "pyNastran.bdf.cards.elements.shell.CTRIAR" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.QuadShell" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.bdf.cards.elements.shell.ShellElement" -> "pyNastran.bdf.cards.elements.shell.QuadShell" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.SNORM" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="+--------+-------+-------+----+-----+----+"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.elements.shell.SNORM" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.ShellElement" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.bdf.cards.base_card.Element" -> "pyNastran.bdf.cards.elements.shell.ShellElement" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.elements.shell.TriShell" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled"]; "pyNastran.bdf.cards.elements.shell.ShellElement" -> "pyNastran.bdf.cards.elements.shell.TriShell" [arrowsize=0.5,style="setlinewidth(0.5)"]; }

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

  • CTRIA3

  • CTRIA6

  • CSHEAR

  • CQUAD

  • CQUAD4

  • CQUAD8

  • CQUADR

  • CPLTSN3

  • CPLSTN4

  • CPLSTN6

  • CPLSTN8

  • SNORM

All tris are TriShell, ShellElement, and Element objects. All quads are QuadShell, ShellElement, and Element objects.

class pyNastran.bdf.cards.elements.shell.CPLSTN3(eid, pid, nids, theta=0.0, comment='')[source]

Bases: CPLSTx3

NX specific card

type = 'CPLSTN3'
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.elements.shell.CPLSTN4(eid, pid, nids, theta=0.0, comment='')[source]

Bases: CPLSTx4

dummy init

type = 'CPLSTN4'
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.elements.shell.CPLSTN6(eid, pid, nids, theta=0.0, comment='')[source]

Bases: CPLSTx6

dummy init

type = 'CPLSTN6'
class pyNastran.bdf.cards.elements.shell.CPLSTN8(eid, pid, nids, theta=0.0, comment='')[source]

Bases: CPLSTx8

dummy init

type = 'CPLSTN8'
class pyNastran.bdf.cards.elements.shell.CPLSTS3(eid, pid, nids, theta=0.0, tflag=0, T1=1.0, T2=1.0, T3=1.0, comment='')[source]

Bases: TriShell

1

2

3

4 | 5

6

7

8

9

CPLSTS3

EID

PID

N1 | N2

N3

THETA

TFLAG

T1

T2

T3

dummy init

Mass() float[source]
\[m = \frac{m}{A} A \f]\]
_get_repr_defaults()[source]
classmethod add_card(card, comment='')[source]

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

flip_normal()[source]

Flips normal of element.

   1           1
  * *   -->   * *
 *   *       *   *
2-----3     3-----2
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CPLSTS3'
uncross_reference() None[source]

Removes cross-reference links

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.elements.shell.CPLSTS4(eid, pid, nids, theta=0.0, tflag=0, T1=1.0, T2=1.0, T3=1.0, T4=1.0, comment='')[source]

Bases: CPLSTx4

1

2

3

4

5

6

7

8

9

CPLSTS4

EID

PID

N1

N2

N3

N4

THETA

TFLAG

T1

T2

T3

T4

[‘CPLSTS4’, ‘1’, ‘5’, ‘17’, ‘18’, ‘19’, ‘20’, ‘0.0’]

dummy init

Mass() float[source]
\[m = \frac{m}{A} A \f]\]
_get_repr_defaults()[source]
classmethod add_card(card, comment='')[source]

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

flip_normal()[source]

Flips normal of element.

   1           1
  * *   -->   * *
 *   *       *   *
2-----3     3-----2
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CPLSTS4'
uncross_reference() None[source]

Removes cross-reference links

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.elements.shell.CPLSTS6(eid, pid, nids, theta=0.0, comment='')[source]

Bases: CPLSTx6

dummy init

type = 'CPLSTS6'
class pyNastran.bdf.cards.elements.shell.CPLSTS8(eid, pid, nids, theta=0.0, tflag=0, T1=1.0, T2=1.0, T3=1.0, T4=1.0, T5=1.0, T6=1.0, T7=1.0, T8=1.0, comment='')[source]

Bases: CPLSTx8

dummy init

type = 'CPLSTS8'
class pyNastran.bdf.cards.elements.shell.CQUAD(eid, pid, nids, theta_mcid=0.0, comment='')[source]

Bases: QuadShell

1

2

3

4

5

6

7

8

9

CQUAD

EID

PID

G1

G2

G3

G4

G5

G6

G7

G8

G9

THETA/MCID

theta_mcid is an MSC specific variable

Creates a CQUAD card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int, int, int/None, int/None,

int/None, int/None, int/None]

node ids

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

commentstr; default=’’

a comment for the card

Area()[source]
\[A = \frac{1}{2} \lvert (n_1-n_3) \times (n_2-n_4) \rvert\]

where a and b are the quad’s cross node point vectors

Mass() float[source]
\[m = \frac{m}{A} A \f]\]
Thickness() float[source]

Returns the thickness

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

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

eid

Element ID

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

exports the elements in a vectorized way

flip_normal() None[source]
1--5--2       1--8--4
|     |  -->  |     |
8  9  6       5  9  7
|     |       |     |
4--7--3       2--6--3
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CQUAD'
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.elements.shell.CQUAD4(eid, pid, nids, theta_mcid=0.0, zoffset=0.0, tflag=0, T1=None, T2=None, T3=None, T4=None, comment='')[source]

Bases: QuadShell

1

2

3

4 | 5

6

7

8

9

CQUAD4

EID

PID

N1 | N2

N3

N4

THETA/MCID

ZOFFSET

TFLAG

T1

T2

T3

T4

Creates a CQUAD4 card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int, int]

node ids

zoffsetfloat; default=0.0

Offset from the surface of grid points to the element reference plane. Requires MID1 and MID2.

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

tflagint; default=0

0 : Ti are actual user specified thicknesses 1 : Ti are fractions relative to the T value of the PSHELL

T1 / T2 / T3 / T4float; default=None

If it is not supplied, then T1 through T4 will be set equal to the value of T on the PSHELL entry.

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cp_name_map = {'T1': 'T1', 'T2': 'T2', 'T3': 'T3', 'T4': 'T4'}
cross_reference(model: BDF) None[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

eid

Element ID

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

exports the elements in a vectorized way

flip_normal()[source]
1---2       1---4         2---1
|   |  -->  |   |   -->   |   |
|   |       |   |         |   |
4---3       2---3         3---4
nominal     fast flip     preserves material orientation
get_thickness_scale()[source]
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

split_to_ctria3(eida, eidb)[source]

Splits a CQUAD4 into two CTRIA3s

Todo

doesn’t consider theta_mcid if a float correctly (use an integer)

Todo

doesn’t optimize the orientation of the nodes yet…

type = 'CQUAD4'
uncross_reference() None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_as_ctria3(new_eid)[source]

triangle - 012 triangle - 023

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.elements.shell.CQUAD8(eid, pid, nids, theta_mcid=0.0, zoffset=0.0, tflag=0, T1=None, T2=None, T3=None, T4=None, comment='')[source]

Bases: QuadShell

1

2

3

4

5

6

7

8

9

CQUAD8

EID

PID

G1

G2

G3

G4

G5

G6

G7

G8

T1

T2

T3

T4

THETA/MCID

ZOFFS

TFLAG

Creates a CQUAD8 card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int, int, int/None, int/None, int/None, int/None]

node ids

zoffsetfloat; default=0.0

Offset from the surface of grid points to the element reference plane. Requires MID1 and MID2.

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

tflagint; default=0

0 : Ti are actual user specified thicknesses 1 : Ti are fractions relative to the T value of the PSHELL

T1 / T2 / T3 / T4float; default=None

If it is not supplied, then T1 through T4 will be set equal to the value of T on the PSHELL entry.

commentstr; default=’’

a comment for the card

Area() float[source]
\[A = \frac{1}{2} \lvert (n_1-n_3) \times (n_2-n_4) \rvert\]

where a and b are the quad’s cross node point vectors

AreaCentroid() tuple[float, ndarray][source]
1-----2
|    /|
| A1/ |
|  /  |
|/ A2 |
4-----3

centroid
   c = sum(ci*Ai)/sum(A)
   where:
     c=centroid
     A=area
Normal()[source]
Thickness()[source]

Returns the thickness

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

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

eid

Element ID

classmethod export_to_hdf5(h5_file: Any, model, eids)[source]

exports the elements in a vectorized way

flip_normal()[source]
1--5--2       1--8--4
|     |  -->  |     |
8     6       5     7
|     |       |     |
4--7--3       2--6--3
get_thickness_scale()[source]
property node_ids: list[int | None]
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CQUAD8'
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.elements.shell.CQUADR(eid, pid, nids, theta_mcid=0.0, zoffset=0.0, tflag=0, T1=None, T2=None, T3=None, T4=None, comment='')[source]

Bases: QuadShell

1

2

3

4 | 5

6

7

8

9

CQUADR

EID

PID

N1 | N2

N3

N4

THETA/MCID

ZOFFSET

TFLAG

T1

T2

T3

T4

Creates a CQUADR card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int, int]

node ids

zoffsetfloat; default=0.0

Offset from the surface of grid points to the element reference plane. Requires MID1 and MID2.

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

tflagint; default=0

0 : Ti are actual user specified thicknesses 1 : Ti are fractions relative to the T value of the PSHELL

T1 / T2 / T3 / T4float; default=None

If it is not supplied, then T1 through T4 will be set equal to the value of T on the PSHELL entry.

commentstr; default=’’

a comment for the card

Thickness()[source]

Returns the thickness

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

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

eid

Element ID

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

exports the elements in a vectorized way

flip_normal()[source]
1---2       1---4
|   |  -->  |   |
|   |       |   |
4---3       2---3
get_thickness_scale()[source]
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CQUADR'
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.elements.shell.CSHEAR(eid, pid, nids, comment='')[source]

Bases: QuadShell

1

2

3

4 | 5

6

7

CSHEAR

EID

PID

N1 | N2

N3

N4

Creates a CSHEAR card

Parameters:
eidint

element id

pidint

property id (PSHEAR)

nidslist[int, int, int, int]

node ids

commentstr; default=’’

a comment for the card

Area() float[source]
\[A = \frac{1}{2} \lvert (n_1-n_3) \times (n_2-n_4) \rvert\]

where a and b are the quad’s cross node point vectors

AreaCentroid() tuple[NDArray3float, NDArray3float][source]
::

1—–2 | /| | A1/ | | / | |/ A2 | 4—–3

AreaCentroidNormal() tuple[NDArray3float, NDArray3float, NDArray3float][source]
Centroid() NDArray3float[source]
G() float[source]
Mass() float[source]
\[m = \frac{m}{A} A \f]\]
Normal()[source]
Thickness() float[source]

Returns the thickness

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

center_of_mass() NDArray3float[source]
cross_reference(model: BDF) None[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

eid

Element ID

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

exports the elements in a vectorized way

flip_normal()[source]
1---2       1---4
|   |  -->  |   |
|   |       |   |
4---3       2---3
property node_ids: list[int]
raw_fields() list[str | int][source]
repr_fields() list[str | int][source]

Gets the fields in their simplified form

Returns:
fieldslist[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CSHEAR'
uncross_reference() None[source]

Removes cross-reference links

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.elements.shell.CTRIA3(eid: int, pid: int, nids: list[int], zoffset: float = 0.0, theta_mcid: int | float = 0.0, tflag: int = 0, T1: float | None = None, T2: float | None = None, T3: float | None = None, comment: str = '')[source]

Bases: TriShell

1

2

3

4 | 5

6

7

8

CTRIA3

EID

PID

N1 | N2

N3

THETA/MCID

ZOFFSET

TFLAG

T1

T2

T3

Creates a CTRIA3 card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int]

node ids

zoffsetfloat; default=0.0

Offset from the surface of grid points to the element reference plane. Requires MID1 and MID2.

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

tflagint; default=0

0 : Ti are actual user specified thicknesses 1 : Ti are fractions relative to the T value of the PSHELL

T1 / T2 / T3float; default=None

If it is not supplied, then T1 through T3 will be set equal to the value of T on the PSHELL entry.

commentstr; default=’’

a comment for the card

_get_repr_defaults()[source]
_properties = ['cp_name_map', '_field_map']
classmethod add_card(card: str, comment: str = '')[source]

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cp_name_map = {'T1': 'T1', 'T2': 'T2', 'T3': 'T3'}
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, eids)[source]

exports the elements in a vectorized way

flip_normal()[source]

Flips normal of element.

   1           1            2
  * *   -->   * *    -->   * *
 *   *       *   *        *   *
2-----3     3-----2      3-----1
nominal     fast flip   perserve material orientation
get_thickness_scale()[source]
property node_ids: list[int]
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CTRIA3'
uncross_reference() None[source]

Removes cross-reference links

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.elements.shell.CTRIA6(eid, pid, nids, theta_mcid=0.0, zoffset=0.0, tflag=0, T1=None, T2=None, T3=None, comment='')[source]

Bases: TriShell

1

2

3

4 | 5

6

7

8

9

CTRIA6

EID

PID

N1 | N2

N3

N4

N5

N6

THETA/MCID

ZOFFSET

T1

T2

T3

Creates a CTRIA6 card

Parameters:
eidint

element id

pidint

property id (PSHELL/PCOMP/PCOMPG)

nidslist[int, int, int, int/None, int/None, int/None]

node ids

zoffsetfloat; default=0.0

Offset from the surface of grid points to the element reference plane. Requires MID1 and MID2.

theta_mcidfloat; default=0.0
floatmaterial coordinate system angle (theta) is defined

relative to the element coordinate system

intx-axis from material coordinate system angle defined by

mcid is projected onto the element

tflagint; default=0

0 : Ti are actual user specified thicknesses 1 : Ti are fractions relative to the T value of the PSHELL

T1 / T2 / T3float; default=None

If it is not supplied, then T1 through T3 will be set equal to the value of T on the PSHELL entry.

commentstr; default=’’

a comment for the card

Area()[source]

Get the area, \(A\).

\[A = \frac{1}{2} (n_0-n_1) \times (n_0-n_2)\]
AreaCentroidNormal()[source]

Returns area, centroid, normal as it’s more efficient to do them together

Centroid()[source]

Get the centroid.

\[CG = \frac{1}{3} (n_1+n_2+n_3)\]
Normal()[source]

Get the normal vector, \(n\).

\[n = \frac{(n_0-n_1) \times (n_0-n_2)}{\lvert (n_0-n_1) \times (n_0-n_2) \lvert}\]
Thickness()[source]

Returns the thickness, \(t\)

_get_repr_defaults()[source]
classmethod add_card(card: BDFCard, comment: str = '')[source]

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

center_of_mass()[source]
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, eids)[source]

exports the elements in a vectorized way

flip_normal()[source]

Flips normal of element.

    1                1
    **               **
   *  *             *  *
  4    6   -->     6    4
 *      *         *      *
2----5---3       3----5---2
get_thickness_scale()[source]
property node_ids
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)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

type = 'CTRIA6'
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.elements.shell._normal(a, b)[source]

Finds the unit normal vector of 2 vectors

pyNastran.bdf.cards.elements.shell._triangle_area_centroid_normal(nodes, card)[source]

Gets the area, centroid and normal for a triangle.

Parameters:
nodeslist[np.ndarray]

List of three triangle vertices.

Returns:
areafloat

Area of triangle.

centroidndarray

Centroid of triangle.

unit_normalndarray

Unit normal of triangles.

cardCTRIA3(), CTRIA6()

the self parameter

::

n = Normal = a x b Area = 1/2 * |a x b| V = <v1,v2,v3> |V| = sqrt(v1^0.5+v2^0.5+v3^0.5) = norm(V)

Area = 0.5 * |n| unit_normal = n/|n|

pyNastran.bdf.cards.elements.shell.transform_shell_material_coordinate_system(cids: list[int], iaxes, theta_mcid, normal, p1, p2, idtype='int32', fdtype='float64')[source]

calculate the material transformation matrix