본문 바로가기

Physics/전산물리12

1차원 슈뢰딩거 방정식 시뮬레이션 일단 만들었음. https://github.com/hydrogendeuteride/Schrodinger_1D/tree/master GitHub - hydrogendeuteride/Schrodinger_1D: C++ schrodinger equation solver with opengl graph C++ schrodinger equation solver with opengl graph. Contribute to hydrogendeuteride/Schrodinger_1D development by creating an account on GitHub. github.com 슈뢰딩거 방정식을 컴퓨터로 푸는 건 꽤 간단함. $H\psi = E\psi$에서 $\psi$는 슈뢰딩거 방정식의 고유 벡터이고 $\psi$.. 2023. 8. 28.
2차원 파동방정식 FDM 보호되어 있는 글 입니다. 2023. 7. 1.
Barnes-Hut 은하 시뮬레이션 Barnes-Hut 시뮬레이션은 n체 운동 시뮬레이션을 $O(n \log(n))$ 의 시간 복잡도로 풀 수 있게 해주는 알고리즘임. 기존 n체 시뮬레이션은 한 입자와 다른 n개의 입자가 서로 끌어당기는 힘을 계산하므로 n개의 입자가 있다면 시간 복잡도는 $n^2$임. 태양계처럼 n이 9 정도라면 현대 컴퓨터로는 1초에 수만 번 계산을 할 수 있겠지만, 만약 n이 500 이상이라면 시간복잡도 $n^2$의 시간복잡도로는 수 초가 걸림. 이런 연산은 핵융합 시뮬레이션이나 분자동역학 시뮬레이션, 우주 시뮬레이션(은하나 토성의 고리 같은 거) 등에 사용되고 보통 슈퍼컴퓨터가 이런 연산을 수행함. Barnes-Hut 시뮬레이션은 쿼드트리라는 자료구조를 사용해서 연산의 시간 복잡도를 줄이는데, 방법은 이럼: 일단 공.. 2023. 3. 11.
Barnes-Hut 시뮬레이션 진행상황 2 아직 뷰나 softener 같은 게 완성되지 않아서 확대, 축소, 이동 등이 불가능하고, 입자들이 지나치게 가까이 붙으면 한 입자가 스윙바이 되서 보이저 우주선처럼 초고속으로 날아감. force softening는 입자가 지나치게 가까이 가더라도 힘 계산에 어느 정도의 거리를 반영해서 서로 약간 떨어진 것처럼 계산해서 입자들의 스윙바이를 막아줌. https://academic.oup.com/mnras/article/314/3/475/969154 Optimal softening for force calculations in collisionless N-body simulations Abstract. In N-body simulations the force calculated between particles.. 2023. 3. 3.
조금 더 깔끔한 이중진자 시뮬레이션 https://youtu.be/k2oe_A52pk0 전보다 더 완벽해진 이중 진자 시뮬레이션 더 깔끔한 코드와 여러 개의 진자를 동시에 굴릴 수 있게 작성했음(영상에서는 하나밖에 안보이지만 진자를 추가하는 것 자체는 아주 쉬움). 저번에 짠 코드는 좀 많이 더럽긴 함. 원래는 그냥 SFML 기술 실증 프로젝트였는데 막상 손대다 보니 아예 중소규모 프로젝트가 되버림. 깃헙 주소: https://github.com/hydrogendeuteride/DoublePendulum_Continued Visual Studio 깃은 처음 써봐서 아직 많이 미숙함. 그리고 파워셸 너무 불편함. 코드(클릭하면 나옴) 더보기 #ifndef _PENDULUM_H_ #define _PENDULUM_H_ #include #incl.. 2023. 2. 17.
Barnes-Hut 시뮬레이션 진행 상황 Barnes Hut 시뮬레이션은 은하나 우주 거대 구조, 분자동역학처럼 매우 많은(대충 1000이상) 입자의 n체 시뮬레이션을 하려고 만든 알고리즘임. 이제 GUI, 멀티코어, 올바른 상수값 입력 정도만 완성하면 되는데 그거 만들기 전에 기술실증용으로 2중 진자 시뮬레이션 먼저 만들거임. 저 세개중에서는 멀티코어 프로세싱이 경험도 없고 제일 어려운건데 왜 이 시뮬레이션에 멀티코어가 필수인지는 아래 설명하겠음. 일단 코드(Eigen 라이브러리 필요, C++17이상) #ifndef BARNES_HUT_DEMO_QUADTREE_H #define BARNES_HUT_DEMO_QUADTREE_H #include #include #include #include #include #include #include #in.. 2023. 2. 8.
파이썬 궤도역학 연재 예정 어디까지 쓸 수 있을지는 잘 모르겠지만 한 번 써 보겠다.- hydrogendeuteride/orbital_mechanics_python Learn orbital mechanics with python. Contribute to hydrogendeuteride/orbital_mechanics_python development by creating an account on GitHub. github.com 2021. 3. 22.
파이썬 궤도 시뮬레이션 -1 원궤도 www.youtube.com/channel/UCt2NJAAW0Ln0hBpArRF1rpg/videos Alfonso Gonzalez Astrodynamics with Python and the Space Engineering Podcast. Orbital Mechanics, Spacecraft Attitude Control, Numerical Methods Link to Space Engineering Podcast website on SimpleCast: https://space-engineering-podcast.simplecast.com/episodes Link to Space www.youtube.com 이곳에 나온 것들을 한 번 만들어보고자 한다. import numpy as np import m.. 2021. 3. 15.
N체 시뮬레이션 #include #include #include #include #include #include #include "point.h" typedef point Vector; typedef std::vector container; typedef std::vector mass; constexpr double G_const = 6.67430e-11; struct position { const mass &masses; position(const mass &masses) : masses(masses) { } void operator()(const container &p, container &dqdt) const { for (int l = 0; l < p.size(); ++l) { dqdt[l] = p[l] / mas.. 2021. 3. 4.