- C1: development length l_d = 0.6·d_b·fy/(λ√fck), splice 1.3·l_d, standard hooks (main 90°, tie 90°, stirrup 135° as written in the spec). fck 27 and fy 400/500 are marked as assumed values (I02). - C2: bearing-block bars, one block per bearing (배치 분리). Bars S1 and S2 at @125 with 8 bars per 1200 mm side (7 gaps = 875, ends 162.5), 2500 mm long, coping embedment from the block height (pad included, Q16 결정). - Tests: development and splice lengths; hook table limits; embedment 600 / 550 / 619.1 / 569.1; P1 has 80 bars each of S1 and S2 over 10 blocks. - Not yet: the ③ screen and the drawing check against the bearing-block drawing. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
46 lines
1.9 KiB
TypeScript
46 lines
1.9 KiB
TypeScript
/**
|
||
* ③ 철근배근 공통 규칙 (spec §6.2 · plan C1). Lengths in mm, stresses in MPa.
|
||
* fck and fy are inputs. The defaults below are assumed values and must be shown as such (I02).
|
||
*/
|
||
export const MATERIAL_DEFAULTS = {
|
||
fck: 27,
|
||
/** H = SD400, S = SD500. */
|
||
fy: { H: 400, S: 500 } as const,
|
||
/** 경량 콘크리트 계수 λ (보통 콘크리트 1.0). */
|
||
lambda: 1.0,
|
||
/** Marks that these are assumed values (정보 I02). */
|
||
assumed: true,
|
||
} as const;
|
||
|
||
/** Development length l_d = 0.6·d_b·f_y / (λ·√f_ck) (spec §4 공통 설계 규약, 보정계수 1.0). */
|
||
export function developmentLength(db: number, fy: number, fck: number, lambda = MATERIAL_DEFAULTS.lambda): number {
|
||
if (db <= 0 || fy <= 0 || fck <= 0 || lambda <= 0) throw new Error('정착길이 계산 값은 모두 0보다 커야 합니다.');
|
||
return (0.6 * db * fy) / (lambda * Math.sqrt(fck));
|
||
}
|
||
|
||
/** Lap splice length l_s = 1.3·l_d (spec §4 공통 설계 규약). */
|
||
export function spliceLength(db: number, fy: number, fck: number, lambda = MATERIAL_DEFAULTS.lambda): number {
|
||
return 1.3 * developmentLength(db, fy, fck, lambda);
|
||
}
|
||
|
||
export type HookKind = 'main90' | 'tie90' | 'stirrup135';
|
||
|
||
/**
|
||
* Standard hook lengths (KDS 14 20 52, spec §4). Refuses bar sizes outside the table rather than guessing.
|
||
* - main90: 주철근 90°, D25 이하 15.5 d_b, D29–D35 16.5 d_b
|
||
* - tie90: 띠철근 90°, D16 이하 8.5 d_b
|
||
* - stirrup135: 스터럽 135°, 2.5·d_b·(3π/4) + 6·d_b (spec formula, as written)
|
||
*/
|
||
export function hookLength(kind: HookKind, db: number): number {
|
||
if (kind === 'main90') {
|
||
if (db <= 25) return 15.5 * db;
|
||
if (db <= 35) return 16.5 * db;
|
||
throw new Error(`주철근 90° 갈고리 표에 없는 지름입니다 (D${db}).`);
|
||
}
|
||
if (kind === 'tie90') {
|
||
if (db <= 16) return 8.5 * db;
|
||
throw new Error(`띠철근 90° 갈고리 표에 없는 지름입니다 (D${db}).`);
|
||
}
|
||
return 2.5 * db * ((3 * Math.PI) / 4) + 6 * db;
|
||
}
|