Adhesive Bonded Joints (structures/composites/adhesive-bonded-joints)
Use when the task is analyzing a single-lap adhesive bonded joint
between two adherends of a composite or metallic structure: the
Volkersen-style shear-lag model for the bondline, the average and peak
adhesive shear stresses, and the joint margin against the adhesive
allowable. This leaf implements the shear-lag model in pure Python,
stdlib only, and reports the peak stress concentration that gates
bonded joint design in the CMH-17 composite context. It pairs with
structures/composites/composite-bolted-joints, the mechanical fastener
alternative in the same pack, and with failure-criteria and
laminate-stiffness for the adherend side of the joint.
Domain quick reference
- Geometry: single-lap joint with overlap length L, bond width b and
two identical adherends of thickness t and modulus E, bonded by an
adhesive layer of thickness t_a and shear modulus G_a.
- Shear-lag parameter: beta = sqrt((G_a / t_a) * (2.0 / (E * t)))
in 1/m. For identical adherends the 2.0/(Et) term is the sum
1/(E1t1) + 1/(E2*t2) with E1 = E2 = E and t1 = t2 = t.
- Average adhesive shear stress: tau_avg = P / (b * L).
- Peak shear stress at the overlap ends (Volkersen style):
tau_max = tau_avg * (betaL/2) / tanh(betaL/2). The factor
(betaL/2)/tanh(betaL/2) tends to 1 as betaL tends to 0 (uniform
shear) and grows with betaL, so long overlaps do not lower the peak
below the load divided by the bond area without the concentration.
- Concentration factor: peak to average ratio
(betaL/2) / tanh(betaL/2).
- Joint margin: margin_ratio = allowable / tau_max; the MS-style
margin of safety is margin_ms = margin_ratio - 1.0. The joint passes
when tau_max does not exceed the adhesive allowable shear stress.
- SI units throughout: N, m, Pa.
- The model is a Volkersen-style bondline shear analysis only; peel
and adherend bending are out of scope. Peel-critical designs need a
Goland-Reissner or FE analysis. CMH-17 frames the bonded joint data
context; the relations above are standard engineering methodology,
summary-only.
Workflow
- Fix the joint geometry and materials: load P (load_n), bond width b
(width_m), overlap L (overlap_m), adherend E and t
(adherend_E_pa, adherend_t_m), adhesive G_a and t_a
(adhesive_G_pa, adhesive_t_m), and the adhesive allowable
(allowable_shear_pa).
- Compute the shear-lag parameter with shear_lag_beta; it measures
how fast the shear stress peaks near the overlap ends.
- Get the average bondline stress with avg_shear_stress = P/(b*L).
- Apply the correction with peak_shear_stress (or scale the average
by concentration_factor) to get the bondline peak stress.
- Rate the joint with joint_margin against the adhesive allowable;
the margin ratio is allowable/peak and the MS margin is that ratio
minus one.
- Run analyze to get the full dict {beta, tau_avg, tau_max,
concentration, margin_ratio, margin_ms, pass} in one call.
- Confirm the deterministic checks with the contract test
scripts/test_adhesive_bonded_joints.py.
Worked example
Aluminum adherends E = 70 GPa, t = 2 mm; adhesive G_a = 0.5 GPa,
t_a = 0.2 mm; bond width 25 mm; load 10 kN.
Case 1: overlap L = 25 mm, allowable 25 MPa.
- beta = sqrt((0.5e9/0.2e-3) * (2/(70e92e-3))) = 188.98 1/m,
betaL = 4.72.
- tau_avg = 10000 / (0.025 * 0.025) = 16 MPa.
- tau_max = 16 MPa * 2.3623 / tanh(2.3623) = 38.47 MPa, so the
concentration factor is 2.40.
- margin_ratio = 25/38.47 = 0.650, margin_ms = -0.350: FAIL.
Case 2: overlap L = 10 mm, allowable 25 MPa.
- tau_avg = 10000 / (0.025 * 0.010) = 40 MPa.
- tau_max = 51.25 MPa (beta*L = 1.89, concentration 1.28): FAIL.
- The shorter overlap raises both the average and the peak stress;
the peak exceeds the 25 mm case.
Case 3: allowable 45 MPa, L = 25 mm.
- margin_ratio = 45/38.47 = 1.170, margin_ms = +0.170: PASS.
Pitfalls
- Reading the peak stress as uniform bondline shear: the average
P / (b L) understates the bondline ends by the concentration factor
(betaL/2)/tanh(betaL/2), which is 2.40 in the worked example; the
joint margin must be checked against tau_max, not tau_avg.
- Believing a longer overlap always fixes the joint: the peak stress
only falls toward the average slowly with beta*L, and the shorter
10 mm overlap in the worked example raises both the average and
the peak; the concentration saturates for long overlaps.
- Using non-identical adherend data: beta assumes two identical
adherends with the 2.0/(Et) sum form; dissimilar adherend pairs
need the general 1/(E1t1) + 1/(E2*t2) expression.
- Forgetting the model boundary: this is Volkersen-style bondline
shear only; peel and adherend bending are out of scope, and
peel-critical designs need a Goland-Reissner or FE analysis.
- Treating a zero margin as acceptable: margin_ms = margin_ratio - 1,
so the joint only passes when tau_max stays below the allowable
(25 MPa allowable against 38.47 MPa peak gives -0.350 and FAIL).
- Feeding non-physical joint inputs: negative load, zero or negative
width and overlap, and non-positive moduli, thicknesses, and
allowables raise ValueError instead of producing a stress.
Verification
- Confirm shear_lag_beta(70e9, 2e-3, 0.5e9, 0.2e-3) returns 188.98 1/m
within 0.5.
- Confirm avg_shear_stress(10000, 0.025, 0.025) returns 16 MPa and
peak_shear_stress gives 38.47 MPa within 0.2 MPa of the 38.51 MPa
spec anchor, with concentration 2.40 within 0.01 of 2.407.
- Confirm the 10 mm overlap peaks higher than the 25 mm overlap and
that analyze reports pass False for the 25 MPa allowables and pass
True for the 45 MPa allowable at L = 25 mm.
- Confirm negative load, zero or negative width and overlap, and
non-positive modulus, thickness, adhesive shear modulus, adhesive
thickness and allowable all raise ValueError.
- Run the contract test offline: python3
scripts/test_adhesive_bonded_joints.py (34 tests, deterministic).
Related leaves
- structures/composites/composite-bolted-joints: the mechanical
fastener alternative for joining composite laminates.
- structures/composites/failure-criteria: ply-level failure checks of
the adherends either side of the bondline.
- structures/composites/laminate-stiffness: adherend modulus and
thickness inputs for laminate adherends.
- structures/composites/cmh17-allowables: composite material and joint
data context behind the CMH-17 reference.
- structures/composites/sandwich-panels: skin to core bonds where the
same adhesive allowables apply.
Behavior contract (gate 3)
Run the deterministic contract test (stdlib unittest, offline):
python3 scripts/test_adhesive_bonded_joints.py
The test covers the worked example anchors (beta 188.98, average 16
and 40 MPa, peak 38.47 and 51.25 MPa, concentration 2.40), the shorter
overlap penalty, the margin ratio and MS margin for the 25 MPa FAIL
and 45 MPa PASS cases, the uniform-shear limit for a small beta*L, the
peak over average round trip, load scaling, zero-load behaviour, the
finite concentration for long overlaps, and ValueError rejection of
negative load, zero overlap and width, zero modulus, thickness and
adhesive thickness, and non-positive allowables.
Compliance
- Standards referenced, not reproduced: CMH-17 is a SAE-published
composite materials handbook (sae.org/publications/cmh-17); the
single-lap shear-lag relations above are standard engineering
methodology, summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: adhesive-bonded-joints3description: Use when you must analyze a single-lap adhesive bonded joint between two identical adherends: compute the Volkersen shear-lag parameter from the adherend modulus and thickness and the adhesive shear modulus and thickness, the average adhesive shear stress from the load, bond width and overlap length, the peak shear stress at the bondline ends with the shear-lag correction, and the joint margin against the adhesive allowable shear stress. Produces the average and peak stresses, the peak to average concentration, the margin ratio with MS margin, and the pass or fail verdict. Trigger: adhesive bonded joint, single lap joint, shear lag parameter, adhesive shear stress, overlap length, Volkersen shear distribution, bondline peak stress, adhesive allowable.4license: Apache-2.05---67# Adhesive Bonded Joints (structures/composites/adhesive-bonded-joints)89Use when the task is analyzing a single-lap adhesive bonded joint10between two adherends of a composite or metallic structure: the11Volkersen-style shear-lag model for the bondline, the average and peak12adhesive shear stresses, and the joint margin against the adhesive13allowable. This leaf implements the shear-lag model in pure Python,14stdlib only, and reports the peak stress concentration that gates15bonded joint design in the CMH-17 composite context. It pairs with16structures/composites/composite-bolted-joints, the mechanical fastener17alternative in the same pack, and with failure-criteria and18laminate-stiffness for the adherend side of the joint.1920## Domain quick reference2122- Geometry: single-lap joint with overlap length L, bond width b and23 two identical adherends of thickness t and modulus E, bonded by an24 adhesive layer of thickness t_a and shear modulus G_a.25- Shear-lag parameter: beta = sqrt((G_a / t_a) * (2.0 / (E * t)))26 in 1/m. For identical adherends the 2.0/(E*t) term is the sum27 1/(E1*t1) + 1/(E2*t2) with E1 = E2 = E and t1 = t2 = t.28- Average adhesive shear stress: tau_avg = P / (b * L).29- Peak shear stress at the overlap ends (Volkersen style):30 tau_max = tau_avg * (beta*L/2) / tanh(beta*L/2). The factor31 (beta*L/2)/tanh(beta*L/2) tends to 1 as beta*L tends to 0 (uniform32 shear) and grows with beta*L, so long overlaps do not lower the peak33 below the load divided by the bond area without the concentration.34- Concentration factor: peak to average ratio35 (beta*L/2) / tanh(beta*L/2).36- Joint margin: margin_ratio = allowable / tau_max; the MS-style37 margin of safety is margin_ms = margin_ratio - 1.0. The joint passes38 when tau_max does not exceed the adhesive allowable shear stress.39- SI units throughout: N, m, Pa.40- The model is a Volkersen-style bondline shear analysis only; peel41 and adherend bending are out of scope. Peel-critical designs need a42 Goland-Reissner or FE analysis. CMH-17 frames the bonded joint data43 context; the relations above are standard engineering methodology,44 summary-only.4546## Workflow47481. Fix the joint geometry and materials: load P (load_n), bond width b49 (width_m), overlap L (overlap_m), adherend E and t50 (adherend_E_pa, adherend_t_m), adhesive G_a and t_a51 (adhesive_G_pa, adhesive_t_m), and the adhesive allowable52 (allowable_shear_pa).532. Compute the shear-lag parameter with shear_lag_beta; it measures54 how fast the shear stress peaks near the overlap ends.553. Get the average bondline stress with avg_shear_stress = P/(b*L).564. Apply the correction with peak_shear_stress (or scale the average57 by concentration_factor) to get the bondline peak stress.585. Rate the joint with joint_margin against the adhesive allowable;59 the margin ratio is allowable/peak and the MS margin is that ratio60 minus one.616. Run analyze to get the full dict {beta, tau_avg, tau_max,62 concentration, margin_ratio, margin_ms, pass} in one call.637. Confirm the deterministic checks with the contract test64 scripts/test_adhesive_bonded_joints.py.6566## Worked example6768Aluminum adherends E = 70 GPa, t = 2 mm; adhesive G_a = 0.5 GPa,69t_a = 0.2 mm; bond width 25 mm; load 10 kN.7071Case 1: overlap L = 25 mm, allowable 25 MPa.72- beta = sqrt((0.5e9/0.2e-3) * (2/(70e9*2e-3))) = 188.98 1/m,73 beta*L = 4.72.74- tau_avg = 10000 / (0.025 * 0.025) = 16 MPa.75- tau_max = 16 MPa * 2.3623 / tanh(2.3623) = 38.47 MPa, so the76 concentration factor is 2.40.77- margin_ratio = 25/38.47 = 0.650, margin_ms = -0.350: FAIL.7879Case 2: overlap L = 10 mm, allowable 25 MPa.80- tau_avg = 10000 / (0.025 * 0.010) = 40 MPa.81- tau_max = 51.25 MPa (beta*L = 1.89, concentration 1.28): FAIL.82- The shorter overlap raises both the average and the peak stress;83 the peak exceeds the 25 mm case.8485Case 3: allowable 45 MPa, L = 25 mm.86- margin_ratio = 45/38.47 = 1.170, margin_ms = +0.170: PASS.878889## Pitfalls9091- Reading the peak stress as uniform bondline shear: the average92 P / (b L) understates the bondline ends by the concentration factor93 (beta*L/2)/tanh(beta*L/2), which is 2.40 in the worked example; the94 joint margin must be checked against tau_max, not tau_avg.95- Believing a longer overlap always fixes the joint: the peak stress96 only falls toward the average slowly with beta*L, and the shorter97 10 mm overlap in the worked example raises both the average and98 the peak; the concentration saturates for long overlaps.99- Using non-identical adherend data: beta assumes two identical100 adherends with the 2.0/(E*t) sum form; dissimilar adherend pairs101 need the general 1/(E1*t1) + 1/(E2*t2) expression.102- Forgetting the model boundary: this is Volkersen-style bondline103 shear only; peel and adherend bending are out of scope, and104 peel-critical designs need a Goland-Reissner or FE analysis.105- Treating a zero margin as acceptable: margin_ms = margin_ratio - 1,106 so the joint only passes when tau_max stays below the allowable107 (25 MPa allowable against 38.47 MPa peak gives -0.350 and FAIL).108- Feeding non-physical joint inputs: negative load, zero or negative109 width and overlap, and non-positive moduli, thicknesses, and110 allowables raise ValueError instead of producing a stress.111## Verification112113- Confirm shear_lag_beta(70e9, 2e-3, 0.5e9, 0.2e-3) returns 188.98 1/m114 within 0.5.115- Confirm avg_shear_stress(10000, 0.025, 0.025) returns 16 MPa and116 peak_shear_stress gives 38.47 MPa within 0.2 MPa of the 38.51 MPa117 spec anchor, with concentration 2.40 within 0.01 of 2.407.118- Confirm the 10 mm overlap peaks higher than the 25 mm overlap and119 that analyze reports pass False for the 25 MPa allowables and pass120 True for the 45 MPa allowable at L = 25 mm.121- Confirm negative load, zero or negative width and overlap, and122 non-positive modulus, thickness, adhesive shear modulus, adhesive123 thickness and allowable all raise ValueError.124- Run the contract test offline: python3125 scripts/test_adhesive_bonded_joints.py (34 tests, deterministic).126127## Related leaves128129- structures/composites/composite-bolted-joints: the mechanical130 fastener alternative for joining composite laminates.131- structures/composites/failure-criteria: ply-level failure checks of132 the adherends either side of the bondline.133- structures/composites/laminate-stiffness: adherend modulus and134 thickness inputs for laminate adherends.135- structures/composites/cmh17-allowables: composite material and joint136 data context behind the CMH-17 reference.137- structures/composites/sandwich-panels: skin to core bonds where the138 same adhesive allowables apply.139140## Behavior contract (gate 3)141142Run the deterministic contract test (stdlib unittest, offline):143144 python3 scripts/test_adhesive_bonded_joints.py145146The test covers the worked example anchors (beta 188.98, average 16147and 40 MPa, peak 38.47 and 51.25 MPa, concentration 2.40), the shorter148overlap penalty, the margin ratio and MS margin for the 25 MPa FAIL149and 45 MPa PASS cases, the uniform-shear limit for a small beta*L, the150peak over average round trip, load scaling, zero-load behaviour, the151finite concentration for long overlaps, and ValueError rejection of152negative load, zero overlap and width, zero modulus, thickness and153adhesive thickness, and non-positive allowables.154155## Compliance156157- Standards referenced, not reproduced: CMH-17 is a SAE-published158 composite materials handbook (sae.org/publications/cmh-17); the159 single-lap shear-lag relations above are standard engineering160 methodology, summary-only per standards-map.yaml.161- compliance: STANDARDS-REF, gated: false.