시뮬레이션 유체역학 소프트웨어 마지막 수정: 2026-08-24 04:34:52

1. 개요[편집]

SWMM
Storm Water Management Model
개발미국 환경보호청 (EPA)
최초 배포1971년
현행 계열SWMM 5 (2005년 C 언어 전면 재작성)
라이선스퍼블릭 도메인 (소스 공개)
대상도시 우수·합류식 하수 유출
수리 엔진정상류 · 운동파 · 동역학파

비가 얼마나 오면 맨홀 뚜껑이 떠오르는가. 이 질문에 대한 세계 표준 답변기.

SWMM(Storm Water Management Model)은 미국 환경보호청(EPA)이 개발한 도시 우수·합류식 하수 유출 해석 모형으로, 강우가 지표에 떨어져 유출되고 관망을 따라 이동해 방류되기까지의 수량·수질을 단일 사상 또는 장기 연속으로 모의하는 소프트웨어다.

1971년 첫 배포 이래 50년 넘게 살아남았고, 2005년 SWMM 5에서 C 언어로 전면 재작성되며 GUI와 함께 퍼블릭 도메인으로 풀렸다. 그 결과 상용 도시침수 모델의 상당수(PCSWMM, InfoSWMM, XPSWMM 등)가 SWMM 엔진을 그대로 감싸고 있고, 한국의 하수도정비기본계획 침수 검토도 대개 이 계보 위에 있다. 엔진이 무료 + 검증 이력 50년이라는 조합은 이 바닥에서 사실상 무적이다.1

개수로 유동이 하천 한 구간의 물리를 다룬다면, SWMM은 그 물리를 수천 개 관로와 접합점으로 이루어진 망(network) 위에서, 그것도 강우 입력부터 끝까지 이어 붙여 돌리는 시스템이다.

2. 무엇으로 이루어져 있나[편집]

SWMM은 물이 지나가는 경로를 네 개의 구획으로 나눠 각각 다른 모형을 얹는다.

  • 대기 — 강우 시계열(관측 우량주상도 또는 설계 강우), 증발, 강설·융설.
  • 지표면(소유역, subcatchment) — 침투를 빼고 남은 유효우량을 지표 유출로 바꾸는 부분. 여기가 수문(hydrology).
  • 지하 — 침투수의 지하수 저류와 기저유출, 관로로의 침입수(infiltration/inflow).
  • 관망(conveyance) — 접합점(junction)·관거(conduit)·저류지·오리피스·위어·펌프로 이루어진 그래프. 여기가 수리(hydraulics).

사용자가 그리는 것은 결국 방향성 그래프다. 노드(접합점·유출구·분기·저류지)와 링크(관거·펌프·조절 시설)를 잇고, 각 소유역이 어느 노드로 물을 붓는지 지정한다. 관거 단면은 원형·직사각형·사다리꼴부터 임의 형상 단면(shape curve)까지 지원한다.

3. 지표면 유출 — 비선형 저수지 모형[편집]

SWMM의 수문 모듈은 소유역 하나를 바닥에 구멍이 아니라 옆으로 넘치는 턱이 달린 얕은 저수지로 본다. 저류깊이 dd에 대한 물수지가

dt=iefq\frac{\partial d}{\partial t} = i - e - f - q

이고, 여기서 ii는 강우강도, ee는 증발, ff는 침투, qq는 단위면적당 유출률이다. 핵심은 유출률 qq매닝 공식에 기반한 지표면 등류로 닫는다는 것.

q=WA1n(dds)5/3S1/2q = \frac{W}{A}\cdot\frac{1}{n}\,(d-d_s)^{5/3}\,S^{1/2}

WW는 소유역의 특성폭(characteristic width), AA는 면적, dsd_s는 지면 저류(depression storage), SS는 지표 경사, nn은 지표면 조도계수다. ddsd\le d_s면 유출이 0이다 — 물웅덩이가 먼저 차야 흐르기 시작한다는 뜻.

qqdd의 5/3승이라 이 상미분방정식은 비선형이고, 그래서 이름이 비선형 저수지(nonlinear reservoir) 모형이다. 소유역마다 불투수/투수 영역을 나누고, 불투수 영역도 지면 저류가 있는 것과 없는 것으로 다시 쪼개서 세 개의 저수지를 병렬로 돌린다.

침투 ff는 세 가지 중 고른다.

