xkcd_2812.nbt 978 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Solar panel placement
  2. #
  3. # Solar energy tip: To maximize sun exposure, always
  4. # orient your panels downward and install them on the
  5. # surface of the sun.
  6. #
  7. # https://xkcd.com/2812/
  8. #
  9. # [1] https://en.wikipedia.org/wiki/Solar_luminosity
  10. # [2] https://en.wikipedia.org/wiki/Sun
  11. unit $: Money
  12. let net_metering_rate = $ 0.20 / kWh
  13. let panel_area = 1 m²
  14. let panel_efficiency = 20 %
  15. fn savings(i: Irradiance) -> Money / Time =
  16. net_metering_rate × i × panel_area × panel_efficiency -> $/year
  17. print("Option A: On the roof, south facing")
  18. let savings_a = savings(4 kWh/m²/day)
  19. print(savings_a |> round)
  20. assert_eq(savings_a, 58 $/year, 1 $/year)
  21. print()
  22. print("Option B: On the sun, downward facing")
  23. dimension Luminosity = Power
  24. let sun_luminosity: Luminosity = 3.828e26 W # [1]
  25. let sun_area: Area = 6.09e12 km^2 # [2]
  26. let savings_b = savings(sun_luminosity / sun_area)
  27. print(savings_b |> round)
  28. assert_eq(savings_b, 22 million $/year, 1 million $/year)