NCL Home > Documentation > Functions > Meteorology, Crop

refevt_penman_fao56

Use the full Penman-Monteith equation to derive reference evapotranspiration as described in FAO 56.

Available in version 6.4.0 and later.

Prototype

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/crop.ncl"

	function refevt_penman_fao56 (
		Tmean        : numeric,  
		netrad       : numeric,  
		G            : numeric,  
		g            : numeric,  
		u2           : numeric,  
		edef         : numeric,  
		D            : numeric,  
		albedo_crop  : numeric,  
		cnum         : numeric,  
		cden         : numeric,  
		ounit    [1] : integer   
	)

Arguments

Tmean

Scalar or array containing the mean temperature(s) (degC). This is equation 9 in the FAO-56 document: Tmean=(Tmin+Tmax)/2.

netrad

Scalar or array containing the net radiation at the crop surface (MJ/(m2-day)). This is equation 40 in the FAO-56 document. See: netrad_fao56.

G

Scalar or array containing the soil heat flux density (MJ/(m2-day)).

  • Monthly data: This is equation 41 in the FAO-56 document. See: soil_heatflux_month_fao56
  • Daily data: This is equation 42 in the FAO-56 document. Hence, G=0.0 for daily data
  • Hourly data:
    • Daylight hours: This is equation 45 n the FAO-56 document: G=0.1*netrad
    • Nighttime hours: This is equation 46 n the FAO-56 document: G=0.5*netrad

g

Scalar or array containing the psychrometric constant (kPa/sqrt[degC]). This is equation 8 in the FAO-56 document. See: psychro_fao56

u2

Scalar or array containing the wind speed (m/s) at 2-meters. If not available set to 2.0. This is equation 47 in the FAO-56 document. See: u2_fao56

edef

Scalar or array containing the vapor pressure deficit (kPa): (es-ea) where es is the saturation vapor presssure and ea is the actual vapor presssure. See: satvpr_mean_fao56, satvpr_tdew_fao56, actvpr_mnmx_fao56, actvpr_rhmean_fao56,

D

Scalar or array containing the slope of the vapor pressure curve (kPa/C). This is equation 13 in the FAO-56 document. See: satvpr_slope_fao56

cnum

A scalar or array containing the crop coefficient(s) to be used in the numerator of the Penman-Monteith equation. If an array is input, the array must have the same size and shape as Tmean in the Penman-Monteith equation. This coefficient is a function of the time step and aerodynamic resistance (i.e., reference type)

Typical constant values for daily or monthly applications are

  • cnum = 900 is the value for the 'classic' short reference crop.
  • cnum = 1600 is the value for the tall reference crop.

For hourly time steps the ASCE Standardized reference suggests:

  • cnum = 37 for short crop hourly (day or night time)
  • cnum = 66 for tall crop hourly (day or night time)

cden

A scalar or array containing the crop coefficient(s) to be used in the denominator of the Penman-Monteith equation. If an array is input, the array must have the same size and shape as Tmean in Penman-Monteith equation. This coefficient is a function of the time step and aerodynamic resistance (i.e., reference type)

Typical constant values for monthly applications are

  • cden = 0.34 are the values for the 'classic' short reference crop.
  • cden = 0.38 are the values for the tall reference crop.

For hourly time steps the ASCE Standardized reference suggests:

  • cnum = 0.24 for short crop hourly day application
  • cnum = 0.96 for short crop hourly night application
  • cnum = 0.25 for tall crop hourly day application
  • cnum = 1.76 for tall crop hourly night application

ounit

An integer indicating the desired units of the returned reference evapotranspiration.

  • ounit=0 ; output units => mm/day
  • ounit=1 ; output units => MJ/(m2-day)
  • ounit=2 ; output units => W/m2

Return value

An array the same size as Tmean containing the estimates of reference evapotranspiration.

Description

Estimates evapotranspiration vis the full Penman-Monteith equation as described in the Food and Agriculture Organization (FAO) Irrigation and Drainage Paper 56 entitled: Crop evapotranspiration - Guidelines for computing crop water requirement . Specifically, see Chapters 3 and 4.