모형성격쓰는 곳
호튼(Horton)침투능이 초기값에서 최종값으로 지수 감쇠단일 호우, 매개변수 감각이 익숙함
그린-암프트 모형습윤 전선 기반 물리 모형토양 물성이 있을 때
유출곡선지수(SCS-CN)누가강우-누가유출 경험식자료가 빈약한 유역

여기서 초심자가 가장 많이 헤매는 매개변수가 특성폭 WW다. 물리적으로는 “유출이 흘러나오는 유역의 유효 폭”이고 W=A/LW = A/L(LL은 대표 유하거리)로 잡으라고 안내되지만, 실무에서는 첨두 유출 시간을 관측에 맞추는 보정 손잡이로 쓰인다. WW를 키우면 유역이 얕고 넓어져 첨두가 빠르고 뾰족해진다.2

4. 관망 추적 — 세 단계의 타협[편집]

SWMM 수리 엔진의 성격을 결정하는 것은 FLOW_ROUTING 옵션 하나다. 셋 중 무엇을 고르느냐가 곧 “생브낭 방정식 중 어느 항까지 살릴 것인가”의 선언이다.

정상류(Steady Flow). 매 시간 스텝마다 관거 안의 흐름이 등류라고 가정하고 상류 유입량을 그대로 하류로 옮긴다. 저류도 지체도 감쇠도 없다. 사실상 유량 시계열의 평행이동. 장기 연속 모의에서 물수지만 보고 싶을 때 말고는 쓰지 않는다.

운동파(Kinematic Wave). 연속식에 마찰경사 = 바닥경사(Sf=S0S_f=S_0)를 대입해 닫는다. 즉 운동량식에서 국소 가속·이류 가속·압력(수심) 항을 전부 버리고 마찰과 중력만 남긴 것.

At+Qx=0,Q=1nARh2/3S01/2\frac{\partial A}{\partial t} + \frac{\partial Q}{\partial x} = 0, \qquad Q = \frac{1}{n}A R_h^{2/3} S_0^{1/2}

수치적으로 매우 안정하고 5~15분짜리 큰 시간 간격으로도 돌아가서 장기 연속 모의에 유리하다. 대신 못 하는 것이 많다 — 배수(backwater) 영향, 역류, 압력관류, 순환 루프 관망, 하류 조건에 의한 제어. 관거 용량을 넘는 유량은 그냥 상류 노드에 쌓이거나 버려진다. 지형이 급하고 가지 구조인 관망이면 충분하지만, 평탄한 도시 관망에서는 답이 물리적으로 틀린다.

동역학파(Dynamic Wave). 얕은 물 방정식의 1차원 형태(하천·관로 문맥에서는 생브낭 방정식이라 부른다)를 통째로 푼다. 관거마다 운동량식,

Qt+x ⁣(Q2A)+gAHx+gASf=0\frac{\partial Q}{\partial t} + \frac{\partial}{\partial x}\!\left(\frac{Q^2}{A}\right) + gA\frac{\partial H}{\partial x} + gAS_f = 0

접합점마다 체적 연속식,

Ht=QinQoutAstore\frac{\partial H}{\partial t} = \frac{\sum Q_{\text{in}} - \sum Q_{\text{out}}}{A_{\text{store}}}

을 세워 연립한다. HH는 수두(관저고 + 수심), AstoreA_{\text{store}}는 접합점이 갖는 저류 수면적이다. 이렇게 하면 배수·역류·루프·압력관류가 전부 자연스럽게 나오고, 도시 침수 해석은 사실상 이 모드가 기본값이다.

5. 동역학파의 수치 — 시간 간격이 전부다[편집]

SWMM 5의 동역학파는 관거 유량을 명시적으로 갱신하고 접합점 수두에 대해 반복 완화를 몇 회 도는 구조다(수정 오일러 + 축차근사). 완전 음해가 아니므로 쿠랑 조건에 묶인다.

ΔtLV+gD\Delta t \le \frac{L}{V + \sqrt{gD}}

LL은 관거 길이, VV는 유속, DD는 수리수심이다. 도시 관망에는 길이 5 m짜리 짧은 관거가 태연히 섞여 있으므로, 그 한 개가 전체 시간 간격을 몇 초 단위로 끌어내린다. 대응책이 셋 있고, 셋 다 부작용이 있다.

  • 가변 시간 간격. 매 스텝 위 식으로 허용 간격을 계산하고 안전계수(쿠랑 계수, 보통 0.75)를 곱해 쓴다. 표준 대응.
  • 관거 늘이기(LENGTHENING_STEP). 지정한 시간 간격을 만족하도록 짧은 관거를 인위적으로 늘인다. 계산은 안정해지지만 관망에 없던 저류 체적이 생긴다. 늘어난 총 체적을 반드시 보고서에서 확인해야 한다.
  • 관성 감쇠(INERTIAL_DAMPING). 흐름이 임계 근처로 가면 운동량식의 관성항을 줄이거나(PARTIAL) 아예 끈다(FULL). 진동은 잡히지만 물리를 손으로 눌러 놓는 것이므로 남용 금지.

