refet


Namerefet JSON
Version 0.4.2 PyPI version JSON
download
home_page
SummaryASCE Standardized Reference Evapotranspiration Functions
upload_time2023-06-30 14:48:01
maintainer
docs_urlNone
author
requires_python>=3.7
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ===================================================
ASCE Standardized Reference Evapotranspiration (ET)
===================================================

|version| |build|

NumPy functions for computing daily and hourly reference ET following the ASCE Standardized Reference Evapotranspiration Equations (ASCE2005_).

Usage
=====

Daily Example
-------------

The following demonstrates how to compute a single daily ETr value using weather data for 2015-07-01 from the `Fallon, NV AgriMet station <https://www.usbr.gov/pn/agrimet/agrimetmap/falnda.html>`__.
The necessary unit conversions are shown on the input values.
The raw input data is available `here <https://www.usbr.gov/pn-bin/daily.pl?station=FALN&year=2015&month=7&day=1&year=2015&month=7&day=1&pcode=ETRS&pcode=MN&pcode=MX&pcode=SR&pcode=YM&pcode=UA>`__.

.. code-block:: console

    import math
    import refet

    # The actual vapor pressure could be computed from the dew point temperature below
    #   or the tdew can be passed directly to the function
    # Convert the dew point temperature to Celsius
    # tdew = units._f2c(49.84)
    # ea = 0.6108 * math.exp(17.27 * tdew / (tdew + 237.3))
    # ea = refet.calcs._sat_vapor_pressure(tdew)

    etr = refet.Daily(
        tmin=66.65, tmax=102.80, tdew=49.84, rs=674.07, uz=4.80,
        zw=3, elev=1208.5, lat=39.4575, doy=182, method='asce',
        input_units={'tmin': 'F', 'tmax': 'F', 'tdew': 'F', 'rs': 'Langleys',
                     'uz': 'mph', 'lat': 'deg'}
        ).etr()

    print(f'ETr: {float(etr):.2f} mm')

Hourly Example
--------------

The following demonstrates how to compute a single hourly ETr value using weather data for 18:00 UTC (11:00 AM PDT) on 2015-07-01 from the `Fallon, NV AgriMet station <https://www.usbr.gov/pn/agrimet/agrimetmap/falnda.html>`__.
The necessary unit conversions are shown on the input values.
The raw input data is available `here <https://www.usbr.gov/pn-bin/instant.pl?station=FALN&year=2015&month=7&day=1&year=2015&month=7&day=1&pcode=OB&pcode=EA&pcode=WS&pcode=SI&print_hourly=1>`__

.. code-block:: console

    import refet

    etr = refet.Hourly(
        tmean=91.80, ea=1.20 , rs=61.16, uz=3.33, zw=3, elev=1208.5,
        lat=39.4575, lon=-118.77388, doy=182, time=18, method='asce',
        input_units={'tmean': 'F', 'rs': 'Langleys', 'uz': 'mph', 'lat': 'deg'}
        ).etr()

    print(f'ETr: {float(etr):.2f} mm')


Input Parameters
================

Required Parameters (hourly & daily)
------------------------------------

========  ==========  ====================================================
Variable  Type        Description [default units]
========  ==========  ====================================================
uz        ndarray     Wind speed [m s-1]
zw        float       Wind speed height [m]
elev      ndarray     Elevation [m]
lat       ndarray     Latitude [degrees]
doy       ndarray     Day of year
========  ==========  ====================================================

Required Ea Parameters (hourly & daily)
---------------------------------------------------

Either the "ea" or "tdew" parameter must be set

========  ==========  ====================================================
Variable  Type        Description [default units]
========  ==========  ====================================================
ea        ndarray     Actual vapor pressure [kPa]
tdew      ndarray     Dew point temperature [C]
========  ==========  ====================================================

Required Daily Parameters
-------------------------

========  ==========  ====================================================
Variable  Type        Description [default units]
========  ==========  ====================================================
rs        ndarray     Incoming shortwave solar radiation [MJ m-2 d-1]
tmin      ndarray     Minimum daily temperature [C]
tmax      ndarray     Maximum daily temperature [C]
========  ==========  ====================================================

Required Hourly Parameters
--------------------------

========  ==========  ====================================================
Variable  Type        Description [default units]
========  ==========  ====================================================
rs        ndarray     Incoming shortwave solar radiation [MJ m-2 h-1]
tmean     ndarray     Average hourly temperature [C]
lon       ndarray     Longitude [degrees]
time      ndarray     UTC hour at start of time period
========  ==========  ====================================================

