elements module

The tacs.elements module contains the full library elements supported by TACS.

Basis classes

Some Element classes are capable of running under different element parameterizations (number of nodes, connectivity, etc). These elements may require an ElementBasis class at setup. The following ElementBasis classes are available in TACS:

class tacs.elements.LinearTetrahedralBasis

Bases: ElementBasis

Basis class for a linear tetrahedral 3D element.

Note

numNodes: 4

class tacs.elements.QuadraticTetrahedralBasis

Bases: ElementBasis

Basis class for a quadratic tetrahedral 3D element.

Note

numNodes: 10

class tacs.elements.LinearHexaBasis

Bases: ElementBasis

Basis class for a linear hexahedral 3D element.

Note

numNodes: 8

class tacs.elements.QuadraticHexaBasis

Bases: ElementBasis

Basis class for a quadratic hexahedral 3D element.

Note

numNodes: 27

class tacs.elements.CubicHexaBasis

Bases: ElementBasis

Basis class for a cubic hexahedral 3D element.

Note

numNodes: 64

class tacs.elements.LinearQuadBasis

Bases: ElementBasis

Basis class for a linear quad 2D element.

Note

numNodes: 4

class tacs.elements.QuadraticQuadBasis

Bases: ElementBasis

Basis class for a quadratic quad 2D element.

Note

numNodes: 9

class tacs.elements.CubicQuadBasis

Bases: ElementBasis

Basis class for a cubic quad 2D element.

Note

numNodes: 16

class tacs.elements.QuarticQuadBasis

Bases: ElementBasis

Basis class for a quartic quad 2D element.

Note

numNodes: 25

class tacs.elements.QuinticQuadBasis

Bases: ElementBasis

Basis class for a quintic quad 2D element.

Note

numNodes: 36

class tacs.elements.LinearTriangleBasis

Bases: ElementBasis

Basis class for a linear triangular 2D element

Note

numNodes: 3

class tacs.elements.QuadraticTriangleBasis

Bases: ElementBasis

Basis class for a quadratic triangular 2D element

Note

numNodes: 6

class tacs.elements.CubicTriangleBasis

Bases: ElementBasis

Basis class for a cubic triangular 2D element

Note

numNodes: 10

Model classes

Some Element classes require ElementModel classes in their setup procedure. The following ElementModel classes are available in TACS:

class tacs.elements.HeatConduction2D

Bases: ElementModel

Model class for 2D heat conduction element.

Note

varsPerNode: 1

Parameters:

con (PlaneStressConstitutive) -- Material constitutive properties.

class tacs.elements.HeatConduction3D

Bases: ElementModel

Model class for 3D heat conduction element.

Note

varsPerNode: 1

Parameters:

con (SolidConstitutive) -- Material constitutive properties.

class tacs.elements.PCMHeatConduction2D

Bases: ElementModel

Model class for 2D phase change material heat conduction element.

Note

varsPerNode: 1

Parameters:

con (PhaseChangeMaterialConstitutive) -- Material constitutive properties.

class tacs.elements.LinearElasticity2D

Bases: ElementModel

Model class for 2D linear elasticity element.

Note

varsPerNode: 2

Parameters:

con (PlaneStressConstitutive) -- Material constitutive properties.

class tacs.elements.LinearElasticity3D

Bases: ElementModel

Model class for 3D linear elasticity element.

Note

varsPerNode: 3

Parameters:

con (SolidConstitutive) -- Material constitutive properties.

class tacs.elements.LinearThermoelasticity2D

Bases: ElementModel

Model class for 2D linear thermoelasticity element.

Note

varsPerNode: 3

Parameters:
  • con (PlaneStressConstitutive) -- Material constitutive properties.

  • steady_flag (bool, optional) -- Steady state flag. Defaults to False.

class tacs.elements.LinearThermoelasticity3D

Bases: ElementModel

Model class for 3D linear thermoelasticity element.

Note

varsPerNode: 4

Parameters:
  • con (SolidConstitutive) -- Material constitutive properties.

  • steady_flag (bool, optional) -- Steady state flag. Defaults to False.

Transform classes

Some Element classes require transform classes in their setup procedure. The following transform classes are available in TACS:

class tacs.elements.ShellNaturalTransform

Bases: ShellTransform