시간 간격을 잘못 잡았을 때의 증상은 대체로 똑같다. 유량 시계열이 톱니처럼 진동하고 연속성 오차가 슬금슬금 커진다. SWMM은 계산이 끝나면 유출 연속성 오차와 관망 추적 연속성 오차를 퍼센트로 찍어 주는데, 이 바닥의 관행은 10%를 넘으면 결과를 쓰지 않고, 5%를 넘으면 원인을 찾는다는 것이다. 잔차 그래프 대신 이 두 숫자가 수렴 판정 역할을 한다.

6. 압력관류 — 자유수면 공식으로 만관을 푸는 법[편집]

동역학파의 지배식은 자유수면 흐름을 전제한다. 그런데 관이 꽉 차면 수면이 사라지고 AstoreA_{\text{store}}가 0으로 붕괴해 접합점 연속식이 0/00/0이 된다. 이 특이점을 넘기는 방법이 둘이다.

  • EXTRAN 방식(전통). 만관이 감지되면 방정식을 바꾼다 — 수두 갱신식 대신 “그 노드의 순유입량이 0이 되도록 수두를 맞춘다”는 대수 조건을 반복으로 푼다. 오래된 방식이라 검증 이력은 길지만, 자유수면과 만관 상태를 오가는 노드에서 해가 튀는 경향이 있다.
  • 프라이스만 슬롯(Preissmann slot). 폐단면 관 꼭대기에 가상의 아주 좁은 세로 틈을 뚫어 놓는다. 만관이 되면 물이 이 슬롯을 타고 올라가므로 수면이 계속 존재하고, 자유수면 공식을 손대지 않고 그대로 쓸 수 있다. 슬롯 폭은 그 안에서의 파속 gA/Tslot\sqrt{gA/T_{\text{slot}}}이 관의 압력파 속도와 비슷해지도록 잡는다 — 즉 수충격 해석의 탄성 파속을 자유수면 문제로 위장시키는 트릭이다. 슬롯이 좁을수록 물리적으로 정확하지만 시간 간격이 작아지고, 넓으면 가짜 저류가 생긴다.

근래 SWMM 5 버전은 SURCHARGE_METHOD 옵션으로 이 둘 중 하나를 고르게 한다. 만관과 자유수면을 반복해서 오가는 합류식 관망에서 계산이 자꾸 튄다면 슬롯 쪽으로 바꿔 보는 것이 정석 처방이다.

7. LID·GI 모듈[편집]

2000년대 이후 도시 물관리의 화두가 “관을 키운다”에서 “애초에 유출을 줄인다”로 옮겨 가면서, SWMM에도 저영향개발(LID) / 그린 인프라(GI) 모듈이 들어왔다. 생태저류지, 옥상녹화, 투수성 포장, 침투도랑, 빗물통, 식생수로, 지붕 배수 단절 등을 소유역 내부에 면적 비율로 배치한다.

구현은 연직 층 모형이다. 표면층 - 포장층 - 토양층 - 저류층 - 배수관을 필요한 만큼 쌓고, 각 층 사이의 물 이동을 침투식과 배수식으로 연결한 1차원 물수지를 소유역 물수지에 병렬로 붙인다. 그래서 LID의 효과는 “첨두 저감 몇 %“라는 결과로 나오지만, 그 숫자는 결국 사용자가 입력한 토양 투수계수와 저류층 공극률이 정한다. 여기서도 모형은 계산기이지 예언자가 아니다.

8. 수질과 보정[편집]

수질은 축적-세척(buildup-washoff) 방식이다. 무강우 기간 동안 토지이용별로 오염물이 지표에 쌓이고(멱함수·지수·포화 함수), 강우 시 유출강도의 멱함수로 씻겨 나간다. 저류지·노드에는 제거식을 걸어 처리를 흉내 낸다. 물리 모형이라기보다 회귀식에 시간 축을 붙인 것에 가깝고, 그래서 수질 결과는 수량 결과보다 신뢰구간이 훨씬 넓다.

