Skip to content

Commit

Permalink
SecBuildHの断面性能に断面二次半径と断面係数を追加
Browse files Browse the repository at this point in the history
  • Loading branch information
st-func committed Feb 14, 2024
1 parent 38bbece commit 7816f96
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/constant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@ export const STEEL_DENSITY: number = 7850.0;
*/
export const enum SecPropertyType {
Area = "断面積",
ElasticModulusY = "断面係数Y",
ElasticModulusZ = "断面係数Z",
MassPerMetre = "単位質量",
RadiusOfGyrationY = "断面二次半径Y",
RadiusOfGyrationZ = "断面二次半径Z",
SecondMomentOfAreaY = "断面二次モーメントY",
SecondMomentOfAreaZ = "断面二次モーメントZ",
}
44 changes: 42 additions & 2 deletions src/sec/build-h.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,54 @@ test("ビルドHのA", () => {
);
});

test("ビルドHのZY", () => {
const ZY = 1.55203645833333e-2;
const NUM_DIGITS = 16;
expect(SecBuildH.elasticModulusY(H.a, H.b, H.t1, H.t2)).toBeCloseTo(
ZY,
NUM_DIGITS
);
expect(
SecBuildH.property(SecPropertyType.ElasticModulusY, H.a, H.b, H.t1, H.t2)
).toBeCloseTo(ZY, NUM_DIGITS);
});

test("ビルドHのZZ", () => {
const ZZ = 1.3366199375e-3;
const NUM_DIGITS = 17;
expect(SecBuildH.elasticModulusZ(H.a, H.b, H.t1, H.t2)).toBeCloseTo(
ZZ,
NUM_DIGITS
);
expect(
SecBuildH.property(SecPropertyType.ElasticModulusZ, H.a, H.b, H.t1, H.t2)
).toBeCloseTo(ZZ, NUM_DIGITS);
});

test("ビルドHの単位質量", () => {
const M = 328.5225;
expect(
SecBuildH.property(SecPropertyType.MassPerMetre, H.a, H.b, H.t1, H.t2)
).toBe(M);
});

