AquaView 백엔드의 핵심입니다. 5단계 하수처리 공정을 HRT 조절에 따라 수질이 어떻게 변하는지 시그모이드 함수 기반으로 시뮬레이션합니다. 실제 EPA/WEF 데이터를 기반으로 한 수치를 사용합니다.
원수 (BOD 200, TSS 220 mg/L)
↓ [1차 침전] HRT 2h — 무거운 부유물질 중력 침전
↓ [폭기조] HRT 6h — 미생물이 유기물 분해 (BOD/COD 주요 제거)
↓ [2차 침전] HRT 1.5h — 활성슬러지 분리
↓ [질산화] HRT 10h — NH₃→NO₃ 변환 (암모니아 제거)
↓ [소독] HRT 0.5h — 염소 CT값 기반 병원균 제거
처리수 (BOD <10, TSS <10 mg/L 목표)
8가지 수질 지표를 단계별로 추적합니다:
| 지표 | 단위 | 원수 | 처리수 목표 |
|---|---|---|---|
| BOD (생화학적 산소 요구량) | mg/L | 200 | < 10 |
| TSS (총 부유물질) | mg/L | 220 | < 10 |
| COD (화학적 산소 요구량) | mg/L | 400 | < 40 |
| NH₃-N (암모니아) | mg/L | 35 | < 1 |
| 탁도 | NTU | 50 | < 2 |
| pH | - | 7.2 | 6.5~8.5 |
| DO (용존 산소) | mg/L | 0.5 | > 3 |
| 대장균 | CFU/100mL | 1,000,000 | < 10 |
HRT 변화에 따라 제거율이 비선형적으로 변하는 현상을 시그모이드 함수로 모델링합니다.
import math
def _sigmoid_removal(
hrt_ratio: float,
r_min: float,
r_max: float,
steepness: float = 3.0,
midpoint: float = 1.0
) -> float:
x = steepness * (hrt_ratio - midpoint)
sigmoid = 1 / (1 + math.exp(-x))
return r_min + (r_max - r_min) * sigmoid
표준 시그모이드 함수:
σ(x) = 1 / (1 + e^(-x))
변형 적용:
removal = r_min + (r_max - r_min) × σ(k × (hrt_ratio - m))
| 파라미터 | 의미 | 예 |
|---|---|---|
r_min |
HRT→0 시 최소 제거율 | 0.35 |
r_max |
HRT→∞ 시 최대 제거율 | 0.78 |
k (steepness) |
곡선의 가파름 | 질산화=4.5, 일반=3.0 |
m (midpoint) |
50% 제거 지점 | 1.0 (설계 HRT 기준) |
포기조 BOD 제거율 (r_min=0.55, r_max=0.97, k=3.0):
hrt_ratio = 0.5 (HRT 50%): 0.55 + 0.42 × σ(-1.5) = 63% 제거
hrt_ratio = 1.0 (HRT 100%): 0.55 + 0.42 × σ(0) = 76% 제거 ← 설계값
hrt_ratio = 2.0 (HRT 200%): 0.55 + 0.42 × σ(3.0) = 95% 제거
HRT 증가에 따라 제거율이 비선형적으로 향상되는 현상을 실제 공학 데이터와 동일하게 모델링합니다.