@theerapat-s28/ts-structural-eng-tools/strengthening
Strengthening
Moment-capacity, shear-capacity and plate-to-concrete connection calculations for existing RC beams strengthened with steel plates.
The strengthening module evaluates how much a strengthening intervention
increases the flexural capacity of an existing beam. It follows a
transform-then-delegate pattern: the strengthening elements (steel plates)
are converted into equivalent rebar areas, the effective depths are recomputed, and the
capacity math is delegated to rectBeamMomentCapacity from the
rc module rather than reimplemented.
unit field.
A jacket is only effective if the plates are actually attached, so the module also sizes the
interface bolting between the concrete and each plate: the interface shear flow
q = V·Q/I from an elastic transformed section, the design shear strength of one
anchor bolt, and the resulting bolt pitch and count.
Plates bolted to the sides of the web strengthen the beam in shear instead, and are handled by their own pair of functions. ACI 318-19 has no provisions for steel side plates, so the module offers two independent models — plate web yielding after AISC 360 G2.1, and a tension tie adapted from the FRP provisions of ACI 440.2R-17 §11.4 — and a comparison helper that reports the lower of the two. Both are engineering adaptations rather than code calculations.
null where a plate is absent.
rc module.V (kN) and the sectionState used for the transformed section.phiVboltOverride.PlateShearFlowInput plus the bolt, the bolts per row, and the transfer length.rc module's shear functions.'continuous' or 'strips') and optional anchorage.BoltProps, the bolts per vertical row, and the row spacing along the span.topSteelWidth and topSteelThickness are both positive.bottomSteelWidth and bottomSteelThickness are both positive.SidePlateShearProps has both a positive thickness and a positive depth.The original section is run through
rectBeamMomentCapacity unchanged —
this becomes the before result.
Plate areas are scaled by the strength ratio
n = fy,plate / fy,rebar
so they can be treated as additional reinforcement of the rebar's grade.
d (and d_ whenever compression steel or a top plate is
present) are replaced by the area-weighted centroids of the combined rebar + plate
steel, still measured from the extreme concrete compression fibre. The bottom plate
sits below the soffit; a top plate sits above the datum and so takes a negative depth.
The modified section is run through
rectBeamMomentCapacity again —
this becomes the after result, with warnings merged.
rc-beam-steel-plate-jacketing.tsCalculates the design moment capacity of an RC beam before and after strengthening with top and bottom steel plates. The bottom plate contributes to the tension steel; the top plate contributes to the compression steel — including on an originally singly reinforced section, which a top plate turns into a doubly reinforced one.
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| Es | number | MPa | Required | Elastic modulus of reinforcing steel |
| fc_ | number | MPa | Required | Specified compressive strength of concrete f′c |
| fy | number | MPa | Required | Yield strength of the existing rebar |
| As | number | mm² | Required | Area of existing tension reinforcement |
| b | number | mm | Required | Section width |
| h | number | mm | Required | Overall section height |
| d | number | mm | Required | Effective depth to the existing tension steel |
| As_ | number | mm² | Optional | Area of existing compression reinforcement (doubly reinforced only) |
| d_ | number | mm | Optional | Depth to the existing compression steel centroid |
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| Es | number | MPa | Required | Elastic modulus of the steel plates |
| fy | number | MPa | Required | Yield strength of the steel plates |
| topSteelWidth | number | mm | Optional | Width of the top plate — omit or set to 0 for no top plate |
| topSteelThickness | number | mm | Optional | Thickness of the top plate |
| bottomSteelWidth | number | mm | Optional | Width of the bottom plate — omit or set to 0 for no bottom plate |
| bottomSteelThickness | number | mm | Optional | Thickness of the bottom plate |
import { calculateSteelJacketedBeamMomentCapacity } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const result = calculateSteelJacketedBeamMomentCapacity( { Es: 200000, // MPa fc_: 28, // MPa fy: 390, // MPa As: 1472.6, // mm² (3-DB25) b: 300, // mm h: 500, // mm d: 440, // mm }, { Es: 200000, // MPa fy: 245, // MPa (SS400 plate) topSteelWidth: 300, // mm topSteelThickness: 6, // mm bottomSteelWidth: 300, // mm bottomSteelThickness: 6 // mm }, );
{
before: { // original section
phiMn: 206.64,
calculationDetails: {
c: 94.63, a: 80.44, beta1: 0.85,
d: 440, As: 1472.6, ro: 0.011156
},
unit: 'kN-m',
warnings: []
},
after: { // jacketed section
phiMn: 407.47, // +97% capacity in this example
calculationDetails: {
c: 94.63, // mm, neutral axis from the concrete face
a: 80.44, // mm, stress block depth — concrete only
beta1: 0.85,
d: 467.364, // mm, rebar + bottom plate centroid
d_: -3, // mm, top plate centroid — above the concrete face
As: 2603.37, // mm², rebar + bottom plate
As_: 1130.77, // mm², top plate as compression steel
fs_: 390, // MPa, capped at fy — the top plate yields
ro: 0.018568,
ro_: 0.008065
},
unit: 'kN-m',
warnings: []
}
}
Both entries have the same shape as a rectBeamMomentCapacity result. The
after warnings are the merged set from the jacketed-section run.
rectBeamMomentCapacity apply to both the before and after runs — see the rc module reference for the full list.
d_ (half its thickness above that face), and d is unchanged by adding one. Note this differs from the datum used by the interface-bolting functions below.
rectBeamMomentCapacity: the added plate steel can push a section out of the tension-controlled region even when the original section was fine. Because before and after are computed in one call, a throw from either leg loses both results.
rc-beam-plate-interface-bolts.tsHorizontal shear must be transferred across the concrete-to-plate interface for the jacket to act compositely. These functions compute that demand from an elastic transformed section and size the bolt group that resists it.
Q at a cut is the first moment of the area beyond it — the plate alone — while ybar and Itr come from a single solve that includes every plate present. Adding a top plate therefore changes the bottom interface result too, so the two cannot be computed independently.
Calculates q = V·Q/I at each concrete-to-plate interface using an elastic
transformed section. Rebar is transformed with (n−1) because it displaces
concrete already counted in the section; the plates sit outside the concrete and take the
full n. Both moduli use Ec = 4700√f′c.
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| section | RectBeamSection | — | Required | The original beam section (singly or doubly reinforced) |
| plates | SteelJacketedProps | — | Required | Plate material and dimensions; at least one plate must be present |
| V | number | kN | Required | Factored shear force at the section under consideration |
| sectionState | 'cracked' | 'uncracked' | — | Optional | Transformed section basis (default: 'cracked') |
import { plateInterfaceShearFlow } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const flow = plateInterfaceShearFlow({ section: { Es: 200000, fc_: 28, fy: 400, As: 1200, b: 300, h: 500, d: 440, }, plates: { Es: 200000, fy: 250, bottomSteelWidth: 200, // mm — bottom plate only bottomSteelThickness: 10, // mm }, V: 150, // kN });
{
top: null, // no top plate in this example
bottom: {
q: 247.71, // N/mm of shear flow to transfer
Q: 4681782, // mm³, first moment of the plate about the NA
leverArm: 291.09 // mm, plate centroid to neutral axis
},
calculationDetails: {
Ec: 24870.06, // MPa
ns: 8.042, // Es,rebar / Ec
np: 8.042, // Es,plate / Ec
ybar: 213.91, // mm, neutral axis from the datum
Itr: 2835033974, // mm⁴
sectionState: 'cracked'
},
unit: 'N/mm',
warnings: []
}
Depths here are measured from a datum at the top face of the top plate
(the concrete top face when there is no top plate), which is what
ybar and every y in the transformed section refer to. This is
not the datum used by calculateSteelJacketedBeamMomentCapacity,
which measures from the extreme concrete compression fibre so that its stress block
covers concrete only. Each function is internally consistent; only compare depths
within one of them.
'cracked' default suits a strengthened beam under service load and gives the higher, conservative q. Use 'uncracked' only when the beam is known to stay below its cracking moment.
Design shear strength of a single anchor bolt from the steel strength per
ACI 318-19 17.7.1.2b, Vsa = 0.6·Ase,V·futa, with φ = 0.65
(Table 17.5.3) and the futa cap of 17.6.1.2.
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| Ase | number | mm² | Required | Effective cross-sectional area of the anchor in shear |
| futa | number | MPa | Required | Specified tensile strength of the anchor steel |
| fya | number | MPa | Optional | Specified yield strength; enables the 1.9·fya part of the cap |
| diameter | number | mm | Optional | Anchor diameter; enables the ACI 17.9.2 minimum spacing check in plateInterfaceBoltRequirement |
| shearPlanes | number | — | Optional | Shear planes per bolt (default: 1) |
| phiVboltOverride | number | kN | Optional | Bypasses the computed steel strength — use for post-installed anchors with an ESR value |
import { boltShearCapacity } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const bolt = boltShearCapacity({ Ase: 157, // mm² (M16) futa: 400, // MPa fya: 240, // MPa diameter: 16, // mm });
{
phiVbolt: 24.49, // kN, 0.65 * 37.68
calculationDetails: {
source: 'ACI318-19, 17.7.1.2b',
Vsa: 37.68, // kN, 0.6 * 157 * 400
futaEffective: 400, // MPa, below min(1.9*fya, 860)
shearPlanes: 1
},
unit: 'kN',
warnings: [
{
reference: 'ACI318-19, 17.7.2',
message: 'Only anchor steel strength in shear is evaluated; ...'
}
]
}
phiVboltOverride is used, and these limit states must be checked separately.
futa exceeds min(1.9·fya, 860 MPa) and is capped.
Determines the bolts required at every plate present. For each interface the required pitch
follows from the shear flow, s = n·φVbolt / q, and the bolt count is the larger
of that pitch over the transfer length and the count needed to develop the full plate yield
force, Ap·fy / φVbolt. governedBy reports which one controls.
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| section | RectBeamSection | — | Required | The original beam section |
| plates | SteelJacketedProps | — | Required | Plate material and dimensions |
| V | number | kN | Required | Factored shear force at the section |
| sectionState | 'cracked' | 'uncracked' | — | Optional | Transformed section basis (default: 'cracked') |
| bolt | BoltProps | — | Required | Anchor properties, passed to boltShearCapacity |
| boltsPerRow | number | — | Required | Bolts across the plate width at each pitch location |
| transferLength | number | mm | Required | Length over which the plate force is transferred (typically zero moment to maximum moment) |
import { plateInterfaceBoltRequirement } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const bolts = plateInterfaceBoltRequirement({ section: { Es: 200000, fc_: 28, fy: 400, As: 1200, b: 300, h: 500, d: 440, As_: 600, d_: 50, }, plates: { Es: 200000, fy: 250, topSteelWidth: 200, // mm topSteelThickness: 10, // mm bottomSteelWidth: 200, bottomSteelThickness: 10, }, V: 150, // kN bolt: { Ase: 157, futa: 400, fya: 240, diameter: 16 }, boltsPerRow: 2, transferLength: 2000, // mm });
{
top: {
q: 121.2, Q: 2870171, leverArm: 178.45,
requiredSpacing: 300, // mm, capped at the detailing limit
boltCount: 21,
governedBy: 'plateForce', // near the compression face, q is low
calculationDetails: {
spacingFromShearFlow: 404.1,
rows: 8,
boltCountFromShearFlow: 16,
boltCountFromPlateForce: 21,
plateForce: 500 // kN, Ap * fy
}
},
bottom: {
q: 225.17, Q: 5332462, leverArm: 331.55,
requiredSpacing: 217.5,
boltCount: 22,
governedBy: 'shearFlow',
calculationDetails: {
spacingFromShearFlow: 217.5,
rows: 11,
boltCountFromShearFlow: 22,
boltCountFromPlateForce: 21,
plateForce: 500
}
},
calculationDetails: {
Ec: 24870.06, ns: 8.042, np: 8.042,
ybar: 183.45, Itr: 3552281591,
sectionState: 'cracked',
phiVbolt: 24.49,
boltsPerRow: 2,
transferLength: 2000
},
unit: 'kN',
warnings: [ /* breakout notice + top plate pitch cap */ ]
}
rows is ceil(transferLength / requiredSpacing) + 1, so both ends of
the transfer length carry a row, and boltCount is rows × boltsPerRow
unless the plate force governs.
governedBy: 'plateForce' — it sits near the compression face, so its lever arm to the neutral axis is short and q is low, but the plate still has to develop its force somewhere. A bottom plate is usually governed by shear flow.
4·da (only checked when diameter is supplied).
boltsPerRow or transferLength is not positive.
rc-beam-side-plate-shear.ts
Steel plates bolted to the faces of the web add a shear-resisting path alongside the
stirrups. Both functions below return the same before / after pair —
before is φVc + φVs delegated to the rc module, and
after adds the plate contribution φVp — and both accept the same
two arguments. They differ only in how Vp is derived.
φVp is not a code-sanctioned calculation — it comes
from AISC 360 G2.1 (web yielding) or ACI 440.2R-17 §11.4
(tension tie), neither of which was written for steel plates bolted to a concrete web.
Every result carries a warning saying so. Run both and take the lower value —
compareSidePlateShearCapacity does exactly that.
| Quantity | Basis | Standing | Notes |
|---|---|---|---|
| φVc | ACI 318-19, 22.5.5.1 | Code | Delegated to concreteShearCapacity |
| φVs | ACI 318-19, 22.5.10.5.3 | Code | Delegated to stirrupShearCapacity |
| φ = 0.75 | ACI 318-19, 21.2.1 | Code | Applied to the plate term as well |
| Vs + Vp cap | ACI 318-19, 22.5.1.2 | Code | Truncates Vp to the web's remaining headroom; mirrored by ACI 440.2R-17, 11.4.3 Eq. (11.4.3) at the same 0.66 coefficient |
| Strip pitch limit | ACI 318-19, 9.7.6.2.2 | Code | Warning only; tightens to min(d/4, 300) once Vs + Vp passes 0.33·√f′c·bw·d. ACI 440.2R-17, 11.4.2 defers to this same limit |
| Minimum anchor spacing | ACI 318-19, 17.9.2 | Code | Warning only, on rowSpacing when the bolt diameter is given |
| φVanchorage | ACI 318-19, 17.7.1.2b | Code | Anchor steel in shear only; breakout and pryout not evaluated |
| φVp — web yielding | AISC 360 G2.1 | Adaptation | Written for the web of a steel beam, not a plate bolted to concrete |
| φVp — tension tie | ACI 440.2R-17 §11.4 | Adaptation | An ACI guide, not part of ACI 318, and calibrated for FRP — ψf = 0.85 and the 0.004 strain cap come from FRP test data |
Vs + Vf ≤ 0.66·√f′c·bw·d. The remaining two — the subsections carrying the 0.004
strain cap and the ψf = 0.85 factor — are still cited at §11.4
only. The wf + d/4 strip pitch rule of ACI 440.2R-08 is
deliberately not applied: it did not survive into the 2017 edition, which defers to
ACI 318 instead.
width = spacing, so one expression covers both layouts through the coverage ratio wp / s reported as coverageRatio.
concreteShearCapacity and stirrupShearCapacity from the
rc module give φVc + φVs, unchanged — this becomes the
before result. A section with Av: 0 contributes
φVs = 0 rather than dividing by a zero spacing.
The chosen model produces a nominal
Vp from the plate geometry, reported as
Vp. Both models reduce to the coverage ratio wp / s, which is 1
for a continuous plate.
Vp is truncated to the headroom left under
0.66·√f′c·bw·d — ACI 318-19 22.5.1.2, mirrored by ACI 440.2R-17 11.4.3 — giving
VpEffective. A section with no headroom at all throws
206 instead.
When
anchorage is supplied, φVpPlate = 0.75·VpEffective is compared
against φVanchorage from boltShearCapacity, and the lower wins.
governedBy names whichever of the three limits set the result.
after.phiVn = φVc + φVs + φVp, with every intermediate value in
calculationDetails and every warning of steps 1–4 merged into
after.warnings.
before.warnings carries only what the baseline calculation raised, so it is usually empty; after.warnings carries those plus every side plate warning. Read after.warnings — it is the complete set.
√f′c exceeds the 8.3 MPa limit used for Vc, i.e. f′c > 68.9 MPa. It appears in both before.warnings and after.warnings.
Treats each side plate as a supplementary web resisting in-plane shear at the von Mises
shear yield stress 0.6·fy (AISC 360 G2.1, a steel code written
for the web of a steel beam — not an ACI 318-19 provision):
Vp = nSides · 0.6·fy · tp · dp · wp / s, with wp / s = 1 for a
continuous plate. Strips are handled as that fraction of a continuous web, which is an
approximation — a discrete strip acts more as a tie, which is what
sidePlateShearCapacityByTensionTie models.
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| fc_ | number | MPa | Required | Specified compressive strength of concrete f′c |
| bw | number | mm | Required | Web width |
| d | number | mm | Required | Effective depth |
| Av | number | mm² | Required | Existing stirrup area within spacing s (both legs); pass 0 for a beam with no stirrups |
| fyt | number | MPa | Required | Yield strength of the existing stirrups |
| s | number | mm | Required | Existing stirrup spacing; 0 alongside Av: 0 |
| lambda | number | — | Optional | Lightweight concrete factor (default: 1.0) |
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| fy | number | MPa | Required | Yield strength of the side plate |
| thickness | number | mm | Required | Plate thickness tp |
| depth | number | mm | Required | Engaged vertical depth dp; must not exceed d |
| configuration | 'continuous' | 'strips' | — | Required | Layout along the span |
| width | number | mm | Optional | Strip width wp — required when configuration: 'strips' |
| spacing | number | mm | Optional | Strip pitch s, centreline to centreline per ACI 440.2R-17 11.4.2 — required when configuration: 'strips'; must be ≥ width |
| angle | number | degrees | Optional | Strip inclination from the beam axis, in (0, 90] (default: 90); used by the tension tie model only |
| Es | number | MPa | Optional | Plate elastic modulus (default: 200000) |
| sides | 1 | 2 | — | Optional | Faces plated (default: 2) |
| anchorage | SidePlateAnchorage | — | Optional | Bolt group; omit to report the fully developed plate capacity |
| Param | Type | Unit | Required? | Description |
|---|---|---|---|---|
| bolt | BoltProps | — | Required | Anchor properties, passed to boltShearCapacity |
| boltsPerRow | number | — | Required | Bolts in one vertical row, on one face |
| rowSpacing | number | mm | Required | Horizontal pitch of the bolt rows along the span |
import { sidePlateShearCapacityByWebYielding } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const result = sidePlateShearCapacityByWebYielding( { fc_: 35, // MPa bw: 400, // mm d: 550, // mm Av: 157, // mm², existing stirrups fyt: 400, // MPa s: 250, // mm }, { fy: 250, // MPa thickness: 6, // mm depth: 500, // mm configuration: 'strips', width: 100, // mm spacing: 250, // mm anchorage: { bolt: { Ase: 157, futa: 400, fya: 240, diameter: 16 }, boltsPerRow: 3, rowSpacing: 250, // mm }, }, );
{
method: 'webYielding',
before: {
phiVn: 269.57,
calculationDetails: { phiVc: 165.95, phiVs: 103.62, Vc: 221.26, Vs: 138.16 },
unit: 'kN',
warnings: []
},
after: {
phiVn: 539.57,
phiVp: 270,
governedBy: 'plateCapacity',
calculationDetails: {
phiVc: 165.95, phiVs: 103.62,
Vp: 360, // kN, 2 * 0.6*250 * 6 * 500 * 0.4
VpEffective: 360, // kN, after the web crushing cap
maxVs: 859.01, // kN, 0.66*sqrt(fc')*bw*d
headroom: 720.85, // kN, maxVs - Vs
phiVpPlate: 270,
phiVanchorage: 293.88, // kN, 2 faces * 2 rows * 3 bolts * 24.49
anchorageRows: 2,
phiVbolt: 24.49,
sides: 2,
coverageRatio: 0.4,
tauY: 150, // MPa, 0.6 * fy
slenderness: 83.3, // dp / tp
slendernessLimit: 63.4 // 2.24 * sqrt(Es / fy)
},
unit: 'kN',
warnings: [ /* model notice, partial depth, slenderness, breakout */ ]
}
}
| Field | Type | Unit | Description |
|---|---|---|---|
| phiVn | number | kN | Strengthened design shear capacity, φVc + φVs + φVp |
| phiVp | number | kN | Design contribution of the side plates, after every limit below |
| governedBy | 'plateCapacity' | 'anchorage' | 'webCrushing' | — | Which limit set phiVp |
| calculationDetails | object | kN / MPa | Every intermediate quantity, including both competing limits |
phiVanchorage (which already carries the anchor φ of 0.65 from boltShearCapacity), and the web crushing headroom. Omitting anchorage skips the second, and a warning says the plate was assumed fully developed.
floor(dp / rowSpacing) and at least one — the same dfv / sf counting ACI 440.2R uses for bonded shear reinforcement. A rowSpacing wider than dp falls back to one row, with a warning.
Vp to the remaining web capacity and warns when Vs + Vp would pass 0.66·√f′c·bw·d — ACI318-19, 22.5.1.2. A continuous plate reaches this on almost any realistic thickness, so governedBy: 'webCrushing' is common there.
dp/tp exceeds 2.24·√(Es/fy), beyond which shear buckling may precede yielding — AISC360-22, G2.1. It stays a warning because the concrete restrains the inner face.
min(d/2, 600 mm), tightening to min(d/4, 300 mm) once Vs + Vp passes 0.33·√f′c·bw·d. It keys off Vs + Vp, not Vs alone, because the plate is usually what pushes a section into that range. This is the only pitch check applied: ACI440.2R-17, 11.4.2 defers to the ACI 318 limits for internal steel shear reinforcement rather than imposing its own, so one check satisfies both documents.
sides: 1 is used: a plate on one face only loads the section eccentrically, and the resulting torsion and out-of-plane twist are outside this in-plane shear model.
rowSpacing falls below the minimum anchor spacing of 4·da — ACI318-19, 17.9.2, the same check plateInterfaceBoltRequirement applies, and only active when the bolt's diameter is supplied. Also warns when depth is less than d, and propagates the anchor breakout notice of ACI318-19, 17.7.2.
fy, a depth past d, sides outside 1–2, strips missing a width or spacing, a strip wider than its pitch, an angle outside (0, 90], or an anchorage with no bolts.
Vs already reaches 0.66·√f′c·bw·d: the web crushes before any added plate force can be developed, so no side plate helps. Propagates 202 from boltShearCapacity when the anchor properties are invalid.
Treats each side plate as a tension tie crossing the diagonal crack, following the bonded
shear reinforcement model of ACI 440.2R-17 §11.4 — an ACI guide for
externally bonded FRP, not part of ACI 318-19 — with steel in place of FRP:
Vp = ψf · nSides · tp · wp · ffe · (sin α + cos α) · dp / s, with
ffe = min(fy, Es·0.004) and ψf = 0.85. Takes exactly the same two
arguments as sidePlateShearCapacityByWebYielding.
Es·0.004 = 800 MPa sits above any normal fy, so the 0.004 strain cap does not bind and the tie reaches yield. This model therefore usually returns a higher capacity than the web yielding model, whose 0.6·fy is the more conservative figure.
import { sidePlateShearCapacityByTensionTie } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const result = sidePlateShearCapacityByTensionTie(section, plates);
{
method: 'tensionTie',
before: { phiVn: 269.57, /* … as above … */ },
after: {
phiVn: 563.45,
phiVp: 293.88,
governedBy: 'anchorage', // the bolts, not the plate, set the limit
calculationDetails: {
phiVc: 165.95, phiVs: 103.62,
Vp: 510, // kN, 0.85 * 2 * 6 * 250 * 500 * 0.4
VpEffective: 510,
maxVs: 859.01, headroom: 720.85,
phiVpPlate: 382.5, // kN, before the anchorage limit bites
phiVanchorage: 293.88,
anchorageRows: 2, phiVbolt: 24.49,
sides: 2, coverageRatio: 0.4,
ffe: 250, // MPa, min(fy, Es * 0.004)
strainLimitedStress: 800, // MPa, Es * 0.004
orientation: 1, // sin(alpha) + cos(alpha)
psi: 0.85
},
unit: 'kN',
warnings: [ /* model notice, partial depth, breakout */ ]
}
}
const result = sidePlateShearCapacityByTensionTie(section, { fy: 250, thickness: 4, depth: 500, configuration: 'continuous', }); // result.after { phiVn: 810.21, phiVp: 540.64, governedBy: 'webCrushing', calculationDetails: { Vp: 850, // kN, what the plate could deliver VpEffective: 720.85, // kN, truncated to the headroom maxVs: 859.01, headroom: 720.85, coverageRatio: 1, ffe: 250, psi: 0.85 /* … */ } }
fy > Es·0.004 — ACI440.2R-17, 11.4. Only reachable with a very high strength plate.
Vs + Vp switch), the one-sided eccentricity note, and the ACI318-19, 17.9.2 and 17.7.2 anchor checks. The AISC slenderness check is not applied — buckling of a web panel is not the mechanism this model assumes.
sidePlateShearCapacityByWebYielding.
Runs both models on the same section and reports the lower φVn as governing.
This is the intended entry point when selecting a conservative design capacity, since
neither model is code-sanctioned for steel side plates.
import { compareSidePlateShearCapacity } from '@theerapat-s28/ts-structural-eng-tools/strengthening'; const comparison = compareSidePlateShearCapacity(section, plates);
{
webYielding: { method: 'webYielding', before: { /* … */ }, after: { phiVn: 539.57, /* … */ } },
tensionTie: { method: 'tensionTie', before: { /* … */ }, after: { phiVn: 563.45, /* … */ } },
governing: {
method: 'webYielding',
phiVn: 539.57, // kN, the lower of the two
phiVp: 270,
governedBy: 'plateCapacity'
}
}
| Field | Type | Unit | Description |
|---|---|---|---|
| method | 'webYielding' | 'tensionTie' | — | Which model produced the lower capacity |
| phiVn | number | kN | The lower strengthened design shear capacity |
| phiVp | number | kN | Its plate contribution |
| governedBy | 'plateCapacity' | 'anchorage' | 'webCrushing' | — | Which limit set that phiVp |
governing, so the warnings and every intermediate value stay available for the report.
| Kind | Export | Returns | Description |
|---|---|---|---|
| FN | calculateSteelJacketedBeamMomentCapacity | { before, after } | Moment capacity of an RC beam before and after steel plate jacketing |
| FN | plateInterfaceShearFlow | { top, bottom, calculationDetails, unit, warnings } | Shear flow q = V·Q/I at each concrete-to-plate interface |
| FN | boltShearCapacity | { phiVbolt, calculationDetails, unit, warnings } | Design shear strength of one anchor bolt from the steel strength |
| FN | plateInterfaceBoltRequirement | { top, bottom, calculationDetails, unit, warnings } | Required bolt pitch and count at each interface, with the governing requirement |
| FN | sidePlateShearCapacityByWebYielding | { method, before, after } | Shear capacity with side plates taken as supplementary webs yielding at 0.6·fy — AISC 360 G2.1, not ACI 318-19 |
| FN | sidePlateShearCapacityByTensionTie | { method, before, after } | Shear capacity with side plates taken as ties crossing the crack — ACI 440.2R-17 §11.4, a guide for FRP, not ACI 318-19 |
| FN | compareSidePlateShearCapacity | { webYielding, tensionTie, governing } | Both side plate shear models with the lower result reported as governing — neither is ACI 318-19 |