Class for computing the transformation from the global coordinates to the shell/material local coordinates (used for defining stresses). This class uses shell "natural" coordinate system (i.e. local \(x\) is aligned with element's first edge.) This is appropriate for isotropic shells, who's stiffness properties don't depend on orientation.

class tacs.elements.ShellRefAxisTransform

Bases: ShellTransform

Class for computing the transformation from the global coordinates to the shell local coordinates (used for defining stresses). This class uses a projection of a user-supplied reference axis to define the shell/material coordinate system (i.e. local \(x\) is aligned with the reference axis.) This is appropriate for orthotropic and anisotropic shells, who's stiffness properties depend on orientation.

Warning

The reference direction cannot be normal to the shell surface.

Parameters:

axis (array-like) -- Reference axis.

getRefAxis()

Get reference axis for transform.

Returns:

reference axis

Return type:

axis (numpy.ndarray)

class tacs.elements.BeamRefAxisTransform

Bases: BeamTransform

Class for computing the transformation from the global coordinates to the beam local coordinates (used for defining stresses). This class uses a projection of a user-supplied reference axis to define the beam coordinate system (i.e. local \(y\) is aligned with the reference axis.)

Warning

The reference direction cannot be parallel to the beam axis.

Parameters:

axis (array-like) -- Reference axis.

getRefAxis()

Get reference axis for transform.

Returns:

reference axis

Return type:

axis (numpy.ndarray)

class tacs.elements.SpringIdentityTransform

Bases: SpringTransform

Class for computing the transformation from the global coordinates to the spring/material local coordinates (used for defining spring stifness directions). This class uses an identity transform (i.e. the spring stiffnesses are aligned with the global axes.)

class tacs.elements.SpringRefAxisTransform

Bases: SpringTransform

Class for computing the transformation from the global coordinates to the spring/material local coordinates (used for defining spring stiffness directions). This class uses a projection of a user-supplied reference axis to define the spring stiffness coordinate system. The local x always aligns with the element. The local z is given by the cross product of x and axis. The local y is given by the cross product of local z and x.

Warning

Not appropriate for elements with coincident nodes. Use SpringIdentityTransform or SpringRefFrameTransform.

Parameters:

axis (array-like) -- Reference axis.

getRefAxis()

Get reference axis for transform.

Returns:

reference axis

Return type:

axis (numpy.ndarray)

class tacs.elements.SpringRefFrameTransform

Bases: SpringTransform

Class for computing the transformation from the global coordinates to the spring/material local coordinates (used for defining spring stifness directions). This class uses an user-defined arbritrary reference frame for the transform (i.e. the spring stiffnesses are aligned with the global axes.) The reference is defined using two reference vectors. axis1 defines the local x axes. The local z is given by the cross product of x and axis2. The local y is given by the cross product of local z and x.

getRefAxes()

Get reference axes for transform.

Returns:

first reference axis axis_j (numpy.ndarray): second reference axis

Return type:

axis_i (numpy.ndarray)

Element classes

The following Element classes are available in TACS:

class tacs.elements.Element2D

Bases: Element

General element class appropriate for 2D analysis.

Note

varsPerNode: depends on ElementModel

numNodes: depends on ElementBasis

outputElement: TACS.PLANE_STRESS_ELEMENT

Parameters:
  • model (ElementModel) -- Physics model for element.

  • basis (ElementBasis) -- Basis for element.

class tacs.elements.Element3D

Bases: Element

General element class appropriate for 3D analysis.

Note

varsPerNode: depends on ElementModel

numNodes: depends on ElementBasis

outputElement: TACS.SOLID_ELEMENT

Parameters:
  • model (ElementModel) -- Physics model for element.

  • basis (ElementBasis) -- Basis for element.

class tacs.elements.Quad4Shell

Bases: Element

A 4-node quad shell element for general linear elastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 4

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad9Shell

Bases: Element

A 9-node quad shell element for general linear elastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 9

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad16Shell

Bases: Element

A 16-node quad shell element for general linear elastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 16

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Tri3Shell

Bases: Element

A 3-node triangular shell element for general linear elastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad4NonlinearShell

Bases: Element

A 4-node quad shell element for general geometric nonlinear elastic analysis. The element uses a nonlinear strain relationship but retains a linearized treatment of rotations. It should therefore capture geometrically nonlinear stress-stiffening effects, provided rotations remain small.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 4

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad9NonlinearShell

Bases: Element

A 9-node quad shell element for general geometric nonlinear elastic analysis. The element uses a nonlinear strain relationship but retains a linearized treatment of rotations. It should therefore capture geometrically nonlinear stress-stiffening effects, provided rotations remain small.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 9

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad16NonlinearShell

Bases: Element

A 16-node quad shell element for general geometric nonlinear elastic analysis. The element uses a nonlinear strain relationship but retains a linearized treatment of rotations. It should therefore capture geometrically nonlinear stress-stiffening effects, provided rotations remain small.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 16

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Tri3NonlinearShell

Bases: Element

A 3-node triangular shell element for geometric elastic analysis. The element uses a nonlinear strain relationship but retains a linearized treatment of rotations. It should therefore capture geometrically nonlinear stress-stiffening effects, provided rotations remain small.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 6

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad4NonlinearThermalShell

Bases: Element

A 4-node quad shell element for general nonlinear thermoelastic analysis. The element uses a nonlinear strain relationship but retains a linearized treatment of rotations. It should therefore capture geometrically nonlinear stress-stiffening effects, provided rotations remain small.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 4

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad9NonlinearThermalShell

Bases: Element

A 9-node quad shell element for general geometric nonlinear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 9

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad16NonlinearThermalShell

Bases: Element

A 16-node quad shell element for general geometric nonlinear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 16

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Tri3NonlinearThermalShell

Bases: Element

A 3-node triangular shell element for general geometric nonlinear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad4ThermalShell

Bases: Element

A 4-node quad shell element for linear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 4

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad9ThermalShell

Bases: Element

A 9-node quad shell element for general linear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 9

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Quad16ThermalShell

Bases: Element

A 16-node quad shell element for general linear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 16

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Tri3ThermalShell

Bases: Element

A 3-node triangular shell element for general linear thermoelastic analysis.

This element employs a mixed interpolation of tensorial (strain) components (MITC) method to avoid shear locking problems.

Note

varsPerNode: 7

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
class tacs.elements.Beam2

Bases: Element

A 2-node Timoshenko beam element for general linear elastic analysis.

Note

varsPerNode: 6

numNodes: 2

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
  • transform (BeamTransform) -- Beam transform object.

  • con (BeamConstitutive) -- Beam constitutive object.

class tacs.elements.Beam3

Bases: Element

A 3-node Timoshenko beam element for general linear elastic analysis.

Note

varsPerNode: 6

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
  • transform (BeamTransform) -- Beam transform object.

  • con (BeamConstitutive) -- Beam constitutive object.

class tacs.elements.Beam2ModRot

Bases: Element

A 2-node Timoshenko beam element for general nonlinear elastic analysis with moderate rotations.

Note

varsPerNode: 6

numNodes: 2

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
  • transform (BeamTransform) -- Beam transform object.

  • con (BeamConstitutive) -- Beam constitutive object.

class tacs.elements.Beam3ModRot

Bases: Element

A 3-node Timoshenko beam element for general nonlinear elastic analysis with moderate rotations.

Note

varsPerNode: 6

numNodes: 3

outputElement: TACS.BEAM_OR_SHELL_ELEMENT

Parameters:
  • transform (BeamTransform) -- Beam transform object.

  • con (BeamConstitutive) -- Beam constitutive object.

class tacs.elements.RBE2

Bases: Element

A rigid body connected to an arbitrary number of grid points. The independent degrees-of-freedom are the six components of motion at a single grid point. The dependent degrees-of-freedom at the other grid points.

Note

varsPerNode: 6

numNodes: 2 * N_dep + 1

outputElement: TACS.RIGID_ELEMENT

Parameters:
  • num_nodes (int) -- Total number of nodes associated with the element.

  • constrained_dofs (numpy.ndarray[int]) -- Flags to determine which dependent node dof's are attached to the element.

classmethod setScalingParameters(C1=1000.0, C2=0.0)

Set scaling parameters used in Lagrange multiplier formulation of the element.

Parameters:
  • C1 (double) -- Constraint matrix scaling factor used in RBE Lagrange multiplier stiffness matrix.

  • C2 (double) -- Artificial constant added to diagonals of RBE Lagrange multiplier stiffness matrix

  • preconditioner. (to stabilize)

class tacs.elements.RBE3

Bases: Element

The RBE3 element is a powerful tool for distributing applied loads and mass in a model. Unlike the RBAR and RBE2 elements, the RBE3 doesn’t add additional stiffness to your structure. Forces and moments applied to reference points are distributed to a set of independent degrees of freedom based on the RBE3 geometry and local weight factors.

Note

varsPerNode: 6

numNodes: N_indep + 2

outputElement: TACS.RIGID_ELEMENT

Parameters:
  • num_nodes (int) -- Total number of nodes associated with the element.

  • dep_constrained_dofs (numpy.ndarray[int]) -- Flags to determine which dependent node dof's are attached to the eleemnt.

  • weights (numpy.ndarray[float]) -- RBE weighting factor for each independent node.

  • indep_constrained_dofs (numpy.ndarray[int]) -- Flags to determine which independent node dof's are attached to the element.

classmethod setScalingParameters(C1=1000.0, C2=0.0)

Set scaling parameters used in Lagrange multiplier formulation of the element.

Parameters:
  • C1 (double) -- Constraint matrix scaling factor used in RBE Lagrange multiplier stiffness matrix.

  • C2 (double) -- Artificial constant added to diagonals of RBE Lagrange multiplier stiffness matrix

  • preconditioner. (to stabilize)

class tacs.elements.MassElement

Bases: Element

A 6 DOF point mass element.

Note

varsPerNode: 6

numNodes: 1

outputElement: TACS.MASS_ELEMENT

Parameters:

con (GeneralMassConstitutive) -- Point mass constitutive object.

class tacs.elements.SpringElement

Bases: Element

A 6 DOF spring element.

Note

varsPerNode: 6

numNodes: 2

outputElement: TACS.SPRING_ELEMENT

Parameters: