창문을 하나만 열면 왜 공기가 안 바뀔까?
답답할 때 창문을 열면 방 공기가 바뀐다고 생각하기 쉽습니다. 창을 하나 더 열면 두 배로 잘 바뀔 것 같고요. 그런데 이 모델에서는 같은 크기의 창 두 개라도, 같은 벽에 나란히 열면 공기가 창가에서만 맴돌고 방 대부분은 그대로 남습니다. 마주 보는 벽에 하나씩 열면 바람이 방을 가로질러 지나가고요. 무엇이 이 차이를 만들까요? 위에서 내려다본 방 한 칸으로 돌려 봅니다.
모델은 이렇게 움직입니다
- 위에서 내려다본 방 한 칸(60×40칸)입니다. 벽과 열린 곳(창 틈)이 있고 가구는 없습니다. 처음에 방 안 공기의 탁함(이산화탄소 같은 오염 정도를 0~100으로 나타낸 지수)은 100, 창 바깥 공기는 0입니다. 사람 한 명이 정해진 자리에서 계속 숨을 내쉽니다.
- 바람은 한 방향에서 붑니다. 열린 곳마다 그 벽이 바람을 얼마나 마주 보는지만큼 바람이 밀어 넣거나(정면 +1) 빨아냅니다(등진 벽 −1, 바람과 나란한 벽 0). 이 규칙은 이 프로젝트가 정한 단순한 설정입니다.
- 열린 곳끼리 압력이 다르면 공기가 압력이 높은 창으로 들어와 낮은 창으로 나갑니다. 방 안 흐름은 벽을 뚫지 않고 어디서도 공기가 새로 생기거나 사라지지 않는 2D 흐름으로 계산합니다. 모든 창의 압력이 같으면(창 하나, 또는 같은 벽에 나란한 창) 방을 가로지르는 흐름은 생기지 않습니다.
- 탁한 공기는 흐름에 실려 움직이고 조금씩 섞입니다. 창가에서는 바람이 들락거리며 바깥 공기와 더 많이 섞이는데, 이 효과는 위 흐름이 직접 만들지 못해서 창에서 가까울수록 크게 섞이는 "창가 섞임"을 따로 넣었습니다(바람이 셀수록 큼).
- 지표는 두 가지입니다. ① 절반으로 맑아지는 데 걸린 시간: 방 평균 탁함이 100에서 50이 될 때까지. ② 아직 탁한 곳: 끝(시간 60)에 탁함이 50을 넘는 바닥의 비율, 즉 공기가 잘 안 바뀐 구석의 넓이. 시간은 실제 분·초가 아닌 이 모델의 단위입니다.
직접 돌려보기
① 위에서 내려다본 방: 공기는 어디로 흐를까
방 바닥의 색이 공기 상태입니다(밝은 하늘색 = 맑음, 갈색 = 탁함). 파란 점과 꼬리는 방 안 공기가 흐르는 방향과 빠르기입니다. 바깥의 옅은 줄무늬는 바람 방향을 보여 주는 그림일 뿐 바깥 흐름을 계산한 것은 아닙니다. 창 이름표는 그 창으로 공기가 들어오는지 나가는지 알려 줍니다.
② 3D로 보기: 탁한 공기는 어디에 고여 있을까 3D
①과 같은 방을 벽이 선 입체로 세우고, 바닥의 공기가 탁할수록 높이 솟게 했습니다. 재생·일시정지·처음부터를 하면 여기서도 똑같이 움직입니다. 바람이 지나가는 길은 낮게 꺼지고, 흐름이 닿지 않는 구석은 언덕처럼 남아 있는 모습이 한눈에 보입니다. 벽은 반투명하고, 창 자리는 벽이 뚫려 있습니다.
①과 같은 방을 입체로 본 것입니다(새로 계산하지 않음). 높이는 실제 공기의 높이가 아니라 탁한 정도를 나타낸 것입니다. 드래그로 회전 · 휠이나 두 손가락으로 확대 · 휴대폰에서 세로로 쓸면 페이지가 내려갑니다
③ 방 공기는 얼마나 빨리 맑아질까
재생이 지난 시점까지만 그립니다. 갈색 선은 방 전체의 평균 탁함, 파란 선은 숨 쉬는 사람 둘레(5×5칸)의 공기입니다. 점선(50)까지 내려오는 데 걸린 시간이 "절반으로 맑아지는 시간"입니다. 사람 둘레는 숨 때문에 100을 넘을 수 있습니다.
④ 배치별 비교 (집계: 같은 바람에서 끝까지 돌린 4판)
지금의 바람 세기·방향·틈 크기·사람 자리에서 창 배치만 바꿔 각각 끝(시간 60)까지 따로 돌린 결과입니다. 재생과 상관없이 미리 계산한 집계입니다. 왼쪽은 절반으로 맑아지는 데 걸린 시간(짧을수록 빠름), 오른쪽은 끝에 아직 절반 넘게 탁한 바닥의 비율(작을수록 구석구석 바뀜)입니다.
⑤ 바람 세기별 비교 (집계)
지금 설정에서 바람 세기만 1~5로 바꿔 배치마다 끝까지 돌린 집계입니다. 위쪽 회색 띠의 빈 동그라미는 시간 60 안에 절반으로 맑아지지 못한 경우입니다.
⑥ 바람 방향별 비교 (집계)
지금 설정에서 바람이 오는 방향만 바꿔 배치마다 끝에 아직 탁한 곳의 비율을 비교한 집계입니다. 마주 보는 벽도 바람이 두 창의 벽과 나란히 불면(옆) 두 창의 압력이 같아져 흐름이 끊깁니다.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 창을 마주 보는 벽에 열면 바람이 방을 가로질러 빨리 바뀌고, 같은 벽에 나란히 열면 창가만 바뀌고 방 대부분은 오래 탁하게 남아요.
- 공기는 두 창의 바람 압력 차로 흘러요. 마주 보는 벽은 한쪽이 밀고 한쪽이 빨아 절반까지 30이 걸렸지만, 같은 벽 두 창은 압력이 같아 시간 60 안에 절반이 안 됐어요.
- 그렇다면 창을 어떻게 열어야 빨리 바뀔까요? 이 모델에선 바람 받는 벽과 맞은편 벽에 열고 사이 문을 열어 둔 쪽이 빨랐어요(절반까지 30, 문 닫으면 안 됨). 같은 벽 창은 3개여도 절반이 안 됐어요.
상세 설명
말하는 것: 정면 바람·보통 세기·틈 6칸에서 끝(시간 60)까지 돌렸을 때(검증 스크립트), 마주 보는 벽에 창 2개를 열면 방 평균 탁함이 절반이 되기까지 30이 걸렸고 끝에 아직 절반 넘게 탁한 바닥은 6%였습니다. 옆 벽(왼쪽+위쪽)은 53과 43%였습니다. 반면 같은 벽에 나란히 2개(72%)나 창 1개(82%)는 시간 60 안에 절반이 되지 않았고, 끝 평균은 75와 83이었습니다. 두 창의 압력이 같아 방을 가로지르는 흐름이 0이고, 창가 섞임만으로 창 근처만 바뀌었기 때문입니다. 바람 세기를 1~5로 바꾸면 마주 보는 벽은 아주 약한 바람(1)에서 60 안에 절반이 안 됐고(66%), 2에서 45, 4에서 22, 5에서 18이었습니다. 바람이 비스듬하면 마주 보는 벽 40(29%), 옆(위쪽)에서 불면 마주 보는 벽도 흐름이 0이 되어 절반이 안 됐습니다(64%). 마주 보는 벽 사이에 방을 나누는 벽을 두면 방문을 열었을 때 39(23%), 닫으면 흐름이 0(60%)이었습니다. 사람을 구석에 두면 방 평균은 거의 같아도(30) 사람 둘레 공기는 끝에 81로, 가운데(14)보다 훨씬 탁했습니다. 틈을 2칸으로 좁히면 45(35%), 12칸으로 넓히면 22(0%)였습니다.
말하지 않는 것:
- 마주 보는 벽과 같은 벽의 차이는 이 시뮬레이션이 직접 보여 준 거예요. 다만 벽마다 바람에 밀리는 정도는 이 프로젝트가 정한 단순한 규칙이라, 실제 집의 '옆 벽' 결과는 달라질 수 있어요.
- 위에서 본 2D 모델이라 높이, 온도 차로 생기는 흐름, 가구, 난류, 건물 규정과 건강 기준이 빠져 있어요. 어떤 배치가 충분하다고 단정하거나 처방하지 않아요.
- 현실에서 확인하려면 창 배치를 바꿔 가며 방 곳곳의 이산화탄소 농도를 실제로 재서 비교해 봐야 해요.
상세 설명
말하지 않는 것: 이 모델은 위에서 내려다본 2D 단순 모델입니다. 높이 방향의 흐름, 실내외 온도 차로 더운 공기가 위로 빠지는 흐름(굴뚝 효과), 가구와 사람의 움직임, 난류, 문틈·환기구, 실제 건물 규정과 건강 기준은 모두 빠져 있습니다. 벽마다 바람에 밀리는 정도는 이 프로젝트가 정한 단순한 규칙이라, 실제 집에서는 옆 벽이나 등진 벽이 더 세게 빨리는 등 결과가 달라질 수 있습니다(특히 "옆 벽" 결과는 이 규칙에 크게 좌우됩니다). 창 하나·같은 벽 창에서 흐름이 0인 것도 이 단순화 때문이며, 실제로는 바람의 흔들림과 온도 차로 어느 정도 환기가 됩니다. 시간과 탁함은 실제 분·ppm이 아닌 이 모델의 단위입니다. 어떤 배치가 법적·의학적으로 충분하다고 말하거나 처방하지 않습니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 서로 다른 벽(특히 마주 보는 벽)에 낸 열린 곳으로 바람이 들어와 반대쪽으로 빠지는 맞통풍(cross ventilation)은, 한쪽 벽에만 열린 곳이 있는 단측 환기(single-sided ventilation)보다 일반적으로 환기량이 크다고 알려져 있어요. 이 페이지는 특정 논문을 재현하지 않았고, 이 일반적인 설명을 단순한 모델로 직접 돌려 같은 방향이 나오는지 확인했습니다.
- 핵심 가정과 수식: 열린 곳 k의 바람 압력은
pk = −nk·w(n: 벽의 바깥쪽 방향,w: 바람 방향 단위 벡터)입니다. 방 안 압력φ는∇²φ = 0(벽에서는 벽을 뚫는 흐름 없음, 열린 곳에서는φ = pk)을 반복법으로 풀고, 칸 사이 흐름은F = 0.5 × (바람 세기/3) × (φa − φb)입니다. 탁함c는∂c/∂t + ∇·(c u) = ∇·(D∇c) + 숨을 유한 체적 풍상 차분으로 풉니다.D = 0.01 + 0.2 × (바람 세기/3) × e−d/5(d: 가장 가까운 열린 곳까지의 칸 수)이 창가 섞임입니다. 사람은 3×3칸에 걸음마다 0.12씩 더합니다. 흔히 쓰는 "환기 횟수(ACH, 한 시간에 방 공기가 몇 번 바뀌는가)" 대신 이 페이지는 무차원 시간(100걸음 = 1)을 씁니다. - 이 프로젝트의 단순화: 흐름은 점성이 없는 정상 퍼텐셜 흐름이라 창에서 뿜어 나오는 제트, 소용돌이, 난류가 없습니다. 그래서 실제보다 흐름이 방에 고르게 퍼지고 구석이 덜 남을 수 있습니다. 바람 압력 규칙(+1/0/−1의 코사인), 흐름 세기 0.5, 섞임 0.01·0.2·5칸, 숨 0.12, 방 크기 60×40칸, 시간 60은 모두 이 프로젝트가 정한 값이며 실제 건물의 측정값이 아닙니다. 바깥 공기는 늘 맑다고(0) 둡니다.
- 이론값과 시뮬레이션: 이 모델에는 맞춰 볼 이론값이 없어 시뮬레이션 값만 적습니다.
node tools/validate-ventilation.js에서 방 안 칸마다 들고 나는 흐름의 합이 0(최대 오차 약 5×10−10)이고 탁함이 음수가 되지 않음을 확인했습니다. 일반 지식과의 방향: 정면 바람에서 마주 보는 벽(들어오는 흐름 0.37, 절반 30)이 같은 벽(흐름 0, 60 안에 절반 안 됨)보다 빠르고 구석구석 바뀌어 같은 방향이었습니다. 다만 바람이 두 창의 벽과 나란히 불면 마주 보는 벽도 흐름이 0이 되는데, 이는 이 모델의 압력 규칙에서 나온 결과입니다. - 압력은 SOR 반복(가속 1.9, 변화량 10−9 이하까지)으로 풀고, 칸 사이 흐름과 섞임을 면마다 한 번씩 계산해 양쪽 칸에 같은 양을 빼고 더합니다(공기 양이 보존됨). 한 걸음에서 칸 밖으로 나가는 양이 0.9를 넘지 않도록 필요하면 한 걸음을 더 잘게 나눕니다. ①·② 의 파란 점은 계산된 흐름을 따라 움직이는 그림일 뿐 결과에 영향을 주지 않습니다. ④~⑥ 집계는 재생과 따로 같은 모델을 끝까지 돌린 값입니다. 바람이 없는 쪽 방(방문 닫힘)처럼 열린 곳이 없는 칸은 흐름이 0입니다.