See Also

Crop & Evapotranspiration functions

Examples

Example 1: Replicate example 17 in Chapter 4. Here ounit=0. Mean monthly data are used.

   jday    = 105       ; mid April
   lat     = 13.73     ; Bangkok, Thailand
   tmax    = 34.8      ; C
   tmin    = 25.6
   ea      = 2.85      ; kPa     (specified in this example)

   u2      = 2.0       ; m/s     
   z       = 2.0       ; m
   sunhr   = 8.5       ; hrs/day

   P0      = 101.3     ; kPa
   Z0      = 0.0       ; m
   albedo  = 0.23      ; crop albedo

   cnum    = 900.      ; short crop numerator coefficient for monthly data
   cden    = 0.34      ; short crop denominator coefficient for monthly data

   tavgmon = (/30.2, 29.2 /)   ; C

   tunit   = 0         ; degC
   runit   = 1         ; MJ/(m2-day)
   punit   = 2         ; kPa  

;=============================================

   tavg   = (tmin+tmax)*0.5                                 ; 30.2 C
   slp    =  satvpr_slope_fao56(tavg, (/0,2/))              ; 0.246 kPa
   p      = prsatm_tz_fao56(tavg, 2.0, P0, Z0, (/0,2/))    ; 101.222 kPa
   g      = psychro_fao56(p, (/0,0/) )                     ; 0.0673
   G      = 0.14*(tavgmon(0)-tavgmon(1))                    ; 0.14 MJ/(m2-day) [EQN 44]

   esTmin = satvpr_mean_fao56(tmin, (/0,2/))              ; 3.283 kPa   [EQN 11]
   esTmax = satvpr_mean_fao56(tmax, (/0,2/))              ; 5.560 kPa
   esAvg  = (esTmin+esTmax)*0.5                             ; 4.422       [EQN 12]
   edef   = esAvg-ea                                        ; 1.572
                                                            ; Example 5
   radext = radext_fao56(jday, lat, 1)                     ; 38.06 MJ/(m2-day)
   sunhrx = daylight_fao56(jday, lat)                       ; 12.31 hr
   radsol = radsol_fao56(radext,sunhrx,sunhr,(/1,1/),False) ; 22.65 MJ/(m2-day)
   radsol_clr = radsol_clrsky_fao56(radext, False)          ; 28.54 MJ/(m2-day)

   netlw  = netlw_fao56(tmin, tmax, ea, radext, radsol, (/0,1/), False) ; 3.11 MJ/(m2-day) 
   netsw  = netsw_fao56(radsol, albedo)                    ; 17.44 MJ/(m2-day)
   netrad = netrad_fao56(netsw, netlw)                      ; 14.33

                                                            ; function
   REFEVT = refevt_penman_fao56(tavg, netrad, G, g, u2 \
                               , edef, slp, albedo, cnum, cden, 0)            ; 5.72 mm/day

                                                            ; explicitly calculate
   dnom   = slp + g*(1+cden*u2)                             ; 0.359 (denominator)
   refevt = (0.408*(netrad-G)*slp + g*(cnum/(tavg+273))*u2*edef)/dnom         ; 5.72 mm/day
   refevt@long_name = "Penman-Monteith reference evapotranspiration: inline"
   refevt@units     = "mm/day"
   print(refevt)
   print(REFEVT)

;=============================================
; For comparison ... Use Hargreaves approximation: tmin, tmax, radext
;=============================================
   refevt_hg  = refevt_hargreaves_fao56( tmin, tmax, radext, (/0,1,0/) )     ; 5.20 mm/day
   print(refevt_hg)
The (edited) output for the above:

     Variable: refevt
     Type: float
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 2
       units :	mm/day
       long_name :	Penman-Monteith reference evapotranspiration

     (0)	5.716062
     
     
     Variable: REFEVT
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 4
       long_name :	Penmon-Monteith reference evapotranspiration (month)
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 6; penman_fao56
       parameters:  cc(0)=900 cc(1)=0.34

     (0)	5.716062
     
     
     Variable: refevt_hg
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 4
       long_name :	reference evapotranspiration: Hargreaves 
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 52; refevt_hargreaves_fao56

     (0)	5.19954


