Files
Pier_v1/tests/column-model.test.ts
T
ypshimandClaude Haiku 5.5 4d5e3cc04e feat(rebar): P3 and P6 end at the coping middle level; e_top computed from it
The coping middle level is (Level underside + step top)/2. P3's top and P6's upper limit are this level, and e_top is the
step top minus it (P1: 1322, replacing the 1623 reverse-engineered value). On P1 P3 goes from 38 to 39 ties and P6 stays at
8 levels. With taper h2 = 3000 the middle level is 13275: P3 37 ties, P6 8 levels (32 bars), e_top 2072.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
2026-10-23 13:30:28 +09:00

39 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, it } from 'vitest';
import { buildPier } from '../src/core/geometry';
import { columnInputFor, columnRebar } from '../src/core/rebar/column';
import { loadP1 } from './helpers';
describe('기둥 철근 높이는 모델에서 (Hc · h_cop, 승인 2026-10-23)', () => {
it('P1: Hc 12703 and h_cop 2644 come out of the model, as in 기둥철근.md', () => {
const input = columnInputFor(buildPier(loadP1()));
expect(input.Hc).toBeCloseTo(12703, 0);
expect(input.hcop).toBeCloseTo(2644, 0);
const col = columnRebar(input);
expect(col.zTop2).toBeCloseTo(14539, 0);
expect(col.zTop1).toBeCloseTo(14862, 0);
});
it('taper h2 = 3000: Level underside 39.411, Hc 11203, P2 top 13039 (= Level underside + l_d)', () => {
const m = buildPier({ ...loadP1(), copingH2Mm: 3000 });
const input = columnInputFor(m);
expect(input.Hc).toBeCloseTo(11203, 0);
// h_cop = step top (43.555) − Level underside (39.411): the coping at the column gets taller with h2.
expect(input.hcop).toBeCloseTo(4144, 0);
const col = columnRebar(input);
expect(col.zTop2).toBeCloseTo(13039, 0);
// The P1 top is anchored to the step top (and C3), so it does not move with h2.
expect(col.zTop1).toBeCloseTo(14862, 0);
});
it('P3 and P6 end at the coping middle level: P1 e_top 1322; taper 3000 gives e_top 2072, P3 37 ties, P6 32 bars', () => {
const p1 = columnInputFor(buildPier(loadP1()));
expect(p1.eTop).toBeCloseTo(1322, 0);
const high = columnInputFor(buildPier({ ...loadP1(), copingH2Mm: 3000 }));
expect(high.eTop).toBeCloseTo(2072, 0);
const col = columnRebar(high);
expect(col.zTopT).toBeCloseTo(13275, 0);
expect(col.p3Count).toBe(37);
expect(col.p6Count).toBe(32);
});
});