-
Notifications
You must be signed in to change notification settings - Fork 0
Project Proposal
수치해석 기법을 활용하여 1D/2D 슈뢰딩거 방정식의 해를 구하고, 양자 역학적 상태와 시간 진화를 시각화하는 웹 기반 시뮬레이터.
본 프로젝트는 이를 웹 기반 인터랙티브 워크스페이스 형태로 구현하여, 설치 없이 다양한 퍼텐셜과 초기 조건에 대한 양자계의 거동을 직관적으로 탐색할 수 있도록 하는 것을 목표로 한다.
방정식 풀이 (방법론)
-
RK4, FDM 등의 미분방정식 풀이를 위한 수치해석 기법의 구현.
-
시간 독립 슈뢰딩거 방정식
를 수치적으로 해결, 결과적으로 파동함수와 상태에 대한 에너지를 획득.
- 시간 진화 슈뢰딩거 방정식
를 수치적으로 해결, 파동함수가 시간에 따라 진행하는 모습 등 관찰.
- 사용자가 직접 퍼텐셜
$V(x)$ , 질량$m$ 등의 물리량을 조작 가능하게 하여 인터랙티브한 UI 구축.
결과 해석
-
위에서 수치적으로 구한 파동함수, 에너지 등 Plotting.
-
$|\psi(x)|^2$ 가 입자가 특정 위치에 존재할 확률을 나타낸다는 Born Interpretation에 의거해 입자 위치의 확률밀도함수 계산.
- 초기 화면: 새 프로젝트 생성 또는 저장된 프로젝트 불러오기 선택.
- 설정 모달: 시뮬레이션 차원(1D or 2D) 및 기초 시스템 유형 선택 후 진입.
- 워크스페이스: 실시간 시뮬레이션 및 결과 해석 진행.
기본적으로 좌/우, 상/하 방향으로 구분된 4분할의 화면 표시.
- 좌상단: 각 격자점의 퍼텐셜 에너지 정의. 영역 드래그 후 값 입력, 또는 수식 입력 등으로 퍼텐셜 에너지 설정에 자유도 부여.
- 우상단: 질량, 격자점 수, 격자 간격 등의 시스템 물리량 설정.
- 좌하단: 분석 모드(위치, 에너지, 시간진화 등) 설정.
- 우하단: 분석 수행.
- 2D 모드 혹은 격자점의 개수가 너무 많아질 시 연산에서 지연이 발생, 실시간 시각화가 불가능한 경우 우려. '계산' 버튼을 통해 시스템에 대한 변수를 json 파일로 미리 저장해 놓고, 분석에서 활용하는 방법 등 적용 가능.
- 실시간 상태 변화 시 LocalStorage에 저장, 일정 시간마다 DB 연동하는 등의 방식을 통해 저장 버튼이 필요없는 워크스페이스의 구현 가능.
- 수치적 해의 안정성은 다음과 같은 well-known test case 활용.
double slit: 전자의 파동함수가 검출기에서 간섭을 일으키면 성공.
Harmonic oscillator:
$E_{n+1} - E_{n}$ 의 인접한 에너지 사이 간격이 일정하면 성공.
...
-
React + JavaScript: JSDoc을 이용해 물리량의 성격과 물리 단위를 명시.
- MongoDB
-
react-konva: 드래그, 확대/축소, 격자 표시, 영역 선택 등 인터랙티브한 퍼텐셜 편집 기능 구현 -
math.js: 사용자가 수식으로 퍼텐셜 (V(x)), (V(x,y))를 입력할 경우 수식 파싱 및 격자값 계산에 사용
-
plotly.js: 에너지 레벨, 파동함수, 확률밀도, 2D heatmap 등 정적 결과 시각화 -
requestAnimationFrame + Canvas: 시간 진화에 따른 파동함수 및 확률밀도 변화를 프레임 단위로 렌더링
- 초기 구현은 JavaScript 기반으로 진행
- 격자 크기 증가 또는 2D 시간 진화 등으로 계산량이 커져 성능 저하가 발생할 경우, 계산 루틴을 C 기반 WebAssembly(WASM)로 최적화