Optional Parameters
-------------------

===========  ==========  ====================================================
Variable     Type        Description [default units]
===========  ==========  ====================================================
method       str         | Calculation method

                         * 'asce' -- Calculations will follow ASCE-EWRI 2005 (default)
                         * 'refet' -- Calculations will follow RefET software

rso_type     str         | Override default clear sky solar radiation (Rso) calculation
                         | Defaults to None if not set

                         * 'full' -- Full clear sky solar formulation
                         * 'simple' -- Simplified clear sky solar formulation
                         * 'array' -- Read Rso values from "rso" function parameter

rso          array_like  | Clear sky solar radiation [MJ m-2 d-1 or MJ m-2 h-1]

                         * Only used if rso_type == 'array'
                         * Defaults to None if not set

input_units  dict        | Override default input unit types
                         | Input values will be converted to default unit types

===========  ==========  ====================================================

Installation
============

The RefET python module can be installed with conda or pip:

.. code-block:: console

    conda install refet

Issues
======

The functions have **not** been tested for inputs with different shapes/sizes and the broadcasting may not work correctly.

The user must handle the following:
 + File I/O
 + QA/QC of the input data
 + Filling missing or bad data

Cloudiness Fraction (hourly)
----------------------------

The cloudiness fraction (fcd) is computed as the ratio of the measured solar radiation (Rs) to the theoretical clear sky solar radiation (Rso).  This ratio cannot be computed directly at night since Rso is 0.  ASCE2005_ suggests computing a representative nighttime fcd based on the fcd at sunset and/or sunrise.

In the RefET module fcd is hard coded to 1 for all time steps with very low sun angles since the hourly reference ET is computed independently for each time step.

Calculation Method - ASCE vs. RefET
===================================

The main difference between the two "methods" is that the "asce" method attempts to follow the equations in ASCE2005_, whereas the "refet" method attempts to follow the calculations of the `RefET Software <https://www.uidaho.edu/cals/kimberly-research-and-extension-center/research/water-resources/ref-et-software>`__ as closely as possible.  The difference in output between these methods is generally negligible (if not identical for realistic numbers of significant digits).  Note that the default is set to "asce" to best match the calculations a user would expect to have happen. The "refet" method was added in order to help validate this code to the RefET Software.

Validation
==========

Please see the `validation document <VALIDATION.md>`__ for additional details on the source of the test values and the comparison of the functions to the Ref-ET software.

Dependencies
============

 * `numpy <http://www.numpy.org>`__

Modules needed to run the test suite:

 * `pandas <http://pandas.pydata.org>`__
 * `pytest <https://docs.pytest.org/en/latest/>`__
 * `pytz <http://pythonhosted.org/pytz/>`__

References
==========

.. _references:

.. [ASCE2005]
 | ASCE-EWRI (2005). The ASCE standardized reference evapotranspiration equation.
 | `https://ascelibrary.org/doi/book/10.1061/9780784408056 <https://ascelibrary.org/doi/book/10.1061/9780784408056>`__

.. |build| image:: https://github.com/WSWUP/refet/workflows/build/badge.svg
   :alt: Build status
   :target: https://github.com/WSWUP/refet
