N2PUpdateFastener User Manual#

Overview#

The N2PUpdateFastener Module is designed to update the stiffness of the fastener unions when the property of the fastener or the properties of the plates change.

Example Usage#

1. Importing the module#

import NaxToPy as n2p
from NaxToPy.Modules.static.fastener import N2PUpdateFastener

2. Load the model#

model = n2p.load_model(r"file path")

3. Define Fasteners Properties#

prop1 = {"E": 70000, "D": 4.8}
prop2 = {"E": 140000, "D": 7.2, "connection_type": "rivet", "shear_type": "double"}

4. Create and Configure N2PUpdateFastener#

update = N2PUpdateFastener()
update.Model = model  # Assign the model
update.FastenerInformation = {
    (1000, "0"): prop1,
    (1001, "0"): prop1,
    (1000, "1"): prop2,
    (1001, "1"): prop2
}

5. Run Calculations#

update.calculate()

6. Rewrite the Input Data File#

update.write_bdf() # With the model updated, the model is rewritten

Setup#

Prerequisites#

  • Python Environment: Ensure you have a compatible Python environment with the following libraries:

    • NaxToPy modules

  • NaxToPy Framework: The module integrates with the NaxToPy library, which must be installed and configured in your environment.

Module Inputs#

The N2PNeuber class provides methods and attributes for defining the model, associating materials, and calculating Neuber stresses.

Mandatory Inputs#

Property

Type

Description

.Model

N2PModelContent

FEM model to be updated

.FastenerInformation

dict[tuple, dict]

Dictionary with the dictionary of properties for each rivet

In addiction, each dictionary in .FastenerInformation must have the keys "E" and "D":

Key

Value

Description

"E"

float

Young modulus of the fastener material

"D"

float

Diameter of the fastener

Example:

prop1 = {"E": 70000.0, "D": 4.8}  # "E" and "D" are mandatory
prop2 = {"E": 110000.0, "D": 7.2}
.FastenerInformation = {
    (1000, "0"): prop1,
    (1001, "0"): prop2,
}

FEM Requirements#

For this module to function properly, the FEM model must be a Nastran or Optistruc Input File (usually called bdf and fem).

Warning

This module doesn’t support superlements (parts). All components must be in the superelement "0".

Supported Type Files#

Solver

File Extension

Nastran Input Data

.bdf or .dat

Optistruct Input Data

.fem

Optional Inputs#

The only optional property is the method (StiffnessMethod) to use. By default is used "HUTH".

Property

Type

Description

.StiffnessMethod

str

Method to be used ("HUTH" by default)

Note

The available methods are: "HUTH", "BOEING", "TATE_ROSENFELD", "GRUMMAN", "SWIFT" and "NELSON".

Each dictionary in .FastenerInformation may have the optional keys:

Key

Value

Default

Description

"shear_type"

str

"single"

May be "single" or "double"

"connection_type"

str

"bolt"

May be "bolt" or "rivet"

"h_head"

float

0

Height of the head

"h_nut"

float

0

Height of the nut

"nu"

float

0.33

Poisson Ratio

"G"

float

\(\frac{E}{2(1+\nu)}\)

Shear Modulus

"beta"

float

0.5

beta value for Nelson method

Example:

prop = {
    "E": 110000.0,              # Mandatory  
    "D": 7.2,                   # Mandatory
    "connection_type": "rivet", # Optional
    "shear_type": "double",     # Optional
    "h_head": 1,                # Optional
    "h_nut": 2,                 # Optional
    "nu": 0.31,                 # Optional
    "beta": 0.55                # Optional
}
.FastenerInformation = {
    (1000, "0"): prop,
    (1001, "0"): prop,
}

Output Description#

This module calculates the stiffness of the fasteners unions and update the N2PModelContent instance. When the method write_bdf() is called it generates the same file structure from the input but with the stiffness values of the cards PFAST or PBUSH updated.

Common Errors#

  • E311: Young modulus is not found.

  • E499: The stiffness method introduced is no allowed.

  • E498: The dictionary must have the keys “D” and “E”.

Methodology#

Background Theory#

The calculation of the axial stiffness is always made using the same formula:

\[ k_1 = E_f · \pi · \frac{D^2}{4 · L_{ef}} \]

