Skip to content

Commit 8d8899e

Browse files
Merge pull request #9 from gregory-halverson-jpl/main
rebranding to `daylight-evapotranspiration`
2 parents 19f6f59 + 33edef5 commit 8d8899e

11 files changed

+342
-180
lines changed

README.md

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,81 @@
1-
# Usage
1+
# `daylight-evapotranspiration` Python Package
22

33
This package provides a set of functions for upscaling instantaneous or daily energy balance and meteorological data to daily evapotranspiration (ET) estimates. Below is a summary of each function and its usage:
44

55
[![CI](https://github.com/gregory-halverson-jpl/daily-evapotranspiration-upscaling/actions/workflows/ci.yml/badge.svg)](https://github.com/gregory-halverson-jpl/daily-evapotranspiration-upscaling/actions/workflows/ci.yml)
66

7-
The `daily-evapotranspiration-upscaling` Python package provides utilities for upscaling energy balance and meteorological data to daily ET, supporting raster, numpy array, and scalar inputs. It is designed for remote sensing, land surface modeling, and geospatial analysis.
7+
8+
The `daylight-evapotranspiration` Python package provides utilities for upscaling energy balance and meteorological data to daily ET, supporting raster, numpy array, and scalar inputs. It is designed for remote sensing, land surface modeling, and geospatial analysis.
89

910
[Gregory H. Halverson](https://github.com/gregory-halverson-jpl) (they/them)<br>
1011
1112
NASA Jet Propulsion Laboratory 329G
1213

1314
## Installation
1415

15-
This package is available on PyPI as `daily-evapotranspiration-upscaling` (with dashes):
16+
17+
This package is available on PyPI as `daylight-evapotranspiration`:
1618

1719
```bash
18-
pip install daily-evapotranspiration-upscaling
20+
pip install daylight-evapotranspiration
1921
```
2022

2123
## Usage
2224

23-
Import this package as `daily_evapotranspiration_upscaling` (with underscores):
25+
26+
Import this package as `daylight_evapotranspiration`:
2427

2528
```python
26-
import daily_evapotranspiration_upscaling
29+
import daylight_evapotranspiration
2730
```
2831

2932
### 1. `celcius_to_kelvin(T_C)`
30-
- **Description:** Convert Celsius to Kelvin.
33+
- **Description:** Convert Celsius to Kelvin. Implements $T_K = T_C + 273.15$ (IUPAC Green Book).
3134
- **Parameters:** `T_C` (float, array, or raster): Temperature in Celsius.
3235
- **Returns:** Temperature in Kelvin.
3336

3437
### 2. `lambda_Jkg_from_Ta_K(Ta_K)`
35-
- **Description:** Calculate latent heat of vaporization from air temperature (Kelvin).
38+
- **Description:** Calculate latent heat of vaporization from air temperature (Kelvin) using Henderson-Sellers (1984): $(2.501 - 0.002361 \times (T_a - 273.15)) \times 10^6$ J/kg.
3639
- **Parameters:** `Ta_K` (float, array, or raster): Air temperature in Kelvin.
3740
- **Returns:** Latent heat of vaporization (J/kg).
3841

3942
### 3. `lambda_Jkg_from_Ta_C(Ta_C)`
40-
- **Description:** Calculate latent heat of vaporization from air temperature (Celsius).
43+
- **Description:** Calculate latent heat of vaporization from air temperature (Celsius). Converts to Kelvin, then applies Henderson-Sellers (1984).
4144
- **Parameters:** `Ta_C` (float, array, or raster): Air temperature in Celsius.
4245
- **Returns:** Latent heat of vaporization (J/kg).
4346

4447
### 4. `calculate_evaporative_fraction(LE, Rn, G)`
45-
- **Description:** Compute evaporative fraction from latent heat flux, net radiation, and soil heat flux.
48+
- **Description:** Compute evaporative fraction (EF) from latent heat flux, net radiation, and soil heat flux: $EF = LE / (Rn - G)$ (Shuttleworth, 1993).
4649
- **Parameters:**
47-
- `LE` (float, array, or raster): Latent heat flux (W/m²)
48-
- `Rn` (float, array, or raster): Net radiation (W/m²)
49-
- `G` (float, array, or raster): Soil heat flux (W/m²)
50+
- `LE` (float, array, or raster): Latent heat flux (W/m²)
51+
- `Rn` (float, array, or raster): Net radiation (W/m²)
52+
- `G` (float, array, or raster): Soil heat flux (W/m²)
5053
- **Returns:** Evaporative fraction (unitless).
5154

52-
### 5. `daily_ET_from_daily_LE(LE_daylight, ...)`
53-
- **Description:** Estimate daily ET from daily latent heat flux (LE) and supporting parameters.
55+
### 5. `daylight_ET_from_daylight_LE(LE_daylight_Wm2, daylight_hours=None, DOY=None, lat=None, datetime_UTC=None, geometry=None, lambda_Jkg=2450000.0)`
56+
- **Description:** Estimate daylight ET (kg) from daylight latent heat flux (LE) and supporting parameters. Uses $ET = (LE_{daylight} \times \text{daylight seconds}) / \lambda$ (Monteith, 1965).
5457
- **Parameters:** See function docstring for details.
55-
- **Returns:** Daily evapotranspiration (mm/day).
58+
- **Returns:** Daylight evapotranspiration (kg).
5659

57-
### 6. `daily_ET_from_instantaneous(LE_instantaneous, Rn_instantaneous, G_instantaneous, DOY, lat, hour_of_day, ...)`
58-
- **Description:** Estimate daily ET from instantaneous measurements of latent heat flux, net radiation, and soil heat flux.
60+
### 6. `daylight_ET_from_instantaneous_LE(LE_instantaneous_Wm2, Rn_instantaneous_Wm2, G_instantaneous_Wm2, day_of_year=None, lat=None, hour_of_day=None, sunrise_hour=None, daylight_hours=None, time_UTC=None, geometry=None, lambda_Jkg=2450000.0)`
61+
- **Description:** Upscale instantaneous latent heat flux to daylight ET using EF and integrated net radiation (Verma et al., 1982; Anderson et al., 2007).
5962
- **Parameters:**
60-
- `LE_instantaneous` (float, array, or raster): Instantaneous latent heat flux (W/m²)
61-
- `Rn_instantaneous` (float, array, or raster): Instantaneous net radiation (W/m²)
62-
- `G_instantaneous` (float, array, or raster): Instantaneous soil heat flux (W/m²)
63-
- `DOY` (int): Day of year
64-
- `lat` (float): Latitude in degrees
65-
- `hour_of_day` (float): Local solar time (hours)
66-
- **Returns:** Daily evapotranspiration (mm/day).
63+
- `LE_instantaneous_Wm2` (float, array, or raster): Instantaneous latent heat flux (W/m²)
64+
- `Rn_instantaneous_Wm2` (float, array, or raster): Instantaneous net radiation (W/m²)
65+
- `G_instantaneous_Wm2` (float, array, or raster): Instantaneous soil heat flux (W/m²)
66+
- `day_of_year` (int): Day of year
67+
- `lat` (float): Latitude in degrees
68+
- `hour_of_day` (float): Local solar time (hours)
69+
- Additional parameters: see function docstring
70+
- **Returns:** Daylight evapotranspiration (kg).
6771

6872
# References
6973

74+
- Henderson-Sellers, B. (1984). A new formula for latent heat of vaporization of water as a function of temperature. QJRMS, 110(466), 1186-1190.
75+
- Shuttleworth, W.J. (1993). Evaporation models: A review. Agricultural and Forest Meteorology, 61(1-2), 13-35.
76+
- Monteith, J.L. (1965). Evaporation and environment. Symposia of the Society for Experimental Biology, 19, 205-234.
77+
- Verma, S.B., et al. (1982). Remote sensing of evapotranspiration for Nebraska Sandhills. Agricultural Meteorology, 26, 1-10.
78+
- Anderson, M.C., et al. (2007). A two-source time-integrated model for estimating surface energy fluxes using thermal infrared remote sensing. Remote Sensing of Environment, 112(1), 213-229.
7079
- Allen, R.G., Pereira, L.S., Raes, D., Smith, M., 1998. Crop evapotranspiration-Guidelines for computing crop water requirements-FAO Irrigation and drainage paper 56. FAO, Rome, 300(9).
7180
- Bastiaanssen, W.G.M., Menenti, M., Feddes, R.A., Holtslag, A.A.M., 1998. A remote sensing surface energy balance algorithm for land (SEBAL): 1. Formulation. Journal of hydrology, 212, 198-212.
7281
- Duffie, J. A., & Beckman, W. A. (2013). Solar Engineering of Thermal Processes (4th ed.). Wiley.

daily_evapotranspiration_upscaling/__init__.py

Lines changed: 0 additions & 2 deletions
This file was deleted.

daily_evapotranspiration_upscaling/daily_evapotranspiration_upscaling.py

Lines changed: 0 additions & 139 deletions
This file was deleted.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
from .daylight_evapotranspiration import *
2+
from .version import __version__

0 commit comments

Comments
 (0)