test("ビルドHのIy", () => {
test("ビルドHのiY", () => {
const IY = 4.71714095162177e-1;
const NUM_DIGITS = 15;
expect(
SecBuildH.property(SecPropertyType.RadiusOfGyrationY, H.a, H.b, H.t1, H.t2)
).toBeCloseTo(IY, NUM_DIGITS);
});

test("ビルドHのiZ", () => {
const IZ = 7.99229000487988e-2;
const NUM_DIGITS = 16;
expect(
SecBuildH.property(SecPropertyType.RadiusOfGyrationZ, H.a, H.b, H.t1, H.t2)
).toBeCloseTo(IZ, NUM_DIGITS);
});

test("ビルドHのIY", () => {
const IY = 9.31221875e-3;
const NUM_DIGITS = 17;
expect(SecBuildH.secondMomentOfAreaY(H.a, H.b, H.t1, H.t2)).toBeCloseTo(
Expand All @@ -50,7 +90,7 @@ test("ビルドHのIy", () => {
).toBeCloseTo(IY, NUM_DIGITS);
});

test("ビルドHのIz", () => {
test("ビルドHのIZ", () => {
const IZ = 2.673239875e-4;
const NUM_DIGITS = 18;
expect(SecBuildH.secondMomentOfAreaZ(H.a, H.b, H.t1, H.t2)).toBeCloseTo(
Expand Down
56 changes: 50 additions & 6 deletions src/sec/build-h.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ export class SecBuildH {

/**
* 組立H形鋼の断面積
* 根拠:建築構造ポケットブック第6版 p.34
* @param a 成 A
* @param b フランジ幅 B
* @param t1 ウェブ厚 t1
Expand All @@ -47,37 +48,66 @@ export class SecBuildH {
static area(a: number, b: number, t1: number, t2: number): number {
return a * b - (a - 2 * t2) * (b - t1);
}

/**
* 組立H形鋼の断面係数(Y軸まわり)
* (根拠:建築構造ポケットブック第6版 p.34)
* @param a 成 A
* @param b フランジ幅 B
* @param t1 ウェブ厚 t1
* @param t2 フランジ厚 t2
* @returns 断面係数(Y軸まわり) ZY
*/
static elasticModulusY(a: number, b: number, t1: number, t2: number): number {
return (1.0 / (6.0 * a)) * (b * a ** 3 - (b - t1) * (a - 2 * t2) ** 3);
}

/**
* 組立H形鋼の断面係数(Z軸まわり)
* (根拠:建築構造ポケットブック第6版 p.34)
* @param a 成 A
* @param b フランジ幅 B
* @param t1 ウェブ厚 t1
* @param t2 フランジ厚 t2
* @returns 断面係数(Z軸まわり) ZZ
*/
static elasticModulusZ(a: number, b: number, t1: number, t2: number): number {
return (1.0 / (6.0 * b)) * (2 * t2 * b ** 3 + (a - 2 * t2) * t1 ** 3);
}

/**
* 組立H形鋼の断面二次モーメント(強軸)
* 組立H形鋼の断面二次モーメント(Y軸まわり)
* (根拠:建築構造ポケットブック第6版 p.34)
* @param a 成 A
* @param b フランジ幅 B
* @param t1 ウェブ厚 t1
* @param t2 フランジ厚 t2
* @returns 断面二次モーメント(強軸)Iy
* @returns 断面二次モーメント(Y軸まわり)IY
*/
static secondMomentOfAreaY(
a: number,
b: number,
t1: number,
t2: number
): number {
return (b * a ** 3 - (b - t1) * (a - 2 * t2) ** 3) / 12.0;
return (1.0 / 12.0) * (b * a ** 3 - (b - t1) * (a - 2 * t2) ** 3);
}
/**
* 組立H形鋼の断面二次モーメント(弱軸)
* 組立H形鋼の断面二次モーメント(Z軸まわり)
* (根拠:建築構造ポケットブック第6版 p.34)
* @param a 成 A
* @param b フランジ幅 B
* @param t1 ウェブ厚 t1
* @param t2 フランジ厚 t2
* @returns 断面二次モーメント(弱軸) Iz
* @returns 断面二次モーメント(Z軸まわり) IZ
*/
static secondMomentOfAreaZ(
a: number,
b: number,
t1: number,
t2: number
): number {
return (t2 * 2 * b ** 3 + (a - 2 * t2) * t1 ** 3) / 12.0;
return (1.0 / 12.0) * (2 * t2 * b ** 3 + (a - 2 * t2) * t1 ** 3);
}
/**
* 組立H形鋼の断面性能
Expand All @@ -98,8 +128,22 @@ export class SecBuildH {
switch (propertyType) {
case SecPropertyType.Area:
return SecBuildH.area(a, b, t1, t2);
case SecPropertyType.ElasticModulusY:
return SecBuildH.elasticModulusY(a, b, t1, t2);
case SecPropertyType.ElasticModulusZ:
return SecBuildH.elasticModulusZ(a, b, t1, t2);
case SecPropertyType.MassPerMetre:
return SecSteel.massPerMetre(SecBuildH.area(a, b, t1, t2));
case SecPropertyType.RadiusOfGyrationY:
return SecSteel.radiusOfGyration(
SecBuildH.area(a, b, t1, t2),
SecBuildH.secondMomentOfAreaY(a, b, t1, t2)
);
case SecPropertyType.RadiusOfGyrationZ:
return SecSteel.radiusOfGyration(
SecBuildH.area(a, b, t1, t2),
SecBuildH.secondMomentOfAreaZ(a, b, t1, t2)
);
case SecPropertyType.SecondMomentOfAreaY:
return SecBuildH.secondMomentOfAreaY(a, b, t1, t2);
case SecPropertyType.SecondMomentOfAreaZ:
Expand Down
11 changes: 11 additions & 0 deletions src/sec/steel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,15 @@ export class SecSteel {
static massPerMetre(area: number): number {
return STEEL_DENSITY * area;
}

/**
* 断面二次半径
* (根拠:建築構造ポケットブック第6版 p.33)
* @param area 断面積
* @param secondMomentOfArea 断面二次モーメント
* @returns 断面二次半径
*/
static radiusOfGyration(area: number, secondMomentOfArea: number): number {
return Math.sqrt(secondMomentOfArea / area);
}
}

0 comments on commit 7816f96

Please sign in to comment.