Example 2: Replicate example 18 in Chapter 4. Here ounit=0. Daily data are used. As recommended for daily data, the soil heat flux (G) is set to 0.0

;========================
; Charper 4: example 18
;========================
; This was done this way to mimic Example 18
;========================

   jday  = 187       ; 6 July
   lat   = 50.80     ; Brussels, Belgium
   staz  = 100.0     ; station altitude (m)

   tmax  = 21.5      ; C
   tmin  = 12.3
   rhmax = 84.0      ; %
   rhmin = 63.0
   uz    = 10.0      ; km/hr
   z     = 10.0      ; m      (wind height above ground)
   sunhr = 9.25      ; hrs/day

                     ; standard constants
   P0    = 101.3     ; kPa
   Z0    = 0.0       ; m
   albedo= 0.23      ; default

;===================

   tavg   = (tmin+tmax)*0.5                            ; 16.9   C
   slp    = satvpr_slope_fao56(tavg, 0)                ; 0.122  kPa/C
   p      = prsatm_tz_fao56(tavg, staz, P0, Z0, 0)    ; 100.11  kPa
   g      = psychro_fao56(p, 0)                       ; 0.0666  kPa/sqrt(c)

   G      = 0.0                                        ; recommended for daily data
                                                       ; Example 3
   esTmin = satvpr_mean_fao56(tmin, 0)               ; 1.431   [EQN 11]
   esTmax = satvpr_mean_fao56(tmax, 0)               ; 2.564
   esAvg  = (esTmin+esTmax)*0.5                        ; 1.997   [EQN 12]

   u2     = u2_fao56(uz, z, 1)                        ; 2.078 m/s  [wunit=1: km/hr->m/s)
   ea     = actvpr_mnmx_fao56(tmin, tmax, rhmin, rhmax, 0)   ; 1.409
                                                       ; Example 5
   edef = esAvg-ea                                     ; 0.589

   radext = radext_fao56(jday, lat, 1)                 ; 41.088 MJ/(m2-day)
   sunhrx = daylight_fao56(jday, lat)                  ; 16.10 hr
   radsol = radsol_fao56(radext,sunhrx,sunhr,(/1,1/),False) ; 22.07 MJ/(m2-day)
   radsol_clr = radsol_clrsky_fao56(radext, False)     ; 30.82 MJ/(m2-day); FAO 56 says 30.90
   netlw  = netlw_fao56(tmin, tmax, ea, radext, radsol, (/0,1/), False) ; 3.73 MJ/(m2-day); FAO 56 says 3.71
   netsw  = netsw_fao56(radsol, albedo)               ; 17.00 MJ/(m2-day)
   netrad = netrad_fao56(netsw, netlw)                 ; 13.27 MJ/(m2-day)

   dnom = slp + g*(1+0.34*u2)                          ; 0.236
   dnom@long_name = "denominator in P-M"

   ET0 = (0.408*(netrad-G)*slp + g*(900.0/(tavg+273))*u2*edef)/dnom                      ; 3.877 mm/day
   ET0@units = "mm/day"
   print(ET0)

   refevt = refevt_penman_fao56(tavg, netrad, G, g, u2, edef, slp, (/900.0, 0.34/), 0)   ; 3.877 mm/day
   print(refevt)

;=====================
; Use Hargreaves approximation: tmin, tmax, radext
;=====================
   refevt_hg  = refevt_hargreaves_fao56( tmin, tmax, radext, (/0,1,0/) )                ; 4.06 mm/day
   print(refevt_hg)



The (edited) output follows:

     Variable: ET0
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 1
       units :	mm/day
     (0)	3.877064
     
     
     Variable: refevt
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 5
       long_name :	Penmon-Monteith reference evapotranspiration (month)
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 6; refevt_penman_fao56
       parameters :	cc(0)=900 cc(1)=0.34
     (0)	3.877064
     
     
     Variable: refevt_hg
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 4
       long_name :	reference evapotranspiration: Hargreaves 
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 52; refevt_hargreaves_fao56
     (0)	4.058171

