DT 심화 학습: “유량 × 시간 = 저량의 증가분” 개념


 

1. 욕조 모델에서 “유량 × 시간 = 저량의 증가분” 개념

1.1 욕조에 물을 붓는 상황을 상상

  • 유량(Inflow) = 수돗물을 틀어놓는 속도 (예: 20리터/시간, 10리터/시간 등)
  • 저량(Stock) = 욕조에 현재 담겨 있는 물의 양 (예: 몇 리터(L)인지)

우리 일상에서, “수돗물을 20리터/시간(liters per hour, L/h) 속도로 욕조에 채운다면 한 시간에 20리터가 채워진다”는 경험은 익숙합니다. 이것을 재미있게 표현하면 이렇습니다.

"한 시간 동안 채운다고 약속하면 20리터를 채우게 된다."

그런데 만약 약속을 어기고 30분만 채운다면 어떻게 되겠습니까?
“수돗물을 20리터/시간(liters per hour, L/h) 속도로 30분(0.5시간) 틀어놓으면, 물은 10리터가 채워진다"

  • 왜냐하면 20 (리터/시간) × 0.5 (시간) = 10 (리터)이기 때문입니다. 
그런데 위 식은 엄청난 비밀을 품고 있습니다. 

‘유량’(rate)은 20리터/시간(liters per hour, L/h) 입니다.  이 표현은 단지 한 시간 동안 채우기로 한 약속을 지켰을 때 20리터의 결과물(저량, Stock)을 보여준다는 것일 뿐입니다. 약속일 뿐입니다. 따라서, 실제 약속을 지키는지 안 지키는지는 따져 봐야 합니다. 
이것을 수학적으로 표현하면 다음과 같습니다. 
  • 유량은 실제 시간당 몇 리터씩 들어가는지 나타내고, 실제로 얼마나 들어갔는지는 그 유량에 ‘물 흐른 시간’을 곱해야 합니다. 그만큼만 욕조의 물이 변합니다.
     “유량 × 시간 = 저량의 증가분”


1.2 시스템 다이내믹스의 오일러 적분(Euler Integration)

Stella(등 시스템 다이내믹스 툴)는 시뮬레이션을 DT 간격으로 잘라, 각 스텝마다

