@theerapat-s28/ts-structural-eng-tools 1.0.0 → 1.1.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/LICENSE +1 -1
- package/README.md +4 -1
- package/dist/core/constants/rc.constant.d.ts +17 -0
- package/dist/core/constants/rc.constant.js +30 -1
- package/dist/core/constants/rc.constant.js.map +1 -1
- package/dist/core/errors/rc-design.error.js +12 -0
- package/dist/core/errors/rc-design.error.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/types/rc-beam.type.d.ts +30 -0
- package/dist/core/types/rc-beam.type.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/rc/index.d.ts +2 -1
- package/dist/rc/index.js +6 -1
- package/dist/rc/index.js.map +1 -1
- package/dist/rc/rc-bar-layout.d.ts +34 -0
- package/dist/rc/rc-bar-layout.js +125 -0
- package/dist/rc/rc-bar-layout.js.map +1 -0
- package/dist/rc/rc-beam-design.d.ts +58 -1
- package/dist/rc/rc-beam-design.js +147 -1
- package/dist/rc/rc-beam-design.js.map +1 -1
- package/package.json +16 -15
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ src/
|
|
|
40
40
|
├── rc/ # Reinforced concrete design
|
|
41
41
|
│ ├── index.ts # Module exports
|
|
42
42
|
│ ├── general.ts # Concrete properties (beta1, Ec, unit conversion)
|
|
43
|
-
│ └── rc-beam-design.ts # Beam moment capacity (singly/doubly reinforced)
|
|
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
46
|
│ └── rc-beam-steel-plate-jacketing.ts
|
|
@@ -81,6 +81,9 @@ For runtime resolution, `tsconfig-paths` is registered in the `dev` script.
|
|
|
81
81
|
### RC Beam Design
|
|
82
82
|
|
|
83
83
|
- **`rectBeamMomentCapacity(section)`** — Computes φMn for a rectangular RC beam (singly or doubly reinforced). Returns `phiMn` in kN·m with calculation details and ACI 318-19 warnings.
|
|
84
|
+
- **`concreteShearCapacity(section)`** — Computes φVc, the concrete contribution to shear capacity (ACI 318-19, 22.5.5.1).
|
|
85
|
+
- **`stirrupShearCapacity(section)`** — Computes φVs, the stirrup contribution to shear capacity (ACI 318-19, 22.5.10.5.3).
|
|
86
|
+
- **`checkStirrupRequirement(input)`** — Determines whether stirrups are required, and the required Av/s ratio and max spacing (ACI 318-19, 9.6.3.1, 9.6.3.3, 9.7.6.2.2).
|
|
84
87
|
|
|
85
88
|
### Strengthening
|
|
86
89
|
|
|
@@ -1,2 +1,19 @@
|
|
|
1
1
|
export declare const FLEXURAL_STRENGTH_REDUCTION_FACTOR = 0.9;
|
|
2
2
|
export declare const CONCRETE_ULTIMATE_STRAIN = 0.003;
|
|
3
|
+
export declare const DEFAULT_BEAM_COVER = 40;
|
|
4
|
+
export declare const DEFAULT_STIRRUP_DIAMETER = 10;
|
|
5
|
+
export declare const DEFAULT_MAX_AGGREGATE_SIZE = 20;
|
|
6
|
+
export declare const MIN_BAR_CLEAR_SPACING = 25;
|
|
7
|
+
export declare const AGGREGATE_SPACING_FACTOR: number;
|
|
8
|
+
export declare const MIN_LAYER_CLEAR_SPACING = 25;
|
|
9
|
+
export declare const SHEAR_STRENGTH_REDUCTION_FACTOR = 0.75;
|
|
10
|
+
export declare const CONCRETE_SHEAR_VC_COEFFICIENT = 0.17;
|
|
11
|
+
export declare const SQRT_FC_SHEAR_LIMIT = 8.3;
|
|
12
|
+
export declare const MAX_VS_COEFFICIENT = 0.66;
|
|
13
|
+
export declare const VS_SPACING_THRESHOLD_COEFFICIENT = 0.33;
|
|
14
|
+
export declare const MAX_STIRRUP_SPACING_LOW_VS = 600;
|
|
15
|
+
export declare const MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR = 0.5;
|
|
16
|
+
export declare const MAX_STIRRUP_SPACING_HIGH_VS = 300;
|
|
17
|
+
export declare const MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = 0.25;
|
|
18
|
+
export declare const MIN_AV_SQRT_FC_COEFFICIENT = 0.062;
|
|
19
|
+
export declare const MIN_AV_ABSOLUTE_COEFFICIENT = 0.35;
|
|
@@ -1,6 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = void 0;
|
|
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;
|
|
4
4
|
exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = 0.9;
|
|
5
5
|
exports.CONCRETE_ULTIMATE_STRAIN = 0.003;
|
|
6
|
+
// ACI 318-19 Table 20.6.1.3.1: cast-in-place beams, not exposed to weather or in contact with ground
|
|
7
|
+
exports.DEFAULT_BEAM_COVER = 40; // mm, clear cover to stirrup
|
|
8
|
+
exports.DEFAULT_STIRRUP_DIAMETER = 10; // mm
|
|
9
|
+
exports.DEFAULT_MAX_AGGREGATE_SIZE = 20; // mm, nominal max aggregate size
|
|
10
|
+
// ACI 318-19 25.2.1: min clear spacing between parallel bars in a layer
|
|
11
|
+
exports.MIN_BAR_CLEAR_SPACING = 25; // mm
|
|
12
|
+
exports.AGGREGATE_SPACING_FACTOR = 4 / 3;
|
|
13
|
+
// ACI 318-19 25.2.2: min clear distance between layers
|
|
14
|
+
exports.MIN_LAYER_CLEAR_SPACING = 25; // mm
|
|
15
|
+
// ACI 318-19 21.2.1: strength reduction factor for shear
|
|
16
|
+
exports.SHEAR_STRENGTH_REDUCTION_FACTOR = 0.75;
|
|
17
|
+
// ACI 318-19 22.5.5.1, Table 22.5.5.1(a): Vc = 0.17 * lambda * sqrt(fc') * bw * d
|
|
18
|
+
exports.CONCRETE_SHEAR_VC_COEFFICIENT = 0.17;
|
|
19
|
+
// ACI 318-19 22.5.3.1: sqrt(fc') used to compute Vc shall not exceed this limit
|
|
20
|
+
// unless minimum shear reinforcement per 9.6.3.3 is provided
|
|
21
|
+
exports.SQRT_FC_SHEAR_LIMIT = 8.3; // MPa
|
|
22
|
+
// ACI 318-19 22.5.1.2: Vs shall not exceed 0.66 * sqrt(fc') * bw * d
|
|
23
|
+
exports.MAX_VS_COEFFICIENT = 0.66;
|
|
24
|
+
// ACI 318-19 9.7.6.2.2: spacing threshold at which the tighter max-spacing limit applies
|
|
25
|
+
exports.VS_SPACING_THRESHOLD_COEFFICIENT = 0.33; // * sqrt(fc') * bw * d
|
|
26
|
+
// ACI 318-19 9.7.6.2.2: max stirrup spacing, Vs <= 0.33 * sqrt(fc') * bw * d
|
|
27
|
+
exports.MAX_STIRRUP_SPACING_LOW_VS = 600; // mm
|
|
28
|
+
exports.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR = 0.5; // * d
|
|
29
|
+
// ACI 318-19 9.7.6.2.2: max stirrup spacing, Vs > 0.33 * sqrt(fc') * bw * d
|
|
30
|
+
exports.MAX_STIRRUP_SPACING_HIGH_VS = 300; // mm
|
|
31
|
+
exports.MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR = 0.25; // * d
|
|
32
|
+
// ACI 318-19 9.6.3.3: Av,min = max(0.062 * sqrt(fc') * bw * s / fyt, 0.35 * bw * s / fyt)
|
|
33
|
+
exports.MIN_AV_SQRT_FC_COEFFICIENT = 0.062;
|
|
34
|
+
exports.MIN_AV_ABSOLUTE_COEFFICIENT = 0.35;
|
|
6
35
|
//# 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"}
|
|
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"}
|
|
@@ -20,5 +20,17 @@ exports.Errors = {
|
|
|
20
20
|
code: 102,
|
|
21
21
|
message: "Out of tension controlled region, tensile steel is not yielding.",
|
|
22
22
|
},
|
|
23
|
+
SECTION_TOO_NARROW_FOR_BAR: {
|
|
24
|
+
code: 103,
|
|
25
|
+
message: "Section width is too narrow to fit even one bar of the given diameter with the required cover and spacing.",
|
|
26
|
+
},
|
|
27
|
+
BAR_LAYOUT_EXCEEDS_SECTION_HEIGHT: {
|
|
28
|
+
code: 104,
|
|
29
|
+
message: "Combined top and bottom rebar layers exceed the section height h.",
|
|
30
|
+
},
|
|
31
|
+
SHEAR_STRENGTH_EXCEEDS_MAX: {
|
|
32
|
+
code: 105,
|
|
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
|
+
},
|
|
23
35
|
};
|
|
24
36
|
//# 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;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,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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, } from "./types/rc-beam.type";
|
|
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
3
|
export type { SteelJacketedProps } from "./types/plate-jacketing.type";
|
|
4
4
|
export type { Warnings, calculationResult } from "./types/output-message.type";
|
|
5
5
|
export type { unit } from "./types/unit.type";
|
|
6
|
-
export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, } from "./constants/rc.constant";
|
|
6
|
+
export { FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, } from "./constants/rc.constant";
|
|
7
7
|
export { RCDesignError, Errors } from "./errors/rc-design.error";
|
package/dist/core/index.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Errors = exports.RCDesignError = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = exports.isSinglyReinforced = void 0;
|
|
3
|
+
exports.Errors = exports.RCDesignError = exports.SHEAR_STRENGTH_REDUCTION_FACTOR = exports.CONCRETE_ULTIMATE_STRAIN = exports.FLEXURAL_STRENGTH_REDUCTION_FACTOR = 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
6
|
// Constants
|
|
7
7
|
var rc_constant_1 = require("./constants/rc.constant");
|
|
8
8
|
Object.defineProperty(exports, "FLEXURAL_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return rc_constant_1.FLEXURAL_STRENGTH_REDUCTION_FACTOR; } });
|
|
9
9
|
Object.defineProperty(exports, "CONCRETE_ULTIMATE_STRAIN", { enumerable: true, get: function () { return rc_constant_1.CONCRETE_ULTIMATE_STRAIN; } });
|
|
10
|
+
Object.defineProperty(exports, "SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return rc_constant_1.SHEAR_STRENGTH_REDUCTION_FACTOR; } });
|
|
10
11
|
// Errors
|
|
11
12
|
var rc_design_error_1 = require("./errors/rc-design.error");
|
|
12
13
|
Object.defineProperty(exports, "RCDesignError", { enumerable: true, get: function () { return rc_design_error_1.RCDesignError; } });
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;
|
|
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"}
|
|
@@ -12,4 +12,34 @@ export interface RectDoublyBeamSection extends RectSinglyBeamSection {
|
|
|
12
12
|
As_: number;
|
|
13
13
|
d_: number;
|
|
14
14
|
}
|
|
15
|
+
export interface RectShearSection {
|
|
16
|
+
fc_: number;
|
|
17
|
+
bw: number;
|
|
18
|
+
d: number;
|
|
19
|
+
lambda?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface StirrupShearSection extends RectShearSection {
|
|
22
|
+
Av: number;
|
|
23
|
+
fyt: number;
|
|
24
|
+
s: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ShearReinforcementCheckInput extends RectShearSection {
|
|
27
|
+
Vu: number;
|
|
28
|
+
fyt: number;
|
|
29
|
+
Av?: number;
|
|
30
|
+
s?: number;
|
|
31
|
+
}
|
|
32
|
+
export interface RebarGroupInput {
|
|
33
|
+
count: number;
|
|
34
|
+
diameter: number;
|
|
35
|
+
}
|
|
36
|
+
export interface RectBeamBarLayoutInput {
|
|
37
|
+
b: number;
|
|
38
|
+
h: number;
|
|
39
|
+
topBars: RebarGroupInput;
|
|
40
|
+
bottomBars: RebarGroupInput;
|
|
41
|
+
cover?: number;
|
|
42
|
+
stirrupDiameter?: number;
|
|
43
|
+
maxAggregateSize?: number;
|
|
44
|
+
}
|
|
15
45
|
export declare function isSinglyReinforced(section: RectBeamSection): section is RectSinglyBeamSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rc-beam.type.js","sourceRoot":"","sources":["../../../src/core/types/rc-beam.type.ts"],"names":[],"mappings":";;
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { rectBeamMomentCapacity, concreteBeta, concreteElasticModulus, psiToMpa, } from "./rc";
|
|
1
|
+
export { rectBeamMomentCapacity, rectBeamBarLayout, concreteBeta, concreteElasticModulus, psiToMpa, } from "./rc";
|
|
2
2
|
export { calculateSteelJacketedBeamMomentCapacity } from "./strengthening";
|
|
3
|
-
export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, SteelJacketedProps, Warnings, calculationResult, unit, } from "./core";
|
|
3
|
+
export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, RebarGroupInput, RectBeamBarLayoutInput, SteelJacketedProps, Warnings, calculationResult, unit, } from "./core";
|
|
4
4
|
export { isSinglyReinforced, FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, RCDesignError, Errors, } from "./core";
|
|
5
5
|
export { solveQuadratic, roundToDecimalPlaces, mergeWarnings } from "./utils";
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
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.rectBeamMomentCapacity = void 0;
|
|
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;
|
|
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
|
+
Object.defineProperty(exports, "rectBeamBarLayout", { enumerable: true, get: function () { return rc_1.rectBeamBarLayout; } });
|
|
7
8
|
Object.defineProperty(exports, "concreteBeta", { enumerable: true, get: function () { return rc_1.concreteBeta; } });
|
|
8
9
|
Object.defineProperty(exports, "concreteElasticModulus", { enumerable: true, get: function () { return rc_1.concreteElasticModulus; } });
|
|
9
10
|
Object.defineProperty(exports, "psiToMpa", { enumerable: true, get: function () { return rc_1.psiToMpa; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,
|
|
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"}
|
package/dist/rc/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export { rectBeamMomentCapacity } from "./rc-beam-design";
|
|
1
|
+
export { rectBeamMomentCapacity, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, } from "./rc-beam-design";
|
|
2
2
|
export { concreteBeta, concreteElasticModulus, psiToMpa } from "./general";
|
|
3
|
+
export { rectBeamBarLayout } from "./rc-bar-layout";
|
package/dist/rc/index.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.psiToMpa = exports.concreteElasticModulus = exports.concreteBeta = exports.rectBeamMomentCapacity = void 0;
|
|
3
|
+
exports.rectBeamBarLayout = exports.psiToMpa = exports.concreteElasticModulus = exports.concreteBeta = exports.checkStirrupRequirement = exports.stirrupShearCapacity = exports.concreteShearCapacity = exports.rectBeamMomentCapacity = void 0;
|
|
4
4
|
var rc_beam_design_1 = require("./rc-beam-design");
|
|
5
5
|
Object.defineProperty(exports, "rectBeamMomentCapacity", { enumerable: true, get: function () { return rc_beam_design_1.rectBeamMomentCapacity; } });
|
|
6
|
+
Object.defineProperty(exports, "concreteShearCapacity", { enumerable: true, get: function () { return rc_beam_design_1.concreteShearCapacity; } });
|
|
7
|
+
Object.defineProperty(exports, "stirrupShearCapacity", { enumerable: true, get: function () { return rc_beam_design_1.stirrupShearCapacity; } });
|
|
8
|
+
Object.defineProperty(exports, "checkStirrupRequirement", { enumerable: true, get: function () { return rc_beam_design_1.checkStirrupRequirement; } });
|
|
6
9
|
var general_1 = require("./general");
|
|
7
10
|
Object.defineProperty(exports, "concreteBeta", { enumerable: true, get: function () { return general_1.concreteBeta; } });
|
|
8
11
|
Object.defineProperty(exports, "concreteElasticModulus", { enumerable: true, get: function () { return general_1.concreteElasticModulus; } });
|
|
9
12
|
Object.defineProperty(exports, "psiToMpa", { enumerable: true, get: function () { return general_1.psiToMpa; } });
|
|
13
|
+
var rc_bar_layout_1 = require("./rc-bar-layout");
|
|
14
|
+
Object.defineProperty(exports, "rectBeamBarLayout", { enumerable: true, get: function () { return rc_bar_layout_1.rectBeamBarLayout; } });
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
package/dist/rc/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rc/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RectBeamBarLayoutInput } from "../core/types/rc-beam.type";
|
|
2
|
+
import { Warnings } from "../core/types/output-message.type";
|
|
3
|
+
/**
|
|
4
|
+
* Lays out top and bottom rebar groups within a rectangular beam section,
|
|
5
|
+
* determining the number of layers required to satisfy ACI 318-19 minimum
|
|
6
|
+
* bar spacing (25.2.1) and layer spacing (25.2.2), and returns the resulting
|
|
7
|
+
* effective depth `d` and compression steel depth `d_`, both measured from
|
|
8
|
+
* the top (compression) face so they plug directly into
|
|
9
|
+
* {@link rectBeamMomentCapacity}'s `d` / `d_` inputs.
|
|
10
|
+
*
|
|
11
|
+
* @param input - Section dimensions, top/bottom bar groups, and optional
|
|
12
|
+
* cover / stirrup diameter / max aggregate size (default to ACI 318-19
|
|
13
|
+
* Table 20.6.1.3.1 values for cast-in-place beams not exposed to weather
|
|
14
|
+
* or in contact with ground)
|
|
15
|
+
* @returns `d`, `d_`, per-group layer counts and areas, `unit`, and `warnings`
|
|
16
|
+
* @throws {RCDesignError} If a bar does not fit within the section width, or
|
|
17
|
+
* if the combined top/bottom layers exceed the section height
|
|
18
|
+
*/
|
|
19
|
+
export declare const rectBeamBarLayout: (input: RectBeamBarLayoutInput) => {
|
|
20
|
+
d: number;
|
|
21
|
+
d_: number;
|
|
22
|
+
top: {
|
|
23
|
+
numberOfLayers: number;
|
|
24
|
+
barsPerLayer: number[];
|
|
25
|
+
As: number;
|
|
26
|
+
};
|
|
27
|
+
bottom: {
|
|
28
|
+
numberOfLayers: number;
|
|
29
|
+
barsPerLayer: number[];
|
|
30
|
+
As: number;
|
|
31
|
+
};
|
|
32
|
+
unit: string;
|
|
33
|
+
warnings: Warnings;
|
|
34
|
+
};
|
|
@@ -0,0 +1,125 @@
|
|
|
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.rectBeamBarLayout = 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
|
+
/**
|
|
41
|
+
* Lays out a group of same-diameter bars (top or bottom) into the minimum
|
|
42
|
+
* number of layers that fit within the section width, per ACI 318-19 25.2.1
|
|
43
|
+
* (min clear spacing within a layer) and 25.2.2 (min clear spacing between
|
|
44
|
+
* layers), then returns the centroid distance from the near face.
|
|
45
|
+
*/
|
|
46
|
+
const calculateBarGroupLayout = (group, b, cover, stirrupDiameter, maxAggregateSize) => {
|
|
47
|
+
const { count, diameter } = group;
|
|
48
|
+
if (count <= 0) {
|
|
49
|
+
return {
|
|
50
|
+
numberOfLayers: 0,
|
|
51
|
+
barsPerLayer: [],
|
|
52
|
+
distanceFromFace: 0,
|
|
53
|
+
outerExtent: 0,
|
|
54
|
+
As: 0,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const minClearSpacing = Math.max(RCConstants.MIN_BAR_CLEAR_SPACING, diameter, RCConstants.AGGREGATE_SPACING_FACTOR * maxAggregateSize);
|
|
58
|
+
const availableWidth = b - 2 * (cover + stirrupDiameter);
|
|
59
|
+
const maxBarsPerLayer = Math.min(count, Math.floor((availableWidth + minClearSpacing) / (diameter + minClearSpacing)));
|
|
60
|
+
if (maxBarsPerLayer < 1) {
|
|
61
|
+
throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.SECTION_TOO_NARROW_FOR_BAR);
|
|
62
|
+
}
|
|
63
|
+
const numberOfLayers = Math.ceil(count / maxBarsPerLayer);
|
|
64
|
+
const baseBarsPerLayer = Math.floor(count / numberOfLayers);
|
|
65
|
+
const remainder = count % numberOfLayers;
|
|
66
|
+
const barsPerLayer = Array.from({ length: numberOfLayers }, (_, i) => i < remainder ? baseBarsPerLayer + 1 : baseBarsPerLayer);
|
|
67
|
+
const layerPitch = diameter + RCConstants.MIN_LAYER_CLEAR_SPACING;
|
|
68
|
+
const firstLayerDistance = cover + stirrupDiameter + diameter / 2;
|
|
69
|
+
const weightedSum = barsPerLayer.reduce((sum, n, i) => sum + n * (firstLayerDistance + i * layerPitch), 0);
|
|
70
|
+
return {
|
|
71
|
+
numberOfLayers,
|
|
72
|
+
barsPerLayer,
|
|
73
|
+
distanceFromFace: weightedSum / count,
|
|
74
|
+
outerExtent: cover +
|
|
75
|
+
stirrupDiameter +
|
|
76
|
+
numberOfLayers * diameter +
|
|
77
|
+
(numberOfLayers - 1) * RCConstants.MIN_LAYER_CLEAR_SPACING,
|
|
78
|
+
As: count * (Math.PI / 4) * diameter ** 2,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Lays out top and bottom rebar groups within a rectangular beam section,
|
|
83
|
+
* determining the number of layers required to satisfy ACI 318-19 minimum
|
|
84
|
+
* bar spacing (25.2.1) and layer spacing (25.2.2), and returns the resulting
|
|
85
|
+
* effective depth `d` and compression steel depth `d_`, both measured from
|
|
86
|
+
* the top (compression) face so they plug directly into
|
|
87
|
+
* {@link rectBeamMomentCapacity}'s `d` / `d_` inputs.
|
|
88
|
+
*
|
|
89
|
+
* @param input - Section dimensions, top/bottom bar groups, and optional
|
|
90
|
+
* cover / stirrup diameter / max aggregate size (default to ACI 318-19
|
|
91
|
+
* Table 20.6.1.3.1 values for cast-in-place beams not exposed to weather
|
|
92
|
+
* or in contact with ground)
|
|
93
|
+
* @returns `d`, `d_`, per-group layer counts and areas, `unit`, and `warnings`
|
|
94
|
+
* @throws {RCDesignError} If a bar does not fit within the section width, or
|
|
95
|
+
* if the combined top/bottom layers exceed the section height
|
|
96
|
+
*/
|
|
97
|
+
const rectBeamBarLayout = (input) => {
|
|
98
|
+
const warnings = [];
|
|
99
|
+
const cover = input.cover ?? RCConstants.DEFAULT_BEAM_COVER;
|
|
100
|
+
const stirrupDiameter = input.stirrupDiameter ?? RCConstants.DEFAULT_STIRRUP_DIAMETER;
|
|
101
|
+
const maxAggregateSize = input.maxAggregateSize ?? RCConstants.DEFAULT_MAX_AGGREGATE_SIZE;
|
|
102
|
+
const top = calculateBarGroupLayout(input.topBars, input.b, cover, stirrupDiameter, maxAggregateSize);
|
|
103
|
+
const bottom = calculateBarGroupLayout(input.bottomBars, input.b, cover, stirrupDiameter, maxAggregateSize);
|
|
104
|
+
if (top.outerExtent + bottom.outerExtent > input.h) {
|
|
105
|
+
throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.BAR_LAYOUT_EXCEEDS_SECTION_HEIGHT);
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
d: MyMath.roundToDecimalPlaces(input.h - bottom.distanceFromFace, 1),
|
|
109
|
+
d_: MyMath.roundToDecimalPlaces(top.distanceFromFace, 1),
|
|
110
|
+
top: {
|
|
111
|
+
numberOfLayers: top.numberOfLayers,
|
|
112
|
+
barsPerLayer: top.barsPerLayer,
|
|
113
|
+
As: MyMath.roundToDecimalPlaces(top.As, 1),
|
|
114
|
+
},
|
|
115
|
+
bottom: {
|
|
116
|
+
numberOfLayers: bottom.numberOfLayers,
|
|
117
|
+
barsPerLayer: bottom.barsPerLayer,
|
|
118
|
+
As: MyMath.roundToDecimalPlaces(bottom.As, 1),
|
|
119
|
+
},
|
|
120
|
+
unit: "mm",
|
|
121
|
+
warnings: warnings,
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
exports.rectBeamBarLayout = rectBeamBarLayout;
|
|
125
|
+
//# sourceMappingURL=rc-bar-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rc-bar-layout.js","sourceRoot":"","sources":["../../src/rc/rc-bar-layout.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RectBeamSection } from "../core/types/rc-beam.type";
|
|
1
|
+
import { RectBeamSection, RectShearSection, StirrupShearSection, ShearReinforcementCheckInput } from "../core/types/rc-beam.type";
|
|
2
2
|
import { Warnings } from "../core/types/output-message.type";
|
|
3
3
|
/**
|
|
4
4
|
* Calculates the nominal moment capacity (φMn) of a rectangular RC beam section.
|
|
@@ -16,3 +16,60 @@ export declare const rectBeamMomentCapacity: (section: RectBeamSection) => {
|
|
|
16
16
|
unit: string;
|
|
17
17
|
warnings: Warnings;
|
|
18
18
|
};
|
|
19
|
+
/**
|
|
20
|
+
* Calculates the concrete contribution to shear capacity (φVc) of a beam section
|
|
21
|
+
* per ACI 318-19 22.5.5.1, Table 22.5.5.1(a): Vc = 0.17 λ √f'c bw d
|
|
22
|
+
*
|
|
23
|
+
* @param section - Shear section properties (fc_, bw, d, optional lambda)
|
|
24
|
+
* @returns Object containing `phiVc` (kN), `calculationDetails`, `unit`, and `warnings`
|
|
25
|
+
*/
|
|
26
|
+
export declare const concreteShearCapacity: (section: RectShearSection) => {
|
|
27
|
+
phiVc: number;
|
|
28
|
+
calculationDetails: {
|
|
29
|
+
Vc: number;
|
|
30
|
+
lambda: number;
|
|
31
|
+
};
|
|
32
|
+
unit: string;
|
|
33
|
+
warnings: Warnings;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the stirrup (shear reinforcement) contribution to shear capacity (φVs)
|
|
37
|
+
* of a beam section per ACI 318-19 22.5.10.5.3: Vs = Av fyt d / s
|
|
38
|
+
*
|
|
39
|
+
* @param section - Stirrup shear properties (fc_, bw, d, Av, fyt, s)
|
|
40
|
+
* @returns Object containing `phiVs` (kN), `calculationDetails`, `unit`, and `warnings`
|
|
41
|
+
* @throws {RCDesignError} If Vs exceeds the ACI 318-19 22.5.1.2 maximum (section too small)
|
|
42
|
+
*/
|
|
43
|
+
export declare const stirrupShearCapacity: (section: StirrupShearSection) => {
|
|
44
|
+
phiVs: number;
|
|
45
|
+
calculationDetails: {
|
|
46
|
+
Vs: number;
|
|
47
|
+
maxVs: number;
|
|
48
|
+
};
|
|
49
|
+
unit: string;
|
|
50
|
+
warnings: Warnings;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Checks whether shear reinforcement (stirrups) is required at a section, and if so,
|
|
54
|
+
* whether it may be at the code minimum or must be designed for strength, per
|
|
55
|
+
* ACI 318-19 9.6.3.1 (requirement thresholds), 9.6.3.3 (Av,min), and 9.7.6.2.2 (max spacing).
|
|
56
|
+
*
|
|
57
|
+
* If `Av` and `s` are supplied, the provided reinforcement is checked against the
|
|
58
|
+
* required Av/s ratio and maximum spacing, adding warnings on shortfalls.
|
|
59
|
+
*
|
|
60
|
+
* @param input - Section and demand properties (fc_, bw, d, Vu, fyt, optional Av, s, lambda)
|
|
61
|
+
* @returns Object containing requirement classification, required Av/s and max spacing, and warnings
|
|
62
|
+
* @throws {RCDesignError} If required Vs exceeds the ACI 318-19 22.5.1.2 maximum (section too small)
|
|
63
|
+
*/
|
|
64
|
+
export declare const checkStirrupRequirement: (input: ShearReinforcementCheckInput) => {
|
|
65
|
+
required: boolean;
|
|
66
|
+
minimumOnly: boolean;
|
|
67
|
+
calculationDetails: {
|
|
68
|
+
phiVc: number;
|
|
69
|
+
halfPhiVc: number;
|
|
70
|
+
requiredAvOverS: number;
|
|
71
|
+
maxSpacing: number | null;
|
|
72
|
+
};
|
|
73
|
+
unit: string;
|
|
74
|
+
warnings: Warnings;
|
|
75
|
+
};
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.rectBeamMomentCapacity = void 0;
|
|
36
|
+
exports.checkStirrupRequirement = exports.stirrupShearCapacity = exports.concreteShearCapacity = exports.rectBeamMomentCapacity = void 0;
|
|
37
37
|
const rc_design_error_1 = require("../core/errors/rc-design.error");
|
|
38
38
|
const MyMath = __importStar(require("../utils/math"));
|
|
39
39
|
const rc_beam_type_1 = require("../core/types/rc-beam.type");
|
|
@@ -114,6 +114,152 @@ const rectBeamMomentCapacity = (section) => {
|
|
|
114
114
|
};
|
|
115
115
|
};
|
|
116
116
|
exports.rectBeamMomentCapacity = rectBeamMomentCapacity;
|
|
117
|
+
/**
|
|
118
|
+
* Calculates the concrete contribution to shear capacity (φVc) of a beam section
|
|
119
|
+
* per ACI 318-19 22.5.5.1, Table 22.5.5.1(a): Vc = 0.17 λ √f'c bw d
|
|
120
|
+
*
|
|
121
|
+
* @param section - Shear section properties (fc_, bw, d, optional lambda)
|
|
122
|
+
* @returns Object containing `phiVc` (kN), `calculationDetails`, `unit`, and `warnings`
|
|
123
|
+
*/
|
|
124
|
+
const concreteShearCapacity = (section) => {
|
|
125
|
+
const warnings = [];
|
|
126
|
+
const lambda = section.lambda ?? 1.0;
|
|
127
|
+
const sqrtFc = Math.sqrt(section.fc_);
|
|
128
|
+
if (sqrtFc > RCConstants.SQRT_FC_SHEAR_LIMIT) {
|
|
129
|
+
warnings.push({
|
|
130
|
+
reference: "ACI318-19, 22.5.3.1",
|
|
131
|
+
message: `sqrt(fc') (${MyMath.roundToDecimalPlaces(sqrtFc, 2)}) > ${RCConstants.SQRT_FC_SHEAR_LIMIT} MPa limit for Vc; capped at ${RCConstants.SQRT_FC_SHEAR_LIMIT} MPa unless minimum shear reinforcement per 9.6.3.3 is provided.`,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
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
|
|
140
|
+
return {
|
|
141
|
+
phiVc: MyMath.roundToDecimalPlaces(RCConstants.SHEAR_STRENGTH_REDUCTION_FACTOR * Vc * 0.001, 2),
|
|
142
|
+
calculationDetails: {
|
|
143
|
+
Vc: MyMath.roundToDecimalPlaces(Vc * 0.001, 2),
|
|
144
|
+
lambda,
|
|
145
|
+
},
|
|
146
|
+
unit: "kN",
|
|
147
|
+
warnings,
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
exports.concreteShearCapacity = concreteShearCapacity;
|
|
151
|
+
/**
|
|
152
|
+
* Calculates the stirrup (shear reinforcement) contribution to shear capacity (φVs)
|
|
153
|
+
* of a beam section per ACI 318-19 22.5.10.5.3: Vs = Av fyt d / s
|
|
154
|
+
*
|
|
155
|
+
* @param section - Stirrup shear properties (fc_, bw, d, Av, fyt, s)
|
|
156
|
+
* @returns Object containing `phiVs` (kN), `calculationDetails`, `unit`, and `warnings`
|
|
157
|
+
* @throws {RCDesignError} If Vs exceeds the ACI 318-19 22.5.1.2 maximum (section too small)
|
|
158
|
+
*/
|
|
159
|
+
const stirrupShearCapacity = (section) => {
|
|
160
|
+
const warnings = [];
|
|
161
|
+
const { fc_, bw, d, Av, fyt, s } = section;
|
|
162
|
+
const Vs = (Av * fyt * d) / s; // N
|
|
163
|
+
const maxVs = RCConstants.MAX_VS_COEFFICIENT * Math.sqrt(fc_) * bw * d; // N
|
|
164
|
+
if (Vs > maxVs) {
|
|
165
|
+
throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.SHEAR_STRENGTH_EXCEEDS_MAX);
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
phiVs: MyMath.roundToDecimalPlaces(RCConstants.SHEAR_STRENGTH_REDUCTION_FACTOR * Vs * 0.001, 2),
|
|
169
|
+
calculationDetails: {
|
|
170
|
+
Vs: MyMath.roundToDecimalPlaces(Vs * 0.001, 2),
|
|
171
|
+
maxVs: MyMath.roundToDecimalPlaces(maxVs * 0.001, 2),
|
|
172
|
+
},
|
|
173
|
+
unit: "kN",
|
|
174
|
+
warnings,
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
exports.stirrupShearCapacity = stirrupShearCapacity;
|
|
178
|
+
/**
|
|
179
|
+
* Checks whether shear reinforcement (stirrups) is required at a section, and if so,
|
|
180
|
+
* whether it may be at the code minimum or must be designed for strength, per
|
|
181
|
+
* ACI 318-19 9.6.3.1 (requirement thresholds), 9.6.3.3 (Av,min), and 9.7.6.2.2 (max spacing).
|
|
182
|
+
*
|
|
183
|
+
* If `Av` and `s` are supplied, the provided reinforcement is checked against the
|
|
184
|
+
* required Av/s ratio and maximum spacing, adding warnings on shortfalls.
|
|
185
|
+
*
|
|
186
|
+
* @param input - Section and demand properties (fc_, bw, d, Vu, fyt, optional Av, s, lambda)
|
|
187
|
+
* @returns Object containing requirement classification, required Av/s and max spacing, and warnings
|
|
188
|
+
* @throws {RCDesignError} If required Vs exceeds the ACI 318-19 22.5.1.2 maximum (section too small)
|
|
189
|
+
*/
|
|
190
|
+
const checkStirrupRequirement = (input) => {
|
|
191
|
+
const warnings = [];
|
|
192
|
+
const { fc_, bw, d, Vu, fyt, Av, s } = input;
|
|
193
|
+
const { phiVc, calculationDetails } = (0, exports.concreteShearCapacity)({
|
|
194
|
+
fc_,
|
|
195
|
+
bw,
|
|
196
|
+
d,
|
|
197
|
+
lambda: input.lambda,
|
|
198
|
+
});
|
|
199
|
+
const Vc = calculationDetails.Vc; // kN
|
|
200
|
+
const halfPhiVc = 0.5 * phiVc;
|
|
201
|
+
let required = false;
|
|
202
|
+
let minimumOnly = false;
|
|
203
|
+
let requiredAvOverS = 0; // mm^2/mm
|
|
204
|
+
let maxSpacing = null;
|
|
205
|
+
if (Vu > halfPhiVc) {
|
|
206
|
+
required = true;
|
|
207
|
+
const sqrtFc = Math.sqrt(fc_);
|
|
208
|
+
const minAvOverS = Math.max((RCConstants.MIN_AV_SQRT_FC_COEFFICIENT * sqrtFc * bw) / fyt, (RCConstants.MIN_AV_ABSOLUTE_COEFFICIENT * bw) / fyt);
|
|
209
|
+
if (Vu <= phiVc) {
|
|
210
|
+
minimumOnly = true;
|
|
211
|
+
requiredAvOverS = minAvOverS;
|
|
212
|
+
maxSpacing =
|
|
213
|
+
RCConstants.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR * d <
|
|
214
|
+
RCConstants.MAX_STIRRUP_SPACING_LOW_VS
|
|
215
|
+
? RCConstants.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR * d
|
|
216
|
+
: RCConstants.MAX_STIRRUP_SPACING_LOW_VS;
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const requiredVs = Vu / RCConstants.SHEAR_STRENGTH_REDUCTION_FACTOR - Vc; // kN
|
|
220
|
+
const maxVs = (RCConstants.MAX_VS_COEFFICIENT * sqrtFc * bw * d) * 0.001; // kN
|
|
221
|
+
if (requiredVs > maxVs) {
|
|
222
|
+
throw new rc_design_error_1.RCDesignError(rc_design_error_1.Errors.SHEAR_STRENGTH_EXCEEDS_MAX);
|
|
223
|
+
}
|
|
224
|
+
const strengthAvOverS = (requiredVs * 1000) / (fyt * d); // mm^2/mm
|
|
225
|
+
requiredAvOverS = Math.max(minAvOverS, strengthAvOverS);
|
|
226
|
+
const vsThreshold = (RCConstants.VS_SPACING_THRESHOLD_COEFFICIENT * sqrtFc * bw * d) *
|
|
227
|
+
0.001; // kN
|
|
228
|
+
maxSpacing =
|
|
229
|
+
requiredVs <= vsThreshold
|
|
230
|
+
? Math.min(RCConstants.MAX_STIRRUP_SPACING_LOW_VS_DEPTH_FACTOR * d, RCConstants.MAX_STIRRUP_SPACING_LOW_VS)
|
|
231
|
+
: Math.min(RCConstants.MAX_STIRRUP_SPACING_HIGH_VS_DEPTH_FACTOR * d, RCConstants.MAX_STIRRUP_SPACING_HIGH_VS);
|
|
232
|
+
}
|
|
233
|
+
if (Av !== undefined && s !== undefined) {
|
|
234
|
+
const providedAvOverS = Av / s;
|
|
235
|
+
if (providedAvOverS < requiredAvOverS) {
|
|
236
|
+
warnings.push({
|
|
237
|
+
reference: "ACI318-19, 9.6.3.1",
|
|
238
|
+
message: `Provided Av/s (${MyMath.roundToDecimalPlaces(providedAvOverS, 4)} mm2/mm) < required Av/s (${MyMath.roundToDecimalPlaces(requiredAvOverS, 4)} mm2/mm).`,
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
if (maxSpacing !== null && s > maxSpacing) {
|
|
242
|
+
warnings.push({
|
|
243
|
+
reference: "ACI318-19, 9.7.6.2.2",
|
|
244
|
+
message: `Provided spacing s (${s} mm) > max allowed spacing (${MyMath.roundToDecimalPlaces(maxSpacing, 2)} mm).`,
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
required,
|
|
251
|
+
minimumOnly,
|
|
252
|
+
calculationDetails: {
|
|
253
|
+
phiVc,
|
|
254
|
+
halfPhiVc: MyMath.roundToDecimalPlaces(halfPhiVc, 2),
|
|
255
|
+
requiredAvOverS: MyMath.roundToDecimalPlaces(requiredAvOverS, 4),
|
|
256
|
+
maxSpacing: maxSpacing === null ? null : MyMath.roundToDecimalPlaces(maxSpacing, 2),
|
|
257
|
+
},
|
|
258
|
+
unit: "kN",
|
|
259
|
+
warnings,
|
|
260
|
+
};
|
|
261
|
+
};
|
|
262
|
+
exports.checkStirrupRequirement = checkStirrupRequirement;
|
|
117
263
|
const calculateRectSinglyMn = (singlySection) => {
|
|
118
264
|
const { Es, fy, fc_, As, b, h, d } = singlySection;
|
|
119
265
|
const warnings = [];
|
|
@@ -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,+
|
|
1
|
+
{"version":3,"file":"rc-beam-design.js","sourceRoot":"","sources":["../../src/rc/rc-beam-design.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theerapat-s28/ts-structural-eng-tools",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.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",
|
|
@@ -31,17 +31,6 @@
|
|
|
31
31
|
"README.md",
|
|
32
32
|
"LICENSE"
|
|
33
33
|
],
|
|
34
|
-
"scripts": {
|
|
35
|
-
"dev": "ts-node -r tsconfig-paths/register examples/basic-usage.ts",
|
|
36
|
-
"build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
|
|
37
|
-
"prepublishOnly": "pnpm run build",
|
|
38
|
-
"lint": "eslint src/",
|
|
39
|
-
"lint:fix": "eslint src/ --fix",
|
|
40
|
-
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"examples/**/*.ts\"",
|
|
41
|
-
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"examples/**/*.ts\"",
|
|
42
|
-
"test": "vitest run",
|
|
43
|
-
"test:watch": "vitest"
|
|
44
|
-
},
|
|
45
34
|
"keywords": [
|
|
46
35
|
"structural-engineering",
|
|
47
36
|
"beam-design",
|
|
@@ -55,19 +44,31 @@
|
|
|
55
44
|
"license": "ISC",
|
|
56
45
|
"repository": {
|
|
57
46
|
"type": "git",
|
|
58
|
-
"url": "
|
|
47
|
+
"url": ""
|
|
48
|
+
},
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public"
|
|
59
51
|
},
|
|
60
|
-
"packageManager": "pnpm@10.18.3",
|
|
61
52
|
"devDependencies": {
|
|
62
53
|
"@eslint/js": "^9.20.0",
|
|
63
54
|
"@types/node": "^24.9.1",
|
|
64
55
|
"eslint": "^9.20.0",
|
|
65
56
|
"prettier": "^3.5.3",
|
|
66
57
|
"ts-node": "^10.9.2",
|
|
67
|
-
"tsc-alias": "^1.
|
|
58
|
+
"tsc-alias": "^1.9.1",
|
|
68
59
|
"tsconfig-paths": "^4.2.0",
|
|
69
60
|
"typescript": "^5.9.3",
|
|
70
61
|
"typescript-eslint": "^8.25.0",
|
|
71
62
|
"vitest": "^3.0.0"
|
|
63
|
+
},
|
|
64
|
+
"scripts": {
|
|
65
|
+
"dev": "ts-node -r tsconfig-paths/register examples/basic-usage.ts",
|
|
66
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
|
67
|
+
"lint": "eslint src/",
|
|
68
|
+
"lint:fix": "eslint src/ --fix",
|
|
69
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\" \"examples/**/*.ts\"",
|
|
70
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\" \"examples/**/*.ts\"",
|
|
71
|
+
"test": "vitest run",
|
|
72
|
+
"test:watch": "vitest"
|
|
72
73
|
}
|
|
73
74
|
}
|