.. |version| image:: https://badge.fury.io/py/refet.svg
   :alt: Latest version on PyPI
   :target: https://badge.fury.io/py/refet

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "refet",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": "",
    "keywords": "",
    "author": "",
    "author_email": "Charles Morton <charles.morton@dri.edu>",
    "download_url": "https://files.pythonhosted.org/packages/cd/c1/aba753aa28f86a7dda68850ce99b0f77d971bb69970cb73d8200bbaefe85/refet-0.4.2.tar.gz",
    "platform": null,
    "description": "===================================================\nASCE Standardized Reference Evapotranspiration (ET)\n===================================================\n\n|version| |build|\n\nNumPy functions for computing daily and hourly reference ET following the ASCE Standardized Reference Evapotranspiration Equations (ASCE2005_).\n\nUsage\n=====\n\nDaily Example\n-------------\n\nThe following demonstrates how to compute a single daily ETr value using weather data for 2015-07-01 from the `Fallon, NV AgriMet station <https://www.usbr.gov/pn/agrimet/agrimetmap/falnda.html>`__.\nThe necessary unit conversions are shown on the input values.\nThe raw input data is available `here <https://www.usbr.gov/pn-bin/daily.pl?station=FALN&year=2015&month=7&day=1&year=2015&month=7&day=1&pcode=ETRS&pcode=MN&pcode=MX&pcode=SR&pcode=YM&pcode=UA>`__.\n\n.. code-block:: console\n\n    import math\n    import refet\n\n    # The actual vapor pressure could be computed from the dew point temperature below\n    #   or the tdew can be passed directly to the function\n    # Convert the dew point temperature to Celsius\n    # tdew = units._f2c(49.84)\n    # ea = 0.6108 * math.exp(17.27 * tdew / (tdew + 237.3))\n    # ea = refet.calcs._sat_vapor_pressure(tdew)\n\n    etr = refet.Daily(\n        tmin=66.65, tmax=102.80, tdew=49.84, rs=674.07, uz=4.80,\n        zw=3, elev=1208.5, lat=39.4575, doy=182, method='asce',\n        input_units={'tmin': 'F', 'tmax': 'F', 'tdew': 'F', 'rs': 'Langleys',\n                     'uz': 'mph', 'lat': 'deg'}\n        ).etr()\n\n    print(f'ETr: {float(etr):.2f} mm')\n\nHourly Example\n--------------\n\nThe following demonstrates how to compute a single hourly ETr value using weather data for 18:00 UTC (11:00 AM PDT) on 2015-07-01 from the `Fallon, NV AgriMet station <https://www.usbr.gov/pn/agrimet/agrimetmap/falnda.html>`__.\nThe necessary unit conversions are shown on the input values.\nThe raw input data is available `here <https://www.usbr.gov/pn-bin/instant.pl?station=FALN&year=2015&month=7&day=1&year=2015&month=7&day=1&pcode=OB&pcode=EA&pcode=WS&pcode=SI&print_hourly=1>`__\n\n.. code-block:: console\n\n    import refet\n\n    etr = refet.Hourly(\n        tmean=91.80, ea=1.20 , rs=61.16, uz=3.33, zw=3, elev=1208.5,\n        lat=39.4575, lon=-118.77388, doy=182, time=18, method='asce',\n        input_units={'tmean': 'F', 'rs': 'Langleys', 'uz': 'mph', 'lat': 'deg'}\n        ).etr()\n\n    print(f'ETr: {float(etr):.2f} mm')\n\n\nInput Parameters\n================\n\nRequired Parameters (hourly & daily)\n------------------------------------\n\n========  ==========  ====================================================\nVariable  Type        Description [default units]\n========  ==========  ====================================================\nuz        ndarray     Wind speed [m s-1]\nzw        float       Wind speed height [m]\nelev      ndarray     Elevation [m]\nlat       ndarray     Latitude [degrees]\ndoy       ndarray     Day of year\n========  ==========  ====================================================\n\nRequired Ea Parameters (hourly & daily)\n---------------------------------------------------\n\nEither the \"ea\" or \"tdew\" parameter must be set\n\n========  ==========  ====================================================\nVariable  Type        Description [default units]\n========  ==========  ====================================================\nea        ndarray     Actual vapor pressure [kPa]\ntdew      ndarray     Dew point temperature [C]\n========  ==========  ====================================================\n\nRequired Daily Parameters\n-------------------------\n\n========  ==========  ====================================================\nVariable  Type        Description [default units]\n========  ==========  ====================================================\nrs        ndarray     Incoming shortwave solar radiation [MJ m-2 d-1]\ntmin      ndarray     Minimum daily temperature [C]\ntmax      ndarray     Maximum daily temperature [C]\n========  ==========  ====================================================\n\nRequired Hourly Parameters\n--------------------------\n\n========  ==========  ====================================================\nVariable  Type        Description [default units]\n========  ==========  ====================================================\nrs        ndarray     Incoming shortwave solar radiation [MJ m-2 h-1]\ntmean     ndarray     Average hourly temperature [C]\nlon       ndarray     Longitude [degrees]\ntime      ndarray     UTC hour at start of time period\n========  ==========  ====================================================\n\nOptional Parameters\n-------------------\n\n===========  ==========  ====================================================\nVariable     Type        Description [default units]\n===========  ==========  ====================================================\nmethod       str         | Calculation method\n\n                         * 'asce' -- Calculations will follow ASCE-EWRI 2005 (default)\n                         * 'refet' -- Calculations will follow RefET software\n\nrso_type     str         | Override default clear sky solar radiation (Rso) calculation\n                         | Defaults to None if not set\n\n                         * 'full' -- Full clear sky solar formulation\n                         * 'simple' -- Simplified clear sky solar formulation\n                         * 'array' -- Read Rso values from \"rso\" function parameter\n\nrso          array_like  | Clear sky solar radiation [MJ m-2 d-1 or MJ m-2 h-1]\n\n                         * Only used if rso_type == 'array'\n                         * Defaults to None if not set\n\ninput_units  dict        | Override default input unit types\n                         | Input values will be converted to default unit types\n\n===========  ==========  ====================================================\n\nInstallation\n============\n\nThe RefET python module can be installed with conda or pip:\n\n.. code-block:: console\n\n    conda install refet\n\nIssues\n======\n\nThe functions have **not** been tested for inputs with different shapes/sizes and the broadcasting may not work correctly.\n\nThe user must handle the following:\n + File I/O\n + QA/QC of the input data\n + Filling missing or bad data\n\nCloudiness Fraction (hourly)\n----------------------------\n\nThe cloudiness fraction (fcd) is computed as the ratio of the measured solar radiation (Rs) to the theoretical clear sky solar radiation (Rso).  This ratio cannot be computed directly at night since Rso is 0.  ASCE2005_ suggests computing a representative nighttime fcd based on the fcd at sunset and/or sunrise.\n\nIn the RefET module fcd is hard coded to 1 for all time steps with very low sun angles since the hourly reference ET is computed independently for each time step.\n\nCalculation Method - ASCE vs. RefET\n===================================\n\nThe main difference between the two \"methods\" is that the \"asce\" method attempts to follow the equations in ASCE2005_, whereas the \"refet\" method attempts to follow the calculations of the `RefET Software <https://www.uidaho.edu/cals/kimberly-research-and-extension-center/research/water-resources/ref-et-software>`__ as closely as possible.  The difference in output between these methods is generally negligible (if not identical for realistic numbers of significant digits).  Note that the default is set to \"asce\" to best match the calculations a user would expect to have happen. The \"refet\" method was added in order to help validate this code to the RefET Software.\n\nValidation\n==========\n\nPlease see the `validation document <VALIDATION.md>`__ for additional details on the source of the test values and the comparison of the functions to the Ref-ET software.\n\nDependencies\n============\n\n * `numpy <http://www.numpy.org>`__\n\nModules needed to run the test suite:\n\n * `pandas <http://pandas.pydata.org>`__\n * `pytest <https://docs.pytest.org/en/latest/>`__\n * `pytz <http://pythonhosted.org/pytz/>`__\n\nReferences\n==========\n\n.. _references:\n\n.. [ASCE2005]\n | ASCE-EWRI (2005). The ASCE standardized reference evapotranspiration equation.\n | `https://ascelibrary.org/doi/book/10.1061/9780784408056 <https://ascelibrary.org/doi/book/10.1061/9780784408056>`__\n\n.. |build| image:: https://github.com/WSWUP/refet/workflows/build/badge.svg\n   :alt: Build status\n   :target: https://github.com/WSWUP/refet\n.. |version| image:: https://badge.fury.io/py/refet.svg\n   :alt: Latest version on PyPI\n   :target: https://badge.fury.io/py/refet\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "ASCE Standardized Reference Evapotranspiration Functions",
    "version": "0.4.2",
    "project_urls": {
        "Bug Tracker": "https://github.com/WSWUP/RefET/issues",
        "Homepage": "https://github.com/WSWUP/RefET"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cdc1aba753aa28f86a7dda68850ce99b0f77d971bb69970cb73d8200bbaefe85",
                "md5": "fbe722e579996158fff03d37b0b7dca9",
                "sha256": "0fdb7d2e3dd6b40eb303345122298a00342b6fa6a990b1b6b16e15a361d62104"
            },
            "downloads": -1,
            "filename": "refet-0.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "fbe722e579996158fff03d37b0b7dca9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 27272,
            "upload_time": "2023-06-30T14:48:01",
            "upload_time_iso_8601": "2023-06-30T14:48:01.027473Z",
            "url": "https://files.pythonhosted.org/packages/cd/c1/aba753aa28f86a7dda68850ce99b0f77d971bb69970cb73d8200bbaefe85/refet-0.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-30 14:48:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "WSWUP",
    "github_project": "RefET",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "refet"
}
        
Elapsed time: 0.36889s