ΔStock  =  (Inflow rate)×(DT

로 계산합니다.
(쉿!, 사실 flow, 유량, rate는 같은 표현이기도 합니다. 다만, 시간을 나누는 개념을 강조하기 위해서 inflow rate라고 표현한 것을 양해해 주세요.)

여기서 용어를 다시 정리하면 다음과 같습니다. 

  • Inflow rate(유량)은 “시간당 흐름의 양”
  • DT는 “한 시뮬레이션이 한 번 계산하는 시간(Step, 스텝)이 몇 시간(또는 몇 초)인지”

유량이 20 (L/h)이고 DT=0.5시간이면, 그 스텝 동안 욕조에 실제로 10리터가 늘어납니다. 


2. “유량이 20인데, 욕조에는 10만 쌓이는” 간단 예시

가장 단순하게, 처음에는 흐르지 않았는데 “시간 2.0에서 2.5까지(0.5시간) 동안 유량을 20(L/h)로 유지하다가 그 뒤엔 0(L/h)로 껐다”고 해 봅시다. 이 표현은 원래의 약속을 유추해 볼 수 있습니다. 같은 방식으로 시간 2.5에서 3까지의 0.5시간 동안 채웠다면 욕조에는 물 20L가 채워졌을 겁니다. 하지만, 약속을 지키지 않았으니 욕조에는 10L만 채워진 것입니다. 

  • DT=0.5라고 가정(즉, 0.5시간 단위로 시뮬레이션)

  • “유량 20”이라는 것은 “1시간 동안 틀면 20리터 나온다”는 의미
  • 하지만 실제로는 0.5시간(30분)만 틀어놓았으니, 20 × 0.5=10리터가 욕조에 들어감
  • 그 뒤 유량을 껐으면(0 L/h), 더 이상 물이 안 들어오므로 최종 10리터로 끝
유량 그래프를 그려보면: 시각 2.0~2.5 구간에 20이 찍혀 있고, 그 전후로는 0
저량(욕조 물) 그래프는: t=2.0부터 2.5까지 사이에 0→10으로 증가, 이후 10으로 유지


바로 이것이 “유량이 순간적으로 20이라 해도, 단 0.5시간만 진행되면 누적된 총량은 10”이 되는 이유입니다.


3. Pulse 함수를 대입하면, “한 스텝 동안만 20”과 동일

3.1 일반 Inflow vs PULSE : PULSE(10, 2, 5) 예시

위 사례에서 시뮬레이션은 서운했을 겁니다. 20L/h 약속을 했는데 실제로는 10L만 채워졌으니까요. 하지만, 원래 목적이 10L를 채우는 것이었다면? 그리고 여러가지 사정 때문에 0.5시간만 작동하고 0.5시간은 작동하지 못하는 inflow 수도꼭지라면? 이런 내용을 수학적으로 풀면 아래와 같습니다. 
  • 일반적인 Inflow”: 사용자가 매 시간 ‘원하는 유량(예: 3L/h, 10L/h, …)’을 직접 함수나 그래프 형태로 정의
  • PULSE(volume=10, …)”:
    • 특정 시점에 딱 한 타임스텝(예: DT=0.5) 동안만, ‘유량= 10/0.5=20 L/h’로 확 올렸다가 다시 0으로 복귀
    • 결국 결과적으로 10리터가 욕조(Stock)에 추가된 것과 같아짐

즉, PULSE는 “한 시점에 1번 ‘rate(유량)’을 짧은 시간 동안(=volume/DT) 틀어서, 최종 Stock에는 volume만큼 더 들어가게 만드는 일종의 자동화된 유량 함수”라고 볼 수 있습니다.

3.2 “유량 그래프 값” vs “욕조에 쌓인 양” 구분

  • 유량(flow) 그래프: 20이 잠깐 나타남 (이는 ‘시간당 20L 들어가는 속도’)
  • 저량(Stock) 그래프: 시뮬레이션 한 스텝 후 +10리터 (이는 ‘실제로 쌓인 물의 양’)

많은 분들이 혼동하는 부분이 바로 이 지점입니다.
“유량(=rate)”은 단위 시간당 흐름의 양
“저량 변화량”은 그 유량에 흐른 시간(DT)을 곱한 결과(적분)


4. 결론 요약

  1. “욕조로 들어오는 물이 20이면, 욕조엔 20이 그대로 쌓여야 하는 것 아닌가?”
    • 실제로 1시간 동안 계속 20(L/h)이면 1시간 후에는 20리터가 쌓이겠지만,
    • 0.5시간만 그렇게 틀어놓으면 10리터가 쌓임 (20×0.5=10)
  2. PULSE 함수도 정확히 같은 원리
    • PULSE(10, 2, 5)라면, t=2에서 DT=0.5인 그 한 스텝 동안만 ‘유량=20’
    • 그 결과 20×0.5=10이 욕조(Stock)에 추가되고, 이후 다시 유량=0으로 돌아감
    • 이 계산을 PULSE(10,2,5)에 따라 5시간 마다 반복함. (time=2, 7, 12, 17,...)

결국,

  • “유량=20”은 그저 “1시간 기준으로 보면 20리터 들어가는 속도”일 뿐. 즉, 약속일뿐.
  • 그 시간이 DT=0.5시간(30분)이라면, 최종적으로 10리터만 채워지는 게 자연스럽습니다.

정리:

  • “유량(flow) 값” = 단위 시간(1시간)당 변화량(=rate)
  • 실제 “저량(stock)에 더해지는 값” = “유량(flow) × DT(시간 간격)”


이 차이를 명확히 구분하면, “(펄스 순간) 20이라는 숫자가 왜 최종적으로 10만큼만 쌓이게 되는가?”라는 혼동이 해소될 것입니다.

댓글

이 블로그의 인기 게시물

경연제도와 시스템사고: 세종대왕의 조세제도 개혁에서 배우는 구조적 경청의 리더십

무기력을 이기는 시스템사고 (1) — 태도와 전략 사이에서

Fishery Game과 내쉬 균형