티스토리 뷰

대학 3학년 때로 기억합니다. 
40년이 다 되어가는 시간이니 기억의 손실이 있을 수도 있습니다. 
이점 감안하여 글을 읽어주길 부탁합니다.

미국에서 오신 새 교수께서 한국에서 첫 학기를 맞이하였고 그 대상이 저희 87학번 학생들이었습니다.
담당 과목이 암석역학이었고 교수님의 열정은 정말 남달랐습니다.
제 주변 친구들도 교수님의 열정을 인정하였고 저희는 처음 접하는 방식의 수업이었습니다.
지금 생각해보면 교수님은 미국에서 학생들과 우리들을 비슷하게 생각했던 것 같습니다.
하지만 저는 그 열정에 쫓아가기 좀 힘이 들었던 기억이 납니다.

기말고사 시험은 세 문제였습니다.
그 문제가 아직도 기억에 남아있습니다. 
정확한 수치는 모르지만 개략적으로 문제를 말하겠습니다.

지표와 50도 정도로 기울어진 산에 폭이 6미터인 도로를 만드는 것에 대한 문제였습니다.
산의 암석의 성분과 특성들이 제시되었습니다.
도로 건설에 따른 안전요소(Safety Factor)를 계산하여 안전성 여부를 판단하는 문제였습니다.

첫 번째 문제는 현재 주어진 조건에서 안전성을 평가하는 것이었고,
두 번째 문제는 경사면과 엇갈리게 단층이 존재할 때의 안전성을 평가하는 것이었고,
세 번째 문제는 단층에 지하수가 스며들어 있을 때의 안전성을 평가하는 것이었습니다.

안전요소가 1보다 작게 계산되면 안전하고 1보다 큰 값이면 불안전하므로 공사를 하면 안되는 것이었습니다.
첫 번째와 두 번째는 안전하고 지하수가 스며든 세 번째는 불안전한 것이 정답이었습니다.

시험이 생소했던 것이 책에 있는 공식에 주어진 특성값들을 대입하면 답이 나오는 형태가 아니었습니다.
책에 있는 각종 이론들을 종합하여 저 문제를 풀기위한 모델을 구현해야 했습니다.
즉 공식을 만들고 그 공식에 주어진 값들을 넣어서 계산을 하는 것이었습니다.
Calculus와 같은 책들을 보면 모델링에 대한 말들이 많은데, 바로 모델을 구축해야 하는 것이었습니다.

교재를 모두 이해하고 있어야 풀이가 가능했던 문제였던 것으로 기억합니다.


이 기억이 나서 오늘 클로드 코드를 통해 모델을 한 번 만들어볼까 하는 생각을 했습니다.

------------------------------------------------------------------------------------

클로드 코드에게 요청한 프롬프트 : 
산비탈에 도로를 닦는 공사를 진행하고자 합니다.
산의 경사는 지표면과 40도의 각을 이룹니다.
암석은 퇴적암입니다. 습곡작용에 의한 단층이 있는 지역입니다.

여기에 도로를 건설할 때 안전한가를 판가름하는 모델을 만들고자 합니다.

모델을 만들기 위한 계획을 잡으려고 합니다.
어떤 순서로 진행하면 되는지 알려주고 CLAUDE.md 파일도 작성해주세요.
CLAUDE.md 파일은 100줄을 넘지 않도록 해주세요.

------------------------------------------------------------------------------------

