@theerapat-s28/ts-structural-eng-tools 1.4.0 → 2.0.1
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 +44 -4
- package/dist/core/constants/frame.constant.d.ts +14 -0
- package/dist/core/constants/frame.constant.js +18 -0
- package/dist/core/constants/frame.constant.js.map +1 -0
- package/dist/core/constants/rc.constant.d.ts +7 -0
- package/dist/core/constants/rc.constant.js +20 -1
- package/dist/core/constants/rc.constant.js.map +1 -1
- package/dist/core/errors/frame-analysis.error.d.ts +33 -0
- package/dist/core/errors/frame-analysis.error.js +74 -0
- package/dist/core/errors/frame-analysis.error.js.map +1 -0
- package/dist/core/errors/rc-design.error.js +8 -0
- package/dist/core/errors/rc-design.error.js.map +1 -1
- package/dist/core/index.d.ts +7 -3
- package/dist/core/index.js +16 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/types/plate-jacketing.type.d.ts +37 -0
- package/dist/core/types/plate-jacketing.type.js +8 -0
- package/dist/core/types/plate-jacketing.type.js.map +1 -1
- package/dist/core/types/section-properties.type.d.ts +13 -0
- package/dist/core/types/section-properties.type.js +3 -0
- package/dist/core/types/section-properties.type.js.map +1 -0
- package/dist/esm/core/constants/frame.constant.js +15 -0
- package/dist/esm/core/constants/frame.constant.js.map +1 -0
- package/dist/esm/core/constants/rc.constant.js +63 -0
- package/dist/esm/core/constants/rc.constant.js.map +1 -0
- package/dist/esm/core/errors/frame-analysis.error.js +70 -0
- package/dist/esm/core/errors/frame-analysis.error.js.map +1 -0
- package/dist/esm/core/errors/rc-design.error.js +64 -0
- package/dist/esm/core/errors/rc-design.error.js.map +1 -0
- package/dist/esm/core/index.js +9 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/core/types/output-message.type.js +2 -0
- package/dist/esm/core/types/output-message.type.js.map +1 -0
- package/dist/esm/core/types/plate-jacketing.type.js +18 -0
- package/dist/esm/core/types/plate-jacketing.type.js.map +1 -0
- package/dist/esm/core/types/rc-beam.type.js +11 -0
- package/dist/esm/core/types/rc-beam.type.js.map +1 -0
- package/dist/esm/core/types/section-properties.type.js +2 -0
- package/dist/esm/core/types/section-properties.type.js.map +1 -0
- package/dist/esm/core/types/unit.type.js +2 -0
- package/dist/esm/core/types/unit.type.js.map +1 -0
- package/dist/esm/fea/frame/elements/beam-3d-stiffness.js +84 -0
- package/dist/esm/fea/frame/elements/beam-3d-stiffness.js.map +1 -0
- package/dist/esm/fea/frame/elements/fixed-end-forces.js +75 -0
- package/dist/esm/fea/frame/elements/fixed-end-forces.js.map +1 -0
- package/dist/esm/fea/frame/elements/static-condensation.js +55 -0
- package/dist/esm/fea/frame/elements/static-condensation.js.map +1 -0
- package/dist/esm/fea/frame/index.js +6 -0
- package/dist/esm/fea/frame/index.js.map +1 -0
- package/dist/esm/fea/frame/post/demand-envelope.js +97 -0
- package/dist/esm/fea/frame/post/demand-envelope.js.map +1 -0
- package/dist/esm/fea/frame/post/envelope.js +59 -0
- package/dist/esm/fea/frame/post/envelope.js.map +1 -0
- package/dist/esm/fea/frame/post/member-diagram.js +332 -0
- package/dist/esm/fea/frame/post/member-diagram.js.map +1 -0
- package/dist/esm/fea/frame/post/present-state.js +106 -0
- package/dist/esm/fea/frame/post/present-state.js.map +1 -0
- package/dist/esm/fea/frame/solver/analyze-frame.js +123 -0
- package/dist/esm/fea/frame/solver/analyze-frame.js.map +1 -0
- package/dist/esm/fea/frame/solver/boundary-conditions.js +33 -0
- package/dist/esm/fea/frame/solver/boundary-conditions.js.map +1 -0
- package/dist/esm/fea/frame/solver/combinations.js +69 -0
- package/dist/esm/fea/frame/solver/combinations.js.map +1 -0
- package/dist/esm/fea/frame/solver/frame-system.js +122 -0
- package/dist/esm/fea/frame/solver/frame-system.js.map +1 -0
- package/dist/esm/fea/frame/solver/global-assembly.js +27 -0
- package/dist/esm/fea/frame/solver/global-assembly.js.map +1 -0
- package/dist/esm/fea/frame/solver/load-case-solver.js +119 -0
- package/dist/esm/fea/frame/solver/load-case-solver.js.map +1 -0
- package/dist/esm/fea/frame/transformation/coordinate-transform.js +71 -0
- package/dist/esm/fea/frame/transformation/coordinate-transform.js.map +1 -0
- package/dist/esm/fea/frame/types/model.type.js +2 -0
- package/dist/esm/fea/frame/types/model.type.js.map +1 -0
- package/dist/esm/fea/frame/types/results.type.js +2 -0
- package/dist/esm/fea/frame/types/results.type.js.map +1 -0
- package/dist/esm/fea/frame/validation/validate-model.js +292 -0
- package/dist/esm/fea/frame/validation/validate-model.js.map +1 -0
- package/dist/esm/fea/index.js +3 -0
- package/dist/esm/fea/index.js.map +1 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/rc/general.js +32 -0
- package/dist/esm/rc/general.js.map +1 -0
- package/dist/esm/rc/index.js +5 -0
- package/dist/esm/rc/index.js.map +1 -0
- package/dist/esm/rc/rc-bar-layout.js +89 -0
- package/dist/esm/rc/rc-bar-layout.js.map +1 -0
- package/dist/esm/rc/rc-beam-design.js +320 -0
- package/dist/esm/rc/rc-beam-design.js.map +1 -0
- package/dist/esm/rc/rc-section-properties.js +55 -0
- package/dist/esm/rc/rc-section-properties.js.map +1 -0
- package/dist/esm/strengthening/index.js +4 -0
- package/dist/esm/strengthening/index.js.map +1 -0
- package/dist/esm/strengthening/rc-beam-plate-interface-bolts.js +338 -0
- package/dist/esm/strengthening/rc-beam-plate-interface-bolts.js.map +1 -0
- package/dist/esm/strengthening/rc-beam-side-plate-shear.js +381 -0
- package/dist/esm/strengthening/rc-beam-side-plate-shear.js.map +1 -0
- package/dist/esm/strengthening/rc-beam-steel-plate-jacketing.js +90 -0
- package/dist/esm/strengthening/rc-beam-steel-plate-jacketing.js.map +1 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/math.js +30 -0
- package/dist/esm/utils/math.js.map +1 -0
- package/dist/esm/utils/matrix.js +145 -0
- package/dist/esm/utils/matrix.js.map +1 -0
- package/dist/esm/utils/merge-warning.js +11 -0
- package/dist/esm/utils/merge-warning.js.map +1 -0
- package/dist/esm/utils/skyline.js +151 -0
- package/dist/esm/utils/skyline.js.map +1 -0
- package/dist/fea/frame/elements/beam-3d-stiffness.d.ts +29 -0
- package/dist/fea/frame/elements/beam-3d-stiffness.js +90 -0
- package/dist/fea/frame/elements/beam-3d-stiffness.js.map +1 -0
- package/dist/fea/frame/elements/fixed-end-forces.d.ts +22 -0
- package/dist/fea/frame/elements/fixed-end-forces.js +79 -0
- package/dist/fea/frame/elements/fixed-end-forces.js.map +1 -0
- package/dist/fea/frame/elements/static-condensation.d.ts +19 -0
- package/dist/fea/frame/elements/static-condensation.js +59 -0
- package/dist/fea/frame/elements/static-condensation.js.map +1 -0
- package/dist/fea/frame/index.d.ts +9 -0
- package/dist/fea/frame/index.js +16 -0
- package/dist/fea/frame/index.js.map +1 -0
- package/dist/fea/frame/post/demand-envelope.d.ts +36 -0
- package/dist/fea/frame/post/demand-envelope.js +101 -0
- package/dist/fea/frame/post/demand-envelope.js.map +1 -0
- package/dist/fea/frame/post/envelope.d.ts +8 -0
- package/dist/fea/frame/post/envelope.js +63 -0
- package/dist/fea/frame/post/envelope.js.map +1 -0
- package/dist/fea/frame/post/member-diagram.d.ts +26 -0
- package/dist/fea/frame/post/member-diagram.js +336 -0
- package/dist/fea/frame/post/member-diagram.js.map +1 -0
- package/dist/fea/frame/post/present-state.d.ts +19 -0
- package/dist/fea/frame/post/present-state.js +111 -0
- package/dist/fea/frame/post/present-state.js.map +1 -0
- package/dist/fea/frame/solver/analyze-frame.d.ts +67 -0
- package/dist/fea/frame/solver/analyze-frame.js +128 -0
- package/dist/fea/frame/solver/analyze-frame.js.map +1 -0
- package/dist/fea/frame/solver/boundary-conditions.d.ts +14 -0
- package/dist/fea/frame/solver/boundary-conditions.js +37 -0
- package/dist/fea/frame/solver/boundary-conditions.js.map +1 -0
- package/dist/fea/frame/solver/combinations.d.ts +11 -0
- package/dist/fea/frame/solver/combinations.js +73 -0
- package/dist/fea/frame/solver/combinations.js.map +1 -0
- package/dist/fea/frame/solver/frame-system.d.ts +42 -0
- package/dist/fea/frame/solver/frame-system.js +126 -0
- package/dist/fea/frame/solver/frame-system.js.map +1 -0
- package/dist/fea/frame/solver/global-assembly.d.ts +17 -0
- package/dist/fea/frame/solver/global-assembly.js +33 -0
- package/dist/fea/frame/solver/global-assembly.js.map +1 -0
- package/dist/fea/frame/solver/load-case-solver.d.ts +34 -0
- package/dist/fea/frame/solver/load-case-solver.js +124 -0
- package/dist/fea/frame/solver/load-case-solver.js.map +1 -0
- package/dist/fea/frame/transformation/coordinate-transform.d.ts +21 -0
- package/dist/fea/frame/transformation/coordinate-transform.js +76 -0
- package/dist/fea/frame/transformation/coordinate-transform.js.map +1 -0
- package/dist/fea/frame/types/model.type.d.ts +112 -0
- package/dist/fea/frame/types/model.type.js +3 -0
- package/dist/fea/frame/types/model.type.js.map +1 -0
- package/dist/fea/frame/types/results.type.d.ts +134 -0
- package/dist/fea/frame/types/results.type.js +3 -0
- package/dist/fea/frame/types/results.type.js.map +1 -0
- package/dist/fea/frame/validation/validate-model.d.ts +18 -0
- package/dist/fea/frame/validation/validate-model.js +298 -0
- package/dist/fea/frame/validation/validate-model.js.map +1 -0
- package/dist/fea/index.d.ts +1 -0
- package/dist/fea/index.js +19 -0
- package/dist/fea/index.js.map +1 -0
- package/dist/index.d.ts +9 -5
- package/dist/index.js +44 -1
- package/dist/index.js.map +1 -1
- package/dist/rc/index.d.ts +2 -0
- package/dist/rc/index.js +3 -1
- package/dist/rc/index.js.map +1 -1
- package/dist/rc/rc-section-properties.d.ts +35 -0
- package/dist/rc/rc-section-properties.js +59 -0
- package/dist/rc/rc-section-properties.js.map +1 -0
- package/dist/strengthening/index.d.ts +1 -0
- package/dist/strengthening/index.js +5 -1
- package/dist/strengthening/index.js.map +1 -1
- package/dist/strengthening/rc-beam-side-plate-shear.d.ts +254 -0
- package/dist/strengthening/rc-beam-side-plate-shear.js +420 -0
- package/dist/strengthening/rc-beam-side-plate-shear.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +19 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/matrix.d.ts +45 -0
- package/dist/utils/matrix.js +157 -0
- package/dist/utils/matrix.js.map +1 -0
- package/dist/utils/skyline.d.ts +49 -0
- package/dist/utils/skyline.js +161 -0
- package/dist/utils/skyline.js.map +1 -0
- package/package.json +20 -2
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import type { Warnings } from "../../../core/types/output-message.type";
|
|
2
|
+
import type { FrameId, LoadCaseType } from "./model.type";
|
|
3
|
+
export interface NodalDisplacement {
|
|
4
|
+
nodeId: FrameId;
|
|
5
|
+
ux: number;
|
|
6
|
+
uy: number;
|
|
7
|
+
uz: number;
|
|
8
|
+
rx: number;
|
|
9
|
+
ry: number;
|
|
10
|
+
rz: number;
|
|
11
|
+
}
|
|
12
|
+
export interface NodalReaction {
|
|
13
|
+
nodeId: FrameId;
|
|
14
|
+
fx: number;
|
|
15
|
+
fy: number;
|
|
16
|
+
fz: number;
|
|
17
|
+
mx: number;
|
|
18
|
+
my: number;
|
|
19
|
+
mz: number;
|
|
20
|
+
}
|
|
21
|
+
/** Force the node exerts on one member end, in local axes 1, 2, 3 (right-hand rotations). */
|
|
22
|
+
export interface MemberEndForce {
|
|
23
|
+
f1: number;
|
|
24
|
+
f2: number;
|
|
25
|
+
f3: number;
|
|
26
|
+
m1: number;
|
|
27
|
+
m2: number;
|
|
28
|
+
m3: number;
|
|
29
|
+
}
|
|
30
|
+
export interface MemberEndForces {
|
|
31
|
+
memberId: FrameId;
|
|
32
|
+
start: MemberEndForce;
|
|
33
|
+
end: MemberEndForce;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Internal forces and displacements at a distance `x` from the member start. Forces act on
|
|
37
|
+
* the positive (+1) face of the cut; N is positive in tension. Displacements include the
|
|
38
|
+
* rigid-body motion of the member, so at the ends they equal the node displacements (except
|
|
39
|
+
* across a released translation).
|
|
40
|
+
*/
|
|
41
|
+
export interface MemberStation {
|
|
42
|
+
x: number;
|
|
43
|
+
N: number;
|
|
44
|
+
V2: number;
|
|
45
|
+
V3: number;
|
|
46
|
+
T: number;
|
|
47
|
+
M2: number;
|
|
48
|
+
M3: number;
|
|
49
|
+
u1: number;
|
|
50
|
+
u2: number;
|
|
51
|
+
u3: number;
|
|
52
|
+
ux: number;
|
|
53
|
+
uy: number;
|
|
54
|
+
uz: number;
|
|
55
|
+
}
|
|
56
|
+
/** Station components with extremes: internal forces and local displacements. */
|
|
57
|
+
export type StationComponent = "N" | "V2" | "V3" | "T" | "M2" | "M3" | "u1" | "u2" | "u3";
|
|
58
|
+
export interface ExtremeValue {
|
|
59
|
+
value: number;
|
|
60
|
+
x: number;
|
|
61
|
+
}
|
|
62
|
+
export interface MemberDiagram {
|
|
63
|
+
memberId: FrameId;
|
|
64
|
+
length: number;
|
|
65
|
+
stations: MemberStation[];
|
|
66
|
+
extremes: Record<StationComponent, {
|
|
67
|
+
max: ExtremeValue;
|
|
68
|
+
min: ExtremeValue;
|
|
69
|
+
}>;
|
|
70
|
+
}
|
|
71
|
+
/** Max or min of a result across combinations, with the combination that produces it. */
|
|
72
|
+
export interface GoverningValue {
|
|
73
|
+
value: number;
|
|
74
|
+
combinationId: string;
|
|
75
|
+
}
|
|
76
|
+
export interface GoverningExtremeValue extends GoverningValue {
|
|
77
|
+
x: number;
|
|
78
|
+
}
|
|
79
|
+
export type Bound<T> = {
|
|
80
|
+
max: T;
|
|
81
|
+
min: T;
|
|
82
|
+
};
|
|
83
|
+
/** Results of one load case or one load combination. */
|
|
84
|
+
export interface FrameCaseResult {
|
|
85
|
+
id: string;
|
|
86
|
+
kind: "case" | "combination";
|
|
87
|
+
name?: string;
|
|
88
|
+
type?: LoadCaseType;
|
|
89
|
+
nodalDisplacements: NodalDisplacement[];
|
|
90
|
+
reactions: NodalReaction[];
|
|
91
|
+
memberEndForces: MemberEndForces[];
|
|
92
|
+
memberDiagrams: MemberDiagram[];
|
|
93
|
+
equilibriumResidual: {
|
|
94
|
+
force: number;
|
|
95
|
+
moment: number;
|
|
96
|
+
};
|
|
97
|
+
warnings: Warnings;
|
|
98
|
+
}
|
|
99
|
+
/** Max/min of every result across a set of combinations, with the governing combination. */
|
|
100
|
+
export interface FrameEnvelope {
|
|
101
|
+
combinationIds: string[];
|
|
102
|
+
nodalDisplacements: ({
|
|
103
|
+
nodeId: FrameId;
|
|
104
|
+
} & Record<"ux" | "uy" | "uz" | "rx" | "ry" | "rz", Bound<GoverningValue>>)[];
|
|
105
|
+
reactions: ({
|
|
106
|
+
nodeId: FrameId;
|
|
107
|
+
} & Record<"fx" | "fy" | "fz" | "mx" | "my" | "mz", Bound<GoverningValue>>)[];
|
|
108
|
+
members: {
|
|
109
|
+
memberId: FrameId;
|
|
110
|
+
extremes: Record<StationComponent, Bound<GoverningExtremeValue>>;
|
|
111
|
+
}[];
|
|
112
|
+
}
|
|
113
|
+
export interface FrameResult {
|
|
114
|
+
cases: Record<string, FrameCaseResult>;
|
|
115
|
+
combinations: Record<string, FrameCaseResult>;
|
|
116
|
+
/** Envelope over all combinations; absent when the model has none. */
|
|
117
|
+
envelope?: FrameEnvelope;
|
|
118
|
+
calculationDetails: {
|
|
119
|
+
nodeCount: number;
|
|
120
|
+
memberCount: number;
|
|
121
|
+
dofCount: number;
|
|
122
|
+
freeDofCount: number;
|
|
123
|
+
profileSize: number;
|
|
124
|
+
loadCaseCount: number;
|
|
125
|
+
combinationCount: number;
|
|
126
|
+
};
|
|
127
|
+
units: {
|
|
128
|
+
force: "kN";
|
|
129
|
+
moment: "kN·m";
|
|
130
|
+
length: "mm";
|
|
131
|
+
rotation: "rad";
|
|
132
|
+
};
|
|
133
|
+
warnings: Warnings;
|
|
134
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"results.type.js","sourceRoot":"","sources":["../../../../src/fea/frame/types/results.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type FrameErrorDetails, type FrameModelIssue } from "../../../core/errors/frame-analysis.error";
|
|
2
|
+
import type { FrameModel } from "../types/model.type";
|
|
3
|
+
/** Builds an issue whose message names where the problem is. */
|
|
4
|
+
export declare const frameIssue: (std: {
|
|
5
|
+
code: number;
|
|
6
|
+
message: string;
|
|
7
|
+
}, details?: FrameErrorDetails) => FrameModelIssue;
|
|
8
|
+
/** Throws the first issue as a `FrameAnalysisError` carrying all of them. */
|
|
9
|
+
export declare const throwIssues: (issues: FrameModelIssue[]) => never;
|
|
10
|
+
/**
|
|
11
|
+
* Checks a frame model without analysing it and returns every problem found, each with the
|
|
12
|
+
* node, member, load case, combination and field it concerns. An empty array means the
|
|
13
|
+
* model can be analysed, apart from an unstable structure (304), which only the solve detects.
|
|
14
|
+
*
|
|
15
|
+
* @param model - The model to check
|
|
16
|
+
* @returns Every problem found (codes 301–303 and 305–314), in model order
|
|
17
|
+
*/
|
|
18
|
+
export declare const validateFrameModel: (model: FrameModel) => FrameModelIssue[];
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateFrameModel = exports.throwIssues = exports.frameIssue = void 0;
|
|
4
|
+
const frame_analysis_error_1 = require("../../../core/errors/frame-analysis.error");
|
|
5
|
+
const beam_3d_stiffness_1 = require("../elements/beam-3d-stiffness");
|
|
6
|
+
const static_condensation_1 = require("../elements/static-condensation");
|
|
7
|
+
const combinations_1 = require("../solver/combinations");
|
|
8
|
+
const DOF_KEYS = ["ux", "uy", "uz", "rx", "ry", "rz"];
|
|
9
|
+
const NODAL_LOAD_KEYS = ["fx", "fy", "fz", "mx", "my", "mz"];
|
|
10
|
+
const SECTION_KEYS = ["E", "G", "A", "I22", "I33", "J"];
|
|
11
|
+
const RELEASE_KEYS = ["u1", "u2", "u3", "r1", "r2", "r3"];
|
|
12
|
+
const DIRECTIONS = new Set(["1", "2", "3", "X", "Y", "Z"]);
|
|
13
|
+
const LOAD_CASE_TYPES = new Set([
|
|
14
|
+
"dead",
|
|
15
|
+
"superDead",
|
|
16
|
+
"live",
|
|
17
|
+
"roofLive",
|
|
18
|
+
"snow",
|
|
19
|
+
"wind",
|
|
20
|
+
"seismic",
|
|
21
|
+
"other",
|
|
22
|
+
]);
|
|
23
|
+
const isFiniteNumber = (v) => typeof v === "number" && Number.isFinite(v);
|
|
24
|
+
const describe = (d) => {
|
|
25
|
+
const parts = [];
|
|
26
|
+
if (d.nodeId !== undefined)
|
|
27
|
+
parts.push(`node "${String(d.nodeId)}"`);
|
|
28
|
+
if (d.memberId !== undefined)
|
|
29
|
+
parts.push(`member "${String(d.memberId)}"`);
|
|
30
|
+
if (d.loadCaseId !== undefined)
|
|
31
|
+
parts.push(`load case "${d.loadCaseId}"`);
|
|
32
|
+
if (d.combinationId !== undefined)
|
|
33
|
+
parts.push(`combination "${d.combinationId}"`);
|
|
34
|
+
if (d.field !== undefined)
|
|
35
|
+
parts.push(`field "${d.field}"`);
|
|
36
|
+
if (d.dof !== undefined)
|
|
37
|
+
parts.push(`DOF ${d.dof}`);
|
|
38
|
+
return parts.length > 0 ? ` [${parts.join(", ")}]` : "";
|
|
39
|
+
};
|
|
40
|
+
/** Builds an issue whose message names where the problem is. */
|
|
41
|
+
const frameIssue = (std, details = {}) => ({ code: std.code, message: std.message + describe(details), details });
|
|
42
|
+
exports.frameIssue = frameIssue;
|
|
43
|
+
/** Throws the first issue as a `FrameAnalysisError` carrying all of them. */
|
|
44
|
+
const throwIssues = (issues) => {
|
|
45
|
+
const first = issues[0];
|
|
46
|
+
throw new frame_analysis_error_1.FrameAnalysisError({ code: first.code, message: first.message }, first.details, issues);
|
|
47
|
+
};
|
|
48
|
+
exports.throwIssues = throwIssues;
|
|
49
|
+
const releasedIndices = (release, offset) => RELEASE_KEYS.flatMap((key, k) => (release?.[key] ? [offset + k] : []));
|
|
50
|
+
/**
|
|
51
|
+
* Checks a frame model without analysing it and returns every problem found, each with the
|
|
52
|
+
* node, member, load case, combination and field it concerns. An empty array means the
|
|
53
|
+
* model can be analysed, apart from an unstable structure (304), which only the solve detects.
|
|
54
|
+
*
|
|
55
|
+
* @param model - The model to check
|
|
56
|
+
* @returns Every problem found (codes 301–303 and 305–314), in model order
|
|
57
|
+
*/
|
|
58
|
+
const validateFrameModel = (model) => {
|
|
59
|
+
const issues = [];
|
|
60
|
+
const add = (std, details = {}) => issues.push((0, exports.frameIssue)(std, details));
|
|
61
|
+
const nodes = Array.isArray(model.nodes) ? model.nodes : [];
|
|
62
|
+
const members = Array.isArray(model.members) ? model.members : [];
|
|
63
|
+
const restraints = Array.isArray(model.restraints) ? model.restraints : [];
|
|
64
|
+
const loadCases = Array.isArray(model.loadCases) ? model.loadCases : [];
|
|
65
|
+
const combinations = Array.isArray(model.combinations) ? model.combinations : [];
|
|
66
|
+
const nodalLoads = Array.isArray(model.nodalLoads) ? model.nodalLoads : [];
|
|
67
|
+
const memberLoads = Array.isArray(model.memberLoads) ? model.memberLoads : [];
|
|
68
|
+
// ---- Ids -------------------------------------------------------------------------
|
|
69
|
+
const duplicates = (ids) => ids.filter((id, i) => ids.indexOf(id) !== i);
|
|
70
|
+
for (const nodeId of new Set(duplicates(nodes.map((n) => n.id)))) {
|
|
71
|
+
add(frame_analysis_error_1.FrameErrors.DUPLICATE_ID, { nodeId, field: "id" });
|
|
72
|
+
}
|
|
73
|
+
for (const memberId of new Set(duplicates(members.map((m) => m.id)))) {
|
|
74
|
+
add(frame_analysis_error_1.FrameErrors.DUPLICATE_ID, { memberId, field: "id" });
|
|
75
|
+
}
|
|
76
|
+
for (const nodeId of new Set(duplicates(restraints.map((r) => r.nodeId)))) {
|
|
77
|
+
add(frame_analysis_error_1.FrameErrors.DUPLICATE_ID, { nodeId, field: "restraints" });
|
|
78
|
+
}
|
|
79
|
+
const caseIds = new Set(loadCases.map((c) => c.id));
|
|
80
|
+
const combinationIds = new Set(combinations.map((c) => c.id));
|
|
81
|
+
for (const id of new Set(duplicates([...loadCases.map((c) => c.id), ...combinations.map((c) => c.id)]))) {
|
|
82
|
+
add(frame_analysis_error_1.FrameErrors.DUPLICATE_ID, combinationIds.has(id) && !caseIds.has(id) ? { combinationId: id } : { loadCaseId: id });
|
|
83
|
+
}
|
|
84
|
+
// ---- Nodes -----------------------------------------------------------------------
|
|
85
|
+
const nodeById = new Map();
|
|
86
|
+
const validNode = new Set();
|
|
87
|
+
for (const node of nodes) {
|
|
88
|
+
nodeById.set(node.id, node);
|
|
89
|
+
let ok = true;
|
|
90
|
+
for (const field of ["x", "y", "z"]) {
|
|
91
|
+
if (!isFiniteNumber(node[field])) {
|
|
92
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { nodeId: node.id, field });
|
|
93
|
+
ok = false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (ok)
|
|
97
|
+
validNode.add(node.id);
|
|
98
|
+
}
|
|
99
|
+
// ---- Members ---------------------------------------------------------------------
|
|
100
|
+
const memberLength = new Map(); // only for members whose geometry is valid
|
|
101
|
+
for (const member of members) {
|
|
102
|
+
const at = { memberId: member.id };
|
|
103
|
+
let geometryOk = true;
|
|
104
|
+
for (const field of ["startNodeId", "endNodeId"]) {
|
|
105
|
+
if (!nodeById.has(member[field])) {
|
|
106
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_NODE_REFERENCE, { ...at, field });
|
|
107
|
+
geometryOk = false;
|
|
108
|
+
}
|
|
109
|
+
else if (!validNode.has(member[field])) {
|
|
110
|
+
geometryOk = false; // reported on the node
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
const section = member.section ?? {};
|
|
114
|
+
let sectionOk = true;
|
|
115
|
+
for (const field of SECTION_KEYS) {
|
|
116
|
+
const v = section[field];
|
|
117
|
+
if (!isFiniteNumber(v) || v <= 0) {
|
|
118
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_SECTION_PROPERTIES, { ...at, field });
|
|
119
|
+
sectionOk = false;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (section.unitWeight !== undefined &&
|
|
123
|
+
(!isFiniteNumber(section.unitWeight) || section.unitWeight < 0)) {
|
|
124
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_SECTION_PROPERTIES, { ...at, field: "unitWeight" });
|
|
125
|
+
}
|
|
126
|
+
if (member.angle !== undefined && !isFiniteNumber(member.angle)) {
|
|
127
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field: "angle" });
|
|
128
|
+
}
|
|
129
|
+
if (!geometryOk)
|
|
130
|
+
continue;
|
|
131
|
+
const a = nodeById.get(member.startNodeId);
|
|
132
|
+
const b = nodeById.get(member.endNodeId);
|
|
133
|
+
const L = Math.hypot(b.x - a.x, b.y - a.y, b.z - a.z);
|
|
134
|
+
if (!(L > 0)) {
|
|
135
|
+
add(frame_analysis_error_1.FrameErrors.ZERO_LENGTH_MEMBER, at);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
memberLength.set(member.id, L);
|
|
139
|
+
const released = [
|
|
140
|
+
...releasedIndices(member.releases?.start, 0),
|
|
141
|
+
...releasedIndices(member.releases?.end, 6),
|
|
142
|
+
];
|
|
143
|
+
if (sectionOk && released.length > 0) {
|
|
144
|
+
const { E, G, A, I22, I33, J } = section;
|
|
145
|
+
try {
|
|
146
|
+
(0, static_condensation_1.condenseMember)((0, beam_3d_stiffness_1.beam3dLocalStiffnessRightHanded)(E, G, A, I22, I33, J, L), released);
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_RELEASE, at);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// ---- Restraints ------------------------------------------------------------------
|
|
154
|
+
let anyRestrained = false;
|
|
155
|
+
for (const restraint of restraints) {
|
|
156
|
+
if (!nodeById.has(restraint.nodeId)) {
|
|
157
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_NODE_REFERENCE, { nodeId: restraint.nodeId, field: "restraints" });
|
|
158
|
+
}
|
|
159
|
+
for (const field of DOF_KEYS) {
|
|
160
|
+
const v = restraint[field];
|
|
161
|
+
if (v === undefined || v === false)
|
|
162
|
+
continue;
|
|
163
|
+
if (v === true) {
|
|
164
|
+
anyRestrained = true;
|
|
165
|
+
}
|
|
166
|
+
else if (isFiniteNumber(v) && v >= 0) {
|
|
167
|
+
if (v > 0)
|
|
168
|
+
anyRestrained = true;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { nodeId: restraint.nodeId, field });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (!anyRestrained)
|
|
176
|
+
add(frame_analysis_error_1.FrameErrors.NO_RESTRAINTS);
|
|
177
|
+
// ---- Load cases ------------------------------------------------------------------
|
|
178
|
+
if (loadCases.length === 0)
|
|
179
|
+
add(frame_analysis_error_1.FrameErrors.NO_LOAD_CASES);
|
|
180
|
+
for (const loadCase of loadCases) {
|
|
181
|
+
const at = { loadCaseId: loadCase.id };
|
|
182
|
+
if (loadCase.type !== undefined && !LOAD_CASE_TYPES.has(loadCase.type)) {
|
|
183
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field: "type" });
|
|
184
|
+
}
|
|
185
|
+
if (loadCase.selfWeight === undefined)
|
|
186
|
+
continue;
|
|
187
|
+
if (!isFiniteNumber(loadCase.selfWeight)) {
|
|
188
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_LOAD_FACTOR, { ...at, field: "selfWeight" });
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (loadCase.selfWeight !== 0) {
|
|
192
|
+
for (const member of members) {
|
|
193
|
+
if (member.section?.unitWeight === undefined) {
|
|
194
|
+
add(frame_analysis_error_1.FrameErrors.MISSING_UNIT_WEIGHT, { ...at, memberId: member.id, field: "unitWeight" });
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// ---- Loads -----------------------------------------------------------------------
|
|
200
|
+
for (const load of nodalLoads) {
|
|
201
|
+
const at = { loadCaseId: load.loadCase, nodeId: load.nodeId };
|
|
202
|
+
if (!caseIds.has(load.loadCase))
|
|
203
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_LOAD_CASE, { ...at, field: "loadCase" });
|
|
204
|
+
if (!nodeById.has(load.nodeId))
|
|
205
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_NODE_REFERENCE, { ...at, field: "nodeId" });
|
|
206
|
+
for (const field of NODAL_LOAD_KEYS) {
|
|
207
|
+
if (load[field] !== undefined && !isFiniteNumber(load[field])) {
|
|
208
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field });
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (const load of memberLoads) {
|
|
213
|
+
const at = { loadCaseId: load.loadCase, memberId: load.memberId };
|
|
214
|
+
if (!caseIds.has(load.loadCase))
|
|
215
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_LOAD_CASE, { ...at, field: "loadCase" });
|
|
216
|
+
const memberKnown = members.some((m) => m.id === load.memberId);
|
|
217
|
+
if (!memberKnown)
|
|
218
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_NODE_REFERENCE, { ...at, field: "memberId" });
|
|
219
|
+
if (!DIRECTIONS.has(load.direction))
|
|
220
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field: "direction" });
|
|
221
|
+
const L = memberLength.get(load.memberId);
|
|
222
|
+
if (load.type === "udl") {
|
|
223
|
+
let ok = true;
|
|
224
|
+
for (const field of ["w", "start", "end"]) {
|
|
225
|
+
const v = load[field];
|
|
226
|
+
if ((field === "w" || v !== undefined) && !isFiniteNumber(v)) {
|
|
227
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field });
|
|
228
|
+
ok = false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (ok && L !== undefined) {
|
|
232
|
+
const start = load.start ?? 0;
|
|
233
|
+
const end = load.end ?? L;
|
|
234
|
+
if (!(start >= 0 && end <= L && start < end))
|
|
235
|
+
add(frame_analysis_error_1.FrameErrors.LOAD_OUTSIDE_MEMBER, at);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else if (load.type === "point") {
|
|
239
|
+
let ok = true;
|
|
240
|
+
for (const field of ["P", "a"]) {
|
|
241
|
+
if (!isFiniteNumber(load[field])) {
|
|
242
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field });
|
|
243
|
+
ok = false;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (ok && L !== undefined && !(load.a >= 0 && load.a <= L)) {
|
|
247
|
+
add(frame_analysis_error_1.FrameErrors.LOAD_OUTSIDE_MEMBER, at);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_INPUT_VALUE, { ...at, field: "type" });
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// ---- Combinations ----------------------------------------------------------------
|
|
255
|
+
let referencesOk = true;
|
|
256
|
+
for (const combination of combinations) {
|
|
257
|
+
const at = { combinationId: combination.id };
|
|
258
|
+
if (!Array.isArray(combination.terms) || combination.terms.length === 0) {
|
|
259
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_LOAD_FACTOR, { ...at, field: "terms" });
|
|
260
|
+
referencesOk = false;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
for (const term of combination.terms) {
|
|
264
|
+
if (!isFiniteNumber(term.factor)) {
|
|
265
|
+
add(frame_analysis_error_1.FrameErrors.INVALID_LOAD_FACTOR, { ...at, field: "factor" });
|
|
266
|
+
referencesOk = false;
|
|
267
|
+
}
|
|
268
|
+
const caseRef = "case" in term ? term.case : undefined;
|
|
269
|
+
const comboRef = "combination" in term ? term.combination : undefined;
|
|
270
|
+
if ((caseRef === undefined) === (comboRef === undefined)) {
|
|
271
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_LOAD_CASE, { ...at, field: "terms" });
|
|
272
|
+
referencesOk = false;
|
|
273
|
+
}
|
|
274
|
+
else if (caseRef !== undefined && !caseIds.has(caseRef)) {
|
|
275
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_LOAD_CASE, { ...at, loadCaseId: caseRef, field: "case" });
|
|
276
|
+
referencesOk = false;
|
|
277
|
+
}
|
|
278
|
+
else if (comboRef !== undefined && !combinationIds.has(comboRef)) {
|
|
279
|
+
add(frame_analysis_error_1.FrameErrors.UNKNOWN_LOAD_CASE, { ...at, field: "combination" });
|
|
280
|
+
referencesOk = false;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
if (referencesOk && combinations.length > 0) {
|
|
285
|
+
try {
|
|
286
|
+
(0, combinations_1.resolveCombinations)(combinations, caseIds);
|
|
287
|
+
}
|
|
288
|
+
catch (e) {
|
|
289
|
+
if (e instanceof frame_analysis_error_1.FrameAnalysisError)
|
|
290
|
+
issues.push({ ...(0, exports.frameIssue)(e, e.details) });
|
|
291
|
+
else
|
|
292
|
+
throw e;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
return issues;
|
|
296
|
+
};
|
|
297
|
+
exports.validateFrameModel = validateFrameModel;
|
|
298
|
+
//# sourceMappingURL=validate-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-model.js","sourceRoot":"","sources":["../../../../src/fea/frame/validation/validate-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./frame";
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Frame analysis
|
|
18
|
+
__exportStar(require("./frame"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fea/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,0CAAwB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export { rectBeamMomentCapacity, rectBeamBarLayout, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, concreteBeta, concreteElasticModulus, psiToMpa, } from "./rc";
|
|
2
|
-
export {
|
|
3
|
-
export
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
1
|
+
export { rectBeamMomentCapacity, rectBeamBarLayout, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, concreteBeta, concreteElasticModulus, psiToMpa, rectBeamToSectionProperties, } from "./rc";
|
|
2
|
+
export type { SectionPropertiesOptions } from "./rc";
|
|
3
|
+
export { analyzeFrame, createFrameAnalysis, validateFrameModel, beam3dLocalStiffness, beam3dLocalStiffnessRightHanded, memberAxes, memberDemandEnvelope, } from "./fea";
|
|
4
|
+
export type { AnalyzeFrameOptions, FrameAnalysis, FrameId, FrameNode, DofRestraint, Restraint, MemberEndRelease, Member, NodalLoad, LoadDirection, UniformMemberLoad, PointMemberLoad, MemberLoad, LoadCaseType, LoadCase, CombinationTerm, LoadCombination, FrameModel, NodalDisplacement, NodalReaction, MemberEndForce, MemberEndForces, MemberStation, StationComponent, ExtremeValue, MemberDiagram, GoverningValue, GoverningExtremeValue, Bound, FrameCaseResult, FrameEnvelope, FrameResult, MemberDemandEnvelope, DemandEnvelopeOptions, } from "./fea";
|
|
5
|
+
export { calculateSteelJacketedBeamMomentCapacity, plateInterfaceShearFlow, boltShearCapacity, plateInterfaceBoltRequirement, sidePlateShearCapacityByWebYielding, sidePlateShearCapacityByTensionTie, compareSidePlateShearCapacity, } from "./strengthening";
|
|
6
|
+
export type { RectBeamSection, RectSinglyBeamSection, RectDoublyBeamSection, RectShearSection, StirrupShearSection, ShearReinforcementCheckInput, RebarGroupInput, RectBeamBarLayoutInput, SteelJacketedProps, SectionState, PlateShearFlowInput, BoltProps, PlateInterfaceBoltInput, SidePlateConfiguration, SidePlateAnchorage, SidePlateShearProps, SectionProperties, FrameErrorDetails, FrameModelIssue, Warnings, calculationResult, unit, } from "./core";
|
|
7
|
+
export { isSinglyReinforced, hasTopPlate, hasBottomPlate, hasSidePlate, FLEXURAL_STRENGTH_REDUCTION_FACTOR, CONCRETE_ULTIMATE_STRAIN, SHEAR_STRENGTH_REDUCTION_FACTOR, ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR, MAX_PLATE_BOLT_SPACING, PLATE_SHEAR_YIELD_COEFFICIENT, SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT, SIDE_PLATE_REDUCTION_FACTOR_PSI, CONCRETE_POISSON_RATIO, CONCRETE_UNIT_WEIGHT, BEAM_INERTIA_MODIFIER, COLUMN_INERTIA_MODIFIER, VERTICAL_MEMBER_TOLERANCE, SINGULARITY_TOLERANCE, EQUILIBRIUM_TOLERANCE, RCDesignError, Errors, FrameAnalysisError, FrameErrors, } from "./core";
|
|
8
|
+
export { solveQuadratic, roundToDecimalPlaces, mergeWarnings, zeros, identity, transpose, matMul, matVec, choleskyFactor, choleskySolveFactored, choleskySolve, solveLinearSystem, createSkyline, skylineAdd, skylineGet, skylineSize, skylineFactor, skylineSolve, reverseCuthillMcKee, } from "./utils";
|
|
9
|
+
export type { Matrix, SkylineMatrix } from "./utils";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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;
|
|
3
|
+
exports.zeros = exports.mergeWarnings = exports.roundToDecimalPlaces = exports.solveQuadratic = exports.FrameErrors = exports.FrameAnalysisError = exports.Errors = exports.RCDesignError = exports.EQUILIBRIUM_TOLERANCE = exports.SINGULARITY_TOLERANCE = exports.VERTICAL_MEMBER_TOLERANCE = exports.COLUMN_INERTIA_MODIFIER = exports.BEAM_INERTIA_MODIFIER = exports.CONCRETE_UNIT_WEIGHT = exports.CONCRETE_POISSON_RATIO = exports.SIDE_PLATE_REDUCTION_FACTOR_PSI = exports.SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT = exports.PLATE_SHEAR_YIELD_COEFFICIENT = 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.hasSidePlate = exports.hasBottomPlate = exports.hasTopPlate = exports.isSinglyReinforced = exports.compareSidePlateShearCapacity = exports.sidePlateShearCapacityByTensionTie = exports.sidePlateShearCapacityByWebYielding = exports.plateInterfaceBoltRequirement = exports.boltShearCapacity = exports.plateInterfaceShearFlow = exports.calculateSteelJacketedBeamMomentCapacity = exports.memberDemandEnvelope = exports.memberAxes = exports.beam3dLocalStiffnessRightHanded = exports.beam3dLocalStiffness = exports.validateFrameModel = exports.createFrameAnalysis = exports.analyzeFrame = exports.rectBeamToSectionProperties = exports.psiToMpa = exports.concreteElasticModulus = exports.concreteBeta = exports.checkStirrupRequirement = exports.stirrupShearCapacity = exports.concreteShearCapacity = exports.rectBeamBarLayout = exports.rectBeamMomentCapacity = void 0;
|
|
4
|
+
exports.reverseCuthillMcKee = exports.skylineSolve = exports.skylineFactor = exports.skylineSize = exports.skylineGet = exports.skylineAdd = exports.createSkyline = exports.solveLinearSystem = exports.choleskySolve = exports.choleskySolveFactored = exports.choleskyFactor = exports.matVec = exports.matMul = exports.transpose = exports.identity = void 0;
|
|
4
5
|
// RC Beam Design
|
|
5
6
|
var rc_1 = require("./rc");
|
|
6
7
|
Object.defineProperty(exports, "rectBeamMomentCapacity", { enumerable: true, get: function () { return rc_1.rectBeamMomentCapacity; } });
|
|
@@ -11,26 +12,68 @@ Object.defineProperty(exports, "checkStirrupRequirement", { enumerable: true, ge
|
|
|
11
12
|
Object.defineProperty(exports, "concreteBeta", { enumerable: true, get: function () { return rc_1.concreteBeta; } });
|
|
12
13
|
Object.defineProperty(exports, "concreteElasticModulus", { enumerable: true, get: function () { return rc_1.concreteElasticModulus; } });
|
|
13
14
|
Object.defineProperty(exports, "psiToMpa", { enumerable: true, get: function () { return rc_1.psiToMpa; } });
|
|
15
|
+
Object.defineProperty(exports, "rectBeamToSectionProperties", { enumerable: true, get: function () { return rc_1.rectBeamToSectionProperties; } });
|
|
16
|
+
// FEA — frame analysis
|
|
17
|
+
var fea_1 = require("./fea");
|
|
18
|
+
Object.defineProperty(exports, "analyzeFrame", { enumerable: true, get: function () { return fea_1.analyzeFrame; } });
|
|
19
|
+
Object.defineProperty(exports, "createFrameAnalysis", { enumerable: true, get: function () { return fea_1.createFrameAnalysis; } });
|
|
20
|
+
Object.defineProperty(exports, "validateFrameModel", { enumerable: true, get: function () { return fea_1.validateFrameModel; } });
|
|
21
|
+
Object.defineProperty(exports, "beam3dLocalStiffness", { enumerable: true, get: function () { return fea_1.beam3dLocalStiffness; } });
|
|
22
|
+
Object.defineProperty(exports, "beam3dLocalStiffnessRightHanded", { enumerable: true, get: function () { return fea_1.beam3dLocalStiffnessRightHanded; } });
|
|
23
|
+
Object.defineProperty(exports, "memberAxes", { enumerable: true, get: function () { return fea_1.memberAxes; } });
|
|
24
|
+
Object.defineProperty(exports, "memberDemandEnvelope", { enumerable: true, get: function () { return fea_1.memberDemandEnvelope; } });
|
|
14
25
|
// Strengthening
|
|
15
26
|
var strengthening_1 = require("./strengthening");
|
|
16
27
|
Object.defineProperty(exports, "calculateSteelJacketedBeamMomentCapacity", { enumerable: true, get: function () { return strengthening_1.calculateSteelJacketedBeamMomentCapacity; } });
|
|
17
28
|
Object.defineProperty(exports, "plateInterfaceShearFlow", { enumerable: true, get: function () { return strengthening_1.plateInterfaceShearFlow; } });
|
|
18
29
|
Object.defineProperty(exports, "boltShearCapacity", { enumerable: true, get: function () { return strengthening_1.boltShearCapacity; } });
|
|
19
30
|
Object.defineProperty(exports, "plateInterfaceBoltRequirement", { enumerable: true, get: function () { return strengthening_1.plateInterfaceBoltRequirement; } });
|
|
31
|
+
Object.defineProperty(exports, "sidePlateShearCapacityByWebYielding", { enumerable: true, get: function () { return strengthening_1.sidePlateShearCapacityByWebYielding; } });
|
|
32
|
+
Object.defineProperty(exports, "sidePlateShearCapacityByTensionTie", { enumerable: true, get: function () { return strengthening_1.sidePlateShearCapacityByTensionTie; } });
|
|
33
|
+
Object.defineProperty(exports, "compareSidePlateShearCapacity", { enumerable: true, get: function () { return strengthening_1.compareSidePlateShearCapacity; } });
|
|
20
34
|
var core_1 = require("./core");
|
|
21
35
|
Object.defineProperty(exports, "isSinglyReinforced", { enumerable: true, get: function () { return core_1.isSinglyReinforced; } });
|
|
22
36
|
Object.defineProperty(exports, "hasTopPlate", { enumerable: true, get: function () { return core_1.hasTopPlate; } });
|
|
23
37
|
Object.defineProperty(exports, "hasBottomPlate", { enumerable: true, get: function () { return core_1.hasBottomPlate; } });
|
|
38
|
+
Object.defineProperty(exports, "hasSidePlate", { enumerable: true, get: function () { return core_1.hasSidePlate; } });
|
|
24
39
|
Object.defineProperty(exports, "FLEXURAL_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.FLEXURAL_STRENGTH_REDUCTION_FACTOR; } });
|
|
25
40
|
Object.defineProperty(exports, "CONCRETE_ULTIMATE_STRAIN", { enumerable: true, get: function () { return core_1.CONCRETE_ULTIMATE_STRAIN; } });
|
|
26
41
|
Object.defineProperty(exports, "SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.SHEAR_STRENGTH_REDUCTION_FACTOR; } });
|
|
27
42
|
Object.defineProperty(exports, "ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR", { enumerable: true, get: function () { return core_1.ANCHOR_SHEAR_STRENGTH_REDUCTION_FACTOR; } });
|
|
28
43
|
Object.defineProperty(exports, "MAX_PLATE_BOLT_SPACING", { enumerable: true, get: function () { return core_1.MAX_PLATE_BOLT_SPACING; } });
|
|
44
|
+
Object.defineProperty(exports, "PLATE_SHEAR_YIELD_COEFFICIENT", { enumerable: true, get: function () { return core_1.PLATE_SHEAR_YIELD_COEFFICIENT; } });
|
|
45
|
+
Object.defineProperty(exports, "SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT", { enumerable: true, get: function () { return core_1.SIDE_PLATE_EFFECTIVE_STRAIN_LIMIT; } });
|
|
46
|
+
Object.defineProperty(exports, "SIDE_PLATE_REDUCTION_FACTOR_PSI", { enumerable: true, get: function () { return core_1.SIDE_PLATE_REDUCTION_FACTOR_PSI; } });
|
|
47
|
+
Object.defineProperty(exports, "CONCRETE_POISSON_RATIO", { enumerable: true, get: function () { return core_1.CONCRETE_POISSON_RATIO; } });
|
|
48
|
+
Object.defineProperty(exports, "CONCRETE_UNIT_WEIGHT", { enumerable: true, get: function () { return core_1.CONCRETE_UNIT_WEIGHT; } });
|
|
49
|
+
Object.defineProperty(exports, "BEAM_INERTIA_MODIFIER", { enumerable: true, get: function () { return core_1.BEAM_INERTIA_MODIFIER; } });
|
|
50
|
+
Object.defineProperty(exports, "COLUMN_INERTIA_MODIFIER", { enumerable: true, get: function () { return core_1.COLUMN_INERTIA_MODIFIER; } });
|
|
51
|
+
Object.defineProperty(exports, "VERTICAL_MEMBER_TOLERANCE", { enumerable: true, get: function () { return core_1.VERTICAL_MEMBER_TOLERANCE; } });
|
|
52
|
+
Object.defineProperty(exports, "SINGULARITY_TOLERANCE", { enumerable: true, get: function () { return core_1.SINGULARITY_TOLERANCE; } });
|
|
53
|
+
Object.defineProperty(exports, "EQUILIBRIUM_TOLERANCE", { enumerable: true, get: function () { return core_1.EQUILIBRIUM_TOLERANCE; } });
|
|
29
54
|
Object.defineProperty(exports, "RCDesignError", { enumerable: true, get: function () { return core_1.RCDesignError; } });
|
|
30
55
|
Object.defineProperty(exports, "Errors", { enumerable: true, get: function () { return core_1.Errors; } });
|
|
56
|
+
Object.defineProperty(exports, "FrameAnalysisError", { enumerable: true, get: function () { return core_1.FrameAnalysisError; } });
|
|
57
|
+
Object.defineProperty(exports, "FrameErrors", { enumerable: true, get: function () { return core_1.FrameErrors; } });
|
|
31
58
|
// Utilities
|
|
32
59
|
var utils_1 = require("./utils");
|
|
33
60
|
Object.defineProperty(exports, "solveQuadratic", { enumerable: true, get: function () { return utils_1.solveQuadratic; } });
|
|
34
61
|
Object.defineProperty(exports, "roundToDecimalPlaces", { enumerable: true, get: function () { return utils_1.roundToDecimalPlaces; } });
|
|
35
62
|
Object.defineProperty(exports, "mergeWarnings", { enumerable: true, get: function () { return utils_1.mergeWarnings; } });
|
|
63
|
+
Object.defineProperty(exports, "zeros", { enumerable: true, get: function () { return utils_1.zeros; } });
|
|
64
|
+
Object.defineProperty(exports, "identity", { enumerable: true, get: function () { return utils_1.identity; } });
|
|
65
|
+
Object.defineProperty(exports, "transpose", { enumerable: true, get: function () { return utils_1.transpose; } });
|
|
66
|
+
Object.defineProperty(exports, "matMul", { enumerable: true, get: function () { return utils_1.matMul; } });
|
|
67
|
+
Object.defineProperty(exports, "matVec", { enumerable: true, get: function () { return utils_1.matVec; } });
|
|
68
|
+
Object.defineProperty(exports, "choleskyFactor", { enumerable: true, get: function () { return utils_1.choleskyFactor; } });
|
|
69
|
+
Object.defineProperty(exports, "choleskySolveFactored", { enumerable: true, get: function () { return utils_1.choleskySolveFactored; } });
|
|
70
|
+
Object.defineProperty(exports, "choleskySolve", { enumerable: true, get: function () { return utils_1.choleskySolve; } });
|
|
71
|
+
Object.defineProperty(exports, "solveLinearSystem", { enumerable: true, get: function () { return utils_1.solveLinearSystem; } });
|
|
72
|
+
Object.defineProperty(exports, "createSkyline", { enumerable: true, get: function () { return utils_1.createSkyline; } });
|
|
73
|
+
Object.defineProperty(exports, "skylineAdd", { enumerable: true, get: function () { return utils_1.skylineAdd; } });
|
|
74
|
+
Object.defineProperty(exports, "skylineGet", { enumerable: true, get: function () { return utils_1.skylineGet; } });
|
|
75
|
+
Object.defineProperty(exports, "skylineSize", { enumerable: true, get: function () { return utils_1.skylineSize; } });
|
|
76
|
+
Object.defineProperty(exports, "skylineFactor", { enumerable: true, get: function () { return utils_1.skylineFactor; } });
|
|
77
|
+
Object.defineProperty(exports, "skylineSolve", { enumerable: true, get: function () { return utils_1.skylineSolve; } });
|
|
78
|
+
Object.defineProperty(exports, "reverseCuthillMcKee", { enumerable: true, get: function () { return utils_1.reverseCuthillMcKee; } });
|
|
36
79
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,iBAAiB;AACjB,2BAUc;AATZ,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;AACR,iHAAA,2BAA2B,OAAA;AAI7B,uBAAuB;AACvB,6BAQe;AAPb,mGAAA,YAAY,OAAA;AACZ,0GAAA,mBAAmB,OAAA;AACnB,yGAAA,kBAAkB,OAAA;AAClB,2GAAA,oBAAoB,OAAA;AACpB,sHAAA,+BAA+B,OAAA;AAC/B,iGAAA,UAAU,OAAA;AACV,2GAAA,oBAAoB,OAAA;AAuCtB,gBAAgB;AAChB,iDAQyB;AAPvB,yIAAA,wCAAwC,OAAA;AACxC,wHAAA,uBAAuB,OAAA;AACvB,kHAAA,iBAAiB,OAAA;AACjB,8HAAA,6BAA6B,OAAA;AAC7B,oIAAA,mCAAmC,OAAA;AACnC,mIAAA,kCAAkC,OAAA;AAClC,8HAAA,6BAA6B,OAAA;AA6B/B,+BAwBgB;AAvBd,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AACX,sGAAA,cAAc,OAAA;AACd,oGAAA,YAAY,OAAA;AACZ,0HAAA,kCAAkC,OAAA;AAClC,gHAAA,wBAAwB,OAAA;AACxB,uHAAA,+BAA+B,OAAA;AAC/B,8HAAA,sCAAsC,OAAA;AACtC,8GAAA,sBAAsB,OAAA;AACtB,qHAAA,6BAA6B,OAAA;AAC7B,yHAAA,iCAAiC,OAAA;AACjC,uHAAA,+BAA+B,OAAA;AAC/B,8GAAA,sBAAsB,OAAA;AACtB,4GAAA,oBAAoB,OAAA;AACpB,6GAAA,qBAAqB,OAAA;AACrB,+GAAA,uBAAuB,OAAA;AACvB,iHAAA,yBAAyB,OAAA;AACzB,6GAAA,qBAAqB,OAAA;AACrB,6GAAA,qBAAqB,OAAA;AACrB,qGAAA,aAAa,OAAA;AACb,8FAAA,MAAM,OAAA;AACN,0GAAA,kBAAkB,OAAA;AAClB,mGAAA,WAAW,OAAA;AAGb,YAAY;AACZ,iCAoBiB;AAnBf,uGAAA,cAAc,OAAA;AACd,6GAAA,oBAAoB,OAAA;AACpB,sGAAA,aAAa,OAAA;AACb,8FAAA,KAAK,OAAA;AACL,iGAAA,QAAQ,OAAA;AACR,kGAAA,SAAS,OAAA;AACT,+FAAA,MAAM,OAAA;AACN,+FAAA,MAAM,OAAA;AACN,uGAAA,cAAc,OAAA;AACd,8GAAA,qBAAqB,OAAA;AACrB,sGAAA,aAAa,OAAA;AACb,0GAAA,iBAAiB,OAAA;AACjB,sGAAA,aAAa,OAAA;AACb,mGAAA,UAAU,OAAA;AACV,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,4GAAA,mBAAmB,OAAA"}
|
package/dist/rc/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { rectBeamMomentCapacity, concreteShearCapacity, stirrupShearCapacity, checkStirrupRequirement, } from "./rc-beam-design";
|
|
2
2
|
export { concreteBeta, concreteElasticModulus, psiToMpa } from "./general";
|
|
3
3
|
export { rectBeamBarLayout } from "./rc-bar-layout";
|
|
4
|
+
export { rectBeamToSectionProperties } from "./rc-section-properties";
|
|
5
|
+
export type { SectionPropertiesOptions } from "./rc-section-properties";
|