File size: 757 Bytes
938949f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
"""Shared utility functions for SolarWine."""

from __future__ import annotations

from typing import Optional


def cwsi_from_delta_t(
    leaf_temp_c: Optional[float] = None,
    air_temp_c: Optional[float] = None,
    *,
    delta_t: Optional[float] = None,
) -> float:
    """Compute CWSI proxy from leaf–air temperature differential.

    Scale: 0°C delta → CWSI=0, 10°C delta → CWSI=1.
    Clamped to [0.0, 1.0].

    Can be called with (leaf_temp_c, air_temp_c) or with delta_t= directly.
    """
    if delta_t is None:
        if leaf_temp_c is None or air_temp_c is None:
            raise ValueError("Provide (leaf_temp_c, air_temp_c) or delta_t=")
        delta_t = leaf_temp_c - air_temp_c
    return max(0.0, min(1.0, delta_t / 10.0))