거의 고른 먼지가 어떻게 거미줄이 될까?
먼지를 거의 고르게 뿌려 두면 그대로 고르게 남을 것 같지요. 조금 더 빽빽한 곳이 있어도 2% 차이라면 없는 것이나 마찬가지일 테니까요. 그런데 중력은 조금 더 빽빽한 곳이 이웃을 조금 더 세게 끌어당기는 힘이라, 작은 차이를 스스로 키웁니다. 우주의 은하들도 고르게 흩어져 있지 않고 거대한 빈 공간을 둘러싼 실(필라멘트)과 매듭 모양으로 늘어서 있다고 알려져 있어요. 정말 그 작은 차이만으로 거미줄이 짜일까요? 처음 요철과 팽창 속도를 바꿔 보세요.
모델은 이렇게 움직입니다
- 한 변이 32인 정육면체 상자 안에 먼지 알갱이 32×32×32 = 32,768개가 처음엔 바둑판처럼 거의 고르게 놓여 있습니다. 상자는 끝이 이어져 있어서(오른쪽으로 나가면 왼쪽으로 들어옴) 가장자리가 따로 없습니다. 거리와 시간은 이 모델의 단위입니다(알갱이 사이 평균 간격 = 1).
- 처음 요철: 알갱이를 아주 조금씩 옮겨 밀도가 곳곳에서 평균보다 조금 높거나 낮게 만듭니다(기본: 밀도 차이의 표준편차 2%). 요철의 결은 그 차이가 큰 물결(상자 크기만 한 오르내림) 위주인지, 잔물결(알갱이 몇 개 크기) 위주인지를 정합니다. 어디가 빽빽한지는 판마다 무작위입니다.
- 중력만 있습니다. 상자를 작은 칸 32×32×32개로 나눠 칸마다 먼지 양을 세고, 평균보다 많은 칸은 끌어당기고 적은 칸은 밀어내는 것처럼 힘을 계산합니다(입자-격자 방법). 그래서 칸 하나보다 작은 크기는 흐릿합니다.
- 팽창 속도: 우주가 늘어나면 알갱이들이 서로 멀어지려 하는데, 이 모델은 그것을 "움직임에 거는 브레이크" 하나로만 단순하게 넣었습니다. 팽창이 빠를수록 브레이크가 세서 뭉치는 속도가 느려집니다. 상자 자체는 커지지 않습니다.
- 지표는 세 가지입니다. 빈 공간 비율: 상자를 2×2×2칸씩 묶은 덩이 4,096개 중, 먼지가 평균의 0.2배보다 적은 덩이의 비율. 가장 큰 덩어리: 평균의 10배 넘게 빽빽한 칸들이 면으로 이어진 무리를 덩어리로 보고(먼지 20알 이상만 셈), 가장 큰 덩어리에 든 먼지가 전체의 몇 %인지. 거미줄이 드러난 때: 빈 공간 비율이 처음으로 10%를 넘은 시간입니다.
직접 돌려보기
① 먼지가 거미줄이 되는 상자 3D
빛나는 점 하나가 먼지 알갱이 하나입니다. 색은 그 자리가 얼마나 빽빽한지를 나타내요. 처음엔 상자 전체가 고르게 푸르스름하다가, 실처럼 이어진 하늘빛 줄기와 금빛 매듭, 그 사이의 텅 빈 곳이 차례로 드러납니다. 거의 고른 동안은 화면을 빨리 감아요.
드래그로 상자 돌려 보기 · 휠이나 두 손가락으로 확대 · 가만히 두면 카메라가 천천히 돕니다(끌 수 있어요) · 휴대폰에서 세로로 쓸면 페이지가 내려갑니다. 휴대폰에서는 알갱이 셋 중 하나만 그립니다(계산은 모두 같이 합니다).
② 빈 공간은 얼마나, 가장 큰 덩어리는 얼마나
재생이 지난 시점까지만 그립니다. 파란 선은 빈 공간 비율, 주황 선은 가장 큰 덩어리에 든 먼지의 비율, 초록 점선은 빈 공간이 처음 10%를 넘은 때입니다.
③ 작은 요철은 얼마나 빨리 커질까
재생이 지난 시점까지만 그립니다. 세로축이 로그 눈금이라 곧은 선은 "같은 시간마다 몇 배씩" 커진다는 뜻입니다. 회색 점선은 요철이 작을 때의 이론(지수로 자람)이고, 보라색 선이 실제 시뮬레이션입니다. 요철이 1쯤으로 커지면 이론에서 벗어납니다.
④ 덩이마다 먼지가 얼마나 있나 (지금 vs 처음)
2×2×2칸 덩이 4,096개를 먼지 양(평균 = 1)으로 나눠 센 분포입니다. 처음(회색 선)엔 거의 모두 1 근처에 몰려 있다가, 시간이 지나면 대부분은 평균보다 성기고 소수 덩이에 먼지가 몰립니다. 가로축은 로그 눈금입니다.
⑤ 처음 요철이 크면 (집계: 미리 돌린 12판)
기본 설정에서 처음 요철 크기만 0.5·1·2·4%로 바꿔 각각 3판씩 끝(t = 9.6)까지 돌린 평균입니다. 재생과 상관없이 미리 계산한 집계예요. 막대 아래 숫자는 덩어리 수입니다.
⑥ 요철의 결이 다르면 (집계: 미리 돌린 9판)
같은 방식으로 요철 크기 2%에서 결만 바꾼 집계입니다. 큰 물결 위주이면 무엇이, 잔물결 위주이면 무엇이 먼저 생기는지 보세요.
⑦ 팽창이 빠르면 (집계: 미리 돌린 15판)
같은 방식으로 팽창 속도만 0·50·100·150·200%로 바꾼 집계입니다. 너무 느리면, 알맞으면, 너무 빠르면 각각 어떻게 되는지 보세요.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 처음 요철이 아주 작으면(0.5%) 끝까지 거의 고르게 남지만, 2%만 되어도 중력이 차이를 키워 빈 공간과 실·매듭으로 갈라졌어요.
- 빽빽한 곳이 이웃을 조금 더 세게 끌어 더 빽빽해지는 되먹임이라 처음엔 같은 시간마다 몇 배씩 자라요. 이 모델 기본 판에선 끝에 691배 울퉁불퉁해져 빈 공간이 57%가 됐어요.
- 결이 큰 물결 위주면 큰 빈 공간과 덩어리 11개, 잔물결 위주면 작은 덩어리 58개가 먼저 생겼어요.
- 그렇다면 거미줄이 짜이려면? 이 모델에선 팽창이 알맞아야 했어요. 느리면(50%) 덩어리 몇 개로 뭉쳐 버렸고(가장 큰 것 63%), 빠르면(150%) 빈 공간 2%로 거의 고르게 남았어요.
상세 설명
말하는 것: 기본 설정(처음 요철 2%, 섞인 결, 팽창 100%)의 첫 판에서 밀도 요철은 t = 4에 0.18, t = 6에 0.67로 처음엔 이론처럼 같은 시간마다 일정한 배수로 커졌고, 1을 넘긴 뒤 빠르게 덩어리가 생겼습니다. 끝(t = 9.6)에는 처음보다 691배 울퉁불퉁해져 빈 공간이 57%, 가장 큰 덩어리가 먼지의 19%, 덩어리가 26개였고, 덩이의 90%가 평균보다 성겼습니다. 3판 평균으로 처음 요철이 0.5%면 끝까지 빈 공간이 0%였고, 1%면 16%(드러난 때 t = 9.5), 2%면 53%(t = 8.2), 4%면 76%(t = 7)였습니다. 결이 큰 물결 위주면 빈 공간 68%·덩어리 11개·가장 큰 덩어리 34%, 잔물결 위주면 빈 공간 20%·덩어리 58개·가장 큰 덩어리 5%였습니다. 팽창이 50%로 느리면 가장 큰 덩어리가 63%(덩어리 7개)로 몇 개로 뭉쳐 버렸고, 150%로 빠르면 빈 공간이 2%로 끝까지 거의 고르게 남았습니다(200%면 0%). 팽창이 아예 없으면(0%) 덩어리 2개, 가장 큰 덩어리 48%였습니다. 이론 확인: 작은 물결 하나가 자라는 빠르기는 이론 1.000·0.618·0.414(팽창 0·100·200%)에 시뮬레이션 1.028·0.635·0.428로 3% 안팎에서 맞았습니다.
말하지 않는 것:
- 요철 크기·결·팽창 속도에 따른 차이는 이 시뮬레이션이 직접 보여 준 거예요. 다만 중력과 '팽창 브레이크'만 넣은 장난감 모델이라 실제 우주의 거미줄이 이렇게 생겼다는 증명은 아니에요.
- 실제 팽창처럼 공간이 커지거나 빠르기가 바뀌지 않고, 가스·별·은하·암흑 물질과 보통 물질의 구분·암흑 에너지가 없어요. 숫자는 모두 이 모델의 무차원 설정에서 나온 예시이고 관측값이나 예측이 아니에요.
- 팽창이 아예 없을 때(0%)는 덩어리가 출렁여 50%일 때보다 덜 뭉쳐 보였어요. 이 모델의 브레이크 단순화에서 오는 모습일 수 있어요.
상세 설명
말하지 않는 것: 이 모델은 중력과 "팽창 브레이크"만 넣은 장난감 모델이며, 실제 우주의 거미줄이 정확히 이렇게 만들어졌다고 단정하지 않습니다. 실제 우주의 팽창은 상자 자체가 커지고 시간에 따라 빠르기가 바뀌지만, 여기서는 상자가 그대로이고 브레이크 세기가 일정합니다. 암흑 물질과 보통 물질(가스)의 차이, 가스의 압력과 별·은하의 탄생, 암흑 에너지는 없습니다. 칸 하나보다 작은 구조는 흐릿하게만 나오고, 팽창이 아예 없으면 덩어리가 서로 지나치며 출렁여 오히려 덜 뭉쳐 보일 수 있습니다. 시간·거리·팽창 속도는 모두 이 모델의 무차원 단위이고, 숫자는 실제 우주의 관측값이나 예측이 아니라 이 모델에서 나온 예시입니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 거의 고른 물질에서 작은 요철이 중력으로 자라 구조가 생긴다는 생각을 중력 불안정이라고 합니다. Zel'dovich (1970)는 요철이 커지면 먼저 납작한 판("팬케이크")이 생긴다는 근사를 내놓았고, Bond, Kofman, Pogosyan (1996)은 은하들이 실(필라멘트)로 이어진 구조를 "우주 거미줄(cosmic web)"이라고 불렀습니다. 실제 우주의 큰 구조 연구에서는 이런 원리를 훨씬 큰 컴퓨터 시뮬레이션으로 다룬다고 알려져 있어요.
- 핵심 가정과 수식: 알갱이 i는
dv/dt = −∇φ − H·v,dx/dt = v를 따릅니다. 퍼텐셜 φ는 칸 밀도 대비δ = ρ/ρ̄ − 1에서∇²φ = G·δ(G = 1)를 빠른 푸리에 변환으로 풀어 구하고, 먼지 나눠 담기와 힘 읽기는 둘레 8칸에 나누는 방식(CIC), 기울기는 이웃 칸의 차이로 계산합니다. H는 팽창 속도 100%일 때 1입니다. 시간 간격 0.04로 240걸음(t = 9.6), 브레이크를 반걸음씩 앞뒤로 나눈 립프로그 적분입니다. 처음 요철은 흰 잡음에 파장별 세기P(k) ∝ kⁿ(큰 물결 n = −2.5, 섞임 −1.5, 잔물결 0, 칸 크기 잔물결은 거름)를 곱해 만들고, 젤도비치 근사처럼δ = −∇·ψ인 옮김 ψ만큼 알갱이를 옮긴 뒤 자라는 쪽 속도v = s·ψ를 줍니다. 요철이 작을 때 이론은δ ∝ est,s = (−H + √(H² + 4G))/2입니다. - 이 프로젝트의 단순화: 실제 우주론 시뮬레이션은 팽창하는 좌표와 시간에 따라 바뀌는 팽창률을 쓰지만, 이 모델은 상자를 고정하고 팽창을 일정한 브레이크 하나로 바꿨습니다. 그래서 요철이 "같은 시간마다 몇 배씩" 자라는데, 실제 우주에서 요철이 자라는 방식과는 다릅니다. 알갱이는 크기 없는 점이고, 칸 하나(알갱이 간격 1)보다 작은 곳의 중력은 흐려집니다. 가스, 별, 은하, 암흑 물질과 보통 물질의 구분, 암흑 에너지는 넣지 않았습니다. 상자 크기 32·알갱이 32,768개·기준값(빈 공간 0.2배, 덩어리 10배)은 이 프로젝트가 정한 설정입니다.
- 이론값과 시뮬레이션:
node tools/validate-cosmicweb.js(시드 고정). 상자 길이만 한 작은 물결 하나를 100걸음 키워 자라는 빠르기를 재면 팽창 0·100·200%에서 이론 1.000·0.618·0.414, 시뮬레이션 1.028·0.635·0.428로 3% 안팎에서 맞습니다(차이는 칸으로 나눠 계산하는 데서 옵니다). 팽창이 없을 때 운동 에너지 + 위치 에너지의 변화는 운동 에너지의 1.0% 안이었고, 알갱이 전체의 평균 속도는 0으로 유지됐습니다(10−13 이하). 기본 판에서 요철이 0.67이 될 때까지(t = 6) 보라색 선이 이론 직선을 따라가다 그 뒤 벗어나는 것도 ③에서 볼 수 있습니다. - 더 읽을거리: Zel'dovich (1970), 「Gravitational instability: an approximate theory for large density perturbations」, Astronomy and Astrophysics 5. Bond, Kofman, Pogosyan (1996), 「How filaments of galaxies are woven into the cosmic web」, Nature 380. Hockney, Eastwood (1981), 『Computer Simulation Using Particles』(입자-격자 방법).
- 이 프로젝트가 직접 설계한 단순화 구현이며 어떤 논문의 수치도 재현한 것이 아닙니다. 계산은 휴대폰과 컴퓨터 모두 같은 32,768개로 하고, 휴대폰의 ① 3D는 알갱이 셋 중 하나만 그립니다. ① 3D는 계산 결과를 그대로 그리며, 한 걸음 전과 지금 위치 사이를 이어 그려 부드럽게 보일 뿐 결과에 영향이 없습니다. 거의 고른 동안(밀도 요철 0.3 미만)은 한 번에 세 걸음씩 화면을 빨리 감지만 결과는 같습니다. ⑤~⑦은 기본 설정으로 미리 돌린 집계라 슬라이더를 바꿔도 달라지지 않습니다. 2D 단면 지도 대신 천천히 도는 3D 상자 하나로 보여 줍니다(입체로 이어진 실이 단면에서는 점처럼 끊겨 보이기 때문).