feat(rebar): rebar strength per 규격 prefix as inputs on ③ (D SD300, H SD400, S SD500)

fyH and fyS become a grade per prefix (D · H · S), chosen from SD300 · SD400 · SD500. The defaults are the P1 values, so
the P1 results do not change. Each bar takes its grade from its 규격 (fyOf). The 철근표 has a 강도 column. Older files
that stored fyH / fyS are read into the grade map. Only fck is still an assumed value (I02). Approved 2026-10-23.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
This commit is contained in:
ypshimandClaude Haiku 5.5 committed 2026-10-23 09:51:36 +09:00
1 parent 398fa997e2
commit b3533b69df
11 files changed
+102 -37

No files matched your search

+3 -3
View File
@@ -1,4 +1,4 @@
import { DEFAULT_MATERIAL, developmentLength, hookLength, Material, NOMINAL_DIAMETER, spliceLength } from './common';
import { DEFAULT_MATERIAL, developmentLength, fyOf, hookLength, Material, NOMINAL_DIAMETER, spliceLength } from './common';
import { layers } from './footing';
/**
@@ -95,7 +95,7 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
const r1 = x.D / 2 - x.c;
const r2 = r1 - dS32;
const zTop1 = x.Hc + x.hcop - x.eP1;
const lD2 = developmentLength(dS32, m.fyS, m.fck);
const lD2 = developmentLength(dS32, fyOf(m, 'S32'), m.fck);
const zTop2 = x.Hc + lD2;
// Bottom of P1 and P2: 확대기초 하면 2단 (B7) 위 + (d_B7 + d_P1)/2 (기둥철근.md §3.2, the same for both).
const zBot = -x.Hf + layers(x.Hf).B7 + (NOMINAL_DIAMETER.S19 + dS32) / 2;
@@ -137,7 +137,7 @@ export function columnRebar(x: ColumnInput = COLUMN_P1, m: Material = DEFAULT_MA
const p6Length = p6Straight + 2 * Math.round(p6Hook); // 135 mm per hook, as in the document
// P3 lap: Q-C6 is open; recommended = 1.3·l_d of H19 with the material inputs.
const lapP3 = spliceLength(dH19, m.fyH, m.fck);
const lapP3 = spliceLength(dH19, fyOf(m, 'H19'), m.fck);
const p3Length = 2 * Math.PI * tieRadius + lapP3;
const p5Length = 2 * Math.PI * tieRadius;