evapotranspiration 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c56ad772121b62167d4e9928619ca473713185ed
4
- data.tar.gz: 35a3767b8102cf671910dc7aa61ba332375a14cc
3
+ metadata.gz: d42faca68854dee08ce74daf91aade4b2b3d053a
4
+ data.tar.gz: fdbd328a397870e26c8281bfa95fe1e12c57cfc9
5
5
  SHA512:
6
- metadata.gz: 3505bae7868af1cd9c66e96328e264d0b8a4f24ff278ac20892335d77a2eb4b583cb304910f3c0ce8731bbc8681cd484f60256ffca6c5f749b928a75afc11217
7
- data.tar.gz: f4426d57a5114014c12dc614017b6a2baa7c85bbd60701ee34c8b4c4859b61aee521f26066183391d207f19be04254b8e6bc58e7153a0e7331348ad38bd7f54d
6
+ metadata.gz: 23cc8b262d93fd46c61082db9c80e61458679b2ebbd40980d3d5e7c253ced745908c6a60e84118ceaa1359824718a790985ad67c1d58f153afbed285a7e0c15a
7
+ data.tar.gz: 85283c747e3dcb20db5c6b36a9abeff6b2bc7cd8eef3a0794d2d093964d12eb94170628930419ded53016c4fc07c298960479c7644f2f71ceb55f17f2b1a613e
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [gem]: https://rubygems.org/gems/evapotranspiration
7
7
  [travis]: http://travis-ci.org/AgRuby/evapotranspiration
8
8
 
