{
 "about": "Engine E1 (assets/learn/components/engine-e1.js): the Microgrid Workbench (SB1), capstone C1 and Modeler lesson M5, wave W3, 2026-11-03. Prairie Campus and its county hospital are fictional; the loads and the microgrid as built are lesson F7's. Equipment costs, the generator's fuel curve, the export credit, the fuel tank's cost and the three owners' costs of capital are illustrative, in 2025 dollars. Real: the solar shapes (SPP's 2025 hourly solar from EIA-930, assets/learn/data/town_year.json, turned into output per kW of panels with LX.townProfile, method 'scale', monthlyCF: EIA's 2025 monthly capacity factors, exactly as F7 does), the tariff's level (EIA's 2025 U.S. commercial average), the diesel price (EIA, 2025) and the CO2 factors (EIA). Written by scripts/build_learn_e1_data.mjs; _tests/learn/test_e1-engine.js recomputes the solar values.",
 "built": "2026-11-03",
 "campus": {
  "name": "Prairie Campus",
  "loads": [
   {
    "key": "hospital",
    "label": "County hospital",
    "short": "Hospital",
    "kw": 300,
    "icon": "plus"
   },
   {
    "key": "water",
    "label": "Water and heating plant",
    "short": "Water and heat",
    "kw": 100,
    "icon": "drop"
   },
   {
    "key": "dorms",
    "label": "Dorms",
    "short": "Dorms",
    "kw": 250,
    "icon": "house"
   },
   {
    "key": "labs",
    "label": "Classrooms and labs",
    "short": "Labs",
    "kw": 550,
    "icon": "city"
   }
  ],
  "asBuilt": {
   "pv": 600,
   "bat": 2000,
   "gen": 2,
   "fuel": 675,
   "note": "Lesson F7's microgrid: 600 kW of solar, a 500 kW / 2,000 kWh battery and a 400 kW generator (two 200 kW sets) with about 24 hours of fuel at full power (675 gallons)."
  }
 },
 "tech": {
  "pv": {
   "label": "Solar panels",
   "capex": 1800,
   "fom": 20,
   "life": 25,
   "unit": "kW",
   "note": "Illustrative campus-scale cost: $1,800 per kW installed, $20 per kW a year to maintain, 25 years."
  },
  "bat": {
   "label": "Battery",
   "capex": 450,
   "fomShare": 0.025,
   "life": 15,
   "hours": 4,
   "eff": 0.9,
   "unit": "kWh",
   "note": "Illustrative: $450 per kWh of a 4-hour battery (power included), 2.5% of that a year to maintain, 15 years; 90% of a charge comes back (F7's battery)."
  },
  "gen": {
   "label": "Diesel generator sets",
   "unitKW": 200,
   "capex": 600,
   "fom": 15,
   "life": 20,
   "minLoad": 0.3,
   "galPerKWh": 0.07,
   "note": "Illustrative: 200 kW sets at $600 per kW installed, $15 per kW a year; a set that is on runs at 30% of its rating or more; 0.07 gallons of diesel per kWh at any output (about 14 kWh per gallon; real sets burn more per kWh when lightly loaded)."
  },
  "tank": {
   "capexPerGal": 5,
   "life": 20,
   "note": "Illustrative: $5 per gallon of tank, 20 years. The fuel kept in it is bought once and is not counted in the annual cost."
  }
 },
 "fuel": {
  "price": 3.66,
  "co2": 10.19,
  "srcPrice": "eia-diesel",
  "srcCO2": "eia-co2"
 },
 "grid": {
  "tariffs": {
   "tou": {
    "label": "Time-of-use",
    "peak": [
     16,
     21
    ],
    "off": 9.44,
    "on": 28.31,
    "note": "16:00 to 21:00 costs three times the other hours (the shape of lesson A4's time-of-use tariff), set so that a flat load pays EIA's 2025 U.S. commercial average, 13.37¢ per kWh: 9.44¢ off peak, 28.31¢ on peak."
   },
   "flat": {
    "label": "Flat",
    "rate": 13.37,
    "note": "13.37¢ per kWh every hour: EIA's 2025 U.S. commercial average."
   }
  },
  "exportCredit": 4,
  "exportNote": "Illustrative: 4¢ per kWh sent back to the feeder, the running cost of Prairie Town's combined-cycle plant ($40/MWh, lesson 0).",
  "co2": 0.367,
  "co2Note": "0.367 kg of CO2 per kWh bought: EIA's U.S. average for utility-scale generation in 2023 (about 0.81 pounds per kWh), an average, operating-only factor.",
  "srcRate": "eia-epa-2-4",
  "srcCO2": "eia-faq-74"
 },
 "owners": [
  {
   "key": "utility",
   "label": "Utility-owned",
   "rate": 0.06,
   "pays": "The utility builds and runs it and recovers the cost from its customers.",
   "decides": "The utility, under its regulator."
  },
  {
   "key": "coop",
   "label": "Co-op-owned",
   "rate": 0.04,
   "pays": "An electric co-op builds it; its members pay through their bills.",
   "decides": "The co-op's member-elected board."
  },
  {
   "key": "community",
   "label": "Community-owned",
   "rate": 0.05,
   "pays": "The campus and its neighbours own it together and share the cost.",
   "decides": "The owners, by their own rules."
  }
 ],
 "ownersNote": "Real costs of capital (after inflation) are illustrative: 6% utility, 4% co-op, 5% community. Real deals vary.",
 "limits": {
  "pv": [
   0,
   4000,
   25
  ],
  "bat": [
   0,
   8000,
   50
  ],
  "gen": [
   0,
   4,
   1
  ],
  "fuel": [
   0,
   6000,
   25
  ],
  "exp": [
   0,
   2000,
   50
  ],
  "imp": [
   800,
   2000,
   50
  ]
 },
 "scenarios": [
  {
   "id": "jan3",
   "label": "Winter storm: 72 hours from 00:00 on 20 January 2025",
   "short": "Winter storm, 3 days",
   "window": "winter",
   "start": 456,
   "hours": 72
  },
  {
   "id": "eve1",
   "label": "Winter evening: 24 hours from 16:00 on 20 January 2025",
   "short": "Winter evening, 1 day",
   "window": "winter",
   "start": 472,
   "hours": 24
  },
  {
   "id": "jul3",
   "label": "Summer storm: 72 hours from 00:00 on 28 July 2025",
   "short": "Summer storm, 3 days",
   "window": "july",
   "start": 0,
   "hours": 72
  },
  {
   "id": "jan4",
   "label": "A longer winter storm: 96 hours from 00:00 on 20 January 2025",
   "short": "Winter storm, 4 days",
   "window": "winter",
   "start": 456,
   "hours": 96,
   "extra": true
  }
 ],
 "seeded": {
  "seed": 7,
  "n": 10,
  "window": "winter",
  "firstDay": 0,
  "lastStartDay": 55,
  "minHours": 6,
  "maxHours": 72,
  "note": "Ten winter outages drawn with seed 7: each starts at a whole hour from 00:00 on 1 January to 23:00 on 25 February 2025 (every hour equally likely) and lasts 6 to 72 hours (every length equally likely). A teaching sample, not outage statistics."
 },
 "forecasts": [
  {
   "key": "perfect",
   "label": "Perfect",
   "note": "The controller knows the coming sun exactly."
  },
  {
   "key": "persist",
   "label": "Yesterday again",
   "note": "Each coming day's sun is the last full day's (a persistence forecast)."
  },
  {
   "key": "sunny",
   "label": "Too sunny",
   "factor": 1.5,
   "note": "The persistence forecast with 50% more sun in every hour (capped at the panels' size)."
  },
  {
   "key": "dull",
   "label": "Too dull",
   "factor": 0.5,
   "note": "The persistence forecast with half the sun."
  }
 ],
 "rolling": {
  "every": 6,
  "note": "Every 6 hours the controller re-plans the rest of the outage on its forecast, keeps the plan's generator sets on or off for the next 6 hours, and balances each hour against the real sun."
 },
 "sources": {
  "eia-930": {
   "text": "EIA, Hourly Electric Grid Monitor (Form EIA-930), Southwest Power Pool, 2025: the solar shape",
   "url": "https://www.eia.gov/electricity/gridmonitor/",
   "asOf": "accessed 2 Nov 2026"
  },
  "eia-epm-cf": {
   "text": "EIA, Electric Power Monthly, Table 6.07.B: solar PV capacity factors, 2025 (24.0% for the year, and each month)",
   "url": "https://www.eia.gov/electricity/monthly/epm_table_grapher.php?t=epmt_6_07_b",
   "asOf": "issue of 23 Oct 2026"
  },
  "eia-epa-2-4": {
   "text": "EIA, Electric Power Annual, Table 2.4: average price of electricity to commercial customers, 2025: 13.37¢ per kWh",
   "url": "https://www.eia.gov/electricity/annual/html/epa_02_04.html",
   "asOf": "accessed 3 Nov 2026"
  },
  "eia-diesel": {
   "text": "EIA, U.S. No 2 diesel retail prices, annual average 2025: $3.660 per gallon",
   "url": "https://www.eia.gov/dnav/pet/hist/LeafHandler.ashx?n=PET&s=EMD_EPD2D_PTE_NUS_DPG&f=A",
   "asOf": "released 3 Nov 2026"
  },
  "eia-co2": {
   "text": "EIA, Carbon Dioxide Emissions Coefficients: diesel and home heating fuel, 10.19 kg CO2 per gallon",
   "url": "https://www.eia.gov/environment/emissions/co2_vol_mass.php",
   "asOf": "released 18 Sep 2024; checked 3 Nov 2026"
  },
  "eia-faq-74": {
   "text": "EIA, How much carbon dioxide is produced per kilowatthour of U.S. electricity generation? (about 0.81 pounds per kWh in 2023)",
   "url": "https://www.eia.gov/tools/faqs/faq.php?id=74&t=11",
   "asOf": "updated 11 Dec 2024; checked 3 Nov 2026"
  }
 },
 "sun": {
  "method": "LX.townProfile('solar', 1, { year: town_year.json, targets: cf_targets.json, monthlyCF: true }), method scale; kW of output per kW of panels, rounded to 3 decimals",
  "annualCF": 0.24,
  "months": [
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.107,
    0.413,
    0.489,
    0.484,
    0.477,
    0.482,
    0.489,
    0.495,
    0.361,
    0.087,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.132,
    0.246,
    0.414,
    0.451,
    0.478,
    0.484,
    0.503,
    0.482,
    0.475,
    0.434,
    0.264,
    0.121,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0.012,
    0.324,
    0.484,
    0.561,
    0.588,
    0.553,
    0.586,
    0.558,
    0.492,
    0.467,
    0.441,
    0.377,
    0.218,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0.053,
    0.283,
    0.501,
    0.594,
    0.652,
    0.69,
    0.685,
    0.671,
    0.651,
    0.639,
    0.565,
    0.447,
    0.159,
    0.006,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0.018,
    0.155,
    0.452,
    0.578,
    0.617,
    0.645,
    0.675,
    0.667,
    0.643,
    0.615,
    0.595,
    0.58,
    0.503,
    0.257,
    0.028,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0.016,
    0.191,
    0.455,
    0.582,
    0.627,
    0.692,
    0.729,
    0.735,
    0.743,
    0.725,
    0.672,
    0.617,
    0.514,
    0.299,
    0.052,
    0.001,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0.007,
    0.138,
    0.419,
    0.583,
    0.659,
    0.698,
    0.731,
    0.736,
    0.729,
    0.71,
    0.683,
    0.648,
    0.545,
    0.31,
    0.053,
    0.001,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.068,
    0.349,
    0.554,
    0.648,
    0.694,
    0.722,
    0.72,
    0.721,
    0.708,
    0.66,
    0.592,
    0.468,
    0.197,
    0.019,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0.021,
    0.235,
    0.509,
    0.617,
    0.672,
    0.688,
    0.689,
    0.678,
    0.679,
    0.647,
    0.563,
    0.328,
    0.076,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.132,
    0.455,
    0.556,
    0.605,
    0.604,
    0.611,
    0.616,
    0.617,
    0.6,
    0.454,
    0.118,
    0.002,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.038,
    0.301,
    0.473,
    0.494,
    0.496,
    0.499,
    0.513,
    0.518,
    0.47,
    0.235,
    0.017,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.126,
    0.352,
    0.398,
    0.401,
    0.405,
    0.419,
    0.432,
    0.402,
    0.192,
    0.011,
    0,
    0,
    0,
    0,
    0,
    0
   ]
  ],
  "winter": {
   "first": "2025-01-01",
   "days": 61,
   "day0": 0,
   "kw": [
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.091,
    0.386,
    0.453,
    0.491,
    0.471,
    0.47,
    0.469,
    0.46,
    0.293,
    0.041,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.041,
    0.224,
    0.337,
    0.348,
    0.39,
    0.394,
    0.406,
    0.375,
    0.206,
    0.044,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.082,
    0.357,
    0.422,
    0.395,
    0.416,
    0.405,
    0.408,
    0.416,
    0.258,
    0.029,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.011,
    0.053,
    0.134,
    0.2,
    0.194,
    0.209,
    0.22,
    0.267,
    0.198,
    0.043,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.069,
    0.319,
    0.415,
    0.393,
    0.377,
    0.39,
    0.401,
    0.405,
    0.268,
    0.051,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.094,
    0.413,
    0.453,
    0.455,
    0.47,
    0.441,
    0.391,
    0.37,
    0.221,
    0.019,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.057,
    0.249,
    0.276,
    0.438,
    0.492,
    0.46,
    0.441,
    0.35,
    0.144,
    0.017,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.098,
    0.336,
    0.383,
    0.42,
    0.427,
    0.478,
    0.507,
    0.469,
    0.258,
    0.022,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.021,
    0.115,
    0.153,
    0.225,
    0.264,
    0.317,
    0.279,
    0.253,
    0.122,
    0.012,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.084,
    0.482,
    0.636,
    0.652,
    0.625,
    0.605,
    0.601,
    0.623,
    0.471,
    0.082,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.129,
    0.458,
    0.535,
    0.558,
    0.572,
    0.54,
    0.565,
    0.59,
    0.391,
    0.076,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.1,
    0.379,
    0.435,
    0.409,
    0.404,
    0.321,
    0.355,
    0.433,
    0.318,
    0.041,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.119,
    0.406,
    0.449,
    0.426,
    0.5,
    0.56,
    0.561,
    0.597,
    0.419,
    0.076,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.131,
    0.499,
    0.568,
    0.57,
    0.552,
    0.56,
    0.542,
    0.54,
    0.409,
    0.087,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.14,
    0.582,
    0.679,
    0.619,
    0.582,
    0.589,
    0.629,
    0.706,
    0.51,
    0.104,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.156,
    0.539,
    0.666,
    0.6,
    0.488,
    0.5,
    0.471,
    0.583,
    0.416,
    0.097,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.059,
    0.258,
    0.358,
    0.332,
    0.364,
    0.397,
    0.395,
    0.376,
    0.206,
    0.04,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.117,
    0.463,
    0.583,
    0.503,
    0.401,
    0.426,
    0.409,
    0.393,
    0.265,
    0.076,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.17,
    0.59,
    0.68,
    0.672,
    0.636,
    0.654,
    0.756,
    0.775,
    0.592,
    0.12,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.059,
    0.276,
    0.434,
    0.477,
    0.463,
    0.455,
    0.463,
    0.42,
    0.362,
    0.101,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.174,
    0.601,
    0.629,
    0.513,
    0.558,
    0.546,
    0.496,
    0.448,
    0.393,
    0.116,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.13,
    0.496,
    0.571,
    0.55,
    0.474,
    0.387,
    0.35,
    0.393,
    0.347,
    0.126,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.126,
    0.474,
    0.484,
    0.477,
    0.463,
    0.518,
    0.516,
    0.518,
    0.451,
    0.131,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.111,
    0.43,
    0.516,
    0.469,
    0.354,
    0.305,
    0.315,
    0.449,
    0.419,
    0.116,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.129,
    0.463,
    0.509,
    0.452,
    0.459,
    0.557,
    0.587,
    0.612,
    0.348,
    0.123,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.112,
    0.525,
    0.654,
    0.68,
    0.648,
    0.633,
    0.704,
    0.702,
    0.617,
    0.166,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.196,
    0.675,
    0.701,
    0.677,
    0.618,
    0.615,
    0.73,
    0.759,
    0.611,
    0.169,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.006,
    0.126,
    0.424,
    0.507,
    0.488,
    0.499,
    0.51,
    0.489,
    0.419,
    0.246,
    0.062,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.084,
    0.318,
    0.362,
    0.394,
    0.398,
    0.431,
    0.445,
    0.446,
    0.387,
    0.137,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.087,
    0.368,
    0.431,
    0.474,
    0.587,
    0.623,
    0.641,
    0.554,
    0.456,
    0.174,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.216,
    0.655,
    0.758,
    0.657,
    0.626,
    0.651,
    0.599,
    0.632,
    0.575,
    0.207,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.235,
    0.638,
    0.641,
    0.606,
    0.464,
    0.422,
    0.394,
    0.416,
    0.363,
    0.154,
    0.001,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.206,
    0.558,
    0.637,
    0.659,
    0.625,
    0.638,
    0.603,
    0.573,
    0.501,
    0.193,
    0.003,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.166,
    0.588,
    0.669,
    0.65,
    0.643,
    0.644,
    0.643,
    0.643,
    0.538,
    0.209,
    0.004,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.133,
    0.342,
    0.429,
    0.452,
    0.518,
    0.549,
    0.561,
    0.455,
    0.453,
    0.191,
    0.004,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.041,
    0.178,
    0.352,
    0.498,
    0.475,
    0.483,
    0.475,
    0.394,
    0.366,
    0.203,
    0.01,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.006,
    0.283,
    0.643,
    0.653,
    0.706,
    0.683,
    0.73,
    0.783,
    0.782,
    0.714,
    0.23,
    0.01,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.129,
    0.395,
    0.501,
    0.545,
    0.591,
    0.591,
    0.62,
    0.657,
    0.628,
    0.201,
    0.01,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.204,
    0.512,
    0.499,
    0.358,
    0.326,
    0.283,
    0.351,
    0.541,
    0.711,
    0.304,
    0.009,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.009,
    0.28,
    0.763,
    0.866,
    0.846,
    0.803,
    0.751,
    0.629,
    0.566,
    0.505,
    0.212,
    0.006,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.04,
    0.118,
    0.203,
    0.351,
    0.403,
    0.416,
    0.367,
    0.231,
    0.2,
    0.053,
    0.003,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.003,
    0.09,
    0.283,
    0.323,
    0.419,
    0.45,
    0.536,
    0.542,
    0.521,
    0.388,
    0.108,
    0.003,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.098,
    0.255,
    0.351,
    0.468,
    0.432,
    0.495,
    0.461,
    0.429,
    0.323,
    0.154,
    0.012,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.018,
    0.315,
    0.615,
    0.671,
    0.692,
    0.726,
    0.766,
    0.782,
    0.804,
    0.717,
    0.261,
    0.012,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.11,
    0.295,
    0.246,
    0.278,
    0.302,
    0.384,
    0.298,
    0.237,
    0.172,
    0.141,
    0.01,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.116,
    0.329,
    0.267,
    0.305,
    0.243,
    0.321,
    0.413,
    0.49,
    0.416,
    0.225,
    0.01,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.019,
    0.287,
    0.558,
    0.708,
    0.77,
    0.862,
    0.872,
    0.89,
    0.869,
    0.729,
    0.286,
    0.018,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.012,
    0.161,
    0.373,
    0.389,
    0.449,
    0.474,
    0.52,
    0.37,
    0.37,
    0.369,
    0.367,
    0.366,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.141,
    0.271,
    0.382,
    0.404,
    0.45,
    0.469,
    0.515,
    0.478,
    0.475,
    0.416,
    0.292,
    0.132,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.373,
    0.375,
    0.378,
    0.376,
    0.378,
    0.459,
    0.495,
    0.462,
    0.469,
    0.419,
    0.307,
    0.147,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.381,
    0.382,
    0.384,
    0.384,
    0.453,
    0.464,
    0.495,
    0.381,
    0.381,
    0.379,
    0.378,
    0.166,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.24,
    0.378,
    0.379,
    0.387,
    0.413,
    0.421,
    0.449,
    0.426,
    0.434,
    0.395,
    0.378,
    0.375,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.262,
    0.373,
    0.378,
    0.379,
    0.44,
    0.443,
    0.462,
    0.443,
    0.462,
    0.379,
    0.376,
    0.373,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.367,
    0.369,
    0.372,
    0.424,
    0.474,
    0.493,
    0.498,
    0.372,
    0.373,
    0.372,
    0.369,
    0.256,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.367,
    0.369,
    0.372,
    0.372,
    0.373,
    0.372,
    0.373,
    0.373,
    0.372,
    0.373,
    0.37,
    0.284,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.349,
    0.369,
    0.372,
    0.373,
    0.373,
    0.372,
    0.373,
    0.372,
    0.373,
    0.373,
    0.37,
    0.284,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.367,
    0.372,
    0.375,
    0.376,
    0.329,
    0.367,
    0.367,
    0.369,
    0.329,
    0.323,
    0.332,
    0.296,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.367,
    0.37,
    0.375,
    0.375,
    0.327,
    0.335,
    0.335,
    0.329,
    0.329,
    0.323,
    0.37,
    0.296,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.367,
    0.37,
    0.372,
    0.372,
    0.327,
    0.335,
    0.335,
    0.321,
    0.321,
    0.321,
    0.37,
    0.296,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.377,
    0.402,
    0.404,
    0.405,
    0.356,
    0.364,
    0.364,
    0.322,
    0.322,
    0.233,
    0.23,
    0.228,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.22,
    0.402,
    0.404,
    0.404,
    0.356,
    0.364,
    0.364,
    0.219,
    0.219,
    0.217,
    0.216,
    0.214,
    0,
    0,
    0,
    0,
    0
   ]
  },
  "july": {
   "first": "2025-07-28",
   "days": 3,
   "day0": 208,
   "kw": [
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.154,
    0.576,
    0.774,
    0.818,
    0.821,
    0.814,
    0.733,
    0.751,
    0.792,
    0.777,
    0.755,
    0.555,
    0.291,
    0.023,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.004,
    0.164,
    0.585,
    0.751,
    0.848,
    0.827,
    0.809,
    0.745,
    0.747,
    0.734,
    0.763,
    0.65,
    0.522,
    0.253,
    0.018,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.001,
    0.107,
    0.441,
    0.678,
    0.741,
    0.727,
    0.711,
    0.718,
    0.683,
    0.627,
    0.57,
    0.583,
    0.551,
    0.305,
    0.022,
    0,
    0,
    0,
    0
   ]
  }
 },
 "precomputed": {
  "sb1": {
   "head": "Result for the default plan (F7's campus)",
   "rows": [
    [
     "Plan",
     "600 kW of solar · 2,000 kWh battery · 2 sets of 200 kW · 675 gallons"
    ],
    [
     "Annual cost: equipment and upkeep plus the normal-year grid bill on 12 average days (2025 dollars, illustrative; outage diesel not included)",
     "$1,341,327"
    ],
    [
     "The year's bill with nothing built",
     "$1,405,586"
    ],
    [
     "CO₂ from grid electricity in a normal year",
     "3,425 t"
    ],
    [
     "Must-stay-on load unserved: winter storm, 3 days",
     "10,070 kWh (675 gal of diesel, $2,470)"
    ]
   ],
   "note": "Precomputed with HiGHS on 3 November 2026 for the default plan above; with JavaScript on, the bench runs your own plan."
  },
  "c1": {
   "head": "Results for the default plan (F7's campus as built) and the sized plan",
   "rows": [
    [
     "Plan",
     "600 kW of solar · 2,000 kWh battery · 2 sets of 200 kW · 675 gallons; hospital, water and heat, dorms must stay on"
    ],
    [
     "Annual cost: equipment and upkeep plus the normal-year grid bill on 12 average days (2025 dollars, illustrative; outage diesel not included)",
     "$1,341,327"
    ],
    [
     "The year's bill with nothing built",
     "$1,405,586"
    ],
    [
     "Critical load unserved in the 72-hour storm (hospital, water and heat, dorms)",
     "28,070 kWh (675 gal of diesel, $2,470; 6.9 t CO₂)"
    ],
    [
     "The same plan if the storm lasts 1, 2, 3 or 4 days",
     "1,907 · 14,765 · 28,070 · 41,173 kWh unserved"
    ],
    [
     "CO₂ from grid electricity in a normal year",
     "3,425 t"
    ],
    [
     "The plan Size it for me gives from the default",
     "3,225 kW of solar · 5,050 kWh battery · 2 sets · 675 gallons: $1,181,114 a year, community-owned"
    ],
    [
     "That plan in the storm, and on a fourth day",
     "0 kWh of critical load unserved (675 gal of diesel, $2,470); 4,508 kWh if the storm lasts 4 days"
    ],
    [
     "That plan, paid by each owner (each owner's cheapest, rounded up)",
     "Utility $1,240,076 · Co-op $1,124,657 · Community $1,181,114"
    ]
   ],
   "note": "Precomputed with HiGHS on 3 November 2026. Without JavaScript, write the note on the sized plan from these numbers, naming the plan in words in place of a link; with JavaScript on, you run your own plan, compare the owners and size it with the solver."
  }
 },
 "reference": {
  "m5": {
   "cases": [
    {
     "key": "open-flat-storm",
     "exp": 2000,
     "tar": "flat",
     "storm": true,
     "pv": 2734.977,
     "bat": 1922.799,
     "gen": 2,
     "total": 1239049.28
    },
    {
     "key": "x0-flat-storm",
     "exp": 0,
     "tar": "flat",
     "storm": true,
     "pv": 2315.043,
     "bat": 1979.07,
     "gen": 2,
     "total": 1252434.55
    },
    {
     "key": "x0-tou-storm",
     "exp": 0,
     "tar": "tou",
     "storm": true,
     "pv": 2564.103,
     "bat": 3558.974,
     "gen": 1,
     "total": 1152533.02
    },
    {
     "key": "x0-tou-none",
     "exp": 0,
     "tar": "tou",
     "storm": false,
     "pv": 2564.103,
     "bat": 3558.974,
     "gen": 0,
     "total": 1139903.91
    }
   ],
   "tree": {
    "rootN": 1.3123,
    "root": 1230478.67,
    "branchings": 1,
    "lps": 3
   },
   "plan": {
    "pv": 2575,
    "bat": 3600,
    "gen": 1
   },
   "check": {
    "must": 0,
    "keep": 6146.2,
    "shed": 37767.981,
    "fuel": 675
   },
   "seeded": {
    "starts": [
     15,
     1312,
     700,
     626,
     743,
     346,
     1026,
     264,
     394,
     398
    ],
    "hours": [
     10,
     52,
     33,
     22,
     54,
     16,
     40,
     30,
     41,
     71
    ],
    "must": [
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0
    ]
   },
   "roll": [
    {
     "key": "perfect",
     "must": 0,
     "keep": 6500.575,
     "fuel": 675
    },
    {
     "key": "persist",
     "must": 2745.446,
     "keep": 8068.65,
     "fuel": 675
    },
    {
     "key": "sunny",
     "must": 5586.395,
     "keep": 9406.7,
     "fuel": 675
    },
    {
     "key": "dull",
     "must": 0,
     "keep": 10436.125,
     "fuel": 668.535
    }
   ],
   "note": "Written by node _tests/learn/test_m05-microgrid-size-and-run.js --write from engine E1 (HiGHS 1.15.4 in Node); the M5 notebook asserts against it."
  }
 }
}