But the shear stiffness uses different formulas. The available methods are:

A) Tate-Rosenfeld (1946)#

Preliminary investigation of the loads carried by individual bolts. See [Ref-1].

\[ \frac{1}{K_{\text{shear}}} = \frac{1}{t_1 E_1} + \frac{1}{t_2 E_2} + \frac{1}{t_1 E_f} + \frac{1}{t_2 E_f} + \frac{32 (t_1 + t_2) (1 + \nu_f)}{9 \pi E_f d^2} + \frac{8 (t_2^3 + 5t_1 t_2^2 + 5t_2 t_1^2 + t_1^3)}{5 \pi E_f d^4} \]

B) Boeing (1969)#

Formerly, Tate & Rosenberg formulation was used. The new derivation for single Single configuration (presented in [Ref-2] and [Ref-3]):

Single shear:

\[ \frac{1}{K_{shear}} = \frac{2^{(t_1/d)^{0.85}}}{t_1} \left(\frac{1}{E_1} + \frac{3}{8E_f} \right) + \frac{2^{(t_2/d)^{0.85}}}{t_2} \left(\frac{1}{E_2} + \frac{3}{8E_f} \right) \]

Double shear (see [Ref-2]):

\[ \frac{1}{K_{\text{shear}}} = \frac{1.25^{(t_1/d)^{0.85}}}{t_1} \left( \frac{1}{E_1} + \frac{3}{8E_f} \right) + \frac{1.25^{(t_2/d)^{0.85}}}{t_2} \left( \frac{1}{E_2} + \frac{3}{8E_f} \right) \]

C) Swift (1971)#

See [Ref-4]:

\[ \frac{1}{K_{\text{shear}}} = \frac{5}{d E_f} + 0.8 \left( \frac{1}{t_1 E_1} + \frac{1}{t_2 E_2} \right) \]

D) Nelson (1983)#

Published by NASA in [Ref-5]. Uses the Tate & Rosenberg formulation to derive the shear stiffness. They account for the possibility of unbalanced laminates with different in-plane stiffness values parallel (“L”) to perpendicular (“LT”) the loading direction.

\[ E_{\text{eq}} = \sqrt{E_L \cdot E_{LT}} \]
\[ A_f = \frac{\pi d^2}{4} \]
\[ I_f = \frac{\pi d^4}{64} \]

Single Shear:

\[ \frac{1}{K_{\text{shear}}} = \frac{2(t_1 + t_2)}{3 G_f A_f} + \frac{2(t_1 + t_2)}{t_1 t_2 E_3} + \frac{1}{t_1 (E_{\text{eq}})_1} \cdot \frac{1 + 3\beta}{t_2 (E_{\text{eq}})_2} \]
\[\begin{split} \text{where } \beta = \begin{cases} 0.15 & \text{for protruding head bolts} \\ 0.5 & \text{for countersink bolts} \end{cases} \end{split}\]

Double Shear:

\[ \frac{1}{K_{\text{shear}}} = \frac{8t_2^3 + 16t_2^2 t_1 + 8t_2 t_1^2 + t_1^3}{192 E_f I_f} + \frac{2 (t_2 + t_1)}{3 G_f A_f} + \frac{2 (t_1 + t_2)}{t_1 t_2 E_3} + \frac{1}{t_2 (E_{\text{eq}})_2} + \frac{2}{t_1 (E_{\text{eq}})_1} \]

E) Huth (1984)#

Published in [Ref-6].

\[ \frac{1}{K_{\text{shear}}} = \left( \frac{t_1 + t_2}{2D} \right)^a \cdot \frac{1}{n} \left( \frac{b_1}{t_1 E_1} + \frac{b_2}{n t_1 E_2} + \frac{b_1}{2 t_1 E_f} + \frac{b_2}{2n t_1 E_f} \right) \]

The constants depend of the type of lot and the materials of the plates:

Plate 1

Plate 2

Type

a

b1

b2

Metallic

Metallic

Bolted

2/3

3.0

3.0

Metallic

Metallic

Riveted

2/5

2.2

2.2

Graphite/Epoxy

Graphite/Epoxy

Bolted

2/3

4.2

4.2

Metallic