9
- Ruby library for calculating reference crop evapotranspiration (ETo), also referred to as potential evapotranspiration (PET), using the FAO-56 Penman-Monteith method. This is a Ruby port of [Mark Richard's PyETo Python package](https://github.com/woodcrafty/PyETo). The library provides numerous functions for estimating missing meteorological data.
9
+ Ruby library for calculating reference crop evapotranspiration (ETo), also referred to as potential evapotranspiration (PET), using the FAO-56 Penman-Monteith method. This was originally ported into Ruby from [Mark Richard's PyETo Python package](https://github.com/woodcrafty/PyETo). The library provides numerous methods for estimating missing meteorological data.
10
10
 
11
11
  Three methods for estimating ETo/PET are implemented:
12
12
 
@@ -30,21 +30,27 @@ Or install it yourself as:
30
30
 
31
31
  $ gem install evapotranspiration
32
32
 
33
- ## Usage
33
+ ## Information
34
34
 
35
- Coming soon...
35
+ ### Documentation
36
36
 
37
- ## Development
37
+ You can view the evapotranspiration documentation here:
38
38
 
39
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`.
39
+ http://www.rubydoc.info/gems/evapotranspiration
40
+
41
+ ### Wiki
42
+
43
+ The Evapotranspiration wiki provides some usage examples and "how-to" articles:
44
+
45
+ https://github.com/AgRuby/evapotranspiration/wiki
40
46
 
41
47
  ## Contributing
42
48
 
43
49
  Bug reports and pull requests are welcome on GitHub at https://github.com/AgRuby/evapotranspiration.
44
50
 
45
- ## Acknowledgments
51
+ ### Development
46
52
 
47
- [PyETo](https://github.com/woodcrafty/PyETo) was created by [Mark Richard](https://github.com/woodcrafty) - ported into Ruby and maintained by [Bryce Johnston](https://github.com/brycejohnston)
53
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`.
48
54
 
49
55
  ## License
50
56
 
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Bryce Johnston"]
10
10
  spec.email = ["johnstonbrc@gmail.com"]
11
11
  spec.summary = %q{Ruby library for calculating reference crop evapotranspiration (ETo)}
12
- spec.description = %q{Ruby library for calculating reference crop evapotranspiration (ETo), also referred to as potential evapotranspiration (PET), using the FAO-56 Penman-Monteith method. This is a Ruby port of Mark Richard's PyETo Python package.}
12
+ spec.description = %q{Ruby library for calculating reference crop evapotranspiration (ETo), also referred to as potential evapotranspiration (PET), using the FAO-56 Penman-Monteith method.}
13
13
  spec.homepage = "https://github.com/AgRuby/evapotranspiration"
14
14
  spec.license = "BSD 3-Clause"
15
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -4,7 +4,7 @@ module Evapotranspiration
4
4
 
5
5
  # Methods for estimating reference evapotransporation (ETo) for
6
6
  # a grass reference crop using the FAO-56 Penman-Monteith and Hargreaves
7
- # equations. The library includes numerous functions for estimating missing
7
+ # equations. The library includes numerous methods for estimating missing
8
8
  # meteorological data.
9
9
  module FAO
10
10
  include Enumerable
@@ -53,9 +53,9 @@ module Evapotranspiration
53
53
  # Based on FAO equation 17 in Allen et al (1998).
54
54
  #
55
55
  # @param svp_tmin [Float] Saturation vapour pressure at daily minimum
56
- # temperature (kPa). Can be estimated using svp_from_t()
56
+ # temperature (kPa). Can be estimated using svp_from_t
57
57
  # @param svp_tmax [Float] Saturation vapour pressure at daily maximum
58
- # temperature (kPa). Can be estimated using svp_from_t()
58
+ # temperature (kPa). Can be estimated using svp_from_t
59
59
  # @param rh_min [Float] Minimum relative humidity (%)
60
60
  # @param rh_max [Float] Maximum relative humidity (%)
61
61
  # @return [Float] Actual vapour pressure (kPa)
@@ -71,7 +71,7 @@ module Evapotranspiration
71
71
  # Based on FAO equation 19 in Allen et al (1998).
72
72
  #
73
73
  # @param svp_tmin [Float] Saturation vapour pressure at daily minimum
74
- # temperature (kPa). Can be estimated using svp_from_t()
74
+ # temperature (kPa). Can be estimated using svp_from_t
75
75
  # @param rh_max [Float] Maximum relative humidity (%)
76
76
  # @return [Float] Actual vapour pressure (kPa)
77
77
  def self.avp_from_rhmax(svp_tmin, rh_max)
@@ -84,9 +84,9 @@ module Evapotranspiration
84
84
  # Based on FAO equation 18 in Allen et al (1998).
85
85
  #
86
86
  # @param svp_tmin [Float] Saturation vapour pressure at daily minimum
87
- # temperature (kPa). Can be estimated using svp_from_t()
87
+ # temperature (kPa). Can be estimated using svp_from_t
88
88
  # @param svp_tmax [Float] Saturation vapour pressure at daily maximum
89
- # temperature (kPa). Can be estimated using svp_from_t()
89
+ # temperature (kPa). Can be estimated using svp_from_t
90
90
  # @param rh_mean [Float] Mean relative humidity (%) (average of RH min and RH max).
91
91
  # @return [Float] Actual vapour pressure (kPa)
92
92
  def self.avp_from_rhmean(svp_tmin, svp_tmax, rh_mean)
@@ -120,15 +120,15 @@ module Evapotranspiration
120
120
  # minimum temperature.
121
121
  #
122
122
  # Values for the psychrometric constant of the psychrometer (*psy_const*)
123
- # can be calculated using psyc_const_of_psychrometer().
123
+ # can be calculated using psyc_const_of_psychrometer.
124
124
  #
125
125
  # @param twet [Float] Wet bulb temperature (deg C)
126
126
  # @param tdry [Float] Dry bulb temperature (deg C)
127
127
  # @param svp_twet [Float] Saturated vapour pressure at the wet bulb
128
- # temperature (kPa). Can be estimated using svp_from_t()
128
+ # temperature (kPa). Can be estimated using svp_from_t
129
129
  # @param psy_const [Float] Psychrometric constant of the pyschrometer
130
- # (kPa deg C-1). Can be estimated using psy_const() or
131
- # psy_const_of_psychrometer()
130
+ # (kPa deg C-1). Can be estimated using psy_const or
131
+ # psy_const_of_psychrometer
132
132
  # @return [Float] Actual vapour pressure (kPa)
133
133
  def self.avp_from_twet_tdry(twet, tdry, svp_twet, psy_const)
134
134
  return svp_twet.to_f - (psy_const.to_f * (tdry.to_f - twet.to_f))
@@ -141,7 +141,7 @@ module Evapotranspiration
141
141
  #
142
142
  # @param altitude [Float] Elevation above sea level (m)
143
143
  # @param et_rad [Float] Extraterrestrial radiation (MJ m-2 day-1). Can be
144
- # estimated using et_rad()
144
+ # estimated using et_rad
145
145
  # @return [Float] Clear sky radiation (MJ m-2 day-1)
146
146
  def self.cs_rad(altitude, et_rad)
147
147
  return (0.00002 * altitude.to_f + 0.75) * et_rad.to_f
@@ -162,7 +162,7 @@ module Evapotranspiration
162
162
  # Based on FAO equation 34 in Allen et al (1998).
163
163
  #
164
164
  # @param sha [Float] Sunset hour angle (rad). Can be calculated using
165
- # sunset_hour_angle()
165
+ # sunset_hour_angle
166
166
  # @return [Float] Daylight hours
167
167
  def self.daylight_hours(sha)
168
168
  Validation.check_sunset_hour_angle_rad(sha)
@@ -194,7 +194,7 @@ module Evapotranspiration
194
194
  #
195
195
  # @param energy [Float] Energy e.g. radiation or heat flux (MJ m-2 day-1)
196
196
  # @return [Float] Equivalent evaporation (mm day-1)
197
- def self.energy2evap(energy)
197
+ def self.energy_to_evap(energy)
198
198
  return 0.408 * energy.to_f
199
199
  end
200
200
 
@@ -212,11 +212,11 @@ module Evapotranspiration
212
212
  #
213
213
  # @param latitude [Float] Latitude (radians)
214
214
  # @param sol_dec [Float] Solar declination (radians). Can be calculated
215
- # using sol_dec()
215
+ # using sol_dec
216
216
  # @param sha [Float] Sunset hour angle (radians). Can be calculated using
217
- # sunset_hour_angle()
217
+ # sunset_hour_angle
218
218
  # @param ird [Float] Inverse relative distance earth-sun (dimensionless).
219
- # Can be calculated using inv_rel_dist_earth_sun()
219
+ # Can be calculated using inv_rel_dist_earth_sun
220
220
  # @return [Float] Daily extraterrestrial radiation (MJ m-2 day-1)
221
221
  def self.et_rad(latitude, sol_dec, sha, ird)
222
222
  Validation.check_latitude_rad(latitude)
@@ -235,22 +235,22 @@ module Evapotranspiration
235
235
  # Based on equation 6 in Allen et al (1998).
236
236
  #
237
237
  # @param net_rad [Float] Net radiation at crop surface (MJ m-2 day-1). If
238
- # necessary this can be estimated using net_rad()
238
+ # necessary this can be estimated using net_rad
239
239
  # @param t [Float] Air temperature at 2 m height (deg Kelvin)
240
240
  # @param ws [Float] Wind speed at 2 m height (m s-1). If not measured at 2m,
241
- # convert using wind_speed_at_2m()
241
+ # convert using wind_speed_at_2m
242
242
  # @param svp [Float] Saturation vapour pressure (kPa). Can be estimated
243
- # using svp_from_t()
243
+ # using svp_from_t
244
244
  # @param avp [Float] Actual vapour pressure (kPa). Can be estimated using a
245
- # range of functions with names beginning with 'avp_from'
245
+ # range of methods with names beginning with avp_from
246
246
  # @param delta_svp [Float] Slope of saturation vapour pressure curve
247
- # (kPa degC-1). Can be estimated using delta_svp()
247
+ # (kPa degC-1). Can be estimated using delta_svp
248
248
  # @param psy [Float] Psychrometric constant (kPa deg C). Can be estimatred
249
- # using psy_const_of_psychrometer() or psy_const()
249
+ # using psy_const_of_psychrometer or psy_const
250
250
  # @param shf [Float] Soil heat flux (G) (MJ m-2 day-1) (default is 0.0,
251
251
  # which is reasonable for a daily or 10-day time steps). For monthly time
252
- # steps *shf* can be estimated using monthly_soil_heat_flux() or
253
- # monthly_soil_heat_flux2()
252
+ # steps *shf* can be estimated using monthly_soil_heat_flux or
253
+ # monthly_soil_heat_flux2
254
254
  # @return [Float] Reference evapotranspiration (ETo) from a hypothetical
255
255
  # grass reference surface (mm day-1)
256
256
  def self.fao56_penman_monteith(net_rad, t, ws, svp, avp, delta_svp, psy, shf=0.0)
@@ -264,7 +264,7 @@ module Evapotranspiration
264
264
  #
265
265
  # Generally, when solar radiation data, relative humidity data
266
266
  # and/or wind speed data are missing, it is better to estimate them using
267
- # the functions available in this module, and then calculate ETo
267
+ # the methods available in this module, and then calculate ETo
268
268
  # the FAO Penman-Monteith equation. However, as an alternative, ETo can be
269
269
  # estimated using the Hargreaves ETo equation.
270
270
  #
@@ -275,7 +275,7 @@ module Evapotranspiration
275
275
  # @param tmean [Float] Mean daily temperature (deg C). If measurements not
276
276
  # available it can be estimated as (*tmin* + *tmax*) / 2
277
277
  # @param et_rad [Float] Extraterrestrial radiation (Ra) (MJ m-2 day-1).
278
- # Can be estimated using et_rad()
278
+ # Can be estimated using et_rad
279
279
  # @return [Float] Reference evapotranspiration over grass (ETo) (mm day-1)
280
280
  def self.hargreaves(tmin, tmax, tmean, et_rad)
281
281
  # Note, multiplied by 0.408 to convert extraterrestrial radiation could
@@ -318,7 +318,7 @@ module Evapotranspiration
318
318
  # Based on equation 43 in Allen et al (1998). If the air temperature of the
319
319
  # next month is not known use monthly_soil_heat_flux2 instead. The
320
320
  # resulting heat flux can be converted to equivalent evaporation [mm day-1]
321
- # using energy_2_evap.
321
+ # using energy_to_evap.
322
322
  #
323
323
  # @param t_month_prev [Float] Mean air temperature of the previous month
324
324
  # (deg Celsius)
@@ -335,7 +335,7 @@ module Evapotranspiration
335
335
  # Based on equation 44 in Allen et al (1998). If the air temperature of the
336
336
  # next month is available, use monthly_soil_heat_flux instead. The
337
337
  # resulting heat flux can be converted to equivalent evaporation [mm day-1]
338
- # using energy_2_evap.
338
+ # using energy_to_evap.
339
339
  #
340
340
  # @param t_month_prev [Float] Mean air temperature of the previous month
341
341
  # (deg Celsius)
@@ -352,13 +352,13 @@ module Evapotranspiration
352
352
  # Net incoming solar radiation is the net shortwave radiation resulting
353
353
  # from the balance between incoming and reflected solar radiation. The
354
354
  # output can be converted to equivalent evaporation [mm day-1] using
355
- # energy2evap().
355
+ # energy_to_evap.
356
356
  #
357
357
  # Based on FAO equation 38 in Allen et al (1998).
358
358
  #
359
359
  # @param sol_rad [Float] Gross incoming solar radiation (MJ m-2 day-1).
360
- # If necessary this can be estimated using functions whose name begins
361
- # with 'sol_rad_from'
360
+ # If necessary this can be estimated using methods whose name begins
361
+ # with sol_rad_from
362
362
  # @param albedo [Float] Albedo of the crop as the proportion of gross
363
363
  # incoming solar radiation that is reflected by the surface. Default value
364
364
  # is 0.23, which is the value used by the FAO for a short grass reference
@@ -376,23 +376,23 @@ module Evapotranspiration
376
376
  # earth's surface. It is proportional to the absolute temperature of
377
377
  # the surface raised to the fourth power according to the Stefan-Boltzmann
378
378
  # law. However, water vapour, clouds, carbon dioxide and dust are absorbers
379
- # and emitters of longwave radiation. This function corrects the Stefan-
379
+ # and emitters of longwave radiation. This method corrects the Stefan-
380
380
  # Boltzmann law for humidity (using actual vapor pressure) and cloudiness
381
381
  # (using solar radiation and clear sky radiation). The concentrations of all
382
382
  # other absorbers are assumed to be constant.
383
383
  #
384
- # The output can be converted to equivalent evaporation [mm day-1] using energy2evap().
384
+ # The output can be converted to equivalent evaporation [mm day-1] using energy_to_evap.
385
385
  #
386
386
  # Based on FAO equation 39 in Allen et al (1998).
387
387
  #
388
388
  # @param tmin [Float] Absolute daily minimum temperature (degrees Kelvin)
389
389
  # @param albedo [Float] Absolute daily maximum temperature (degrees Kelvin)
390
390
  # @param sol_rad [Float] Solar radiation (MJ m-2 day-1). If necessary this
391
- # can be estimated using sol+rad()
391
+ # can be estimated using methods with names beginning with sol_rad
392
392
  # @param cs_rad [Float] Clear sky radiation (MJ m-2 day-1). Can be estimated
393
- # using cs_rad()
393
+ # using cs_rad
394
394
  # @param avp [Float] Actual vapour pressure (kPa). Can be estimated using
395
- # functions with names beginning with 'avp_from'
395
+ # methods with names beginning with avp_from
396
396
  # @return [Float] Net outgoing longwave radiation (MJ m-2 day-1)
397
397
  def self.net_out_lw_rad(tmin, tmax, sol_rad, cs_rad, avp)
398
398
  tmp1 = (STEFAN_BOLTZMANN_CONSTANT * (((tmax.to_f ** 4) + (tmin.to_f ** 4)) / 2))
@@ -406,14 +406,14 @@ module Evapotranspiration
406
406
  #
407
407
  # Net radiation is the difference between the incoming net shortwave (or
408
408
  # solar) radiation and the outgoing net longwave radiation. Output can be
409
- # converted to equivalent evaporation [mm day-1] using energy2evap().
409
+ # converted to equivalent evaporation [mm day-1] using energy_to_evap.
410
410
  #
411
411
  # Based on equation 40 in Allen et al (1998).
412
412
  #
413
413
  # @param ni_sw_rad [Float] Net incoming shortwave radiation (MJ m-2 day-1).
414
- # Can be estimated using net_in_sol_rad()
414
+ # Can be estimated using net_in_sol_rad
415
415
  # @param no_lw_rad [Float] Net outgoing longwave radiation (MJ m-2 day-1).
416
- # Can be estimated using net_out_lw_rad()
416
+ # Can be estimated using net_out_lw_rad
417
417
  # @return [Float] Daily net radiation (MJ m-2 day-1)
418
418
  def self.net_rad(ni_sw_rad, no_lw_rad)
419
419
  return ni_sw_rad.to_f - no_lw_rad.to_f
@@ -427,7 +427,7 @@ module Evapotranspiration
427
427
  # Based on equation 8, page 95 in Allen et al (1998).
428
428
  #
429
429
  # @param atmos_pres [Float] Atmospheric pressure (kPa). Can be estimated
430
- # using atm_pressure()
430
+ # using atm_pressure
431
431
  # @return [Float] Psychrometric constant (kPa degC-1)
432
432
  def self.psy_const(atmos_pres)
433
433
  return 0.000665 * atmos_pres.to_f
@@ -446,7 +446,7 @@ module Evapotranspiration
446
446
  # @param psychrometer [Float] Integer between 1 and 3 which denotes type of
447
447
  # psychrometer
448
448
  # @param atmos_pres [Float] Atmospheric pressure [kPa]. Can be estimated
449
- # using atm_pressure()
449
+ # using atm_pressure
450
450
  # @return [Float] Psychrometric constant (kPa degC-1)
451
451
  def self.psy_const_of_psychrometer(psychrometer, atmos_pres)
452
452
  # Select coefficient based on type of ventilation of the wet bulb
@@ -470,10 +470,10 @@ module Evapotranspiration
470
470
  # See Allen et al (1998), page 67 for details.
471
471
  #
472
472
  # @param avp [Float] Actual vapour pressure (units do not matter so long as
473
- # they are the same as for *svp*). Can be estimated using functions whose
474
- # name begins with 'avp_from'
473
+ # they are the same as for *svp*). Can be estimated using methods whose
474
+ # name begins with avp_from
475
475
  # @param svp [Float] Saturated vapour pressure (units do not matter so long
476
- # as they are the same as for *avp*). Can be estimated using svp_from_t()
476
+ # as they are the same as for *avp*). Can be estimated using svp_from_t
477
477
  # @return [Float] Relative humidity (%)
478
478
  def self.rh_from_avp_svp(avp, svp)
479
479
  return 100.0 * avp.to_f / svp.to_f
@@ -1,3 +1,3 @@
1
1
  module Evapotranspiration
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evapotranspiration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bryce Johnston
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-09 00:00:00.000000000 Z
11
+ date: 2016-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '3.0'
55
55
  description: Ruby library for calculating reference crop evapotranspiration (ETo),
56
56
  also referred to as potential evapotranspiration (PET), using the FAO-56 Penman-Monteith
57
- method. This is a Ruby port of Mark Richard's PyETo Python package.
57
+ method.
58
58
  email:
59
59
  - johnstonbrc@gmail.com
60
60
  executables: []