EN | 한국어
온도를 넣으면 하루에 물이 얼마나 증발할 수 있는지 계산해 주는 코드에도, 논문에서 옮겨 오는 과정의 작은 차이가 남을 수 있다. 나는 증발산 계산 라이브러리 PyEt의 수식과 구현을 대조하면서 선택 가능한 두 계산 방식의 차이를 재현해 제보했다. 하나는 지수 안의 상수, 다른 하나는 풍속의 제곱이었다.
여기서 증발산은 땅의 증발과 식물의 수분 방출을 함께 가리킨다. 잠재 증발산은 물이 충분히 공급된다는 등의 방법별 조건에서 추정하는 값으로, 실제로 빠져나간 물을 측정한 결과와는 다르다. 단위인 mm/일은 물의 부피를 면적당 깊이로 표현한 것이다.
20°C를 넣었는데, 어느 식을 계산했을까
첫 비교는 hamon(..., method=2)에 한정했다. PyEt 1.5.0과 고정한 master 코드에는 지수 안에 T + 273.3이 있지만, 코드가 인용하는 Ansorge와 Beran의 2019년 논문 식 (12)에는 T + 237.3이 있다. 지수 밖의 분모 T + 273.3은 그대로여야 한다. 비슷하게 생긴 두 분모를 모두 바꾸는 수정은 이 비교가 제안하는 바가 아니다. exp는 입력값이 커질수록 결과가 커지는 지수함수다. 분모가 달라지면 같은 온도를 넣어도 이 함수에 들어가는 값이 달라진다.
PET = (
218.527 * (DL / 12) / (T + 273.3)
* exp(17.26939 * T / (T + 237.3))
)
# T: °C, DL: 낮 길이(시간), PET: mm/일
관측 날씨가 아닌 계산용 예제로, 2024년 6월 21일 적도에서 평균 기온 20°C를 넣었다. 이 설정의 낮 길이는 12시간이다. 현재 코드는 2.418882912285 mm/일, 인용 식을 직접 계산하면 2.852135610743 mm/일로, 현재 값이 약 15.19% 작았다. 상수 하나만 바꾼 로컬 함수는 인용 식과 맞았고, 비교한 method=0/1/3 대조 계산은 달라지지 않았다. 이 한 입력의 차이를 모든 기온에서의 오차율로 해석하지는 않는다.
풍속 8을 넣는 것과 8²을 넣는 것
두 번째는 선택 가능한 옛 방식인 fao_24의 보정계수다. Xu와 Singh의 2000년 논문은 마지막 항을 −0.0011 × U²로 쓰지만, 코드는 −0.0011 × U로 계산한다. 풍속이 8 m/s라면 이 항에 넣는 수는 각각 64와 8이다. 다음 식에서 RH는 상대습도(%), U는 낮 동안의 평균 풍속(m/s)이고, b는 계산에 곱하는 무차원 보정계수다.
b = (1.066 - 0.0013*RH + 0.045*U
- 0.0002*RH*U - 0.0000315*RH**2
- 0.0011*U**2)
25°C, 습도 50%, 풍속 8 m/s, 일사량 20 MJ/m²/일, 기압 101.3 kPa의 합성 입력을 만들었다. 풍속은 하루 동안 일정하다고 두어 낮 평균과 일평균을 같게 하고, 지표의 빛 반사 비율인 알베도는 양쪽 모두 0으로 맞췄다. 나머지 계산 조건도 유지해 마지막 항만 비교하자 현재 코드의 6.902852700948 mm/일과 제곱식의 6.531076986525 mm/일 사이에 0.371775714423 mm/일 차이가 생겼다.
옛 표까지 돌아가 확인한 범위
인용 논문만으로 판단을 끝내지 않고 1977년 FAO 원자료의 표도 대조했다. 풍속 0~10 m/s를 다루는 표에서 습도 50%, 풍속 8 m/s의 계수는 반올림된 1.13이다. 제곱식의 1.13185는 이 값에 가깝고, 현재 선형식은 1.19345다. 표가 반올림됐고 회귀식도 근사식이라는 조건을 남기되, 풍속 제곱을 뒷받침하는 별도 근거로 제보에 넣었다.
PyEt의 기본 알베도 0.23으로 같은 입력을 계산하면 현재 값 5.246196579730과 제곱식 값 4.959929279624 mm/일의 차이는 약 +5.77%다. 풍속 2 m/s에서는 약 +0.24%이고, 0과 1 m/s에서는 두 항이 같으며 그 사이에서는 차이의 방향이 바뀐다. 따라서 “PyEt가 항상 5.77% 크게 계산한다”는 결론은 성립하지 않는다. FAO-56 Penman–Monteith나 다른 방법, 이 코드를 사용한 연구 전체도 이번 확인의 대상이 아니다.
수정으로 확정하기 전에 남은 질문
PyEt의 2024년 모델 설명 논문에도 fao_24의 마지막 항이 선형으로 적혀 있다. 의도한 변형이라면 그 근거가 필요하므로, 코드가 잘못됐다고 단정해 끝내기보다 어떤 식을 구현하려 했는지와 문서·회귀 테스트를 함께 확인해 달라고 요청했다. 2026년 10월 13일 확인 기준 두 제보는 열려 있고 댓글은 0건이다. 여기까지가 재현과 공식 제보 기록이며, 유지관리자의 확인이나 배포판 수정은 아직 확인되지 않았다.
원문과 재현 입력: Hamon 제보 #100 · FAO-24 제보 #101
