earth 0.11.8 → 0.11.9

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.
@@ -5,7 +5,7 @@ require "earth/version"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "earth"
7
7
  s.version = Earth::VERSION
8
- s.date = "2011-12-22"
8
+ s.date = "2012-01-24"
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.authors = ["Seamus Abshere", "Derek Kastner", "Andy Rossmeissl"]
11
11
  s.email = %q{andy@rossmeissl.net}
@@ -1,51 +1,78 @@
1
1
  require 'conversions'
2
- Conversions.register(:miles, :nautical_miles, 0.868976242)
3
- Conversions.register(:kilometres, :nautical_miles, 0.539956803)
4
- Conversions.register(:pounds_per_gallon, :kilograms_per_litre, 0.119826427)
5
- Conversions.register(:inches, :meters, 0.0254)
6
- Conversions.register(:kilowatt_hours, :watt_hours, 1_000.0)
7
- Conversions.register(:kilowatt_hours, :btus, 3_412.14163) # obsolete?
8
- Conversions.register(:watt_hours, :btus, 3.4121414799) # obsolete?
9
- Conversions.register(:watt_hours, :joules, 3_600.0)
10
- Conversions.register(:kilowatt_hours, :joules, 3_600_000.0)
11
2
 
12
- # Conversions.register(:btus, :gallons_of_kerosene, 0.000007419521097)
13
- Conversions.register(:joules, :litres_of_kerosene, 1.0 / (135_000.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
3
+ # Distance: base unit = kilometre
4
+ Conversions.register :kilometres, :miles, 0.621371192
5
+ Conversions.register :kilometres, :nautical_miles, 0.539956803
14
6
 
15
- # Conversions.register(:btus, :gallons_of_propane, 0.000010471204188)
16
- Conversions.register(:joules, :litres_of_propane, 1.0 / (91_333.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
7
+ # Area
8
+ Conversions.register :square_metres, :square_feet, 10.7639104
17
9
 
18
- # Conversions.register(:btus, :therms, 0.000010002388121)
19
- Conversions.register(:therms, :joules, 105_505_585.0) # should only be used for RECS 2005
10
+ # Volume, liquid: base unit = litre
11
+ Conversions.register :litres, :gallons, 0.264172052
12
+ Conversions.register :litres, :cubic_inches, 61.0237441
20
13
 
21
- # Conversions.register(:btus, :gallons_of_fuel_oil, 0.0000072007637183)
22
- Conversions.register(:joules, :litres_of_fuel_oil, 1.0 / (138_690.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
14
+ # Volume, solid: base unit = cubic metre
15
+ Conversions.register :cubic_metres, :cubic_feet, 35.3146667
16
+ Conversions.register :cubic_metres, :hundred_cubic_feet, 0.353146667
23
17
 
24
- # Conversions.register(:tons_of_coal, :btus, 20_169_000.0)
25
- Conversions.register(:joules, :kilograms_of_coal, 1.0 / (22_342_000.0 * 0.00110231131 * 1_055.05585)) # should only be used for RECS 2005
18
+ # Mass: base unit = kilogram
19
+ Conversions.register :kilograms, :grams, 1_000.0
20
+ Conversions.register :kilograms, :metric_tonnes, 0.001
21
+ Conversions.register :kilograms, :pounds, 2.20462262
22
+ Conversions.register :kilograms, :tons, 0.00110231131
26
23
 
27
- Conversions.register(:kilograms, :lbs, 2.20462262)
28
- Conversions.register(:metric_tonnes, :kilograms, 1_000.0)
29
- Conversions.register(:kbtus, :btus, 1_000.0)
30
- Conversions.register(:square_feet, :square_metres, 0.09290304)
31
- Conversions.register(:pounds_per_square_foot, :kilograms_per_square_metre, 4.88242764)
32
- Conversions.register(:kilograms_per_kilowatt_hour, :kilograms_per_megawatt_hour, 1_000.0)
33
- Conversions.register(:btus, :joules, 1_055.05585)
34
- Conversions.register(:btus, :megajoules, 0.00105505585)
35
- Conversions.register(:kbtus, :joules, 1_000.0 * 1_055.05585)
36
- Conversions.register(:kbtus, :megajoules, 1.05505585)
37
- Conversions.register(:cords, :joules, 2.11011171e10)
24
+ # Energy: base unit = megajoule
25
+ Conversions.register :megajoules, :kbtus, 0.94781712
26
+ Conversions.register :megajoules, :kilowatt_hours, 0.277777778
38
27
 
39
- Conversions.register(:gallons_per_mile, :litres_per_kilometre, 2.35214583)
40
- Conversions.register(:pounds_per_mile, :kilograms_per_kilometre, 0.281849232)
41
- Conversions.register(:dollars, :cents, 100)
42
- Conversions.register(:cubic_inches, :litres, 0.016387064)
43
- Conversions.register(:cubic_feet, :cubic_metres, 0.0283168466)
44
- # 1 (kilocalories per pound) = 9 224.14105 joules per kilogram
45
- Conversions.register :kilocalories_per_pound, :joules_per_kilogram, 9_224.14105
46
- # 1 (grams per kilocalories) = 2.39005736 × 10-7 kilograms per joules
47
- Conversions.register :grams_per_kilocalorie, :kilograms_per_joule, 2.39005736e-7
48
- # 1 joule = 0.000239005736 kilocalories
49
- Conversions.register :joules, :kilocalories, 0.000239005736
28
+ # Monetary
29
+ Conversions.register :dollars, :cents, 100.0
50
30
 
31
+ # GHG
51
32
  Conversions.register :carbon, :co2, (44.0 / 12.0)
33
+
34
+ # Complex
35
+ Conversions.register :kilometres_per_litre, :miles_per_gallon, (1.kilometres.to(:miles) / 1.litres.to(:gallons))
36
+ Conversions.register :litres_per_kilometre, :gallons_per_mile, (1.litres.to(:gallons) / 1.kilometres.to(:miles))
37
+ Conversions.register :kilograms_per_square_metre, :pounds_per_square_foot, (1.kilograms.to(:pounds) / 1.square_metres.to(:square_feet))
38
+ Conversions.register :litres_per_square_metre_hour, :gallons_per_square_foot_hour, (1.litres.to(:gallons) / 1.square_metres.to(:square_feet))
39
+ Conversions.register :litres_per_room_night, :gallons_per_room_night, (1.litres.to(:gallons))
40
+ Conversions.register :cubic_metres_per_square_metre_hour, :hundred_cubic_feet_per_square_foot_hour, (1.cubic_metres.to(:hundred_cubic_feet) / 1.square_metres.to(:square_feet))
41
+ Conversions.register :cubic_metres_per_room_night, :hundred_cubic_feet_per_room_night, (1.cubic_metres.to(:hundred_cubic_feet))
42
+ Conversions.register :kilowatt_hours_per_square_metre_hour, :kilowatt_hours_per_square_foot_hour, (1 / 1.square_metres.to(:square_feet))
43
+ Conversions.register :megajoules_per_square_metre_hour, :kbtus_per_square_foot_hour, (1.megajoules.to(:kbtus) / 1.square_metres.to(:square_feet))
44
+ Conversions.register :megajoules_per_room_night, :kbtus_per_room_night, (1.megajoules.to(:kbtus))
45
+
46
+
47
+ # Odd units for pet - FIXME use megajoules rather than joules
48
+ Conversions.register :kilocalories, :joules, 4_184.0
49
+ Conversions.register :kilocalories_per_pound, :joules_per_kilogram, (1.kilocalories.to(:joules) / 1.pounds.to(:kilograms))
50
+ Conversions.register :grams_per_kilocalorie, :kilograms_per_joule, (1.grams.to(:kilograms) / 1.kilocalories.to(:joules))
51
+
52
+
53
+ # Odd units for residence - FIXME use megajoules rather than joules
54
+ Conversions.register :cords, :joules, 2.11011171e10
55
+ Conversions.register :therms, :joules, 105_505_585.0 # should only be used for RECS 2005
56
+ Conversions.register :joules, :litres_of_fuel_oil, (1.0 / (138_690.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
57
+ Conversions.register :joules, :litres_of_propane, (1.0 / (91_333.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
58
+ Conversions.register :joules, :litres_of_kerosene, (1.0 / (135_000.0 * 3.78541178 * 1_055.05585)) # should only be used for RECS 2005
59
+ Conversions.register :joules, :kilograms_of_coal, (1.0 / (22_342_000.0 * 0.00110231131 * 1_055.05585)) # should only be used for RECS 2005
60
+ Conversions.register :kbtus, :joules, (1_000.0 * 1_055.05585)
61
+ Conversions.register :watt_hours, :joules, 3_600.0
62
+ Conversions.register :kilowatt_hours, :joules, 3_600_000.0
63
+
64
+
65
+ # Only used in app1
66
+ Conversions.register(:pounds_per_gallon, :kilograms_per_litre, 0.119826427) # only used in app1
67
+ Conversions.register(:pounds_per_mile, :kilograms_per_kilometre, 0.281849232)
68
+
69
+
70
+ # DEPRECATE as of 1/20/2012 don't think these are used anywhere
71
+ Conversions.register(:kilowatt_hours, :watt_hours, 1_000.0)
72
+ Conversions.register(:kilowatt_hours, :btus, 3_412.14163)
73
+ Conversions.register(:watt_hours, :btus, 3.4121414799)
74
+ Conversions.register(:kbtus, :btus, 1_000.0)
75
+ Conversions.register(:btus, :joules, 1_055.05585)
76
+ Conversions.register(:btus, :megajoules, 0.00105505585)
77
+ Conversions.register(:kilograms, :lbs, 2.20462262)
78
+ Conversions.register(:kilograms_per_kilowatt_hour, :kilograms_per_megawatt_hour, 1_000.0)
@@ -14,4 +14,3 @@ FoodGroup.class_eval do
14
14
  end
15
15
  end
16
16
  end
17
-
@@ -6,6 +6,10 @@ class CommercialBuildingEnergyConsumptionSurveyResponse < ActiveRecord::Base
6
6
  extend CohortScope
7
7
  self.minimum_cohort_size = 8 # CBECS doesn't report averages based on fewer than 20 samples
8
8
 
9
+ def self.lodging_records
10
+ where :detailed_activity => ['Hotel', 'Motel or inn']
11
+ end
12
+
9
13
  col :id, :type => :integer
10
14
  col :census_region_number, :type => :integer
11
15
  col :census_division_number, :type => :integer
@@ -29,12 +33,18 @@ class CommercialBuildingEnergyConsumptionSurveyResponse < ActiveRecord::Base
29
33
  col :weekly_hours, :type => :integer
30
34
  col :electricity_use, :type => :float
31
35
  col :electricity_use_units
36
+ col :electricity_energy, :type => :float
37
+ col :electricity_energy_units
32
38
  col :natural_gas_use, :type => :float
33
39
  col :natural_gas_use_units
40
+ col :natural_gas_energy, :type => :float
41
+ col :natural_gas_energy_units
34
42
  col :fuel_oil_use, :type => :float
35
43
  col :fuel_oil_use_units
36
- col :district_heat_use, :type => :float
37
- col :district_heat_use_units
44
+ col :fuel_oil_energy, :type => :float
45
+ col :fuel_oil_energy_units
46
+ col :steam_use, :type => :float
47
+ col :steam_use_units
38
48
  col :stratum, :type => :integer
39
49
  col :pair, :type => :integer
40
50
  col :weighting, :type => :float
@@ -1,10 +1,6 @@
1
1
  require 'earth/locality/data_miner'
2
2
  CommercialBuildingEnergyConsumptionSurveyResponse.class_eval do
3
3
  data_miner do
4
- process 'Define some unit conversions' do
5
- Conversions.register :hundred_cubic_feet, :cubic_metres, 2.83168466
6
- end
7
-
8
4
  import 'building characteristics from the 2003 EIA Commercial Building Energy Consumption Survey',
9
5
  :url => 'http://www.eia.gov/emeu/cbecs/cbecs2003/public_use_2003/data/FILE01.csv',
10
6
  :skip => 1,
@@ -47,6 +43,7 @@ CommercialBuildingEnergyConsumptionSurveyResponse.class_eval do
47
43
  store 'heating_degree_days', :field_name => 'HDD658'
48
44
  store 'cooling_degree_days', :field_name => 'CDD658'
49
45
  store 'electricity_use', :synthesize => Proc.new { |row| row['ELCNS8'].to_i }, :units => :kilowatt_hours
46
+ store 'electricity_energy', :field_name => 'ELBTU8', :from_units => :kbtus, :to_units => :megajoules
50
47
  end
51
48
 
52
49
  import 'fuel use characteristics from the 2003 EIA Commercial Building Energy Consumption Survey',
@@ -54,9 +51,11 @@ CommercialBuildingEnergyConsumptionSurveyResponse.class_eval do
54
51
  :skip => 1,
55
52
  :headers => ["PUBID8", "REGION8", "CENDIV8", "SQFT8", "SQFTC8", "YRCONC8", "PBA8", "ELUSED8", "NGUSED8", "FKUSED8", "PRUSED8", "STUSED8", "HWUSED8", "ADJWT8", "STRATUM8", "PAIR8", "NGCNS8", "NGBTU8", "NGEXP8", "ZNGCNS8", "ZNGEXP8", "FKCNS8", "FKBTU8", "FKEXP8", "ZFKCNS8", "ZFKEXP8", "DHUSED8", "DHHT18", "DHHT28", "DHCOOL8", "DHWATR8", "DHCOOK8", "DHMANU8", "DHOTH8", "DHCNS8", "DHBTU8", "DHEXP8", "ZDHCNS8", "ZDHEXP8"] do
56
53
  key 'id', :field_name => 'PUBID8'
57
- store 'natural_gas_use', :field_name => 'NGCNS8', :from_units => :hundred_cubic_feet, :to_units => :cubic_metres #!!!!!!!!!!!!
58
- store 'fuel_oil_use', :field_name => 'FKCNS8', :from_units => :gallons, :to_units => :litres
59
- store 'district_heat_use', :field_name => 'DHBTU8', :from_units => :kbtus, :to_units => :megajoules
54
+ store 'natural_gas_use', :field_name => 'NGCNS8', :from_units => :hundred_cubic_feet, :to_units => :cubic_metres
55
+ store 'natural_gas_energy', :field_name => 'NGBTU8', :from_units => :kbtus, :to_units => :megajoules
56
+ store 'fuel_oil_use', :field_name => 'FKCNS8', :from_units => :gallons, :to_units => :litres
57
+ store 'fuel_oil_energy', :field_name => 'FKBTU8', :from_units => :kbtus, :to_units => :megajoules
58
+ store 'steam_use', :field_name => 'DHBTU8', :from_units => :kbtus, :to_units => :megajoules
60
59
  end
61
60
  end
62
61
  end
@@ -12,7 +12,7 @@ class CountryLodgingClass < ActiveRecord::Base
12
12
  col :fuel_oil_intensity_units
13
13
  col :electricity_intensity, :type => :float
14
14
  col :electricity_intensity_units
15
- col :district_heat_intensity, :type => :float
16
- col :district_heat_intensity_units
15
+ col :steam_intensity, :type => :float
16
+ col :steam_intensity_units
17
17
  col :weighting, :type => :float
18
18
  end
@@ -14,29 +14,30 @@ CountryLodgingClass.class_eval do
14
14
  end
15
15
 
16
16
  process "Calculate US lodging class fuel intensities from CommercialBuildingEnergyConsumptionSurveyResponse" do
17
- where(:country_iso_3166_code => 'US').each do |lodging_class|
18
- cbecs_responses = CommercialBuildingEnergyConsumptionSurveyResponse.where(:detailed_activity => lodging_class.cbecs_detailed_activity)
19
- intensities = {}
20
-
21
- [:natural_gas, :fuel_oil, :electricity, :district_heat].each do |fuel|
22
- intensity = cbecs_responses.inject(0) do |sum, response|
23
- next sum unless response.send("#{fuel}_use").present?
24
- occupied_room_nights = 365.0 / 7.0 / 12.0 * response.months_used * response.weekly_hours / 24.0 * response.lodging_rooms * 0.59
25
- sum + (response.weighting * response.send("#{fuel}_use") / occupied_room_nights)
26
- end
27
- intensities[fuel] = intensity / cbecs_responses.sum(:weighting)
17
+ connection.select_values("SELECT DISTINCT cbecs_detailed_activity FROM #{CountryLodgingClass.quoted_table_name}").each do |cbecs_activity|
18
+ [:natural_gas, :fuel_oil, :electricity, :steam].each do |fuel|
19
+ where(:cbecs_detailed_activity => cbecs_activity).update_all(%{
20
+ #{fuel}_intensity = (
21
+ SELECT SUM(
22
+ weighting * #{fuel}_use / (365.0 / 7.0 / 12.0 * months_used * weekly_hours / 24.0 * lodging_rooms * 0.59)
23
+ ) / SUM(weighting)
24
+ FROM #{CommercialBuildingEnergyConsumptionSurveyResponse.quoted_table_name}
25
+ WHERE detailed_activity = '#{cbecs_activity}'
26
+ )
27
+ })
28
28
  end
29
29
 
30
- lodging_class.natural_gas_intensity = intensities[:natural_gas]
31
- lodging_class.natural_gas_intensity_units = 'cubic_metres_per_room_night'
32
- lodging_class.fuel_oil_intensity = intensities[:fuel_oil]
33
- lodging_class.fuel_oil_intensity_units = 'litres_per_room_night'
34
- lodging_class.electricity_intensity = intensities[:electricity]
35
- lodging_class.electricity_intensity_units = 'kilowatt_hours_per_room_night'
36
- lodging_class.district_heat_intensity = intensities[:district_heat]
37
- lodging_class.district_heat_intensity_units = 'megajoules_per_room_night'
38
- lodging_class.weighting = (lodging_class.lodging_class_name == 'Motel' or lodging_class.lodging_class_name == 'Inn') ? cbecs_responses.sum(:weighting) / 2.0 : cbecs_responses.sum(:weighting) # hack to ensure that we don't double-weight motels and inns when we calculate US national average lodging fuel intensities
39
- lodging_class.save!
30
+ where(:cbecs_detailed_activity => cbecs_activity).update_all(%{
31
+ natural_gas_intensity_units = 'cubic_metres_per_room_night',
32
+ fuel_oil_intensity_units = 'litrs_per_room_night',
33
+ electricity_intensity_units = 'kilowatt_hours_per_room_night',
34
+ steam_intensity_units = 'megajoules_per_room_night',
35
+ weighting = (
36
+ SELECT SUM(weighting)
37
+ FROM #{CommercialBuildingEnergyConsumptionSurveyResponse.quoted_table_name}
38
+ WHERE detailed_activity = '#{cbecs_activity}'
39
+ ) / #{where(:cbecs_detailed_activity => cbecs_activity).count}
40
+ })
40
41
  end
41
42
  end
42
43
  end
@@ -0,0 +1,26 @@
1
+ class LodgingFuelUseEquation < ActiveRecord::Base
2
+ set_primary_key :name
3
+
4
+ def self.find_by_criteria(fuel, criteria)
5
+ first :conditions => {
6
+ :fuel => fuel,
7
+ :climate_zone_number => (criteria[:climate_zone_number].present? ? criteria[:climate_zone_number].value : nil),
8
+ :property_rooms => (criteria[:property_rooms].present? ? 1 : 0),
9
+ :construction_year => (criteria[:property_construction_year].present? ? 1 : 0)
10
+ }
11
+ end
12
+
13
+ col :name
14
+ col :regression
15
+ col :fuel
16
+ col :climate_zone_number, :type => :integer
17
+ col :property_rooms, :type => :boolean
18
+ col :construction_year, :type => :boolean
19
+ col :rooms_factor, :type => :float
20
+ col :year_factor, :type => :float
21
+ col :constant, :type => :float
22
+ col :units
23
+ col :oil_share, :type => :float
24
+ col :gas_share, :type => :float
25
+ col :steam_share, :type => :float
26
+ end
@@ -0,0 +1,20 @@
1
+ LodgingFuelUseEquation.class_eval do
2
+ data_miner do
3
+ import "fuel use equations derived from CBECS 2003",
4
+ :url => 'https://docs.google.com/spreadsheet/pub?key=0AoQJbWqPrREqdGN0X2l3RjFaRTBFRWdseWJoc0ZvZkE&output=csv' do
5
+ key 'name'
6
+ store 'regression'
7
+ store 'fuel'
8
+ store 'climate_zone_number', :nullify => true
9
+ store 'property_rooms'
10
+ store 'construction_year'
11
+ store 'rooms_factor'
12
+ store 'year_factor'
13
+ store 'constant'
14
+ store 'units'
15
+ store 'oil_share'
16
+ store 'gas_share'
17
+ store 'steam_share'
18
+ end
19
+ end
20
+ end
@@ -26,12 +26,4 @@ class CensusDivision < ActiveRecord::Base
26
26
  col :meeting_building_electricity_intensity_units
27
27
  col :meeting_building_district_heat_intensity, :type => :float
28
28
  col :meeting_building_district_heat_intensity_units
29
- col :lodging_building_natural_gas_intensity, :type => :float
30
- col :lodging_building_natural_gas_intensity_units
31
- col :lodging_building_fuel_oil_intensity, :type => :float
32
- col :lodging_building_fuel_oil_intensity_units
33
- col :lodging_building_electricity_intensity, :type => :float
34
- col :lodging_building_electricity_intensity_units
35
- col :lodging_building_district_heat_intensity, :type => :float
36
- col :lodging_building_district_heat_intensity_units
37
29
  end
@@ -31,15 +31,5 @@ CensusDivision.class_eval do
31
31
  store 'meeting_building_electricity_intensity', :from_units => :kilowatt_hours_per_square_foot_hour, :to_units => :kilowatt_hours_per_square_metre_hour
32
32
  store 'meeting_building_district_heat_intensity', :from_units => :thousand_btu_per_square_foot_hour, :to_units => :megajoules_per_square_metre_hour
33
33
  end
34
-
35
- import 'lodging building fuel intensities derived from CBECS 2003',
36
- :url => 'https://docs.google.com/spreadsheet/pub?key=0AoQJbWqPrREqdGkxNExTajZPSjRWU3REVks5SFJ0cmc&output=csv',
37
- :select => lambda { |row| row['census_division'].to_i.between?(1, 9) } do
38
- key 'number', :field_name => 'census_division'
39
- store 'lodging_building_electricity_intensity', :field_name => 'electricity_intensity', :units_field_name => 'electricity_intensity_units'
40
- store 'lodging_building_natural_gas_intensity', :field_name => 'natural_gas_intensity', :from_units => :hundred_cubic_feet_per_room_night, :to_units => :cubic_metres_per_room_night
41
- store 'lodging_building_fuel_oil_intensity', :field_name => 'fuel_oil_intensity', :from_units => :gallons_per_room_night, :to_units => :litres_per_room_night
42
- store 'lodging_building_district_heat_intensity', :field_name => 'district_heat_intensity', :from_units => :thousand_btu_per_room_night, :to_units => :megajoules_per_room_night
43
- end
44
34
  end
45
35
  end
@@ -10,4 +10,3 @@ CensusRegion.class_eval do
10
10
  end
11
11
  end
12
12
  end
13
-
@@ -5,9 +5,25 @@ class ClimateDivision < ActiveRecord::Base
5
5
  belongs_to :state, :foreign_key => 'state_postal_abbreviation'
6
6
 
7
7
  RADIUS = 750
8
-
8
+
9
+ def climate_zone_number
10
+ if cooling_degree_days < 2000
11
+ if heating_degree_days > 7000
12
+ 1
13
+ elsif heating_degree_days > 5499
14
+ 2
15
+ elsif heating_degree_days > 3999
16
+ 3
17
+ else
18
+ 4
19
+ end
20
+ else
21
+ 5
22
+ end
23
+ end
24
+
9
25
  col :name
10
26
  col :heating_degree_days, :type => :float
11
27
  col :cooling_degree_days, :type => :float
12
28
  col :state_postal_abbreviation
13
- end
29
+ end
@@ -10,4 +10,3 @@ ClimateDivision.class_eval do
10
10
  #associate :state, :key => :state_postal_abbreviation, :foreign_key => :postal_abbreviation
11
11
  end
12
12
  end
13
-
@@ -26,8 +26,8 @@ class Country < ActiveRecord::Base
26
26
  :lodging_fuel_oil_intensity_units => lambda { united_states.lodging_fuel_oil_intensity_units }, # for now assume US represents world
27
27
  :lodging_electricity_intensity => lambda { united_states.lodging_electricity_intensity }, # for now assume US represents world
28
28
  :lodging_electricity_intensity_units => lambda { united_states.lodging_electricity_intensity_units }, # for now assume US represents world
29
- :lodging_district_heat_intensity => lambda { united_states.lodging_district_heat_intensity }, # for now assume US represents world
30
- :lodging_district_heat_intensity_units => lambda { united_states.lodging_district_heat_intensity_units }, # for now assume US represents world
29
+ :lodging_steam_intensity => lambda { united_states.lodging_steam_intensity }, # for now assume US represents world
30
+ :lodging_steam_intensity_units => lambda { united_states.lodging_steam_intensity_units }, # for now assume US represents world
31
31
  :rail_trip_distance => lambda { weighted_average(:rail_trip_distance, :weighted_by => :rail_passengers) },
32
32
  :rail_trip_distance_units => 'kilometres', # FIXME TODO derive this
33
33
  :rail_speed => lambda { weighted_average(:rail_speed, :weighted_by => :rail_passengers) },
@@ -67,8 +67,8 @@ class Country < ActiveRecord::Base
67
67
  col :lodging_fuel_oil_intensity_units
68
68
  col :lodging_electricity_intensity, :type => :float
69
69
  col :lodging_electricity_intensity_units
70
- col :lodging_district_heat_intensity, :type => :float
71
- col :lodging_district_heat_intensity_units
70
+ col :lodging_steam_intensity, :type => :float
71
+ col :lodging_steam_intensity_units
72
72
  col :rail_passengers, :type => :float
73
73
  col :rail_trip_distance, :type => :float
74
74
  col :rail_trip_distance_units
@@ -118,8 +118,8 @@ Country.class_eval do
118
118
  country.lodging_fuel_oil_intensity_units = 'gallons_per_room_night' # FIXME TODO derive this
119
119
  country.lodging_electricity_intensity = country.lodging_classes.weighted_average(:electricity_intensity)
120
120
  country.lodging_electricity_intensity_units = 'kilowatt_hours_per_room_night' # FIXME TODO derive this
121
- country.lodging_district_heat_intensity = country.lodging_classes.weighted_average(:district_heat_intensity)
122
- country.lodging_district_heat_intensity_units = 'megajoules_per_room_night' # FIXME TODO derive this
121
+ country.lodging_steam_intensity = country.lodging_classes.weighted_average(:steam_intensity)
122
+ country.lodging_steam_intensity_units = 'megajoules_per_room_night' # FIXME TODO derive this
123
123
  country.save!
124
124
  end
125
125
  end
@@ -10,10 +10,15 @@ class State < ActiveRecord::Base
10
10
  def country
11
11
  Country.united_states
12
12
  end
13
-
13
+
14
+ def climate_zone_number
15
+ potential_zones = climate_divisions.map(&:climate_zone_number)
16
+ potential_zones.uniq.length == 1 ? potential_zones.first : nil
17
+ end
18
+
14
19
  col :postal_abbreviation
15
20
  col :fips_code, :type => :integer
16
21
  col :name
17
22
  col :census_division_number
18
23
  col :petroleum_administration_for_defense_district_code
19
- end
24
+ end
@@ -17,18 +17,18 @@ class ResidentialEnergyConsumptionSurveyResponse < ActiveRecord::Base
17
17
  SUBCOHORT_THRESHOLD = 5 # per Matt
18
18
 
19
19
  INPUT_CHARACTERISTICS = [
20
- :census_region,
21
- :heating_degree_days,
22
- :cooling_degree_days,
23
- :residence_class,
24
- :rooms,
25
- :bedrooms,
26
- :bathrooms,
27
- :floorspace,
28
- :residents,
29
- :urbanity,
30
- :construction_year,
31
20
  :ownership,
21
+ :construction_year,
22
+ :urbanity,
23
+ :residents,
24
+ :floorspace,
25
+ :bathrooms,
26
+ :bedrooms,
27
+ :rooms,
28
+ :residence_class,
29
+ :cooling_degree_days,
30
+ :heating_degree_days,
31
+ :census_region
32
32
  ]
33
33
 
34
34
  # sabshere 9/20/10 sorted with sort -d -t "'" -k 2 ~/Desktop/parts.txt
@@ -1,3 +1,3 @@
1
1
  module Earth
2
- VERSION = "0.11.8"
2
+ VERSION = "0.11.9"
3
3
  end
@@ -22,7 +22,7 @@ describe Earth do
22
22
 
23
23
  describe '.resources' do
24
24
  it 'should get a list of all resource names' do
25
- Earth.resources.length.should == 95
25
+ Earth.resources.length.should == 96
26
26
  Earth.resources.should include('Aircraft')
27
27
  Earth.resources.should include('Industry')
28
28
  end
@@ -33,7 +33,7 @@ describe Earth do
33
33
  Earth.resources('computation').length.should == 3
34
34
  Earth.resources('diet').length.should == 2
35
35
  Earth.resources('fuel').length.should == 5
36
- Earth.resources('hospitality').length.should == 4
36
+ Earth.resources('hospitality').length.should == 5
37
37
  Earth.resources('industry').length.should == 13
38
38
  Earth.resources('locality').length.should == 10
39
39
  Earth.resources('pet').length.should == 4
metadata CHANGED
@@ -1,270 +1,273 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: earth
3
- version: !ruby/object:Gem::Version
4
- version: 0.11.8
3
+ version: !ruby/object:Gem::Version
5
4
  prerelease:
5
+ version: 0.11.9
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Seamus Abshere
9
9
  - Derek Kastner
10
10
  - Andy Rossmeissl
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-12-22 00:00:00.000000000Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
14
+
15
+ date: 2012-01-24 00:00:00 +01:00
16
+ default_executable:
17
+ dependencies:
18
+ - !ruby/object:Gem::Dependency
17
19
  name: data_miner
18
- requirement: &2181048400 !ruby/object:Gem::Requirement
20
+ requirement: &id001 !ruby/object:Gem::Requirement
19
21
  none: false
20
- requirements:
21
- - - ! '>='
22
- - !ruby/object:Gem::Version
23
- version: '1.3'
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: "1.3"
24
26
  type: :runtime
25
27
  prerelease: false
26
- version_requirements: *2181048400
27
- - !ruby/object:Gem::Dependency
28
+ version_requirements: *id001
29
+ - !ruby/object:Gem::Dependency
28
30
  name: to_regexp
29
- requirement: &2181047980 !ruby/object:Gem::Requirement
31
+ requirement: &id002 !ruby/object:Gem::Requirement
30
32
  none: false
31
- requirements:
32
- - - ! '>='
33
- - !ruby/object:Gem::Version
34
- version: '0'
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: "0"
35
37
  type: :runtime
36
38
  prerelease: false
37
- version_requirements: *2181047980
38
- - !ruby/object:Gem::Dependency
39
+ version_requirements: *id002
40
+ - !ruby/object:Gem::Dependency
39
41
  name: cohort_scope
40
- requirement: &2181047260 !ruby/object:Gem::Requirement
42
+ requirement: &id003 !ruby/object:Gem::Requirement
41
43
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
46
48
  type: :runtime
47
49
  prerelease: false
48
- version_requirements: *2181047260
49
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id003
51
+ - !ruby/object:Gem::Dependency
50
52
  name: table_warnings
51
- requirement: &2181046760 !ruby/object:Gem::Requirement
53
+ requirement: &id004 !ruby/object:Gem::Requirement
52
54
  none: false
53
- requirements:
54
- - - ! '>='
55
- - !ruby/object:Gem::Version
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
56
58
  version: 0.0.6
57
59
  type: :runtime
58
60
  prerelease: false
59
- version_requirements: *2181046760
60
- - !ruby/object:Gem::Dependency
61
+ version_requirements: *id004
62
+ - !ruby/object:Gem::Dependency
61
63
  name: remote_table
62
- requirement: &2181046180 !ruby/object:Gem::Requirement
64
+ requirement: &id005 !ruby/object:Gem::Requirement
63
65
  none: false
64
- requirements:
65
- - - ! '>='
66
- - !ruby/object:Gem::Version
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
67
69
  version: 1.3.0
68
70
  type: :runtime
69
71
  prerelease: false
70
- version_requirements: *2181046180
71
- - !ruby/object:Gem::Dependency
72
+ version_requirements: *id005
73
+ - !ruby/object:Gem::Dependency
72
74
  name: falls_back_on
73
- requirement: &2181045720 !ruby/object:Gem::Requirement
75
+ requirement: &id006 !ruby/object:Gem::Requirement
74
76
  none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
79
81
  type: :runtime
80
82
  prerelease: false
81
- version_requirements: *2181045720
82
- - !ruby/object:Gem::Dependency
83
+ version_requirements: *id006
84
+ - !ruby/object:Gem::Dependency
83
85
  name: fixed_width-multibyte
84
- requirement: &2181045260 !ruby/object:Gem::Requirement
86
+ requirement: &id007 !ruby/object:Gem::Requirement
85
87
  none: false
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: "0"
90
92
  type: :runtime
91
93
  prerelease: false
92
- version_requirements: *2181045260
93
- - !ruby/object:Gem::Dependency
94
+ version_requirements: *id007
95
+ - !ruby/object:Gem::Dependency
94
96
  name: geokit
95
- requirement: &2181044840 !ruby/object:Gem::Requirement
97
+ requirement: &id008 !ruby/object:Gem::Requirement
96
98
  none: false
97
- requirements:
98
- - - ! '>='
99
- - !ruby/object:Gem::Version
100
- version: '0'
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: "0"
101
103
  type: :runtime
102
104
  prerelease: false
103
- version_requirements: *2181044840
104
- - !ruby/object:Gem::Dependency
105
+ version_requirements: *id008
106
+ - !ruby/object:Gem::Dependency
105
107
  name: fuzzy_match
106
- requirement: &2181044340 !ruby/object:Gem::Requirement
108
+ requirement: &id009 !ruby/object:Gem::Requirement
107
109
  none: false
108
- requirements:
109
- - - ! '>='
110
- - !ruby/object:Gem::Version
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
111
113
  version: 1.1.0
112
114
  type: :runtime
113
115
  prerelease: false
114
- version_requirements: *2181044340
115
- - !ruby/object:Gem::Dependency
116
+ version_requirements: *id009
117
+ - !ruby/object:Gem::Dependency
116
118
  name: weighted_average
117
- requirement: &2181043740 !ruby/object:Gem::Requirement
119
+ requirement: &id010 !ruby/object:Gem::Requirement
118
120
  none: false
119
- requirements:
120
- - - ! '>='
121
- - !ruby/object:Gem::Version
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
122
124
  version: 1.0.2
123
125
  type: :runtime
124
126
  prerelease: false
125
- version_requirements: *2181043740
126
- - !ruby/object:Gem::Dependency
127
+ version_requirements: *id010
128
+ - !ruby/object:Gem::Dependency
127
129
  name: mini_record-compat
128
- requirement: &2181043260 !ruby/object:Gem::Requirement
130
+ requirement: &id011 !ruby/object:Gem::Requirement
129
131
  none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: "0"
134
136
  type: :runtime
135
137
  prerelease: false
136
- version_requirements: *2181043260
137
- - !ruby/object:Gem::Dependency
138
+ version_requirements: *id011
139
+ - !ruby/object:Gem::Dependency
138
140
  name: activesupport
139
- requirement: &2181042580 !ruby/object:Gem::Requirement
141
+ requirement: &id012 !ruby/object:Gem::Requirement
140
142
  none: false
141
- requirements:
142
- - - ! '>='
143
- - !ruby/object:Gem::Version
144
- version: '0'
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: "0"
145
147
  type: :runtime
146
148
  prerelease: false
147
- version_requirements: *2181042580
148
- - !ruby/object:Gem::Dependency
149
+ version_requirements: *id012
150
+ - !ruby/object:Gem::Dependency
149
151
  name: activerecord
150
- requirement: &2181041540 !ruby/object:Gem::Requirement
152
+ requirement: &id013 !ruby/object:Gem::Requirement
151
153
  none: false
152
- requirements:
153
- - - ! '>='
154
- - !ruby/object:Gem::Version
155
- version: '0'
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: "0"
156
158
  type: :runtime
157
159
  prerelease: false
158
- version_requirements: *2181041540
159
- - !ruby/object:Gem::Dependency
160
+ version_requirements: *id013
161
+ - !ruby/object:Gem::Dependency
160
162
  name: bundler
161
- requirement: &2181040760 !ruby/object:Gem::Requirement
163
+ requirement: &id014 !ruby/object:Gem::Requirement
162
164
  none: false
163
- requirements:
164
- - - ! '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: "0"
167
169
  type: :development
168
170
  prerelease: false
169
- version_requirements: *2181040760
170
- - !ruby/object:Gem::Dependency
171
+ version_requirements: *id014
172
+ - !ruby/object:Gem::Dependency
171
173
  name: bueller
172
- requirement: &2181039500 !ruby/object:Gem::Requirement
174
+ requirement: &id015 !ruby/object:Gem::Requirement
173
175
  none: false
174
- requirements:
175
- - - ! '>='
176
- - !ruby/object:Gem::Version
177
- version: '0'
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: "0"
178
180
  type: :development
179
181
  prerelease: false
180
- version_requirements: *2181039500
181
- - !ruby/object:Gem::Dependency
182
+ version_requirements: *id015
183
+ - !ruby/object:Gem::Dependency
182
184
  name: cucumber
183
- requirement: &2181039000 !ruby/object:Gem::Requirement
185
+ requirement: &id016 !ruby/object:Gem::Requirement
184
186
  none: false
185
- requirements:
186
- - - ! '>='
187
- - !ruby/object:Gem::Version
188
- version: '0'
187
+ requirements:
188
+ - - ">="
189
+ - !ruby/object:Gem::Version
190
+ version: "0"
189
191
  type: :development
190
192
  prerelease: false
191
- version_requirements: *2181039000
192
- - !ruby/object:Gem::Dependency
193
+ version_requirements: *id016
194
+ - !ruby/object:Gem::Dependency
193
195
  name: rake
194
- requirement: &2181038280 !ruby/object:Gem::Requirement
196
+ requirement: &id017 !ruby/object:Gem::Requirement
195
197
  none: false
196
- requirements:
197
- - - ! '>='
198
- - !ruby/object:Gem::Version
199
- version: '0'
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: "0"
200
202
  type: :development
201
203
  prerelease: false
202
- version_requirements: *2181038280
203
- - !ruby/object:Gem::Dependency
204
+ version_requirements: *id017
205
+ - !ruby/object:Gem::Dependency
204
206
  name: rdoc
205
- requirement: &2162584420 !ruby/object:Gem::Requirement
207
+ requirement: &id018 !ruby/object:Gem::Requirement
206
208
  none: false
207
- requirements:
208
- - - ! '>='
209
- - !ruby/object:Gem::Version
210
- version: '0'
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: "0"
211
213
  type: :development
212
214
  prerelease: false
213
- version_requirements: *2162584420
214
- - !ruby/object:Gem::Dependency
215
+ version_requirements: *id018
216
+ - !ruby/object:Gem::Dependency
215
217
  name: rspec
216
- requirement: &2162583900 !ruby/object:Gem::Requirement
218
+ requirement: &id019 !ruby/object:Gem::Requirement
217
219
  none: false
218
- requirements:
219
- - - ! '>='
220
- - !ruby/object:Gem::Version
221
- version: '0'
220
+ requirements:
221
+ - - ">="
222
+ - !ruby/object:Gem::Version
223
+ version: "0"
222
224
  type: :development
223
225
  prerelease: false
224
- version_requirements: *2162583900
225
- - !ruby/object:Gem::Dependency
226
+ version_requirements: *id019
227
+ - !ruby/object:Gem::Dependency
226
228
  name: sqlite3-ruby
227
- requirement: &2162583360 !ruby/object:Gem::Requirement
229
+ requirement: &id020 !ruby/object:Gem::Requirement
228
230
  none: false
229
- requirements:
230
- - - ! '>='
231
- - !ruby/object:Gem::Version
232
- version: '0'
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: "0"
233
235
  type: :development
234
236
  prerelease: false
235
- version_requirements: *2162583360
236
- - !ruby/object:Gem::Dependency
237
+ version_requirements: *id020
238
+ - !ruby/object:Gem::Dependency
237
239
  name: mysql
238
- requirement: &2162581940 !ruby/object:Gem::Requirement
240
+ requirement: &id021 !ruby/object:Gem::Requirement
239
241
  none: false
240
- requirements:
241
- - - ! '>='
242
- - !ruby/object:Gem::Version
243
- version: '0'
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: "0"
244
246
  type: :development
245
247
  prerelease: false
246
- version_requirements: *2162581940
247
- - !ruby/object:Gem::Dependency
248
+ version_requirements: *id021
249
+ - !ruby/object:Gem::Dependency
248
250
  name: pg
249
- requirement: &2162579920 !ruby/object:Gem::Requirement
251
+ requirement: &id022 !ruby/object:Gem::Requirement
250
252
  none: false
251
- requirements:
252
- - - ! '>='
253
- - !ruby/object:Gem::Version
254
- version: '0'
253
+ requirements:
254
+ - - ">="
255
+ - !ruby/object:Gem::Version
256
+ version: "0"
255
257
  type: :development
256
258
  prerelease: false
257
- version_requirements: *2162579920
259
+ version_requirements: *id022
258
260
  description: An earth-simulation environment with ActiveRecord models and data
259
261
  email: andy@rossmeissl.net
260
- executables:
262
+ executables:
261
263
  - earth_tester.rb
262
264
  extensions: []
263
- extra_rdoc_files:
265
+
266
+ extra_rdoc_files:
264
267
  - LICENSE
265
268
  - LICENSE-PREAMBLE
266
269
  - README.markdown
267
- files:
270
+ files:
268
271
  - .document
269
272
  - .gitignore
270
273
  - Gemfile
@@ -462,6 +465,8 @@ files:
462
465
  - lib/earth/hospitality/data_miner.rb
463
466
  - lib/earth/hospitality/lodging_class.rb
464
467
  - lib/earth/hospitality/lodging_class/data_miner.rb
468
+ - lib/earth/hospitality/lodging_fuel_use_equation.rb
469
+ - lib/earth/hospitality/lodging_fuel_use_equation/data_miner.rb
465
470
  - lib/earth/hospitality/lodging_property.rb
466
471
  - lib/earth/industry.rb
467
472
  - lib/earth/industry/cbecs_energy_intensity.rb
@@ -628,32 +633,41 @@ files:
628
633
  - vendor/geokit-rails/test/schema.rb
629
634
  - vendor/geokit-rails/test/tasks.rake
630
635
  - vendor/geokit-rails/test/test_helper.rb
636
+ has_rdoc: true
631
637
  homepage: https://github.com/brighterplanet/earth
632
638
  licenses: []
639
+
633
640
  post_install_message:
634
- rdoc_options:
641
+ rdoc_options:
635
642
  - --charset=UTF-8
636
- require_paths:
643
+ require_paths:
637
644
  - lib
638
- required_ruby_version: !ruby/object:Gem::Requirement
645
+ required_ruby_version: !ruby/object:Gem::Requirement
639
646
  none: false
640
- requirements:
641
- - - ! '>='
642
- - !ruby/object:Gem::Version
643
- version: '0'
644
- required_rubygems_version: !ruby/object:Gem::Requirement
647
+ requirements:
648
+ - - ">="
649
+ - !ruby/object:Gem::Version
650
+ hash: 3547937136240416644
651
+ segments:
652
+ - 0
653
+ version: "0"
654
+ required_rubygems_version: !ruby/object:Gem::Requirement
645
655
  none: false
646
- requirements:
647
- - - ! '>='
648
- - !ruby/object:Gem::Version
649
- version: '0'
656
+ requirements:
657
+ - - ">="
658
+ - !ruby/object:Gem::Version
659
+ hash: 3547937136240416644
660
+ segments:
661
+ - 0
662
+ version: "0"
650
663
  requirements: []
664
+
651
665
  rubyforge_project:
652
- rubygems_version: 1.8.10
666
+ rubygems_version: 1.6.2
653
667
  signing_key:
654
668
  specification_version: 3
655
669
  summary: Land, sky, and sea
656
- test_files:
670
+ test_files:
657
671
  - features/automobile_fuel.feature
658
672
  - features/automobile_make.feature
659
673
  - features/automobile_make_fleet_year.feature