Graphite/Epoxy

Bolted

2/3

3.0

4.2

Hint

The Huth Method is preferred nowadays by Airbus.

F) Grumman#

Its derivation comes from unpublished report from Grumman Aerospace Corporation.

\[ \frac{1}{K_{\text{shear}}} = \frac{(t_1 + t_2)^2}{E_f d^3} + 3.72 \left( \frac{1}{t_1 E_1} + \frac{1}{t_2 E_2} \right) \]

Implementation#

The module use the ids of the fasteners introduced in FastenerInformation to find the CBUSH or CFAST with that ids. Then, the elements that makes the plates that are joined by the fastener are searched.

In the case of CBUSH connected to RBE3 we need to find out to which element the RBE3 is connected. To do this, we need to find out to which nodes it is connected, and then find out to which elements those nodes are connected. The element we are looking for will be linked to those nodes. However, there is one node that we do not need to consider, and that is the reference node. To do this:

We go through all the nodes in rbe3A.FreeNodes except rbe3A.RefGrid, and for each of them, we find their connectivity, obtaining a set of elements for each node of the RBE3. Finally, we apply the intersection of the sets, that is, we keep a set containing the items repeated in all the sets, which is the element we are looking for.

When the elements are selected, the property and then the material properties are searched to use the engineer values of the materials to calculate the stiffness value of the union using one of the available methods.

Extra Examples#

import NaxToPy as n2p
from NaxToPy.Modules.static.fasteners import N2PUpdateFastener

model = n2p.load_model("C:\\my_directory\\my_model.bdf")

prop1 = {"D": 4.8, "E": 70000}
prop2 = {"D": 7.2, "E": 110000, "nu": 0.27, "shear_type": "double"}

# Add the prop2 to all the CFAST of the model
info = {
    (fastener.EID, "0"): prop2
    for fastener in model.ModelInputData.get_cards_by_field(["CFAST"])
}

# Add the prop1 to all the CBUSH of the model updating info
info.update(
    {(fastener.EID, "0"): prop1
    for fastener in model.ModelInputData.get_cards_by_field(["CBUSH"])}
)

update1 = N2PUpdateFastener()
update1.Model = model
update1.FastenerInformation = info
update1.StiffnessMethod = "TATE_ROSENFELD"
update1.calculate()
update1.write_bdf("C:\\my_directory\\out")

Validation#

The Huth method for bolt and rivet, for composite and metallic unions have been compared against the Fastener Setup from HyperMesh:

Fastener

Plates

HyperMesh

NaxToPy

Difference

Bolt

metallic-metallic

57632.72

57640.56

0.01136 %

Rivet

metallic-metallic

79461.08

79461.07

-0.00001 %

Bolt

metallic-cfrp

7064.92

7055.08

-0.01392 %

Rivet

metallic-cfrp

6361.43

6361.43

0.00000 %

Note

The stiffness using a CFAST, a CBUSH to plates or CBUSH to RBE3 is the same. The results after running the mesh may differ.

References#

  • [Ref-1]: S. R. Manford Tate, «Preliminary Investigation of the Loads Carried by Individual Bolts in Bolted Joints,» NASA, 1946.

  • [Ref-2]:«Development of the Fail-safe Design Features of the DC-10,» ASTM Compass, pp. 164-214, 1971.

  • [Ref-3]: J. K. Luca Massera, «Analytical and Numerical Investigation of Multi-fastener Joints in Composite Structures,» DLR-Interner Bericht , p. 167, 2019.

  • [Ref-4]: V. Eremihn, «Methods for flexibility determination of bolted,» de International Conference “Aviation and Cosmonautics”, 2021.

  • [Ref-5]: W. D. Nelson, B. L. Bunin y L. J. Hart-Smith, «Critical Joints in Large Composite Aircraft Structure,» NASA Technical Report, 1983.

  • [Ref-6]: H. Huth, «Influence of Fastener Flexibility on Load Transfer and Fatigue Life Predictions for Multirow Bolted and Riveted Joints.,» NASA Foreign Exchange Program, 1984.


idaero-logo
© 2025 Idaero Solutions S.L.

All rights reserved. This document is licensed under the terms of the LICENSE of the NaxToPy package.