Example 3: Replicate example 20 in Chapter 4. Here, only tmin and tmax are available. FAO 56 recommends that G=0.0 and u2=2.0.``

   jday  = 196       ; 6 July
   lat   = 45.72     ; Lyons, France
   staz  = 200.0     ; station altitude (m)

   tmax  = 26.6      ; C
   tmin  = 14.8

   u2    = 2.00      ; recommended
   krs   = 0.16
   G     = 0.0       ; recommended for daily data

   P0    = 101.3     ; kPa
   Z0    = 0.0       ; m
   albedo= 0.23      ; default
   
;===================
  
   tavg   = (tmin+tmax)*0.5                            ; 20.7   C
   slp    = satvpr_slope_fao56(tavg, 0)               ; 0.150  kPa/C
   p      = prsatm_tz_fao56(tavg, staz, P0, Z0, 0)    ; 98.96  kPa
   g      = psychro_fao56(p, 0)                       ; 0.0666  kPa/sqrt(c)
                                                       ; Example 3
   esTmin = satvpr_mean_fao56(tmin, 0)               ; 1.684   [EQN 11]
   esTmax = satvpr_mean_fao56(tmax, 0)               ; 3.483
   esAvg  = (esTmin+esTmax)*0.5                        ; 2.583   [EQN 12]
                                                       ; assume tmin=tdew
   edef   = esAvg-esTmin                               ; 0.90  
   radext = radext_fao56(jday, lat, 1)                ; 40.55  MJ/(m2-day)
   radsol = radsol3_hargreaves_fao56(tmin, tmax, radext, krs, (/0,1,1/))  ; 22.29 MJ/(m2-day)

   opt    = True
   opt@z  = staz
   radsol_clr = radsol_clrsky_fao56(radext, opt)       ; 30.578   EQN 37
   
 ;;ea = esTmin
   netlw = netlw_fao56(tmin, tmax, esTmin, radext, radsol, (/0,1/), False) ; 3.71 MJ/(m2-day); FAO 56 says 3.68 
   netsw = netsw_fao56(radsol, albedo)                ; 17.16 MJ/(m2-day)
   netrad= netrad_fao56(netsw, netlw)                 ; 13.45 MJ/(m2-day) ; FAO 56 says 13.48

   dnom = slp + g*(1+0.34*u2)                          ; 0.236
   dnom@long_name = "denominator in P-M"

   ET0 = (0.408*(netrad-G)*slp + g*(900.0/(tavg+273))*u2*edef)/dnom                      ; 4.553 mm/day
   ET0@units = "mm/day"
   print(ET0)

   refevt = refevt_penman_fao56(tavg, netrad, G, g, u2, edef, slp, (/900.0, 0.34/), 0)   ; 4.553 mm/day 
   print(refevt)

;=====================
; Use Hargreaves approximation: tmin, tmax, radext
;=====================
   refevt_hg  = refevt_hargreaves_fao56( tmin, tmax, radext, (/0,1,0/) )                ; 5.03 mm/day
   print(refevt_hg)
The output is here
     Variable: ET0
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 1
       units :	mm/day
     (0)	4.55321
     
     
     Variable: refevt
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 5
       long_name :	Penmon-Monteith reference evapotranspiration (month)
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 6; refevt_penman_fao56
       parameters :	cc(0)=900 cc(1)=0.34
     (0)	4.55321
     
     
     Variable: refevt_hg
     Type: float
     Total Size: 4 bytes
                 1 values
     Number of Dimensions: 1
     Dimensions and sizes:	[1]
     Coordinates: 
     Number Of Attributes: 4
       long_name :	reference evapotranspiration: Hargreaves 
       units :	mm/day
       url :	http://www.fao.org/docrep/X0490E/x0490e07.htm
       info :	FAO 56; EQN 52; refevt_hargreaves_fao56
     (0)	5.033028