Defines a flat shell element with six degrees of freedom per node (three translations and three rotations).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | drilling_factor | = | 1.0d-3 |
The nondimensional drilling-rotation penalty factor . The drilling stiffness is , where is the shear modulus. |
|
| type(material), | public | :: | material |
The material. |
|||
| real(kind=real64), | public | :: | shear_correction | = | 5.0d0/6.0d0 |
The transverse shear correction factor. This value is only used by elements that include transverse shear deformation. |
|
| real(kind=real64), | public | :: | thickness |
The shell thickness. |
Computes the area of the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The element area.
Computes the 8-by-8 constitutive matrix relating the generalized strains to the stress resultants. where is the shear correction factor and .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The 8-by-8 constitutive matrix.
Defines the signature of a routine for computing the value of the i-th element shape function at natural coordinate.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The index of the shape function to evaluate. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The value of the natural coordinates at which to evaluate the shape function. |
The value of the i-th shape function at s.
Computes the consistent nodal force vector, in the global coordinate system, resulting from a uniform surface traction. Only the translational degrees of freedom receive load.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | q |
The 3-element surface traction vector (force per unit area) expressed in the global coordinate system. For a pressure acting along the local -axis, supply , where is the third row of the local_frame matrix. |
|
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility; the element uses the quadrature defined by its integration_rule routine. |
The 6N-element force vector, where N is the number of nodes.
Gets the dimensionality of the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The dimensionality (always 3).
Gets the number of degrees of freedom per node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The number of degrees of freedom per node (always 6).
Defines the signature of a function for retrieving the requested node from the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The local index of the node to retrieve. |
The node.
Defines the signature of a function performing a query on an integer-valued property of a element type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
The resulting value.
Defines the signature of a function returning the natural coordinates of an element node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The local index of the node. |
The natural coordinates of the node.
Defines the signature of a routine returning the numerical integration rule used by the element. An integral over the element is evaluated as .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(out), | allocatable, dimension(:,:) | :: | pts |
A 2-by-M matrix containing the natural coordinates of the M integration points. |
|
| real(kind=real64), | intent(out), | allocatable, dimension(:) | :: | wts |
The M integration weights. |
Computes the 2-by-2 Jacobian matrix of the mapping from natural to local coordinates.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the Jacobian. |
The 2-by-2 Jacobian matrix.
Computes the in-plane nodal coordinates in the element's local coordinate system. Node 1 is located at the local origin.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
An N-by-2 matrix, where N is the number of nodes, containing the local and coordinates of each node.
Computes the direction cosine matrix of the element's local coordinate system. The rows of the matrix are the local , , and unit vectors expressed in global coordinates; therefore, .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The 3-by-3 direction cosine matrix.
Computes the consistent element mass matrix in the global coordinate system.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility; the element uses the quadrature defined by its integration_rule routine. |
The 6N-by-6N mass matrix, where N is the number of nodes.
Computes the transformation matrix relating the global element displacement vector to the local element displacement vector such that . The matrix is block diagonal with the 3-by-3 direction cosine matrix repeated for the translations and rotations of each node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
The 6N-by-6N transformation matrix, where N is the number of nodes.
Computes the derivatives of the shape functions with respect to the local and coordinates, .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the derivatives. |
A 2-by-N matrix, where N is the number of nodes, containing in the first row and in the second row.
Computes the 6-by-6N shape function matrix interpolating the local nodal quantities with the element's linear (triangle) or bilinear (quadrilateral) shape functions. This interpolation is used to form the mass matrix and the external force vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the matrix. |
The 6-by-6N shape function matrix, where N is the number of nodes.
Defines the signature of a routine returning the derivatives of the element shape functions with respect to the natural coordinates.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the derivatives. |
A 2-by-N matrix, where N is the number of nodes, whose first row contains the derivatives with respect to the first natural coordinate and whose second row contains the derivatives with respect to the second natural coordinate.
Computes the element stiffness matrix in the global coordinate system. The local stiffness matrix is where is the drilling-rotation operator. The global matrix is .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule. This argument is unused and is present for interface compatibility; the element uses the quadrature defined by its integration_rule routine. |
The 6N-by-6N stiffness matrix, where N is the number of nodes.
Computes the generalized strain vector, in the local coordinate system, at the specified natural coordinate. The components are ordered as .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The 6N-element displacement vector in the global coordinate system, where N is the number of nodes. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the strain. |
The 8-element generalized strain vector.
Defines the signature of a routine for returning a matrix associated with the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(element), | intent(in) | :: | this |
The element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The value of the natural coordinates at which the matrix should be evaluated. |
The resulting matrix.
Computes the stress-resultant vector, in the local coordinate system, at the specified natural coordinate. The components are ordered as . The surface stresses may be recovered as .
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(shell_element), | intent(in) | :: | this |
The shell_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The 6N-element displacement vector in the global coordinate system, where N is the number of nodes. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the stress resultants. |
The 8-element stress-resultant vector.