클로드 답변 :
● User approved Claude's plan          
  ⎿  Plan saved to: C:\Users\jeffery\.claude-account-jeffery\plans\steady-jingling-lovelace.md · /plan to edit
     산비탈 도로건설 안전성 평가 모델 계획
                                                                                                                                                           
     Context
                                                                                                                                                           
     산비탈(경사 40°, 퇴적암, 습곡 단층 존재)에 도로를 건설할 때 암반사면 안전성을 자동으로 판정하는 Python 모델을 구축한다. 입력파라미터를 받아 RMR/SMR
     분류 → 운동학적 분석 → 한계평형 안전율 계산 → 종합 판정을 순서대로 수행하고 결과를 출력한다.

     ---
     개발 순서 (단계별)

     1단계: 프로젝트 기반 구축

     - requirements.txt 작성 (numpy, scipy, matplotlib, pandas)
     - CLAUDE.md 작성
     - 디렉토리 구조 생성

     2단계: 입력 데이터 모듈 (src/input_params.py)

     - dataclass로 입력 파라미터 정의 및 유효성 검사
     - 주요 입력: 사면각도, 암석 강도(UCS), RQD, 불연속면 정보, 지하수 조건, 단층 방향

     3단계: RMR/SMR 분류 모듈 (src/rmr_smr.py)

     - Bieniawski(1989) RMR 6개 파라미터 계산
     - Romana(1985) SMR = RMR + F1·F2·F3 + F4
     - 안정 등급 출력: Class I(매우 안정) ~ Class V(매우 불안정)

     4단계: 운동학적 분석 모듈 (src/kinematic.py)

     - 평면파괴(planar sliding), 쐐기파괴(wedge), 전도파괴(toppling) 판별
     - 단층 주향/경사 vs 사면 주향/경사 비교
     - 마찰원(friction circle) 기준 위험 구역 판단

     5단계: 한계평형 안전율 모듈 (src/limit_equil.py)

     - 평면파괴 FS = (c·A + (W·cosα - U - V·sinα)·tanφ) / (W·sinα + V·cosα)
     - 안전율 기준: FS ≥ 1.5 (안전), 1.2~1.5 (주의), < 1.2 (위험)
     - 지하수 영향, 단층 점착력·내부마찰각 반영

     6단계: 종합 판정 및 보고 모듈 (src/report.py)

     - 3개 분석 결과를 종합해 최종 안전 등급 결정
     - matplotlib으로 사면 단면도, 안전율 시각화
     - 텍스트 보고서 출력

     7단계: 메인 실행 파일 (main.py)

     - CLI 또는 JSON 입력 파일 지원
     - 단계별 결과 출력

     8단계: 테스트 및 검증 (tests/)

     - 기준 케이스(40° 사면 + 단층각 35°) 검증
     - 경계 조건 테스트

     ---
     프로젝트 구조

     rockmechanic/
     ├── CLAUDE.md
     ├── main.py
     ├── requirements.txt
     ├── sample_input.json
     ├── src/
     │   ├── __init__.py
     │   ├── input_params.py   # 입력 데이터 정의 및 검증
     │   ├── rmr_smr.py        # RMR/SMR 암반 분류
     │   ├── kinematic.py      # 운동학적 파괴 유형 판별
     │   ├── limit_equil.py    # 한계평형 안전율 계산
     │   └── report.py         # 결과 출력 및 시각화
     └── tests/
         └── test_stability.py

     ---
     CLAUDE.md 내용 (100줄 이내)

     # 산비탈 도로건설 암반사면 안전성 평가 모델

     ## 프로젝트 목적
     퇴적암 사면(경사 40°, 습곡 단층 존재)에 도로를 건설할 때 암반사면의 안전성을
     RMR/SMR 분류 + 운동학적 분석 + 한계평형법으로 종합 평가하는 Python 모델.

     ## 분석 방법 및 흐름
     1. **RMR/SMR 분류** → 암반 등급 및 기본 안정성 판단
     2. **운동학적 분석** → 단층 방향 기반 파괴 유형 판별 (평면/쐐기/전도)
     3. **한계평형 안전율** → FS 계산 (지하수·단층 강도 반영)
     4. **종합 판정** → 안전(FS≥1.5) / 주의(1.2~1.5) / 위험(FS<1.2)

     ## 입력 파라미터
     | 파라미터 | 단위 | 설명 |
     |----------|------|------|
     | slope_angle | ° | 사면 경사각 (기본값: 40) |
     | slope_height | m | 사면 높이 |
     | ucs | MPa | 암석 일축압축강도 |
     | rqd | % | 암질지수 |
     | joint_spacing | m | 절리 간격 |
     | fault_dip | ° | 단층 경사각 |
     | fault_dip_dir | ° | 단층 경사방향 |
     | friction_angle | ° | 단층면 내부마찰각 |
     | cohesion | kPa | 단층면 점착력 |
     | groundwater | str | dry/damp/wet/dripping/flowing |

     ## 실행 방법
     ```bash
     pip install -r requirements.txt
     python main.py --input sample_input.json   # JSON 파일 입력
     python main.py --interactive               # 대화형 입력

     안전율 기준

     - FS ≥ 1.5 : 안전 (도로 건설 가능)
     - 1.2 ≤ FS < 1.5 : 주의 (보강 공법 검토 필요)
     - FS < 1.2 : 위험 (도로 건설 불가 또는 전면 재설계)

     핵심 참고 기준

     - RMR: Bieniawski (1989)
     - SMR: Romana (1985), F1·F2·F3 보정 인수 표
     - 한계평형: Hoek & Bray (1981) 평면파괴 공식

     파일 구조

     - src/input_params.py : 입력 데이터 dataclass + 유효성 검사
     - src/rmr_smr.py      : RMR 6개 파라미터 + SMR 보정
     - src/kinematic.py    : 파괴 유형 판별 (평면/쐐기/전도)
     - src/limit_equil.py  : 한계평형 안전율 (FS) 계산
     - src/report.py       : 결과 출력 + matplotlib 시각화
     - main.py             : CLI 진입점

     ---

     ## 검증 방법
     1. `sample_input.json`으로 `python main.py --input sample_input.json` 실행
     2. 40° 사면 + 단층 경사 35°(사면 방향과 일치) → FS < 1.5 위험 판정 확인
     3. 단층 경사 10°(역방향) → FS > 1.5 안전 판정 확인
     4. `pytest tests/` 로 경계 조건 통과 확인

     ---

     ## 핵심 파일
     - `src/rmr_smr.py` : RMR/SMR 핵심 로직
     - `src/limit_equil.py` : 안전율 계산 핵심
     - `src/kinematic.py` : 단층 방향 파괴 판별
     - `main.py` : 진입점

● 구현을 시작합니다. 모든 파일을 병렬로 생성합니다. 

------------------------------------------------------------------------------------

그리고 테스트를 직접하고 검증까지 해 줍니다.

그 결과이미지가 아래 첨부한 이미지입니다.

이렇게 클로드 코드를 하나씩 익혀가고 있습니다.

'machineLearning > GPT' 카테고리의 다른 글

에이전트 : 보고서 작성  (0) 2026.06.12
Agentic Graph RAG  (0) 2026.03.30
MCP 에이전트 구현  (0) 2026.03.25
OCR 판독  (0) 2026.03.18
보고서 작성 앱  (1) 2025.09.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/10   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함