@theerapat-s28/ts-structural-eng-tools 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -43,7 +43,8 @@ src/
43
43
  │ └── rc-beam-design.ts # Beam moment capacity (singly/doubly reinforced) and shear capacity (Vc, Vs, stirrup requirement)
44
44
  ├── strengthening/ # Strengthening methods
45
45
  │ ├── index.ts
46
- │ └── rc-beam-steel-plate-jacketing.ts
46
+ │ ├── rc-beam-steel-plate-jacketing.ts # Moment capacity before/after plate jacketing
47
+ │ └── rc-beam-plate-interface-bolts.ts # Interface shear flow and required interface bolts
47
48
  ├── core/ # Shared infrastructure
48
49
  │ ├── index.ts
49
50
  │ ├── constants/ # RC design constants (ACI 318)
@@ -57,6 +58,7 @@ examples/
57
58
  └── basic-usage.ts # Example usage of the library
58
59
  tests/
59
60
  ├── rc/ # Tests for RC module
61
+ ├── strengthening/ # Tests for strengthening module
60
62
  └── utils/ # Tests for utilities
61
63
  ```
62
64
 
@@ -87,7 +89,12 @@ For runtime resolution, `tsconfig-paths` is registered in the `dev` script.
87
89
 
88
90
  ### Strengthening
89
91
 
90
- - **`calculateSteelJacketedBeamMomentCapacity(section, jacketedProperties)`** — Computes φMn for a beam strengthened with steel plate jacketing.
92
+ - **`calculateSteelJacketedBeamMomentCapacity(section, jacketedProperties)`** — Computes φMn for a beam strengthened with steel plate jacketing, as a `before` / `after` pair.
93
+ - **`plateInterfaceShearFlow(input)`** — Computes the shear flow `q = V·Q/I` (N/mm) to transfer across each concrete-to-plate interface, from a cracked (default) or uncracked elastic transformed section. Returns a per-plate `top` / `bottom` result, `null` where a plate is absent.
94
+ - **`boltShearCapacity(bolt)`** — Computes φVsa for one anchor bolt from the steel strength (ACI 318-19, 17.7.1.2b, φ per Table 17.5.3). Concrete breakout and pryout are not evaluated and must be checked separately.
95
+ - **`plateInterfaceBoltRequirement(input)`** — Computes the required bolt pitch and count at each interface, taking the larger of the shear-flow requirement (`s = n·φVbolt / q`) and the count needed to develop the full plate yield force, and reports which one governs.
96
+
97
+ Both plates are independently optional: a plate counts as present only when its width and thickness are both positive, so the same functions cover a bottom-only jacket and a top-and-bottom jacket. Use `hasTopPlate(props)` / `hasBottomPlate(props)` to test for presence.
91
98
 
92
99
  ### General Utilities
93
100
 
@@ -17,3 +17,9 @@ export declare const MAX_STIRRUP_SPACING_HIGH_VS = 300;
17
17
  export declare const MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = 0.25;
18
18
  export declare const MIN_AV_SQRT_FC_COEFFICIENT = 0.062;
19
19
  export declare const MIN_AV_ABSOLUTE_COEFFICIENT = 0.35;
20
+ export declare const ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = 0.65;
21
+ export declare const ANCHOR_STEEL_SHEAR_COEFFICIENT = 0.6;
22
+ export declare const ANCHOR_FUTA_FYA_FACTOR = 1.9;
23
+ export declare const MAX_ANCHOR_FUTA = 860;
24
+ export declare const MIN_ANCHOR_SPACING_DIAMETER_FACTOR = 4;
25
+ export declare const MAX_PLATE_BOLT_SPACING = 300;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MIN_AV_ABSOLUTE_COEFFICIENT = exports.MIN_AV_SQRT_FC_COEFFICIENT = exports.MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = exports.MAX_STIRRUP_SPACING_HIGH_VS = exports.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR = exports.MAX_STIRRUP_SPACING_LOW_VS = exports.VS_SPACING_THRESHOLD_COEFFICIENT = exports.MAX_VS_COEFFICIENT = exports.SQRT_FC_SHEAR_LIMIT = exports.CONCRETE_SHEAR_VC_COEFFICIENT = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.MIN_LAYER_CLEAR_SPACING = exports.AGGREGATE_SPACING_FACTOR = exports.MIN_BAR_CLEAR_SPACING = exports.DEFAULT_MAX_AGGREGATE_SIZE = exports.DEFAULT_STIRRUP_DIAMETER = exports.DEFAULT_BEAM_COVER = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = void 0;
3
+ exports.MAX_PLATE_BOLT_SPACING = exports.MIN_ANCHOR_SPACING_DIAMETER_FACTOR = exports.MAX_ANCHOR_FUTA = exports.ANCHOR_FUTA_FYA_FACTOR = exports.ANCHOR_STEEL_SHEAR_COEFFICIENT = exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = exports.MIN_AV_ABSOLUTE_COEFFICIENT = exports.MIN_AV_SQRT_FC_COEFFICIENT = exports.MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = exports.MAX_STIRRUP_SPACING_HIGH_VS = exports.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR = exports.MAX_STIRRUP_SPACING_LOW_VS = exports.VS_SPACING_THRESHOLD_COEFFICIENT = exports.MAX_VS_COEFFICIENT = exports.SQRT_FC_SHEAR_LIMIT = exports.CONCRETE_SHEAR_VC_COEFFICIENT = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.MIN_LAYER_CLEAR_SPACING = exports.AGGREGATE_SPACING_FACTOR = exports.MIN_BAR_CLEAR_SPACING = exports.DEFAULT_MAX_AGGREGATE_SIZE = exports.DEFAULT_STIRRUP_DIAMETER = exports.DEFAULT_BEAM_COVER = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = void 0;
4
4
  exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = 0.9;
5
5
  exports.CONCRETE_ULTIMATE_STRAIN = 0.003;
6
6
  // ACI 318-19 Table 20.6.1.3.1: cast-in-place beams, not exposed to weather or in contact with ground
@@ -32,4 +32,16 @@ exports.MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = 0.25; // * d
32
32
  // ACI 318-19 9.6.3.3: Av,min = max(0.062 * sqrt(fc') * bw * s / fyt, 0.35 * bw * s / fyt)
33
33
  exports.MIN_AV_SQRT_FC_COEFFICIENT = 0.062;
34
34
  exports.MIN_AV_ABSOLUTE_COEFFICIENT = 0.35;
35
+ // ACI 318-19 Table 17.5.3: strength reduction factor for anchor steel in shear
36
+ exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = 0.65;
37
+ // ACI 318-19 17.7.1.2b: Vsa = 0.6 * Ase,V * futa
38
+ exports.ANCHOR_STEEL_SHEAR_COEFFICIENT = 0.6;
39
+ // ACI 318-19 17.6.1.2: futa shall not exceed min(1.9 * fya, 860 MPa)
40
+ exports.ANCHOR_FUTA_FYA_FACTOR = 1.9;
41
+ exports.MAX_ANCHOR_FUTA = 860; // MPa
42
+ // ACI 318-19 17.9.2: min center-to-center spacing of cast-in anchors = 4 * da
43
+ exports.MIN_ANCHOR_SPACING_DIAMETER_FACTOR = 4;
44
+ // Practical detailing limit on bolt pitch along a bonded strengthening plate,
45
+ // so the plate is restrained against local buckling / peeling between fasteners
46
+ exports.MAX_PLATE_BOLT_SPACING = 300; // mm
35
47
  //# sourceMappingURL=rc.constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rc.constant.js","sourceRoot":"","sources":["../../../src/core/constants/rc.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,kCAAkC,GAAG,GAAG,CAAC;AACzC,QAAA,wBAAwB,GAAG,KAAK,CAAC;AAE9C,qGAAqG;AACxF,QAAA,kBAAkB,GAAG,EAAE,CAAC,CAAC,6BAA6B;AACtD,QAAA,wBAAwB,GAAG,EAAE,CAAC,CAAC,KAAK;AACpC,QAAA,0BAA0B,GAAG,EAAE,CAAC,CAAC,iCAAiC;AAE/E,wEAAwE;AAC3D,QAAA,qBAAqB,GAAG,EAAE,CAAC,CAAC,KAAK;AACjC,QAAA,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,uDAAuD;AAC1C,QAAA,uBAAuB,GAAG,EAAE,CAAC,CAAC,KAAK;AAEhD,yDAAyD;AAC5C,QAAA,+BAA+B,GAAG,IAAI,CAAC;AAEpD,kFAAkF;AACrE,QAAA,6BAA6B,GAAG,IAAI,CAAC;AAElD,gFAAgF;AAChF,6DAA6D;AAChD,QAAA,mBAAmB,GAAG,GAAG,CAAC,CAAC,MAAM;AAE9C,qEAAqE;AACxD,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAEvC,yFAAyF;AAC5E,QAAA,gCAAgC,GAAG,IAAI,CAAC,CAAC,uBAAuB;AAE7E,6EAA6E;AAChE,QAAA,0BAA0B,GAAG,GAAG,CAAC,CAAC,KAAK;AACvC,QAAA,uCAAuC,GAAG,GAAG,CAAC,CAAC,MAAM;AAElE,4EAA4E;AAC/D,QAAA,2BAA2B,GAAG,GAAG,CAAC,CAAC,KAAK;AACxC,QAAA,wCAAwC,GAAG,IAAI,CAAC,CAAC,MAAM;AAEpE,0FAA0F;AAC7E,QAAA,0BAA0B,GAAG,KAAK,CAAC;AACnC,QAAA,2BAA2B,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"rc.constant.js","sourceRoot":"","sources":["../../../src/core/constants/rc.constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,kCAAkC,GAAG,GAAG,CAAC;AACzC,QAAA,wBAAwB,GAAG,KAAK,CAAC;AAE9C,qGAAqG;AACxF,QAAA,kBAAkB,GAAG,EAAE,CAAC,CAAC,6BAA6B;AACtD,QAAA,wBAAwB,GAAG,EAAE,CAAC,CAAC,KAAK;AACpC,QAAA,0BAA0B,GAAG,EAAE,CAAC,CAAC,iCAAiC;AAE/E,wEAAwE;AAC3D,QAAA,qBAAqB,GAAG,EAAE,CAAC,CAAC,KAAK;AACjC,QAAA,wBAAwB,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,uDAAuD;AAC1C,QAAA,uBAAuB,GAAG,EAAE,CAAC,CAAC,KAAK;AAEhD,yDAAyD;AAC5C,QAAA,+BAA+B,GAAG,IAAI,CAAC;AAEpD,kFAAkF;AACrE,QAAA,6BAA6B,GAAG,IAAI,CAAC;AAElD,gFAAgF;AAChF,6DAA6D;AAChD,QAAA,mBAAmB,GAAG,GAAG,CAAC,CAAC,MAAM;AAE9C,qEAAqE;AACxD,QAAA,kBAAkB,GAAG,IAAI,CAAC;AAEvC,yFAAyF;AAC5E,QAAA,gCAAgC,GAAG,IAAI,CAAC,CAAC,uBAAuB;AAE7E,6EAA6E;AAChE,QAAA,0BAA0B,GAAG,GAAG,CAAC,CAAC,KAAK;AACvC,QAAA,uCAAuC,GAAG,GAAG,CAAC,CAAC,MAAM;AAElE,4EAA4E;AAC/D,QAAA,2BAA2B,GAAG,GAAG,CAAC,CAAC,KAAK;AACxC,QAAA,wCAAwC,GAAG,IAAI,CAAC,CAAC,MAAM;AAEpE,0FAA0F;AAC7E,QAAA,0BAA0B,GAAG,KAAK,CAAC;AACnC,QAAA,2BAA2B,GAAG,IAAI,CAAC;AAEhD,+EAA+E;AAClE,QAAA,sCAAsC,GAAG,IAAI,CAAC;AAE3D,iDAAiD;AACpC,QAAA,8BAA8B,GAAG,GAAG,CAAC;AAElD,qEAAqE;AACxD,QAAA,sBAAsB,GAAG,GAAG,CAAC;AAC7B,QAAA,eAAe,GAAG,GAAG,CAAC,CAAC,MAAM;AAE1C,8EAA8E;AACjE,QAAA,kCAAkC,GAAG,CAAC,CAAC;AAEpD,8EAA8E;AAC9E,gFAAgF;AACnE,QAAA,sBAAsB,GAAG,GAAG,CAAC,CAAC,KAAK"}
@@ -32,5 +32,22 @@ exports.Errors = {
32
32
  code: 105,
33
33
  message: "Vs exceeds 0.66*sqrt(fc')*bw*d (ACI318-19, 22.5.1.2); section is too small for shear, increase bw or d.",
34
34
  },
35
+ // 2XX : Strengthening / plate-to-concrete connection errors
36
+ NON_POSITIVE_SHEAR_FLOW: {
37
+ code: 201,
38
+ message: "Interface shear flow requires a positive shear force V and at least one jacketing plate with non-zero area.",
39
+ },
40
+ INVALID_BOLT_CAPACITY: {
41
+ code: 202,
42
+ message: "Resolved bolt shear capacity is not positive; check Ase, futa, or the supplied phiVboltOverride.",
43
+ },
44
+ PLATE_OUTSIDE_SECTION: {
45
+ code: 203,
46
+ message: "Inconsistent jacketed section geometry; plate and section dimensions must be positive and d must lie within h.",
47
+ },
48
+ CRACKED_NA_NOT_FOUND: {
49
+ code: 204,
50
+ message: "No valid cracked neutral axis was found within the concrete depth; check the section and plate properties.",
51
+ },
35
52
  };
36
53
  //# sourceMappingURL=rc-design.error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rc-design.error.js","sourceRoot":"","sources":["../../../src/core/errors/rc-design.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAc,SAAQ,KAAK;IAItC,YAAY,MAAyB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE;QACxE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACF;AAVD,sCAUC;AAOY,QAAA,MAAM,GAAsC;IACvD,8BAA8B;IAC9B,2BAA2B,EAAE;QAC3B,IAAI,EAAE,GAAG;QACT,OAAO,EACL,sFAAsF;KACzF;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,kEAAkE;KAC5E;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EACL,4GAA4G;KAC/G;IACD,iCAAiC,EAAE;QACjC,IAAI,EAAE,GAAG;QACT,OAAO,EACL,mEAAmE;KACtE;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EACL,yGAAyG;KAC5G;CACF,CAAC"}
1
+ {"version":3,"file":"rc-design.error.js","sourceRoot":"","sources":["../../../src/core/errors/rc-design.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,aAAc,SAAQ,KAAK;IAItC,YAAY,MAAyB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE;QACxE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;CACF;AAVD,sCAUC;AAOY,QAAA,MAAM,GAAsC;IACvD,8BAA8B;IAC9B,2BAA2B,EAAE;QAC3B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,sFAAsF;KAChG;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,kEAAkE;KAC5E;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EACL,4GAA4G;KAC/G;IACD,iCAAiC,EAAE;QACjC,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,mEAAmE;KAC7E;IACD,0BAA0B,EAAE;QAC1B,IAAI,EAAE,GAAG;QACT,OAAO,EACL,yGAAyG;KAC5G;IAED,4DAA4D;IAC5D,uBAAuB,EAAE;QACvB,IAAI,EAAE,GAAG;QACT,OAAO,EACL,6GAA6G;KAChH;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,GAAG;QACT,OAAO,EACL,kGAAkG;KACrG;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,GAAG;QACT,OAAO,EACL,gHAAgH;KACnH;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,GAAG;QACT,OAAO,EACL,4GAA4G;KAC/G;CACF,CAAC"}
@@ -1,7 +1,8 @@
1
1
  export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, RectShearSection, StirrupShearSection, ShearReinforcementCheckInput, RebarGroupInput, RectBeamBarLayoutInput, } from "./types/rc-beam.type";
2
2
  export { isSinglyReinforced } from "./types/rc-beam.type";
3
- export type { SteelJacketedProps } from "./types/plate-jacketing.type";
3
+ export type { SteelJacketedProps, SectionState, PlateShearFlowInput, BoltProps, PlateInterfaceBoltInput, } from "./types/plate-jacketing.type";
4
+ export { hasTopPlate, hasBottomPlate } from "./types/plate-jacketing.type";
4
5
  export type { Warnings, calculationResult } from "./types/output-message.type";
5
6
  export type { unit } from "./types/unit.type";
6
- export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, } from "./constants/rc.constant";
7
+ export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR, MAX_PLATE_BOLT_SPACING, } from "./constants/rc.constant";
7
8
  export { RCDesignError, Errors } from "./errors/rc-design.error";
@@ -1,13 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Errors = exports.RCDesignError = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.isSinglyReinforced = void 0;
3
+ exports.Errors = exports.RCDesignError = exports.MAX_PLATE_BOLT_SPACING = exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.hasBottomPlate = exports.hasTopPlate = exports.isSinglyReinforced = void 0;
4
4
  var rc_beam_type_1 = require("./types/rc-beam.type");
5
5
  Object.defineProperty(exports, "isSinglyReinforced", { enumerable: true, get: function () { return rc_beam_type_1.isSinglyReinforced; } });
6
+ var plate_jacketing_type_1 = require("./types/plate-jacketing.type");
7
+ Object.defineProperty(exports, "hasTopPlate", { enumerable: true, get: function () { return plate_jacketing_type_1.hasTopPlate; } });
8
+ Object.defineProperty(exports, "hasBottomPlate", { enumerable: true, get: function () { return plate_jacketing_type_1.hasBottomPlate; } });
6
9
  // Constants
7
10
  var rc_constant_1 = require("./constants/rc.constant");
8
11
  Object.defineProperty(exports, "FLEXURAL_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return rc_constant_1.FLEXURAL_STRENGTH_REDUCTION_FACTOR; } });
9
12
  Object.defineProperty(exports, "CONCRETE_ULTIMATE_STRAIN", { enumerable: true, get: function () { return rc_constant_1.CONCRETE_ULTIMATE_STRAIN; } });
10
13
  Object.defineProperty(exports, "SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return rc_constant_1.SHEAR_STRENGTH_REDUCTION_FACTOR; } });
14
+ Object.defineProperty(exports, "ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return rc_constant_1.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR; } });
15
+ Object.defineProperty(exports, "MAX_PLATE_BOLT_SPACING", { enumerable: true, get: function () { return rc_constant_1.MAX_PLATE_BOLT_SPACING; } });
11
16
  // Errors
12
17
  var rc_design_error_1 = require("./errors/rc-design.error");
13
18
  Object.defineProperty(exports, "RCDesignError", { enumerable: true, get: function () { return rc_design_error_1.RCDesignError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAWA,qDAA0D;AAAjD,kHAAA,kBAAkB,OAAA;AAK3B,YAAY;AACZ,uDAIiC;AAH7B,iIAAA,kCAAkC,OAAA;AAClC,uHAAA,wBAAwB,OAAA;AACxB,8HAAA,+BAA+B,OAAA;AAGnC,SAAS;AACT,4DAAiE;AAAxD,gHAAA,aAAa,OAAA;AAAE,yGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAWA,qDAA0D;AAAjD,kHAAA,kBAAkB,OAAA;AAQ3B,qEAA2E;AAAlE,mHAAA,WAAW,OAAA;AAAE,sHAAA,cAAc,OAAA;AAIpC,YAAY;AACZ,uDAMiC;AAL/B,iIAAA,kCAAkC,OAAA;AAClC,uHAAA,wBAAwB,OAAA;AACxB,8HAAA,+BAA+B,OAAA;AAC/B,qIAAA,sCAAsC,OAAA;AACtC,qHAAA,sBAAsB,OAAA;AAGxB,SAAS;AACT,4DAAiE;AAAxD,gHAAA,aAAa,OAAA;AAAE,yGAAA,MAAM,OAAA"}
@@ -1,8 +1,35 @@
1
+ import { RectBeamSection } from "./rc-beam.type";
1
2
  export interface SteelJacketedProps {
2
3
  Es: number;
3
4
  fy: number;
4
- topSteelWidth: number;
5
- topSteelThickness: number;
6
- bottomSteelWidth: number;
7
- bottomSteelThickness: number;
5
+ topSteelWidth?: number;
6
+ topSteelThickness?: number;
7
+ bottomSteelWidth?: number;
8
+ bottomSteelThickness?: number;
9
+ }
10
+ /**
11
+ * A plate counts as present only when both its width and thickness are positive,
12
+ * so a bottom-only jacket may omit the top plate fields or pass them as zero.
13
+ */
14
+ export declare function hasTopPlate(props: SteelJacketedProps): boolean;
15
+ export declare function hasBottomPlate(props: SteelJacketedProps): boolean;
16
+ export type SectionState = "cracked" | "uncracked";
17
+ export interface PlateShearFlowInput {
18
+ section: RectBeamSection;
19
+ plates: SteelJacketedProps;
20
+ V: number;
21
+ sectionState?: SectionState;
22
+ }
23
+ export interface BoltProps {
24
+ Ase: number;
25
+ futa: number;
26
+ fya?: number;
27
+ diameter?: number;
28
+ shearPlanes?: number;
29
+ phiVboltOverride?: number;
30
+ }
31
+ export interface PlateInterfaceBoltInput extends PlateShearFlowInput {
32
+ bolt: BoltProps;
33
+ boltsPerRow: number;
34
+ transferLength: number;
8
35
  }
@@ -1,3 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasTopPlate = hasTopPlate;
4
+ exports.hasBottomPlate = hasBottomPlate;
5
+ /**
6
+ * A plate counts as present only when both its width and thickness are positive,
7
+ * so a bottom-only jacket may omit the top plate fields or pass them as zero.
8
+ */
9
+ function hasTopPlate(props) {
10
+ return (props.topSteelWidth ?? 0) > 0 && (props.topSteelThickness ?? 0) > 0;
11
+ }
12
+ function hasBottomPlate(props) {
13
+ return (props.bottomSteelWidth ?? 0) > 0 && (props.bottomSteelThickness ?? 0) > 0;
14
+ }
3
15
  //# sourceMappingURL=plate-jacketing.type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plate-jacketing.type.js","sourceRoot":"","sources":["../../../src/core/types/plate-jacketing.type.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"plate-jacketing.type.js","sourceRoot":"","sources":["../../../src/core/types/plate-jacketing.type.ts"],"names":[],"mappings":";;AAeA,kCAEC;AAED,wCAEC;AAVD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAyB;IACnD,OAAO,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,cAAc,CAAC,KAAyB;IACtD,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACpF,CAAC"}
@@ -2,9 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isSinglyReinforced = isSinglyReinforced;
4
4
  function isSinglyReinforced(section) {
5
- return (!("As_" in section) ||
6
- !("d_" in section) ||
7
- section.As_ <= 0 ||
8
- section.d_ <= 0);
5
+ return !("As_" in section) || !("d_" in section) || section.As_ <= 0 || section.d_ <= 0;
9
6
  }
10
7
  //# sourceMappingURL=rc-beam.type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rc-beam.type.js","sourceRoot":"","sources":["../../../src/core/types/rc-beam.type.ts"],"names":[],"mappings":";;AAoDA,gDASC;AATD,SAAgB,kBAAkB,CAChC,OAAwB;IAExB,OAAO,CACL,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC;QACnB,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC;QAChB,OAAO,CAAC,EAAE,IAAI,CAAC,CAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rc-beam.type.js","sourceRoot":"","sources":["../../../src/core/types/rc-beam.type.ts"],"names":[],"mappings":";;AAoDA,gDAEC;AAFD,SAAgB,kBAAkB,CAAC,OAAwB;IACzD,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1F,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { rectBeamMomentCapacity, rectBeamBarLayout, concreteBeta, concreteElasticModulus, psiToMpa, } from "./rc";
2
- export { calculateSteelJacketedBeamMomentCapacity } from "./strengthening";
3
- export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, RebarGroupInput, RectBeamBarLayoutInput, SteelJacketedProps, Warnings, calculationResult, unit, } from "./core";
4
- export { isSinglyReinforced, FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, RCDesignError, Errors, } from "./core";
1
+ export { rectBeamMomentCapacity, rectBeamBarLayout, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, concreteBeta, concreteElasticModulus, psiToMpa, } from "./rc";
2
+ export { calculateSteelJacketedBeamMomentCapacity, plateInterfaceShearFlow, boltShearCapacity, plateInterfaceBoltRequirement, } from "./strengthening";
3
+ export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, RectShearSection, StirrupShearSection, ShearReinforcementCheckInput, RebarGroupInput, RectBeamBarLayoutInput, SteelJacketedProps, SectionState, PlateShearFlowInput, BoltProps, PlateInterfaceBoltInput, Warnings, calculationResult, unit, } from "./core";
4
+ export { isSinglyReinforced, hasTopPlate, hasBottomPlate, FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR, MAX_PLATE_BOLT_SPACING, RCDesignError, Errors, } from "./core";
5
5
  export { solveQuadratic, roundToDecimalPlaces, mergeWarnings } from "./utils";
package/dist/index.js CHANGED
@@ -1,20 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeWarnings = exports.roundToDecimalPlaces = exports.solveQuadratic = exports.Errors = exports.RCDesignError = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.isSinglyReinforced = exports.calculateSteelJacketedBeamMomentCapacity = exports.psiToMpa = exports.concreteElasticModulus = exports.concreteBeta = exports.rectBeamBarLayout = exports.rectBeamMomentCapacity = void 0;
3
+ exports.mergeWarnings = exports.roundToDecimalPlaces = exports.solveQuadratic = exports.Errors = exports.RCDesignError = exports.MAX_PLATE_BOLT_SPACING = exports.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.hasBottomPlate = exports.hasTopPlate = exports.isSinglyReinforced = exports.plateInterfaceBoltRequirement = exports.boltShearCapacity = exports.plateInterfaceShearFlow = exports.calculateSteelJacketedBeamMomentCapacity = exports.psiToMpa = exports.concreteElasticModulus = exports.concreteBeta = exports.checkStirrupRequirement = exports.stirrupShearCapacity = exports.concreteShearCapacity = exports.rectBeamBarLayout = exports.rectBeamMomentCapacity = void 0;
4
4
  // RC Beam Design
5
5
  var rc_1 = require("./rc");
6
6
  Object.defineProperty(exports, "rectBeamMomentCapacity", { enumerable: true, get: function () { return rc_1.rectBeamMomentCapacity; } });
7
7
  Object.defineProperty(exports, "rectBeamBarLayout", { enumerable: true, get: function () { return rc_1.rectBeamBarLayout; } });
8
+ Object.defineProperty(exports, "concreteShearCapacity", { enumerable: true, get: function () { return rc_1.concreteShearCapacity; } });
9
+ Object.defineProperty(exports, "stirrupShearCapacity", { enumerable: true, get: function () { return rc_1.stirrupShearCapacity; } });
10
+ Object.defineProperty(exports, "checkStirrupRequirement", { enumerable: true, get: function () { return rc_1.checkStirrupRequirement; } });
8
11
  Object.defineProperty(exports, "concreteBeta", { enumerable: true, get: function () { return rc_1.concreteBeta; } });
9
12
  Object.defineProperty(exports, "concreteElasticModulus", { enumerable: true, get: function () { return rc_1.concreteElasticModulus; } });
10
13
  Object.defineProperty(exports, "psiToMpa", { enumerable: true, get: function () { return rc_1.psiToMpa; } });
11
14
  // Strengthening
12
15
  var strengthening_1 = require("./strengthening");
13
16
  Object.defineProperty(exports, "calculateSteelJacketedBeamMomentCapacity", { enumerable: true, get: function () { return strengthening_1.calculateSteelJacketedBeamMomentCapacity; } });
17
+ Object.defineProperty(exports, "plateInterfaceShearFlow", { enumerable: true, get: function () { return strengthening_1.plateInterfaceShearFlow; } });
18
+ Object.defineProperty(exports, "boltShearCapacity", { enumerable: true, get: function () { return strengthening_1.boltShearCapacity; } });
19
+ Object.defineProperty(exports, "plateInterfaceBoltRequirement", { enumerable: true, get: function () { return strengthening_1.plateInterfaceBoltRequirement; } });
14
20
  var core_1 = require("./core");
15
21
  Object.defineProperty(exports, "isSinglyReinforced", { enumerable: true, get: function () { return core_1.isSinglyReinforced; } });
22
+ Object.defineProperty(exports, "hasTopPlate", { enumerable: true, get: function () { return core_1.hasTopPlate; } });
23
+ Object.defineProperty(exports, "hasBottomPlate", { enumerable: true, get: function () { return core_1.hasBottomPlate; } });
16
24
  Object.defineProperty(exports, "FLEXURAL_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.FLEXURAL_STRENGTH_REDUCTION_FACTOR; } });
17
25
  Object.defineProperty(exports, "CONCRETE_ULTIMATE_STRAIN", { enumerable: true, get: function () { return core_1.CONCRETE_ULTIMATE_STRAIN; } });
26
+ Object.defineProperty(exports, "SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.SHEAR_STRENGTH_REDUCTION_FACTOR; } });
27
+ Object.defineProperty(exports, "ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR; } });
28
+ Object.defineProperty(exports, "MAX_PLATE_BOLT_SPACING", { enumerable: true, get: function () { return core_1.MAX_PLATE_BOLT_SPACING; } });
18
29
  Object.defineProperty(exports, "RCDesignError", { enumerable: true, get: function () { return core_1.RCDesignError; } });
19
30
  Object.defineProperty(exports, "Errors", { enumerable: true, get: function () { return core_1.Errors; } });
20
31
  // Utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,2BAMc;AALZ,4GAAA,sBAAsB,OAAA;AACtB,uGAAA,iBAAiB,OAAA;AACjB,kGAAA,YAAY,OAAA;AACZ,4GAAA,sBAAsB,OAAA;AACtB,8FAAA,QAAQ,OAAA;AAGV,gBAAgB;AAChB,iDAA2E;AAAlE,yIAAA,wCAAwC,OAAA;AAejD,+BAMgB;AALd,0GAAA,kBAAkB,OAAA;AAClB,0HAAA,kCAAkC,OAAA;AAClC,gHAAA,wBAAwB,OAAA;AACxB,qGAAA,aAAa,OAAA;AACb,8FAAA,MAAM,OAAA;AAGR,YAAY;AACZ,iCAA8E;AAArE,uGAAA,cAAc,OAAA;AAAE,6GAAA,oBAAoB,OAAA;AAAE,sGAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,2BASc;AARZ,4GAAA,sBAAsB,OAAA;AACtB,uGAAA,iBAAiB,OAAA;AACjB,2GAAA,qBAAqB,OAAA;AACrB,0GAAA,oBAAoB,OAAA;AACpB,6GAAA,uBAAuB,OAAA;AACvB,kGAAA,YAAY,OAAA;AACZ,4GAAA,sBAAsB,OAAA;AACtB,8FAAA,QAAQ,OAAA;AAGV,gBAAgB;AAChB,iDAKyB;AAJvB,yIAAA,wCAAwC,OAAA;AACxC,wHAAA,uBAAuB,OAAA;AACvB,kHAAA,iBAAiB,OAAA;AACjB,8HAAA,6BAA6B,OAAA;AAuB/B,+BAWgB;AAVd,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AACX,sGAAA,cAAc,OAAA;AACd,0HAAA,kCAAkC,OAAA;AAClC,gHAAA,wBAAwB,OAAA;AACxB,uHAAA,+BAA+B,OAAA;AAC/B,8HAAA,sCAAsC,OAAA;AACtC,8GAAA,sBAAsB,OAAA;AACtB,qGAAA,aAAa,OAAA;AACb,8FAAA,MAAM,OAAA;AAGR,YAAY;AACZ,iCAA8E;AAArE,uGAAA,cAAc,OAAA;AAAE,6GAAA,oBAAoB,OAAA;AAAE,sGAAA,aAAa,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rc/index.ts"],"names":[],"mappings":";;;AAAA,mDAK0B;AAJtB,wHAAA,sBAAsB,OAAA;AACtB,uHAAA,qBAAqB,OAAA;AACrB,sHAAA,oBAAoB,OAAA;AACpB,yHAAA,uBAAuB,OAAA;AAE3B,qCAA2E;AAAlE,uGAAA,YAAY,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,mGAAA,QAAQ,OAAA;AACvD,iDAAoD;AAA3C,kHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rc/index.ts"],"names":[],"mappings":";;;AAAA,mDAK0B;AAJxB,wHAAA,sBAAsB,OAAA;AACtB,uHAAA,qBAAqB,OAAA;AACrB,sHAAA,oBAAoB,OAAA;AACpB,yHAAA,uBAAuB,OAAA;AAEzB,qCAA2E;AAAlE,uGAAA,YAAY,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAAE,mGAAA,QAAQ,OAAA;AACvD,iDAAoD;AAA3C,kHAAA,iBAAiB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"rc-bar-layout.js","sourceRoot":"","sources":["../../src/rc/rc-bar-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rc-bar-layout.js","sourceRoot":"","sources":["../../src/rc/rc-bar-layout.ts"],"names":[],"mappings":"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"}
@@ -132,11 +132,7 @@ const concreteShearCapacity = (section) => {
132
132
  });
133
133
  }
134
134
  const cappedSqrtFc = Math.min(sqrtFc, RCConstants.SQRT_FC_SHEAR_LIMIT);
135
- const Vc = RCConstants.CONCRETE_SHEAR_VC_COEFFICIENT *
136
- lambda *
137
- cappedSqrtFc *
138
- section.bw *
139
- section.d; // N
135
+ const Vc = RCConstants.CONCRETE_SHEAR_VC_COEFFICIENT * lambda * cappedSqrtFc * section.bw * section.d; // N
140
136
  return {
141
137
  phiVc: MyMath.roundToDecimalPlaces(RCConstants.SHEAR_STRENGTH_REDUCTION_FACTOR * Vc * 0.001, 2),
142
138
  calculationDetails: {
@@ -217,14 +213,13 @@ const checkStirrupRequirement = (input) => {
217
213
  }
218
214
  else {
219
215
  const requiredVs = Vu / RCConstants.SHEAR_STRENGTH_REDUCTION_FACTOR - Vc; // kN
220
- const maxVs = (RCConstants.MAX_VS_COEFFICIENT * sqrtFc * bw * d) * 0.001; // kN
216
+ const maxVs = RCConstants.MAX_VS_COEFFICIENT * sqrtFc * bw * d * 0.001; // kN
221
217
  if (requiredVs > maxVs) {
222
218
  throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.SHEAR_STRENGTH_EXCEEDS_MAX);
223
219
  }
224
220
  const strengthAvOverS = (requiredVs * 1000) / (fyt * d); // mm^2/mm
225
221
  requiredAvOverS = Math.max(minAvOverS, strengthAvOverS);
226
- const vsThreshold = (RCConstants.VS_SPACING_THRESHOLD_COEFFICIENT * sqrtFc * bw * d) *
227
- 0.001; // kN
222
+ const vsThreshold = RCConstants.VS_SPACING_THRESHOLD_COEFFICIENT * sqrtFc * bw * d * 0.001; // kN
228
223
  maxSpacing =
229
224
  requiredVs <= vsThreshold
230
225
  ? Math.min(RCConstants.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR * d, RCConstants.MAX_STIRRUP_SPACING_LOW_VS)
@@ -269,8 +264,7 @@ const calculateRectSinglyMn = (singlySection) => {
269
264
  const a = Ac / b;
270
265
  const c = a / beta1;
271
266
  const tensileSteelStrain = (RCConstants.CONCRETE_ULTIMATE_STRAIN * (d - c)) / c;
272
- if (tensileSteelStrain <
273
- steelYieldStrain + RCConstants.CONCRETE_ULTIMATE_STRAIN) {
267
+ if (tensileSteelStrain < steelYieldStrain + RCConstants.CONCRETE_ULTIMATE_STRAIN) {
274
268
  throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.TENSILE_STEEL_NOT_YIELDING);
275
269
  }
276
270
  const y_ = a / 2;
@@ -297,8 +291,7 @@ const calculateRectDoublyMn = (doublySection) => {
297
291
  const a = c * beta1;
298
292
  const tensileSteelStrain = (RCConstants.CONCRETE_ULTIMATE_STRAIN * (d - c)) / c;
299
293
  const compressionSteelStrain = (RCConstants.CONCRETE_ULTIMATE_STRAIN * (c - d_)) / c;
300
- if (tensileSteelStrain <
301
- steelYieldStrain + RCConstants.CONCRETE_ULTIMATE_STRAIN) {
294
+ if (tensileSteelStrain < steelYieldStrain + RCConstants.CONCRETE_ULTIMATE_STRAIN) {
302
295
  throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.TENSILE_STEEL_NOT_YIELDING);
303
296
  }
304
297
  if (d_ > c) {
@@ -1 +1 @@
1
- {"version":3,"file":"rc-beam-design.js","sourceRoot":"","sources":["../../src/rc/rc-beam-design.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,sEAAyE;AACzE,wDAA0C;AAE1C,+DAQsC;AAOtC,6EAA+D;AAE/D,uCAAiE;AAEjE;;;;;;;;;GASG;AACI,MAAM,sBAAsB,GAAG,CAAC,OAAwB,EAAE,EAAE;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,sBAAsB,GAAG,WAAW,CAAC,wBAAwB,CAAC;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAA,gCAAsB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,EACpE,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,CAC3C,CAAC;IAEF,IAAI,OAAO,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC1B,wEAAwE;QACxE,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,OAAO,OAAO,CAAC,EAAE,yBAAyB,QAAQ,OAAO;SACnE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QACrB,wEAAwE;QACxE,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,OAAO,OAAO,CAAC,EAAE,sDAAsD;SACjF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAU,CAAC;IACf,IAAI,kBAAuB,CAAC;IAC5B,IAAI,IAAA,iCAAkB,EAAC,OAAO,CAAC,EAAE,CAAC;QAChC,4BAA4B;QAC5B,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;YACZ,CAAC,EAAE,OAAO,CAAC,CAAC;SACb,CAAC,CAAC;QACH,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACf,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,aAAa,GAAG,OAAgC,CAAC;QACvD,MAAM,MAAM,GAAG,qBAAqB,CAAC;YACnC,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,CAAC,EAAE,aAAa,CAAC,CAAC;YAClB,EAAE,EAAE,aAAa,CAAC,EAAE;SACrB,CAAC,CAAC;QACH,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACf,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,qBAAqB;IACrB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAChC,WAAW,CAAC,kCAAkC,GAAG,EAAE,EACnD,CAAC,CACF;QACD,kBAAkB,EAAE,kBAAkB;QACtC,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC,CAAC;AAxEW,QAAA,sBAAsB,0BAwEjC;AAEF;;;;;;GAMG;AACI,MAAM,qBAAqB,GAAG,CAAC,OAAyB,EAAE,EAAE;IACjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,MAAM,GAAG,WAAW,CAAC,mBAAmB,EAAE,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,qBAAqB;YAChC,OAAO,EAAE,cAAc,MAAM,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,WAAW,CAAC,mBAAmB,gCAAgC,WAAW,CAAC,mBAAmB,kEAAkE;SACrO,CAAC,CAAC;IACL,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEvE,MAAM,EAAE,GACN,WAAW,CAAC,6BAA6B;QACzC,MAAM;QACN,YAAY;QACZ,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;IAEjB,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAChC,WAAW,CAAC,+BAA+B,GAAG,EAAE,GAAG,KAAK,EACxD,CAAC,CACF;QACD,kBAAkB,EAAE;YAClB,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC9C,MAAM;SACP;QACD,IAAI,EAAE,IAAI;QACV,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAhCW,QAAA,qBAAqB,yBAgChC;AAEF;;;;;;;GAOG;AACI,MAAM,oBAAoB,GAAG,CAAC,OAA4B,EAAE,EAAE;IACnE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC;IAE3C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;IACnC,MAAM,KAAK,GAAG,WAAW,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI;IAE5E,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,+BAAa,CAAC,wBAAM,CAAC,0BAA0B,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAChC,WAAW,CAAC,+BAA+B,GAAG,EAAE,GAAG,KAAK,EACxD,CAAC,CACF;QACD,kBAAkB,EAAE;YAClB,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAC9C,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC;SACrD;QACD,IAAI,EAAE,IAAI;QACV,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAvBW,QAAA,oBAAoB,wBAuB/B;AAEF;;;;;;;;;;;GAWG;AACI,MAAM,uBAAuB,GAAG,CACrC,KAAmC,EACnC,EAAE;IACF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC;IAE7C,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAA,6BAAqB,EAAC;QAC1D,GAAG;QACH,EAAE;QACF,CAAC;QACD,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,CAAC,KAAK;IAEvC,MAAM,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC;IAE9B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,eAAe,GAAG,CAAC,CAAC,CAAC,UAAU;IACnC,IAAI,UAAU,GAAkB,IAAI,CAAC;IAErC,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;QACnB,QAAQ,GAAG,IAAI,CAAC;QAEhB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,CAAC,WAAW,CAAC,0BAA0B,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,GAAG,EAC5D,CAAC,WAAW,CAAC,2BAA2B,GAAG,EAAE,CAAC,GAAG,GAAG,CACrD,CAAC;QAEF,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YAChB,WAAW,GAAG,IAAI,CAAC;YACnB,eAAe,GAAG,UAAU,CAAC;YAC7B,UAAU;gBACR,WAAW,CAAC,uCAAuC,GAAG,CAAC;oBACvD,WAAW,CAAC,0BAA0B;oBACpC,CAAC,CAAC,WAAW,CAAC,uCAAuC,GAAG,CAAC;oBACzD,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GACd,EAAE,GAAG,WAAW,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC,KAAK;YAC9D,MAAM,KAAK,GACT,CAAC,WAAW,CAAC,kBAAkB,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK;YAEnE,IAAI,UAAU,GAAG,KAAK,EAAE,CAAC;gBACvB,MAAM,IAAI,+BAAa,CAAC,wBAAM,CAAC,0BAA0B,CAAC,CAAC;YAC7D,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU;YACnE,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YAExD,MAAM,WAAW,GACf,CAAC,WAAW,CAAC,gCAAgC,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;gBAChE,KAAK,CAAC,CAAC,KAAK;YACd,UAAU;gBACR,UAAU,IAAI,WAAW;oBACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,WAAW,CAAC,uCAAuC,GAAG,CAAC,EACvD,WAAW,CAAC,0BAA0B,CACvC;oBACH,CAAC,CAAC,IAAI,CAAC,GAAG,CACN,WAAW,CAAC,wCAAwC,GAAG,CAAC,EACxD,WAAW,CAAC,2BAA2B,CACxC,CAAC;QACV,CAAC;QAED,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACxC,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,eAAe,GAAG,eAAe,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,SAAS,EAAE,oBAAoB;oBAC/B,OAAO,EAAE,kBAAkB,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC,6BAA6B,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC,WAAW;iBAClK,CAAC,CAAC;YACL,CAAC;YACD,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC;gBAC1C,QAAQ,CAAC,IAAI,CAAC;oBACZ,SAAS,EAAE,sBAAsB;oBACjC,OAAO,EAAE,uBAAuB,CAAC,+BAA+B,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO;iBAClH,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW;QACX,kBAAkB,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC;YACpD,eAAe,EAAE,MAAM,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC;YAChE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,EAAE,CAAC,CAAC;SACpF;QACD,IAAI,EAAE,IAAI;QACV,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AA/FW,QAAA,uBAAuB,2BA+FlC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,aAAoC,EACjB,EAAE;IACrB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,aAAa,CAAC;IAEnD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC;IAChC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACpB,MAAM,kBAAkB,GAAG,CAAC,WAAW,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhF,IACE,kBAAkB;QAClB,gBAAgB,GAAG,WAAW,CAAC,wBAAwB,EACvD,CAAC;QACD,MAAM,IAAI,+BAAa,CAAC,wBAAM,CAAC,0BAA0B,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO;QACL,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,kBAAkB;QAC1D,kBAAkB,EAAE;YAClB,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;SACjB;QACD,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,aAAoC,EACjB,EAAE;IACrB,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;IAC5D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAA,sBAAY,EAAC,GAAG,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;IACjC,MAAM,CAAC,GAAG,WAAW,CAAC,wBAAwB,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,wBAAwB,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IAEhE,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,8BAA8B;IAClE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAEpB,MAAM,kBAAkB,GAAG,CAAC,WAAW,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChF,MAAM,sBAAsB,GAC1B,CAAC,WAAW,CAAC,wBAAwB,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAExD,IACE,kBAAkB;QAClB,gBAAgB,GAAG,WAAW,CAAC,wBAAwB,EACvD,CAAC;QACD,MAAM,IAAI,+BAAa,CAAC,wBAAM,CAAC,0BAA0B,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,+BAAa,CAAC,wBAAM,CAAC,2BAA2B,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,EAAE,GAAG,sBAAsB,CAAC;IAExC,OAAO;QACL,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,EAAE,kBAAkB;QAC3F,kBAAkB,EAAE;YAClB,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC,EAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,KAAK,EAAE,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,CAAC,EAAE,CAAC;YACJ,EAAE,EAAE,EAAE;YACN,EAAE,EAAE,EAAE;YACN,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC;YACxC,EAAE,EAAE,MAAM,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iCAAiC;SAC7F;QACD,QAAQ,EAAE,QAAQ;KACnB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"rc-beam-design.js","sourceRoot":"","sources":["../../src/rc/rc-beam-design.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export { calculateSteelJacketedBeamMomentCapacity } from "./rc-beam-steel-plate-jacketing";
2
+ export { plateInterfaceShearFlow, boltShearCapacity, plateInterfaceBoltRequirement, } from "./rc-beam-plate-interface-bolts";
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateSteelJacketedBeamMomentCapacity = void 0;
3
+ exports.plateInterfaceBoltRequirement = exports.boltShearCapacity = exports.plateInterfaceShearFlow = exports.calculateSteelJacketedBeamMomentCapacity = void 0;
4
4
  var rc_beam_steel_plate_jacketing_1 = require("./rc-beam-steel-plate-jacketing");
5
5
  Object.defineProperty(exports, "calculateSteelJacketedBeamMomentCapacity", { enumerable: true, get: function () { return rc_beam_steel_plate_jacketing_1.calculateSteelJacketedBeamMomentCapacity; } });
6
+ var rc_beam_plate_interface_bolts_1 = require("./rc-beam-plate-interface-bolts");
7
+ Object.defineProperty(exports, "plateInterfaceShearFlow", { enumerable: true, get: function () { return rc_beam_plate_interface_bolts_1.plateInterfaceShearFlow; } });
8
+ Object.defineProperty(exports, "boltShearCapacity", { enumerable: true, get: function () { return rc_beam_plate_interface_bolts_1.boltShearCapacity; } });
9
+ Object.defineProperty(exports, "plateInterfaceBoltRequirement", { enumerable: true, get: function () { return rc_beam_plate_interface_bolts_1.plateInterfaceBoltRequirement; } });
6
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/strengthening/index.ts"],"names":[],"mappings":";;;AAAA,iFAA2F;AAAlF,yJAAA,wCAAwC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/strengthening/index.ts"],"names":[],"mappings":";;;AAAA,iFAA2F;AAAlF,yJAAA,wCAAwC,OAAA;AACjD,iFAIyC;AAHvC,wIAAA,uBAAuB,OAAA;AACvB,kIAAA,iBAAiB,OAAA;AACjB,8IAAA,6BAA6B,OAAA"}
@@ -0,0 +1,134 @@
1
+ import { SectionState, BoltProps, PlateShearFlowInput, PlateInterfaceBoltInput } from "../core/types/plate-jacketing.type";
2
+ import { Warnings } from "../core/types/output-message.type";
3
+ /**
4
+ * Calculates the horizontal shear flow that must be transferred across each
5
+ * concrete-to-plate interface of a steel plate jacketed beam, q = V·Q/I, using an
6
+ * elastic transformed section.
7
+ *
8
+ * `Q` at an interface is the first moment of the area beyond that cut — the plate
9
+ * itself — while `ybar` and `Itr` come from one solve that includes every plate
10
+ * present, so adding a top plate also changes the bottom interface shear flow.
11
+ *
12
+ * @param input - Section, plate properties, factored shear V (kN), and section state
13
+ * @returns Object containing per-interface `top`/`bottom` shear flow (`null` when the
14
+ * plate is absent), `calculationDetails`, `unit`, and `warnings`
15
+ * @throws {RCDesignError} If V is not positive or no plate is present (201), the
16
+ * geometry is inconsistent (203), or no cracked neutral axis exists (204)
17
+ */
18
+ export declare const plateInterfaceShearFlow: (input: PlateShearFlowInput) => {
19
+ top: {
20
+ q: number;
21
+ Q: number;
22
+ leverArm: number;
23
+ } | null;
24
+ bottom: {
25
+ q: number;
26
+ Q: number;
27
+ leverArm: number;
28
+ } | null;
29
+ calculationDetails: {
30
+ Ec: number;
31
+ ns: number;
32
+ np: number;
33
+ ybar: number;
34
+ Itr: number;
35
+ sectionState: SectionState;
36
+ };
37
+ unit: string;
38
+ warnings: Warnings;
39
+ };
40
+ /**
41
+ * Calculates the design shear strength of a single anchor bolt from the steel
42
+ * strength per ACI 318-19 17.7.1.2b, Vsa = 0.6 Ase,V futa, with φ = 0.65 from
43
+ * Table 17.5.3 and the futa cap of 17.6.1.2.
44
+ *
45
+ * Concrete breakout (17.7.2) and pryout (17.7.3) depend on edge distances, anchor
46
+ * spacing and embedment depth, and are NOT evaluated here — a warning always says so.
47
+ * Supply `phiVboltOverride` to use a manufacturer or ESR value instead.
48
+ *
49
+ * @param bolt - Anchor properties (Ase, futa, optional fya, diameter, shearPlanes, override)
50
+ * @returns Object containing `phiVbolt` (kN), `calculationDetails`, `unit`, and `warnings`
51
+ * @throws {RCDesignError} If the resolved capacity is not positive (202)
52
+ */
53
+ export declare const boltShearCapacity: (bolt: BoltProps) => {
54
+ phiVbolt: number;
55
+ calculationDetails: {
56
+ source: string;
57
+ shearPlanes: number;
58
+ Vsa?: undefined;
59
+ futaEffective?: undefined;
60
+ };
61
+ unit: string;
62
+ warnings: Warnings;
63
+ } | {
64
+ phiVbolt: number;
65
+ calculationDetails: {
66
+ source: string;
67
+ Vsa: number;
68
+ futaEffective: number;
69
+ shearPlanes: number;
70
+ };
71
+ unit: string;
72
+ warnings: Warnings;
73
+ };
74
+ /**
75
+ * Determines the bolts required to transfer horizontal shear across each
76
+ * concrete-to-plate interface of a steel plate jacketed beam.
77
+ *
78
+ * For each plate present, the required bolt pitch follows from the interface shear
79
+ * flow (s = n·φVbolt / q) and the bolt count is taken as the larger of that pitch
80
+ * over the transfer length and the count needed to develop the full plate yield
81
+ * force (Ap·fy / φVbolt). `governedBy` reports which one controls.
82
+ *
83
+ * @param input - Section, plates, V (kN), bolt properties, bolts per row, and transfer length (mm)
84
+ * @returns Object containing per-interface `top`/`bottom` results (`null` when the plate
85
+ * is absent), `calculationDetails`, `unit`, and `warnings`
86
+ * @throws {RCDesignError} If V is not positive or no plate is present (201), the bolt
87
+ * capacity is invalid (202), the geometry is inconsistent (203), or no cracked
88
+ * neutral axis exists (204)
89
+ */
90
+ export declare const plateInterfaceBoltRequirement: (input: PlateInterfaceBoltInput) => {
91
+ top: {
92
+ q: number;
93
+ Q: number;
94
+ leverArm: number;
95
+ requiredSpacing: number;
96
+ boltCount: number;
97
+ governedBy: string;
98
+ calculationDetails: {
99
+ spacingFromShearFlow: number;
100
+ rows: number;
101
+ boltCountFromShearFlow: number;
102
+ boltCountFromPlateForce: number;
103
+ plateForce: number;
104
+ };
105
+ } | null;
106
+ bottom: {
107
+ q: number;
108
+ Q: number;
109
+ leverArm: number;
110
+ requiredSpacing: number;
111
+ boltCount: number;
112
+ governedBy: string;
113
+ calculationDetails: {
114
+ spacingFromShearFlow: number;
115
+ rows: number;
116
+ boltCountFromShearFlow: number;
117
+ boltCountFromPlateForce: number;
118
+ plateForce: number;
119
+ };
120
+ } | null;
121
+ calculationDetails: {
122
+ phiVbolt: number;
123
+ boltsPerRow: number;
124
+ transferLength: number;
125
+ Ec: number;
126
+ ns: number;
127
+ np: number;
128
+ ybar: number;
129
+ Itr: number;
130
+ sectionState: SectionState;
131
+ };
132
+ unit: string;
133
+ warnings: Warnings;
134
+ };
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.plateInterfaceBoltRequirement = exports.boltShearCapacity = exports.plateInterfaceShearFlow = void 0;
37
+ const rc_design_error_1 = require("../core/errors/rc-design.error");
38
+ const MyMath = __importStar(require("../utils/math"));
39
+ const RCConstants = __importStar(require("../core/constants/rc.constant"));
40
+ const general_1 = require("../rc/general");
41
+ const rc_beam_type_1 = require("../core/types/rc-beam.type");
42
+ const plate_jacketing_type_1 = require("../core/types/plate-jacketing.type");
43
+ const resolveGeometry = (section, plates) => {
44
+ const tTop = (0, plate_jacketing_type_1.hasTopPlate)(plates) ? plates.topSteelThickness : 0;
45
+ const tBottom = (0, plate_jacketing_type_1.hasBottomPlate)(plates) ? plates.bottomSteelThickness : 0;
46
+ const ATop = (0, plate_jacketing_type_1.hasTopPlate)(plates) ? plates.topSteelWidth * tTop : 0;
47
+ const ABottom = (0, plate_jacketing_type_1.hasBottomPlate)(plates) ? plates.bottomSteelWidth * tBottom : 0;
48
+ const singly = (0, rc_beam_type_1.isSinglyReinforced)(section);
49
+ const doubly = section;
50
+ return {
51
+ tTop,
52
+ tBottom,
53
+ ATop,
54
+ ABottom,
55
+ yTop: tTop / 2,
56
+ yBottom: tTop + section.h + tBottom / 2,
57
+ yConcreteTop: tTop,
58
+ yConcreteBottom: tTop + section.h,
59
+ yTensionSteel: tTop + section.d,
60
+ yCompSteel: singly ? null : tTop + doubly.d_,
61
+ As_: singly ? 0 : doubly.As_,
62
+ };
63
+ };
64
+ const validateGeometry = (section, geo) => {
65
+ if (section.b <= 0 ||
66
+ section.h <= 0 ||
67
+ section.d <= 0 ||
68
+ section.d >= section.h ||
69
+ section.As <= 0) {
70
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.PLATE_OUTSIDE_SECTION);
71
+ }
72
+ if (geo.yCompSteel !== null && geo.yCompSteel >= geo.yTensionSteel) {
73
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.PLATE_OUTSIDE_SECTION);
74
+ }
75
+ };
76
+ /**
77
+ * Solves the cracked-section neutral axis depth (from the datum) by setting the
78
+ * first moment of the transformed areas about the neutral axis to zero.
79
+ *
80
+ * @param compSteelInCompression - Whether the compression rebar is assumed to sit
81
+ * above the neutral axis, which decides between the (n-1) and n modular ratios
82
+ */
83
+ const solveCrackedNeutralAxis = (section, geo, ns, np, compSteelInCompression) => {
84
+ const { b } = section;
85
+ const AsTr = ns * section.As;
86
+ const ATopTr = np * geo.ATop;
87
+ const ABottomTr = np * geo.ABottom;
88
+ // Compression rebar displaces concrete that is already counted in the block,
89
+ // so it is transformed with (n - 1); below the neutral axis it acts in tension
90
+ // and takes the full n.
91
+ const AsCompTr = compSteelInCompression ? (ns - 1) * geo.As_ : ns * geo.As_;
92
+ const a = b / 2;
93
+ const bq = -b * geo.yConcreteTop + ATopTr + AsCompTr + AsTr + ABottomTr;
94
+ const c = (b * geo.yConcreteTop * geo.yConcreteTop) / 2 -
95
+ ATopTr * geo.yTop -
96
+ AsCompTr * (geo.yCompSteel ?? 0) -
97
+ AsTr * geo.yTensionSteel -
98
+ ABottomTr * geo.yBottom;
99
+ const roots = MyMath.solveQuadratic(a, bq, c);
100
+ const valid = roots.filter((root) => root > geo.yConcreteTop && root < geo.yConcreteBottom);
101
+ return valid.length > 0 ? Math.max(...valid) : null;
102
+ };
103
+ /**
104
+ * Builds the transformed-section parts and the neutral axis depth for the
105
+ * requested section state.
106
+ */
107
+ const buildTransformedSection = (section, geo, ns, np, sectionState, warnings) => {
108
+ const parts = [];
109
+ if (geo.ATop > 0) {
110
+ parts.push({
111
+ A: np * geo.ATop,
112
+ y: geo.yTop,
113
+ I: (np * (geo.ATop / geo.tTop) * geo.tTop ** 3) / 12,
114
+ });
115
+ }
116
+ if (geo.ABottom > 0) {
117
+ parts.push({
118
+ A: np * geo.ABottom,
119
+ y: geo.yBottom,
120
+ I: (np * (geo.ABottom / geo.tBottom) * geo.tBottom ** 3) / 12,
121
+ });
122
+ }
123
+ let ybar;
124
+ if (sectionState === "uncracked") {
125
+ parts.push({
126
+ A: section.b * section.h,
127
+ y: geo.yConcreteTop + section.h / 2,
128
+ I: (section.b * section.h ** 3) / 12,
129
+ });
130
+ parts.push({ A: (ns - 1) * section.As, y: geo.yTensionSteel, I: 0 });
131
+ if (geo.As_ > 0 && geo.yCompSteel !== null) {
132
+ parts.push({ A: (ns - 1) * geo.As_, y: geo.yCompSteel, I: 0 });
133
+ }
134
+ const sumA = parts.reduce((acc, part) => acc + part.A, 0);
135
+ ybar = parts.reduce((acc, part) => acc + part.A * part.y, 0) / sumA;
136
+ }
137
+ else {
138
+ let compSteelInCompression = true;
139
+ let na = solveCrackedNeutralAxis(section, geo, ns, np, true);
140
+ if (na !== null && geo.yCompSteel !== null && geo.yCompSteel > na) {
141
+ // The assumed compression rebar is actually below the neutral axis; re-solve
142
+ // with it on the tension side.
143
+ compSteelInCompression = false;
144
+ na = solveCrackedNeutralAxis(section, geo, ns, np, false);
145
+ warnings.push({
146
+ reference: "ACI318-19, 22.2.2.1",
147
+ message: "Compression reinforcement lies below the cracked neutral axis; it was transformed as tension steel.",
148
+ });
149
+ }
150
+ if (na === null) {
151
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.CRACKED_NA_NOT_FOUND);
152
+ }
153
+ ybar = na;
154
+ const c = ybar - geo.yConcreteTop; // depth of the concrete compression zone
155
+ parts.push({
156
+ A: section.b * c,
157
+ y: geo.yConcreteTop + c / 2,
158
+ I: (section.b * c ** 3) / 12,
159
+ });
160
+ parts.push({ A: ns * section.As, y: geo.yTensionSteel, I: 0 });
161
+ if (geo.As_ > 0 && geo.yCompSteel !== null) {
162
+ parts.push({
163
+ A: compSteelInCompression ? (ns - 1) * geo.As_ : ns * geo.As_,
164
+ y: geo.yCompSteel,
165
+ I: 0,
166
+ });
167
+ }
168
+ }
169
+ const Itr = parts.reduce((acc, part) => acc + part.I + part.A * (part.y - ybar) ** 2, 0);
170
+ return { ybar, Itr };
171
+ };
172
+ /**
173
+ * Calculates the horizontal shear flow that must be transferred across each
174
+ * concrete-to-plate interface of a steel plate jacketed beam, q = V·Q/I, using an
175
+ * elastic transformed section.
176
+ *
177
+ * `Q` at an interface is the first moment of the area beyond that cut — the plate
178
+ * itself — while `ybar` and `Itr` come from one solve that includes every plate
179
+ * present, so adding a top plate also changes the bottom interface shear flow.
180
+ *
181
+ * @param input - Section, plate properties, factored shear V (kN), and section state
182
+ * @returns Object containing per-interface `top`/`bottom` shear flow (`null` when the
183
+ * plate is absent), `calculationDetails`, `unit`, and `warnings`
184
+ * @throws {RCDesignError} If V is not positive or no plate is present (201), the
185
+ * geometry is inconsistent (203), or no cracked neutral axis exists (204)
186
+ */
187
+ const plateInterfaceShearFlow = (input) => {
188
+ const warnings = [];
189
+ const { section, plates, V } = input;
190
+ const sectionState = input.sectionState ?? "cracked";
191
+ if (V <= 0 || (!(0, plate_jacketing_type_1.hasTopPlate)(plates) && !(0, plate_jacketing_type_1.hasBottomPlate)(plates))) {
192
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.NON_POSITIVE_SHEAR_FLOW);
193
+ }
194
+ const geo = resolveGeometry(section, plates);
195
+ validateGeometry(section, geo);
196
+ const Ec = (0, general_1.concreteElasticModulus)(section.fc_);
197
+ const ns = section.Es / Ec;
198
+ const np = plates.Es / Ec;
199
+ const { ybar, Itr } = buildTransformedSection(section, geo, ns, np, sectionState, warnings);
200
+ const VinN = V * 1000;
201
+ const interfaceAt = (A, y) => {
202
+ const Q = np * A * Math.abs(y - ybar);
203
+ return {
204
+ q: MyMath.roundToDecimalPlaces((VinN * Q) / Itr, 2),
205
+ Q: MyMath.roundToDecimalPlaces(Q, 0),
206
+ leverArm: MyMath.roundToDecimalPlaces(Math.abs(y - ybar), 2),
207
+ };
208
+ };
209
+ if (geo.ATop > 0 && geo.yTop > ybar) {
210
+ warnings.push({
211
+ reference: "ACI318-19, 22.2.2.1",
212
+ message: "Top plate centroid lies below the neutral axis; the plate is in tension, so the assumed compression-face behaviour does not apply.",
213
+ });
214
+ }
215
+ return {
216
+ top: geo.ATop > 0 ? interfaceAt(geo.ATop, geo.yTop) : null,
217
+ bottom: geo.ABottom > 0 ? interfaceAt(geo.ABottom, geo.yBottom) : null,
218
+ calculationDetails: {
219
+ Ec: MyMath.roundToDecimalPlaces(Ec, 2),
220
+ ns: MyMath.roundToDecimalPlaces(ns, 3),
221
+ np: MyMath.roundToDecimalPlaces(np, 3),
222
+ ybar: MyMath.roundToDecimalPlaces(ybar, 2),
223
+ Itr: MyMath.roundToDecimalPlaces(Itr, 0),
224
+ sectionState,
225
+ },
226
+ unit: "N/mm",
227
+ warnings,
228
+ };
229
+ };
230
+ exports.plateInterfaceShearFlow = plateInterfaceShearFlow;
231
+ /**
232
+ * Calculates the design shear strength of a single anchor bolt from the steel
233
+ * strength per ACI 318-19 17.7.1.2b, Vsa = 0.6 Ase,V futa, with φ = 0.65 from
234
+ * Table 17.5.3 and the futa cap of 17.6.1.2.
235
+ *
236
+ * Concrete breakout (17.7.2) and pryout (17.7.3) depend on edge distances, anchor
237
+ * spacing and embedment depth, and are NOT evaluated here — a warning always says so.
238
+ * Supply `phiVboltOverride` to use a manufacturer or ESR value instead.
239
+ *
240
+ * @param bolt - Anchor properties (Ase, futa, optional fya, diameter, shearPlanes, override)
241
+ * @returns Object containing `phiVbolt` (kN), `calculationDetails`, `unit`, and `warnings`
242
+ * @throws {RCDesignError} If the resolved capacity is not positive (202)
243
+ */
244
+ const boltShearCapacity = (bolt) => {
245
+ const warnings = [];
246
+ const shearPlanes = bolt.shearPlanes ?? 1;
247
+ warnings.push({
248
+ reference: "ACI318-19, 17.7.2",
249
+ message: "Only anchor steel strength in shear is evaluated; concrete breakout and pryout must be checked separately.",
250
+ });
251
+ if (bolt.phiVboltOverride !== undefined) {
252
+ if (bolt.phiVboltOverride <= 0) {
253
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.INVALID_BOLT_CAPACITY);
254
+ }
255
+ return {
256
+ phiVbolt: MyMath.roundToDecimalPlaces(bolt.phiVboltOverride, 2),
257
+ calculationDetails: { source: "override", shearPlanes },
258
+ unit: "kN",
259
+ warnings,
260
+ };
261
+ }
262
+ if (bolt.Ase <= 0 || bolt.futa <= 0 || shearPlanes <= 0) {
263
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.INVALID_BOLT_CAPACITY);
264
+ }
265
+ const cap = Math.min(bolt.fya !== undefined ? RCConstants.ANCHOR_FUTA_FYA_FACTOR * bolt.fya : Infinity, RCConstants.MAX_ANCHOR_FUTA);
266
+ const futaEffective = Math.min(bolt.futa, cap);
267
+ if (futaEffective < bolt.futa) {
268
+ warnings.push({
269
+ reference: "ACI318-19, 17.6.1.2",
270
+ message: `futa (${bolt.futa} MPa) exceeds the limit of min(1.9*fya, ${RCConstants.MAX_ANCHOR_FUTA} MPa); capped at ${MyMath.roundToDecimalPlaces(futaEffective, 2)} MPa.`,
271
+ });
272
+ }
273
+ const Vsa = RCConstants.ANCHOR_STEEL_SHEAR_COEFFICIENT * bolt.Ase * futaEffective * shearPlanes; // N
274
+ return {
275
+ phiVbolt: MyMath.roundToDecimalPlaces(RCConstants.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR * Vsa * 0.001, 2),
276
+ calculationDetails: {
277
+ source: "ACI318-19, 17.7.1.2b",
278
+ Vsa: MyMath.roundToDecimalPlaces(Vsa * 0.001, 2),
279
+ futaEffective: MyMath.roundToDecimalPlaces(futaEffective, 2),
280
+ shearPlanes,
281
+ },
282
+ unit: "kN",
283
+ warnings,
284
+ };
285
+ };
286
+ exports.boltShearCapacity = boltShearCapacity;
287
+ const designInterface = (demand, plateArea, plateFy, phiVboltKN, boltsPerRow, transferLength, label, warnings) => {
288
+ const phiVboltN = phiVboltKN * 1000;
289
+ // Spacing that keeps the bolt row capacity at or above the shear flow demand
290
+ const spacingFromShearFlow = (boltsPerRow * phiVboltN) / demand.q; // mm
291
+ let requiredSpacing = spacingFromShearFlow;
292
+ if (requiredSpacing > RCConstants.MAX_PLATE_BOLT_SPACING) {
293
+ requiredSpacing = RCConstants.MAX_PLATE_BOLT_SPACING;
294
+ warnings.push({
295
+ message: `${label} plate: shear flow allows a pitch of ${MyMath.roundToDecimalPlaces(spacingFromShearFlow, 1)} mm, capped at the detailing limit of ${RCConstants.MAX_PLATE_BOLT_SPACING} mm.`,
296
+ });
297
+ }
298
+ const rows = Math.ceil(transferLength / requiredSpacing) + 1;
299
+ const boltCountFromShearFlow = rows * boltsPerRow;
300
+ // The plate must also develop its own yield force over the transfer length
301
+ const plateForce = plateArea * plateFy; // N
302
+ const boltCountFromPlateForce = Math.ceil(plateForce / phiVboltN);
303
+ const governedBy = boltCountFromPlateForce > boltCountFromShearFlow ? "plateForce" : "shearFlow";
304
+ const boltCount = Math.max(boltCountFromShearFlow, boltCountFromPlateForce);
305
+ return {
306
+ q: demand.q,
307
+ Q: demand.Q,
308
+ leverArm: demand.leverArm,
309
+ requiredSpacing: MyMath.roundToDecimalPlaces(requiredSpacing, 1),
310
+ boltCount,
311
+ governedBy,
312
+ calculationDetails: {
313
+ spacingFromShearFlow: MyMath.roundToDecimalPlaces(spacingFromShearFlow, 1),
314
+ rows,
315
+ boltCountFromShearFlow,
316
+ boltCountFromPlateForce,
317
+ plateForce: MyMath.roundToDecimalPlaces(plateForce * 0.001, 2),
318
+ },
319
+ };
320
+ };
321
+ /**
322
+ * Determines the bolts required to transfer horizontal shear across each
323
+ * concrete-to-plate interface of a steel plate jacketed beam.
324
+ *
325
+ * For each plate present, the required bolt pitch follows from the interface shear
326
+ * flow (s = n·φVbolt / q) and the bolt count is taken as the larger of that pitch
327
+ * over the transfer length and the count needed to develop the full plate yield
328
+ * force (Ap·fy / φVbolt). `governedBy` reports which one controls.
329
+ *
330
+ * @param input - Section, plates, V (kN), bolt properties, bolts per row, and transfer length (mm)
331
+ * @returns Object containing per-interface `top`/`bottom` results (`null` when the plate
332
+ * is absent), `calculationDetails`, `unit`, and `warnings`
333
+ * @throws {RCDesignError} If V is not positive or no plate is present (201), the bolt
334
+ * capacity is invalid (202), the geometry is inconsistent (203), or no cracked
335
+ * neutral axis exists (204)
336
+ */
337
+ const plateInterfaceBoltRequirement = (input) => {
338
+ const { plates, bolt, boltsPerRow, transferLength } = input;
339
+ if (boltsPerRow <= 0 || transferLength <= 0) {
340
+ throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.PLATE_OUTSIDE_SECTION);
341
+ }
342
+ const flow = (0, exports.plateInterfaceShearFlow)(input);
343
+ const boltResult = (0, exports.boltShearCapacity)(bolt);
344
+ const warnings = [...flow.warnings, ...boltResult.warnings];
345
+ const geo = resolveGeometry(input.section, plates);
346
+ const top = flow.top !== null
347
+ ? designInterface(flow.top, geo.ATop, plates.fy, boltResult.phiVbolt, boltsPerRow, transferLength, "top", warnings)
348
+ : null;
349
+ const bottom = flow.bottom !== null
350
+ ? designInterface(flow.bottom, geo.ABottom, plates.fy, boltResult.phiVbolt, boltsPerRow, transferLength, "bottom", warnings)
351
+ : null;
352
+ if (bolt.diameter !== undefined) {
353
+ const minSpacing = RCConstants.MIN_ANCHOR_SPACING_DIAMETER_FACTOR * bolt.diameter;
354
+ for (const result of [top, bottom]) {
355
+ if (result !== null && result.requiredSpacing < minSpacing) {
356
+ warnings.push({
357
+ reference: "ACI318-19, 17.9.2",
358
+ message: `Required pitch (${result.requiredSpacing} mm) is below the minimum anchor spacing of 4*da (${minSpacing} mm); use a larger bolt or more bolts per row.`,
359
+ });
360
+ }
361
+ }
362
+ }
363
+ return {
364
+ top,
365
+ bottom,
366
+ calculationDetails: {
367
+ ...flow.calculationDetails,
368
+ phiVbolt: boltResult.phiVbolt,
369
+ boltsPerRow,
370
+ transferLength,
371
+ },
372
+ unit: "kN",
373
+ warnings,
374
+ };
375
+ };
376
+ exports.plateInterfaceBoltRequirement = plateInterfaceBoltRequirement;
377
+ //# sourceMappingURL=rc-beam-plate-interface-bolts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rc-beam-plate-interface-bolts.js","sourceRoot":"","sources":["../../src/strengthening/rc-beam-plate-interface-bolts.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ exports.calculateSteelJacketedBeamMomentCapacity = void 0;
4
4
  const rc_beam_design_1 = require("../rc/rc-beam-design");
5
5
  const math_1 = require("../utils/math");
6
6
  const rc_beam_type_1 = require("../core/types/rc-beam.type");
7
+ const plate_jacketing_type_1 = require("../core/types/plate-jacketing.type");
7
8
  const merge_warning_1 = require("../utils/merge-warning");
8
9
  /**
9
10
  * Calculates the moment capacity of an RC beam strengthened with steel plate jacketing.
@@ -21,16 +22,23 @@ const calculateSteelJacketedBeamMomentCapacity = (section, jacketedProperties) =
21
22
  const originalResult = (0, rc_beam_design_1.rectBeamMomentCapacity)(section);
22
23
  // Convert steel plate strength to the same as rebar strength
23
24
  const n = jacketedProperties.fy / section.fy;
25
+ // A plate only counts when both its width and thickness are positive, so a
26
+ // bottom-only jacket may omit the top plate fields entirely.
27
+ const topSteelThickness = (0, plate_jacketing_type_1.hasTopPlate)(jacketedProperties)
28
+ ? jacketedProperties.topSteelThickness
29
+ : 0;
30
+ const bottomSteelThickness = (0, plate_jacketing_type_1.hasBottomPlate)(jacketedProperties)
31
+ ? jacketedProperties.bottomSteelThickness
32
+ : 0;
24
33
  // Calculate the effective area of the steel plates converted to rebar.
25
- const plateTopSteelArea = n * jacketedProperties.topSteelWidth * jacketedProperties.topSteelThickness;
26
- const plateBottomSteelArea = n *
27
- jacketedProperties.bottomSteelWidth *
28
- jacketedProperties.bottomSteelThickness;
29
- let newD = ((jacketedProperties.topSteelThickness + section.d) * section.As +
30
- (jacketedProperties.topSteelThickness +
31
- section.h +
32
- jacketedProperties.bottomSteelThickness / 2) *
33
- plateBottomSteelArea) /
34
+ const plateTopSteelArea = (0, plate_jacketing_type_1.hasTopPlate)(jacketedProperties)
35
+ ? n * jacketedProperties.topSteelWidth * topSteelThickness
36
+ : 0;
37
+ const plateBottomSteelArea = (0, plate_jacketing_type_1.hasBottomPlate)(jacketedProperties)
38
+ ? n * jacketedProperties.bottomSteelWidth * bottomSteelThickness
39
+ : 0;
40
+ let newD = ((topSteelThickness + section.d) * section.As +
41
+ (topSteelThickness + section.h + bottomSteelThickness / 2) * plateBottomSteelArea) /
34
42
  (section.As + plateBottomSteelArea);
35
43
  let newD_ = undefined;
36
44
  let modifiedSection;
@@ -47,9 +55,8 @@ const calculateSteelJacketedBeamMomentCapacity = (section, jacketedProperties) =
47
55
  // Doubly reinforced section
48
56
  const doublySection = section;
49
57
  newD_ =
50
- ((jacketedProperties.topSteelThickness + doublySection.d_) *
51
- doublySection.As_ +
52
- (jacketedProperties.topSteelThickness / 2) * plateTopSteelArea) /
58
+ ((topSteelThickness + doublySection.d_) * doublySection.As_ +
59
+ (topSteelThickness / 2) * plateTopSteelArea) /
53
60
  (doublySection.As_ + plateTopSteelArea);
54
61
  modifiedSection = {
55
62
  ...doublySection,
@@ -65,7 +72,10 @@ const calculateSteelJacketedBeamMomentCapacity = (section, jacketedProperties) =
65
72
  }
66
73
  // Calculate the moment capacity of the modified (after strengthening) section
67
74
  let jacketedResult = (0, rc_beam_design_1.rectBeamMomentCapacity)(modifiedSection);
68
- jacketedResult = { ...jacketedResult, warnings: (0, merge_warning_1.mergeWarnings)(jacketedResult.warnings, warnings) };
75
+ jacketedResult = {
76
+ ...jacketedResult,
77
+ warnings: (0, merge_warning_1.mergeWarnings)(jacketedResult.warnings, warnings),
78
+ };
69
79
  return {
70
80
  before: originalResult,
71
81
  after: jacketedResult,
@@ -1 +1 @@
1
- {"version":3,"file":"rc-beam-steel-plate-jacketing.js","sourceRoot":"","sources":["../../src/strengthening/rc-beam-steel-plate-jacketing.ts"],"names":[],"mappings":";;;AAAA,2DAAgE;AAChE,0CAAuD;AAEvD,+DAIsC;AAMtC,4DAAyD;AAEzD;;;;;;;;;GASG;AACI,MAAM,wCAAwC,GAAG,CACtD,OAAwB,EACxB,kBAAsC,EACtC,EAAE;IACF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,+EAA+E;IAC/E,MAAM,cAAc,GAAG,IAAA,uCAAsB,EAAC,OAAO,CAAC,CAAC;IAEvD,6DAA6D;IAC7D,MAAM,CAAC,GAAG,kBAAkB,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAE7C,uEAAuE;IACvE,MAAM,iBAAiB,GACrB,CAAC,GAAG,kBAAkB,CAAC,aAAa,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;IAC9E,MAAM,oBAAoB,GACxB,CAAC;QACD,kBAAkB,CAAC,gBAAgB;QACnC,kBAAkB,CAAC,oBAAoB,CAAC;IAE1C,IAAI,IAAI,GACN,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE;QAC9D,CAAC,kBAAkB,CAAC,iBAAiB;YACnC,OAAO,CAAC,CAAC;YACT,kBAAkB,CAAC,oBAAoB,GAAG,CAAC,CAAC;YAC9C,oBAAoB,CAAC;QACvB,CAAC,OAAO,CAAC,EAAE,GAAG,oBAAoB,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,SAAS,CAAC;IAEtB,IAAI,eAAgC,CAAC;IACrC,sDAAsD;IACtD,IAAI,IAAA,iCAAkB,EAAC,OAAO,CAAC,EAAE,CAAC;QAChC,4BAA4B;QAC5B,eAAe,GAAG;YAChB,GAAG,OAAO;YACV,EAAE,EAAE,OAAO,CAAC,EAAE,GAAG,oBAAoB;YACrC,CAAC,EAAE,IAAI;SACR,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,4BAA4B;QAC5B,MAAM,aAAa,GAAG,OAAgC,CAAC;QACvD,KAAK;YACH,CAAC,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC;gBACxD,aAAa,CAAC,GAAG;gBACjB,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;gBACjE,CAAC,aAAa,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;QAC1C,eAAe,GAAG;YAChB,GAAG,aAAa;YAChB,EAAE,EAAE,aAAa,CAAC,EAAE,GAAG,oBAAoB;YAC3C,GAAG,EAAE,aAAa,CAAC,GAAG,GAAG,iBAAiB;YAC1C,CAAC,EAAE,IAAI;YACP,EAAE,EAAE,KAAK;SACV,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,IAAA,2BAAoB,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,IAAA,2BAAoB,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,8EAA8E;IAC9E,IAAI,cAAc,GAAG,IAAA,uCAAsB,EAAC,eAAe,CAAC,CAAC;IAE7D,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAA,6BAAa,EAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IAEnG,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,cAAc;KACtB,CAAC;AACJ,CAAC,CAAC;AArEW,QAAA,wCAAwC,4CAqEnD"}
1
+ {"version":3,"file":"rc-beam-steel-plate-jacketing.js","sourceRoot":"","sources":["../../src/strengthening/rc-beam-steel-plate-jacketing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAY,EAAE;IAC1E,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEF;;;;;;GAMG;AACI,MAAM,oBAAoB,GAAG,CAClC,KAAa,EACb,aAAqB,EACb,EAAE;IACV,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B"}
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACI,MAAM,cAAc,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAY,EAAE;IAC1E,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEF;;;;;;GAMG;AACI,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,aAAqB,EAAU,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC7C,CAAC,CAAC;AAHW,QAAA,oBAAoB,wBAG/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theerapat-s28/ts-structural-eng-tools",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "TypeScript structural-engineering helper functions and beam design utilities",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",