1. 개요[편집]
| SEAWAT | |
|---|---|
| 개발 | 미국 지질조사국(USGS) |
| 구성 | MODFLOW(유동) + MT3DMS(이송)의 결합 코드 |
| 대상 | 밀도 의존 지하수 유동과 용질·열 수송 |
| 미지수 | 등가담수수두 hf + 종별 농도 C |
| 상태식 | ρ = ρ0 + (∂ρ/∂C) C (+ 압력·온도 항) |
| 주요 판본 | SEAWAT(2002) · SEAWAT-2000 · V4(2008, VSC·열·다중종) |
| 후계 | MODFLOW 6 GWF-GWT + BUY/VSC 패키지 |
두 개의 검증된 코드가 이미 있다. 하나는 물을 흘리고 하나는 소금을 나른다. 그러면 새 코드를 짤 게 아니라 둘을 묶으면 되지 않나 — SEAWAT은 이 발상을 끝까지 밀어붙인 결과물이다.
SEAWAT은 USGS가 배포하는 밀도 의존 지하수 유동 해석 코드로, MODFLOW의 유동 해석과 MT3DMS의 용질 이송 해석을 하나의 실행 파일 안에서 밀도 결합 루프로 묶은 것이다. 원래 목적은 해안 대수층의 염수 쐐기 계산이었고 이름도 거기서 왔지만, 밀도가 농도·온도·압력에 의존하는 지하수 문제 전반에 쓰인다.
풀려는 물리 자체는 해수 침투 문서에 있다 — 밀도가 유동을 바꾸고 유동이 농도를 나르는 양방향 결합, 가이벤-헤르츠베르크의 40배 지렛대, 헨리·엘더 벤치마크의 성격. 이 문서가 다루는 것은 그 물리를 SEAWAT이 어떤 자료구조와 결합 전략으로 실제로 푸는가이며, 겹치는 부분은 링크로 넘긴다.
2. 왜 등가담수수두인가[편집]
밀도가 균일하면 수두 하나로 흐름 방향이 정해진다. 밀도가 변하면 이게 깨진다. 같은 수두를 가진 두 지점 사이에서도 밀도가 다르면 물이 흐른다. 관측정에서 잰 수위를 그대로 비교하면 안 된다는 뜻이고, 실제로 해안 관측망에서 심도가 다른 두 관정의 수위를 그냥 비교해 방향을 판단하는 것은 이 분야의 고전적 오류다.
해법은 모든 지점의 압력을 담수 기준으로 환산하는 것이다.
이것이 등가담수수두(equivalent freshwater head)이며, SEAWAT의 유동 미지수다. 현장에서 잰 수두 (그 지점 물의 실제 밀도 기준)와의 관계는
가 된다. 관측 자료를 모형에 넣기 전에 이 변환을 거쳐야 하고, 변환에는 관정 스크린 심도 와 그 지점의 밀도가 필요하다. 심도를 모르면 변환이 안 된다는 사실이, 해수 침투 모형의 보정 자료가 왜 그렇게 부족한지를 절반쯤 설명한다.
3. 지배 방정식[편집]
담수수두로 쓴 변수밀도 유동식은 다음 형태다.
는 담수 기준 수리전도도, 는 담수 기준 비저류계수, 는 공극률, 는 단위 체적당 유입·유출량, 는 그 물의 밀도다. 세 군데를 짚어 볼 만하다.
- 괄호 안 둘째 항이 부력항이다. 밀도가 균일하면 사라지고 식은 MODFLOW의 그것으로 돌아간다. SEAWAT을 밀도 결합 없이 돌리면 정확히 MODFLOW가 되는 이유.
- 는 점성 보정이다. 염분과 온도가 점성을 바꾸므로, 온도가 크게 변하는 문제(지열저장)에서는 이 항이 밀도항만큼 중요해진다. 여기가 V4에서 VSC 패키지로 열린 자리다.
- 우변 둘째 항이 밀도가 만든 새 저류항이다. 농도가 시간에 따라 변하면 그 자체로 질량이 저장·방출된다. 상수 밀도 계에는 아예 없던 항이고, 이 항 때문에 유동식이 이송 해의 시간미분을 필요로 한다 — 결합이 방정식 수준에서 이미 들어와 있다는 증거다.
닫는 것은 상태식이다. 기본형은 선형이다.
해수 농도 35 kg/m³ 에서 밀도가 1000에서 1025로 가므로 이고, 이 값이 SEAWAT의 기본값이다. V4는 여기에 압력항과 다중 화학종 항을 더한 확장형을 쓴다.
이송 쪽은 MT3DMS가 그대로 담당하는 대류-확산 방정식이며, 흡착·붕괴 같은 반응항도 MT3DMS의 것을 물려받는다.
4. 결합 — 이 코드의 정체성[편집]
SEAWAT의 시간 진행은 유동과 이송을 번갈아 푸는 것이다. 한 시간스텝 안에서
- 현재 농도장으로 밀도와 점성을 계산한다.
- 유동식을 풀어 를 얻고, 셀 면 유량을 뽑는다.
- 그 유량장으로 이송식을 풀어 새 농도장을 얻는다.
- 다음 스텝으로 간다.
이 순서를 그대로 한 번만 돌면 명시적(explicit) 결합이다. 밀도가 한 스텝 뒤처지므로 시간 지연 오차가 생기지만, 비용은 유동 한 번 + 이송 한 번으로 끝난다. 반대로 2~3을 농도가 안 변할 때까지 반복하면 암시적(iterative) 결합이다. SEAWAT은 결합 반복 횟수를 사용자가 지정하게 하고(1이면 명시적), 반복 시에는 연속한 두 반복 사이 최대 밀도 변화가 허용치 아래로 떨어질 때 멈춘다.
여기서 실무 판단이 갈린다.
- 밀도 대비가 작거나 시간스텝이 짧으면 명시적으로 충분하다. 대부분의 해수 침투 장기 모의가 여기 해당한다.
- 밀도 대비가 크거나(암염돔·고농도 브라인) 스텝이 길면 명시적 결합이 진동하거나 물리적으로 틀린 순환을 만든다. 이때 반복을 켠다.
- 반복 자체도 픽카드 고정점이라 강한 결합에서는 수렴이 느리거나 진동한다. 완화계수가 필요해지는 지점이며, 밀도-농도 관계까지 야코비안에 넣는 완전 뉴턴-랩슨법은 SEAWAT에 없다. SUTRA·FEFLOW 계열이 그쪽을 지원한다.
“명시적 결합으로 충분한지”를 확인하는 방법은 하나뿐이다 — 반복을 켜서 답이 바뀌는지 본다. 스텝을 반으로 줄여 봐도 된다. 이 확인을 안 하고 기본 설정으로 돌린 결과를 그대로 쓰는 것이 이 코드의 대표적 오용이다.
시간 간격에도 이중 구조가 있다. MODFLOW 쪽 유동 시간스텝 하나 안에서 MT3DMS는 자기 안정 조건에 따라 이송 스텝을 여러 개로 쪼갠다. 명시적 이송 도식은 쿠랑 수 제약에 묶이고, 음해 GCG 솔버를 쓰면 완화되지만 수치분산이 늘어난다. 여기서 격자 페클레 수가 2를 넘으면 진동이 시작되고, 진동이 농도를 음수로 만들면 밀도가 담수보다 가벼워져 없던 부력이 생긴다. 결합계에서는 이송 쪽의 사소한 오버슛이 곧바로 가짜 대류로 증폭되므로, TVD 제한자나 특성선 기반 기법(MOC/MMOC)이 선택이 아니라 사실상 필수가 된다.
5. 판본 계보[편집]
- SEAWAT (2002). 궈와 베넷의 초기 코드를 정리해 USGS 공식 배포판으로 낸 것. MODFLOW-88/96 계열 + MT3DMS.
- SEAWAT-2000. MODFLOW-2000의 프로세스(process) 구조 위로 옮겨, 유동을 담당하는 VDF(Variable-Density Flow) 프로세스와 이송을 담당하는 IMT(Integrated MT3DMS) 프로세스로 나눴다. MODFLOW-2000의 관측·민감도 프로세스를 함께 쓸 수 있게 된 것이 실질적 이득.
- SEAWAT V4 (2008). 확장이 크다. VSC(Viscosity) 패키지로 점성의 농도·온도 의존을 넣었고, 상태식을 다중 화학종으로 확장했으며, 열 수송을 지원한다.1
열 수송을 어떻게 넣었는지가 특히 볼 만하다. 새 방정식을 추가한 것이 아니라, 온도를 하나의 화학종으로 취급한다. 열전도를 유효 확산계수로, 고체 골격의 열용량을 선형 흡착의 지연계수로 환산해 넣으면 열 이송 방정식이 용질 이송 방정식과 같은 형태가 된다. MT3DMS 코드를 한 줄도 안 고치고 열을 푸는 것이며, “이미 있는 것을 다시 쓴다”는 SEAWAT의 설계 철학이 가장 노골적으로 드러나는 지점이다. 대가는 열역학적 비선형(온도 의존 열물성)을 정직하게 못 다룬다는 것.
6. 검증 문제[편집]
밀도 결합 코드는 검증 문화가 유난히 발달해 있고, SEAWAT 문서도 벤치마크 묶음을 그대로 싣는다.
| 문제 | 무엇을 보는가 |
|---|---|
| 상자 문제 | 밀도 결합을 껐을 때 MODFLOW와 정확히 같은 답이 나오는가 |
| 헨리 문제 | 정상상태 염수 쐐기, 준해석해와 비교 |
| 엘더 문제 | 밀도 불안정 손가락, 격자 의존성 |
| HYDROCOIN 암염돔 | 강한 밀도 대비에서의 순환 패턴 |
| 회전 경계면 | 성층 상태의 회전 — 정합 속도 문제를 드러냄 |
| 열 문제 | 열-용질 이중 수송의 동시 검증 |
여기서 해수 침투 문서가 지적한 두 가지가 그대로 재현된다. 헨리 문제는 통과해도 코드가 옳다는 증거가 못 된다(담수 플럭스가 커서 밀도에 둔감하다). 엘더 문제는 격자를 조여도 하나의 답으로 안 간다(여러 안정해가 공존하는 분기 문제다). 즉 이 표의 문제들은 각각 다른 실패 모드를 겨냥한 것이고, 하나만 돌려서는 아무것도 확인되지 않는다.
첫 줄의 상자 문제가 시시해 보이지만 실제로는 가장 유용하다. 밀도 결합을 끄면 원래 코드로 정확히 환원되는가는 결합 층의 버그를 잡는 가장 싼 시험이고, 새 판본을 받았을 때 제일 먼저 돌리는 것이 이것이다.
7. 응용[편집]
- 해수 침투. 본업이다. 염수 쐐기 전진, 상승원추, 주입 장벽 설계, 안전 양수량 산정. 자세한 것은 해수 침투.
- 염지하수·브라인. 내륙 염호, 암염돔 주변 순환, 폐기물 처분장 안전성 평가. 밀도 대비가 커서 반복 결합이 필수인 영역.
- 지열·열저장(ATES). V4의 열 수송으로 대수층 축열 시스템의 열 회수율을 본다. 여기서는 밀도보다 점성 변화가 유량에 미치는 영향이 크다는 점이 자주 지적된다.
- 해저 지하수 유출(SGD). 육상 담수가 해저로 빠져나가는 양과 그에 동반되는 염분 순환. 해양 물질수지의 미지 항목 중 하나다.
- 하구·간척지. 조석에 따라 경계 염분이 변하는 조건에서의 담수 렌즈 거동.
8. 한계와 후계[편집]
MODFLOW에서 상속한 것들. 구조격자(비구조 격자를 못 쓴다), 마른 셀 처리, 그리고 뉴턴 정식화의 부재. 자유면 대수층에서 밀도 결합까지 켜면 수렴 문제가 곱해진다. MODFLOW 문서의 마른 셀 이야기가 여기서는 더 나쁜 형태로 재현된다 — 셀이 죽었다 살아나면 그 셀의 농도와 밀도도 함께 요동한다.
MT3DMS에서 상속한 것들. 격자 페클레 수 제약, 수치분산과 진동 사이의 절충, 그리고 분산지수라는 보정 파라미터. 전이대 두께는 사실상 가 혼자 정하는데, 이 값은 척도 의존성이 심해 물리량이라기보다 손잡이에 가깝다.
결합에서 새로 생긴 것들. 유동식은 질량 보존 형태(발산 안에 가 있다)이고 이송식은 체적 유량을 받는다. 두 표현 사이의 환산이 이산 수준에서 완벽하지 않아, 밀도 변화가 큰 문제에서는 용질 질량 수지에 잔차가 남는다. 물수지표를 두 개(물·용질) 다 봐야 하는 이유다.
후계. MODFLOW 6이 지하수 수송 모형(GWT)을 본체에 넣고, 부력을 BUY 패키지, 점성을 VSC 패키지로 제공하면서 SEAWAT의 기능을 흡수했다. 구조적으로도 정리가 된다 — SEAWAT은 두 코드를 하나의 실행 파일로 억지로 합친 것이라 두 코드의 제약을 모두 물려받았지만, MODFLOW 6은 처음부터 여러 모형을 교환(exchange)으로 잇는 구조이므로 유동-수송 결합이 예외가 아니라 일반 기능의 한 사례가 된다. 비구조 격자와 뉴턴 정식화도 같이 딸려 온다.
그럼에도 SEAWAT은 아직 현역이다. 이유는 코드 품질이 아니라 관성이다. 20년치 모형 자산이 이 형식으로 존재하고, 인허가에 제출된 모형의 버전을 바꾸려면 심의를 다시 받아야 하며, 논문의 벤치마크도 SEAWAT 결과를 기준으로 인용된다. FloPy가 SEAWAT 입출력을 계속 지원하는 것도 그래서다. 그리고 밀도 결합 코드를 새로 짜는 사람은 여전히 SEAWAT 문서의 벤치마크 묶음부터 돌린다 — 코드가 물러나도 그 코드가 만든 시험 문제는 남는다.23
9. 관련 문서[편집]
- 해수 침투 · 지하수 유동 · 다르시 법칙 · 수리전도도 · 다공성 매질 유동
- MODFLOW · MT3DMS · SUTRA · FloPy
- 대류-확산 방정식 · 페클레 수 · 수치분산 · MUSCL
- 자연대류 · 레일리-테일러 불안정 · 분기 이론
- 뉴턴-랩슨법 · 유한차분법 · 유한체적법 · 희소행렬
- 역문제 · 불확실성 정량화 · 격자 수렴 지수 · 검증 및 확인
10. Footnotes[편집]
-
VSC 패키지는 SEAWAT-2000이 아니라 V4에서 들어왔다. 순서를 헷갈리기 쉬운데, SEAWAT-2000이 한 일은 기능 추가가 아니라 구조 이식(MODFLOW-2000의 프로세스 개념으로 옮기기)이었고, 물리 확장은 V4에 몰려 있다. 코드 계보를 읽을 때 “이 판본은 무엇을 새로 풀 수 있게 됐는가”와 “이 판본은 무엇을 다시 짰는가”를 구분해야 하는 이유. ↩
-
SEAWAT의 설계는 소프트웨어공학 관점에서 보면 전형적인 트레이드오프다. 두 성숙한 코드를 결합하면 검증 이력을 통째로 물려받는 대신 제약도 통째로 물려받는다. 처음부터 다시 짜면 깨끗하지만 아무도 안 믿는다. 지하수 분야는 규제 문서가 최종 소비자라 믿음의 값이 우아함의 값보다 비싸다, 그래서 결합이 이겼다. 20년 뒤 MODFLOW 6이 다시 짠 것은 그 20년 동안 신뢰가 충분히 쌓였기 때문이다. ↩
-
참고로 밀도 결합 없이 급격경계면만 다루는 훨씬 싼 도구들도 여전히 쓰인다(MODFLOW의 SWI 패키지 계열). 전이대 두께를 못 보는 대신 계산이 두 자릿수 싸서, 광역 스크리닝이나 수백 개 시나리오를 훑을 때는 이쪽이 합리적이다. 문제는 결과 그림이 SEAWAT 것과 비슷하게 예뻐서, 보고서만 보면 어느 쪽으로 계산했는지 구분이 안 된다는 것이다. ↩