Table of Contents

전산물리의 목적

2014년 고등과학원 주최로 열린 Pyeong-chang Summer Institute 중 전건상 교수님이 “원자물리학은 원자를 배우고 핵물리학은 핵을 배우지만 전산물리학은 전산이 아니라 물리를 배우는 것”이라고 한 적이 있다. 컴퓨터와 같이 고지식한 친구에게 물리를 가르쳐주다보면 결국 본인이 배우게 된다는 이치이다. Numerical Recipes에 언급된 Hamming의 모토, “계산의 목적은 통찰이지 숫자가 아니다”라는 말도 생각해볼 만하다.

전산으로 계산하는 양

우리가 다루는 양을 길이, 무게, 시간 등의 물리량이라고 해석하지만 결국 컴퓨터 안에서는 무차원의 숫자이다. 따라서 우리가 다루는 방정식은 차원분석을 거쳐 무차원화된 것들이어야 한다.

전산작업의 단계와 일반적 교훈들

이하의 내용은 전건상 교수님의 강의에 바탕한 것이다.

문제 설정

  1. 문제를 이해하고 진술
  2. 필요한 변수들과 그것을 구하는 법을 발견
  3. 그 방법을 컴퓨터가 이해할 수 있게 변환

코드 작성과 실행

  1. 전체 구조를 설계한다
  2. 코드를 작성한다
    • 권장사항
      1. 의사코드 작성
      2. 검증된 기존 코드를 사용
      3. 논리를 잘 분리해서 정리
      4. 주석을 작성
    • 피할 것
      1. 복잡한 논리
      2. 교묘한 테크닉
      3. 컴퓨터 하드웨어 사양에 의존하는 언어
    • 코드에 큰 수정을 가하기 전 백업을 남길 것
  3. 테스트와 디버깅
    • 오류의 종류
      1. 문법 오류: 컴파일러 수준에서 발견 가능
      2. 결과 없음: 무한 루프, 메모리 접근 오류 등
      3. 결과가 나오지만 틀렸음: 가장 골치아픈 경우
    • 어떻게 디버깅할 것인가
      1. 탐정처럼 일하라
      2. 전체 논리를 점검
      3. 부분부분 프로그램을 머리로 따라가며 논리를 점검
      4. 매 줄마다 변수의 값들을 출력
    • 어떻게 테스트할 것인가
      1. 알려져 있는 특별한 경우와 비교
      2. 예전 결과를 재현하는지 점검
      3. 물리적으로 말이 되는지 점검

분석과 시각화

일반적 교훈

참고문헌