보정 지표로 가장 널리 쓰이는 것은 내시-서트클리프 효율계수다.

E=1(QobsQsim)2(QobsQobs)2E = 1 - \frac{\sum (Q_{\text{obs}} - Q_{\text{sim}})^2}{\sum (Q_{\text{obs}} - \overline{Q}_{\text{obs}})^2}

E=1E=1이면 완벽, E=0E=0이면 “관측 평균을 그냥 상수로 답한 것과 같은 수준”, E<0E<0이면 평균만도 못하다는 뜻이다. 첨두 유량에 가중이 크게 실리는 지표라 저유량 재현은 못 본다는 한계가 있어서, 편의(PBIAS)나 체적 오차와 함께 본다. 보정 대상 매개변수는 사실상 정해져 있다 — 불투수율, 특성폭, 지표 조도, 지면 저류, 침투 매개변수. 관거 조도 nn까지 만지기 시작하면 이미 모형이 아니라 곡선 맞추기다.3

보정에서 반드시 붙는 잔소리: 민감도 해석을 먼저 하고, 검증(validation) 사상을 따로 남겨라. 매개변수 대여섯 개면 어떤 강우 사상이든 맞출 수 있다. 맞춘 매개변수로 다른 사상을 예측하지 못한다면 그건 검증 및 확인이 아니라 그냥 내삽이다.

9. 실무에서 자주 밟는 지뢰[편집]

  • 접합점 침수(node flooding)를 무시한다. 노드 수두가 지반고를 넘으면 SWMM은 기본적으로 그 물을 계에서 버린다. 침수 심도를 알고 싶으면 ALLOW_PONDING을 켜고 노드마다 저류 수면적을 줘야 한다. 안 그러면 “침수 없음”이 아니라 “침수량을 삭제함”인 결과를 침수 없음으로 읽게 된다.
  • 1차원 관망만으로 도시 침수를 말한다. 관에서 넘친 물이 도로를 따라 어디로 가는지는 SWMM 1D가 모른다. 2차원 지표 모형과 양방향 결합(1D-2D coupling)하거나, 최소한 도로를 개수로 링크로 모델링해야 한다.
  • 관망 자료를 그대로 믿는다. 관저고 하나가 반대로 입력되면 그 구간이 역경사가 되어 배수 영향이 관망 전체로 번진다. 동역학파는 그런 입력도 “성실하게” 풀어 준다.
  • 설계 강우 하나로 끝낸다. 같은 재현기간이라도 시간분포(Huff, 교호블록)에 따라 첨두가 크게 달라진다. 장기 연속 모의로 통계를 뽑는 쪽이 정직하지만, 그 대가로 계산 시간과 자료 요구가 늘어난다.

이 목록의 공통점은 하나다. 수치가 틀려서 생기는 문제보다 입력·해석이 틀려서 생기는 문제가 훨씬 많다. SWMM은 50년간 다듬어진 엔진이라 웬만해선 엔진이 범인이 아니다.

10. 관련 문서[편집]

11. Footnotes[편집]

  1. 미 연방정부가 세금으로 만든 소프트웨어를 퍼블릭 도메인으로 푸는 관행 덕분에 EPANET(상수관망), HEC-RAS(하천), SWMM(우수)이 각 분야의 사실상 표준이 되었다. 상용 벤더들은 이 엔진 위에 GIS 연동과 결과 시각화를 얹어 판다. “코어는 공짜, 껍데기가 유료”라는 사업 모델이 토목 소프트웨어에서 가장 잘 굴러가는 사례.

  2. 그래서 특성폭을 “물리량”이라고 소개한 뒤 보정 손잡이로 쓰는 이 모형의 태도를 두고 비판이 없지는 않다. 반론도 명확하다 — 도시 유역의 유하 경로는 애초에 하나로 정의되지 않으며, 어차피 유효 매개변수일 수밖에 없다는 것. 수문 모형 전반의 오랜 논쟁(“물리 기반이라는 말이 어디까지 물리 기반인가”)의 축소판이다.

  3. 관거 조도계수는 재질과 시공 상태로 거의 결정되는 값이라, 이걸 만져서 관측에 맞추기 시작하면 다른 곳의 오차를 관에다 떠넘기는 셈이 된다. 그리고 그렇게 보정한 모형으로 관 증설 대안을 평가하면, 증설 효과가 조도에 흡수되어 이상한 답이 나온다. 보정은 “어디를 만져도 되는가”를 정하는 일이 절반이다.