references · updated 2026-10-11

NSRC Cooling Calculator — Canonical Model

confidence: high volatility: cold verified: 2026-11-04fresh

Complete extracted model of Bristol Stickney's 2006 NSRC cooling-calculator workbook: every formula, constant, zone datum, and display format, with cell-level provenance.

This article is the canonical account of the model inside Bristol Stickney’s 2006 “Night Sky Radiant Cooling in New Mexico” Excel workbook. It records what the workbook contains, cell by cell. It does not correct, improve, or reinterpret the workbook; where the workbook contains an error, the error is documented as an error in the source. Every formula below has a name, written in camelCase, that a port reuses verbatim as its code identifier.

Notation: 'Sheet'!Cell is Excel’s. “City sheet” means any of the eleven sheets 1 RED RIVER through 11 CARLSBAD; they share one layout, so a cell address such as N35 applies to all eleven unless stated. Columns B:M of a city sheet are January through December and N is the annual figure.

Provenance

  • Workbook: .wiki/raw/articles/2006-02-26-nsrc-new-mexico-cooling-calculator.xls, an immutable raw source.
  • SHA-256: 388f1447df75f8b993f57b59761d91b6ace4aebbf897954433b71cef916dcdf2 .wiki/raw/articles/2006-02-26-nsrc-new-mexico-cooling-calculator.xls
  • Authority: the workbook is the sole authority for the model. This article is its canonical account; Architecture Decision Record ADR-0008 (named here, not linked, because decision records live outside the rendered wiki) records the decision to treat it that way.
  • The workbook has 22 sheets, in this order: Cooling Worksheet, SAVINGS SUMMARY, Annual Power Use, Annual Water Use, Sample House, NMmaxav, NMaverage, NMminav, NMdewpt, PlateTemp1, BTU loss rate1, 1 RED RIVER, 2 CHAMA, 3 GALLUP, 4 SANTA FE, 5 FARMINGTON, 6 BLOOMFIELD, 7 CORONA, 8 SILVER CITY, 9 ALBUQUERQUE, 10 TRUTH OR CONSEQUENCES, 11 CARLSBAD.
  • Where the formulas live. The extraction found 17,156 cells with formula text. Nearly all are in the eleven city sheets (1,465 each; 1,464 for 7 CORONA, which lacks a N20 cell) and in PlateTemp1 (443) and BTU loss rate1 (446). SAVINGS SUMMARY has 132 and Sample House 16. Cooling Worksheet (the inputs), Annual Power Use, Annual Water Use, NMmaxav, NMaverage, and NMminav hold values only. NMdewpt holds five unused row AVERAGEs. NMmaxav and NMaverage are real station data that no formula references.
  • No external references. No formula string contains [, .xls, INDIRECT, DDE |, HYPERLINK, or http.
  • Extraction method. SheetJS xlsx@0.18.5 (installed with npm install xlsx@0.18.5, confirmed by npm ls xlsx) read the workbook with cellFormula, cellNF, and cellText enabled. The script wrote every cell’s value v, formula f, number format z, type t, and formatted text w to a JSON map. The commands, with <repo-root> standing for the repository root:
cd <repo-root>
mkdir -p .superpowers/sdd/2026-10-11-nsrc-calculator
shasum -a 256 .wiki/raw/articles/2006-02-26-nsrc-new-mexico-cooling-calculator.xls \
  | tee .superpowers/sdd/2026-10-11-nsrc-calculator/workbook-sha256.txt

EXTRACT_DIR="$(mktemp -d /tmp/claude-nsrc-extract.XXXXXX 2>/dev/null || mktemp -d)"
cd "$EXTRACT_DIR"
npm init -y >/dev/null
npm install xlsx@0.18.5
npm ls xlsx

node extract.mjs <repo-root>/.wiki/raw/articles/2006-02-26-nsrc-new-mexico-cooling-calculator.xls \
  > <repo-root>/.superpowers/sdd/2026-10-11-nsrc-calculator/extraction-map.json

The script, extract.mjs, verbatim:

// extract.mjs — mechanical dump of an Excel BIFF workbook via SheetJS.
// Usage: node extract.mjs /abs/path/to/workbook.xls > extraction-map.json
import { readFileSync } from 'node:fs';
import * as XLSX from 'xlsx';

const xlsPath = process.argv[2];
const wb = XLSX.read(readFileSync(xlsPath), {
  type: 'buffer', cellFormula: true, cellNF: true, cellText: true,
});
const out = { sheetNames: wb.SheetNames, sheets: {} };
for (const name of wb.SheetNames) {
  const ws = wb.Sheets[name];
  const cells = {};
  for (const addr of Object.keys(ws)) {
    if (addr.startsWith('!')) continue;
    const c = ws[addr];
    cells[addr] = { v: c.v ?? null, f: c.f ?? null, z: c.z ?? null, t: c.t ?? null, w: c.w ?? null };
  }
  out.sheets[name] = { ref: ws['!ref'] ?? null, cells };
}
process.stdout.write(JSON.stringify(out, null, 1));
  • Accepted extraction gap. The script does not record merged cells, defined names, hidden rows or columns, comments, or charts. No formula references a defined name in a way that blocked extraction: every formula parsed as an ordinary same-workbook cell reference. Anything that lived only in merged-cell geometry, a hidden row or column, or a defined name is outside this article.
  • Independent check. A from-scratch recomputation of the monthly model in this article (formulas in §Formulas, data in §Fixed source data) reproduced the cached N34, N35, N71, N85, and N84 of all eleven city sheets. Ten sheets matched exactly; the one exception was a last-digit float difference of about 2e-13 on Albuquerque’s N71. (N34, N35, N71, N85, and N84 were compared.)

Inputs

All fifteen adjustable inputs live on 'Cooling Worksheet', value in column A and label in column B. The sheet title cells are A1 “NIGHT SKY RADIANT COOLING IN NEW MEXICO”, A2 “ENERGY & WATER USAGE COMPARISON”, A3 “IN ELEVEN CLIMATE ZONES.”, and A5 “SAMPLE HOUSE VARIABLES - ENTER VALUES IN RED PRINT”. Every input cell has number format General. The names are the code identifiers.

GroupName2006 defaultUnitCellLabel in column BConsumed by
Sample HousefloorAreaSqFt1800ft²A8Floor Area (Square Feet)Sample House!A6
Sample HouseheatLossRatingBtuPerSqFtDd5.64Btu/ft²/degree-dayA9Heat Loss Rating (BTU’s per Square Foot per Degree Day)Sample House!C6
NSRC RadiatorradiatorAreaSqFt400ft²A12Radiator Area (Square Feet)Sample House!E6
NSRC RadiatorradiatorUValue1.7Btu/h/ft²/°FA13Radiator Night Sky “U value” BTU/Hour-Ft2-F'BTU loss rate1'!B3
NSRC RadiatorradiatorPumpWatts120WA14Radiator Pump & Controls Electric Rating (Watts)Sample House!N6
Evaporative CoolerevapWatts800WA17Fan, Pump and Controls Electric Rating (Watts)Sample House!J6
Evaporative CoolerevapAdvantageRatio3.6unitlessA18Ratio - Cooling Advantage over Air Conditioner (unitless)Sample House!K2
Evaporative CoolerwaterUseGalPerKwh9.5gal per kWh of the evaporative cooler’s own electricityA19Water Use - Evaporation and Bleed off (Gallons per KWH)Sample House!G11
Air ConditioneracWatts800WA22Fan, Compressor & Controls Electric Rating (Watts)Sample House!G6
Air ConditioneracCop2.4unitlessA23COP - Coefficient of Performance Ratio (unitless)Sample House!H3
Power SupplyelectricityDollarsPerKwh0.085$/kWhA26Cost of Electricity (Dollars per KWH)Sample House!K11
Power SupplypowerPlantWaterGalPerKwh0.74gal/kWhA27Water Consumed at the Power Plant (Gallons per KWH)Sample House!D11
NSRC PerformancenightSourceTempF73°FA30Average Over Night Source Temperature (F)'BTU loss rate1'!B2
NSRC PerformancehoursPerNightAvailable10hA31Hours per Night Available for Cooling (Hours)'BTU loss rate1'!B4
NSRC PerformanceclimateCorrelationAirDewRatio0.441unitlessA32Ratio - Climate Corrolation Air-Dew Temperature (unitless)PlateTemp1!B4

Notes on the inputs:

  • Group header cells are B7 “SAMPLE HOUSE INPUTS”, B11 “NIGHT SKY RADIATOR INPUTS”, B16 “EVAPORATIVE COOLER INPUTS”, B21 “AIR CONDITIONER INPUTS”, B25 “ELECTRIC POWER SUPPLY INPUTS”, and B29 “NIGHT SKY RADIATION PERFORMANCE INPUTS”. A6/B6 read “Value” / “Description and (Units)”.
  • evapWatts (A17) and acWatts (A22) are two separate inputs that both default to 800. The workbook keeps them separate.
  • waterUseGalPerKwh unit. The 9.5 is gallons per kWh of the evaporative cooler’s own electricity. The label says “Gallons per KWH” without naming the kWh; the use in K107 (below) multiplies it by the evaporative-path kWh saved, which fixes the meaning.
  • The label in B32 is spelled “Corrolation” in the workbook, and the matching label PlateTemp1!A4 reads “Cair-dew”. Both are the source’s spelling.

Fixed source data

The workbook does not make zone, city, or climate data editable. Everything in this section is data the model consumes, not an input.

Zones, cities, and annual CDD

SAVINGS SUMMARY rows 4 to 14 are zones 1 to 11. City labels are in A4:A14, annual cooling degree days (CDD) at base 65 °F in C4:C14, and each is the N12 annual figure of that zone’s city sheet, reached through B106 (=N12).

ZoneLabel (SAVINGS SUMMARY!A)City sheetAnnual CDD at base 65 °F (C)Summary row
1Zone1: RED RIVER1 RED RIVER04
2Zone 2: CHAMA2 CHAMA375
3Zone 3: GALLUP3 GALLUP3956
4Zone 4: SANTA FE4 SANTA FE5377
5Zone 5: FARMINGTON5 FARMINGTON8648
6Zone 6: BLOOMFIELD6 BLOOMFIELD8789
7Zone 7: CORONA7 CORONA39210
8Zone 8: SILVER CITY8 SILVER CITY76011
9Zone 9: ALBUQUERQUE9 ALBUQUERQUE126912
10Zone 10: TRUTH OR CONSEQ.10 TRUTH OR CONSEQUENCES187813
11Zone 11: CARLSBAD11 CARLSBAD215314

Monthly CDD, the published base (city sheet B12:M12)

Each city sheet holds monthly CDD at five base temperatures: column A of rows 6, 8, 10, 12, 14 holds 55, 57, 60, 65, 70 °F, columns B:M the monthly values, and N the annual total. The published base is 65 °F (row 12, annual N12). The model is monthly: N12 is the sum of the monthly values, and the loads below are computed from the monthly values, not from N12. The values are integers (whole degree-days). Name: monthlyCoolingDegreeDays.

ZoneSheetJanFebMarAprMayJunJulAugSepOctNovDec
1RED RIVER000000000000
2CHAMA00000422101000
3GALLUP000046617812522000
4SANTA FE00001010821515845100
5FARMINGTON00002515433926976200
6BLOOMFIELD00012817433526376200
7CORONA0000109314610437100
8SILVER CITY00002718126420482200
9ALBUQUERQUE000576283408338150900
10TRUTH OR CONSEQUENCES002301824335024332554300
11CARLSBAD0110702504625334802806420

The other bases (rows 6, 8, 10, 14) feed unpublished rows 28 to 33 and 36 to 37 and the matching evaporative rows; nothing in SAVINGS SUMMARY reads them. Annual CDD at 55 / 57 / 60 / 65 / 70 °F by sheet, from N6, N8, N10, N12, N14: Red River 245/124/28/0/0; Chama 666/475/243/37/1; Gallup 1525/1249/882/395/96; Santa Fe 1840/1529/1106/537/160; Farmington 2284/1955/1501/864/389; Bloomfield 2296/1967/1515/878/397; Corona 1658/1347/932/392/94; Silver City 2273/1919/1432/760/287; Albuquerque 2924/2550/2028/1269/662; Truth or Consequences 3855/3411/2792/1878/1124; Carlsbad 4262/3787/3125/2153/1338.

Monthly station temperatures (feed the radiator model)

Each city sheet’s night-cooling row 55 reads one station row of BTU loss rate1, which reads the same row of PlateTemp1, which reads the same row r of NMdewpt (monthly dewpoint, °F) and NMminav (monthly average minimum temperature, °F). In all three station sheets, columns F:Q are January to December and R is the year; data begins at row 8. Station row per zone, with the labels in those rows:

ZoneCDD station (city sheet A1, record)Station row rNMdewpt row r labelsNMminav row r labelsBTU loss rate1 labelCity sheet row 55 link (Jan..Dec)
1 RED RIVER(297323) RED RIVER - NM CLIMATE ZONE 1 (1915-2005)198RED RIVER pueblo,co 2005RED RIVER 1915-2004RED RIVER dp2005'BTU loss rate1'!F198 … !Q198
2 CHAMA(291664) CHAMA - NM CLIMATE ZONE 2 (1914-2005)54CHAMA 2005CHAMA 1914-2004CHAMA dp2005'BTU loss rate1'!F54 … !Q54
3 GALLUP(293422) GALLUP FAA AP - NM CLIMATE ZONE 3 (1921-2005)110GALLUP FAA AP 1921-2004GALLUP FAA AP 1921-2004GALLUP FAA AP'BTU loss rate1'!F110 … !Q110
4 SANTA FE(298078) SANTA FE CAA AIRPORT - NM CLIMATE ZONE 4 (1924-1958)219SANTA FE CAA AIR PORT 1924-1958SANTA FE CAA AIR PORT 1924-1958SANTA FE CAA AIR PORT'BTU loss rate1'!F219 … !Q219
5 FARMINGTON(293128) FARMINGTON FAA AIRPORT - NM CLIMATE ZONE 5 (1941-1969)98FARMINGTON AG SC IENCE C 1978-2004FARMINGTON AG SC IENCE C 1978-2004FARMINGTON AG SC IENCE C'BTU loss rate1'!F98 … !Q98
6 BLOOMFIELD(291063) BLOOMFIELD 3 SE - NM CLIMATE ZONE 6 (1914-2005)38BLOOMFIELD 3 SE 2005BLOOMFIELD 3 SE 1914-2004BLOOMFIELD 3 SE dp2005'BTU loss rate1'!F38 … !Q38
7 CORONA(292093) CORONA - NM CLIMATE ZONE 7 (1914-1977)69CORONA ruidoso 2005CORONA 1914-1977CORONA dp2005'BTU loss rate1'!F69 … !Q69
8 SILVER CITY(298324) SILVER CITY - NM CLIMATE ZONE 8 (1914-1964)225SILVER CITY WB A P 1960-1968SILVER CITY WB A P 1960-1968SILVER CITY WB A P'BTU loss rate1'!F225 … !Q225
9 ALBUQUERQUE(290234) ALBUQUERQUE WSFO AIRPOR - NM CLIMATE ZONE 9 (1914-2005)17ALBUQUERQUE WSFO AIRPOR 1914-2004ALBUQUERQUE WSFO AIRPOR 1914-2004ALBUQUERQUE WSFO AIRPOR'BTU loss rate1'!F17 … !Q17
10 TRUTH OR CONSEQUENCES(299128) TRUTH OR CONSEQUENCES - NM CLIMATE ZONE 10 (1951-2005)245TRUTH OR CONSEQU ENCES 1951-2004TRUTH OR CONSEQU ENCES 1951-2004TRUTH OR CONSEQU ENCES'BTU loss rate1'!F245 … !Q245
11 CARLSBAD(291475) CARLSBAD FAA AIRPORT - NM CLIMATE ZONE 11 (1942-2005)48CARLSBAD 1914-2004CARLSBAD 1914-2004CARLSBAD'BTU loss rate1'!F48 … !Q48

Dewpoint, NMdewpt!F{r}:Q{r}. Name: monthlyDewpointF.

ZoneSheetJanFebMarAprMayJunJulAugSepOctNovDec
1RED RIVER222223304144505045381718
2CHAMA1815151829313842423291
3GALLUP202120222732474936292118
4SANTA FE181919253337505041312017
5FARMINGTON182221232934464939312419
6BLOOMFIELD303125273435425044402215
7CORONA20262019312842504237179
8SILVER CITY232121222837515543362522
9ALBUQUERQUE192221243138485244332420
10TRUTH OR CONSEQUENCES201919232938515342342219
11CARLSBAD232324344052585650412622

Average minimum temperature, NMminav!F{r}:Q{r}. Name: monthlyAverageMinTempF.

ZoneSheetJanFebMarAprMayJunJulAugSepOctNovDec
1RED RIVER4.2814.722.128.835.240.940.233.725.214.26.1
2CHAMA6.19.916.124.331.438.54645.538.228.417.59.6
3GALLUP13.618.222.72836.644.953.552.643.930.920.413.5
4SANTA FE18.422.826.334.443.451.657.756.149.13924.818.5
5FARMINGTON19.624.129.936.144.653.159.758.250.939.22819.8
6BLOOMFIELD1622.327.73543.852.159.557.749.537.725.718
7CORONA21.323.92835.142.750.655.153.948.538.427.822
8SILVER CITY24.427.231.739.447.355.962.660.655.244.334.927
9ALBUQUERQUE23.327.63340.850.159.264.66356.14431.424.5
10TRUTH OR CONSEQUENCES2831.33744.353.363.166.464.957.846.43427
11CARLSBAD27.831.837.746.655.563.967.16659.24835.528.8

Data provenance of borrowed and mismatched stations.

  • Red River dewpoints are Pueblo, Colorado’s. NMdewpt row 198 is labelled “RED RIVER pueblo,co 2005”, and the BTU loss rate1 label for the row reads “RED RIVER dp2005”.
  • Corona dewpoints are Ruidoso’s. NMdewpt row 69 is labelled “CORONA ruidoso 2005”.
  • Farmington uses different stations for CDD and temperature. The CDD sheet is “(293128) FARMINGTON FAA AIRPORT”, 1941 to 1969; the temperature and dewpoint row 98 is “FARMINGTON AG SC IENCE C 1978-2004” (Farmington Ag Science Center).
  • Silver City likewise. The CDD sheet is “(298324) SILVER CITY”, 1914 to 1964; the temperature and dewpoint row 225 is “SILVER CITY WB A P 1960-1968”.
  • Santa Fe’s CDD record is 1924 to 1958 only, and its temperature row 219 covers the same 1924 to 1958 period.
  • NMmaxav and NMaverage rows do not line up with these stations (row 198 of NMmaxav is Raton) and are unused.

Radiator night-cooling available per ft², default inputs (city sheet B55:M55)

These are the cached results of the radiator model (§Formulas, monthlyNightCoolingBtuPerSqFt) at the 2006 default inputs, kept so a port can check its first computed layer against the workbook.

ZoneSheetJanFebMarAprMayJunJulAugSepOctNovDec
1RED RIVER30313.53198000000329450.32740000000227640.4205323943.8568919254.5410216936.9000813914.44781000000114073.45917999999816989.6978320936.1364829481.64548000000331033.693290000003
2CHAMA31033.69329000000331034.31141000000229625.9249926899.39767000000222119.2181619930.5067516211.22720000000115173.0431516831.3045821936.87276000000231035.5476535133.631740000004
3GALLUP28754.11824000000327421.2454826686.9704324907.145421513.87263999999818188.74761000000211916.06584999999911544.6272417264.1431122232.79771000000326921.49546000000229352.715949999998
4SANTA FE28239.6363626952.19542000000426157.1385722589.50446000000418241.54536000000415227.0771410098.17492999999710461.6294914643.21129000000119816.92720000000226209.9363228504.86135
5FARMINGTON27967.04543999999825793.06588999999824763.4840122779.2157919120.7180415750.16119000000310795.62033000000210272.5362814810.2067119771.4953824331.26360000000227633.67272
6BLOOMFIELD25329.52740000000323610.4841724111.4704321877.32720000000317862.74082000000315689.3793911992.8157510098.17492999999713688.5249517520.7659325429.61133000000329194.3227
7CORONA27004.99316999999824686.73411000000525483.027224158.1384918976.4385318045.7043412992.31578999999910961.37950999999914491.56584999999918225.57726000000226392.28172000000330013.3317
8SILVER CITY25436.9772625376.81358000000224354.5976322317.5316618795.32937000000314250.2930100000018697.154447999.70904000000112681.6589817173.2794722475.9249125134.304500000002
9ALBUQUERQUE26838.6158724998.0090424059.290821423.6271217295.4611913212.7270799999999106.6589400000018318.34990000000112189.27488999999918105.24990000000323558.9226626278.08405
10TRUTH OR CONSEQUENCES25483.027225021.3430723726.536220916.5111717144.4338712326.8065900000027833.9498599999997598.8067112378.98622000000317272.1271623544.190825998.127200000003
11CARLSBAD24664.6363223755.99992000000222127.8203317226.6953413477.3339500000028113.9067099999995659.3521900000036485.1090000000029757.4362814893.08629999999922051.68855000000324725.41812

Red River

Red River has zero CDD in every month, so its loads are zero. The published row is explicit: SAVINGS SUMMARY!E4 = 0 (A/C kWh needed), F4 = 0 (A/C kWh saved), and M4 = 1, displayed “100%” through format 0%. The 100% comes from the IF(N35>0, N71/N35, 1) guard on the city sheet’s annual percentage (§Formulas), which returns 1 when the annual need is zero.

Formulas

All formulas are shown for the published base temperature (65 °F). The city-sheet cells below are the same on all eleven sheets, with 9 ALBUQUERQUE used for illustration. “Cached” values are the workbook’s saved results.

Layer 1: house rates (sheet Sample House)

NameCellFormula textUnitsReading
houseHeatTransferBtuPerDdSample House!C6=A6*'Cooling Worksheet'!A9Btu/DDFloor area times heat-loss rating. 1800 × 5.64 = 10152. Also copied to each city sheet as C21 (='Sample House'!C6).
evapCopSample House!K3=H3*K2unitlessA/C COP times evaporative advantage ratio. 2.4 × 3.6 = 8.64. (H3 = 'Cooling Worksheet'!$A$23, K2 = $A$18.)
acEerSample House!H6=3.412*H3Btu/Wh3.412 × COP. Cached 8.1888 (8.188799999999999 in binary).
acCapacityBtuPerHrSample House!I6=G6*H6Btu/hA/C watts (G6 = 'Cooling Worksheet'!$A$22) times acEer. Cached 6551.04. City sheet I21.
evapEerSample House!K6=3.412*K3Btu/Wh3.412 × evapCop. Cached 29.47968.
evapCapacityBtuPerHrSample House!L6=J6*K6Btu/hEvaporative watts (J6 = 'Cooling Worksheet'!$A$17) times evapEer. Cached 23583.744. City sheet L21.

The city sheets mirror the other inputs: E21 = 'Sample House'!E6 (radiator area), G21 = G6 (A/C watts), J21 = J6 (evap watts), N21 = N6 (pump watts, ='Cooling Worksheet'!$A$14), and D91, G91, K91 = 'Sample House'!D11, G11, K11 (0.74 gal/kWh, 9.5 gal/kWh, $0.085/kWh, format 0.000).

Layer 2: radiator model (sheets PlateTemp1, BTU loss rate1)

NameCellFormula text (row 17 / Albuquerque)UnitsReading
nightHoursPerMonth'BTU loss rate1'!B4=30.3*'Cooling Worksheet'!A31h/month30.3 days per month times hours per night. 30.3 × 10 = 303.
emitterMultiplierFt2Hr'BTU loss rate1'!B5=B1*B4ft²·hB1 is the typed constant 1 (ft² of emitter). Cached 303.
monthlyPlateTempFPlateTemp1!F{r}:Q{r}=NMdewpt!F17+(PlateTemp1!$B$4*(NMminav!F17-NMdewpt!F17))°FRadiator plate temperature: dewpoint plus the ratio times (average minimum temperature minus dewpoint). PlateTemp1!B4 = 'Cooling Worksheet'!$A$32 (0.441). Column R is the year.
monthlyNightCoolingBtuPerSqFt'BTU loss rate1'!F{r}:Q{r}=$B$5*$B$3*($B$2-PlateTemp1!F17)Btu/ft²/month303 × U value × (source temperature − plate temperature). B2 = 'Cooling Worksheet'!$A$30 (73 °F), B3 = $A$13 (1.7). Column R is the year.
(city link)city sheet B55:M55='BTU loss rate1'!F17 … ='BTU loss rate1'!Q17Btu/ft²/monthRow number r per zone is in the station table above. Cached values are in the table above.
monthlyRadiatorCapacityBtucity sheet B58:M58=$E$21*B55Btu/monthRadiator area times Btu/ft². Albuquerque January cached 10735446.348.

Layer 3: monthly loads and electricity needed (city sheets)

NameCellFormula textUnitsReading
monthlyBtuLoadB34:M34=$C$21*B12Btu/monthHeat-transfer rate times that month’s CDD at base 65.
annualBtuLoadN34=SUM(B34:M34)Btu/yrSum of the twelve monthly loads.
monthlyAcKwhNeededB35:M35=(B34/$I$21)*($G$21/1000)kWh/monthLoad divided by A/C capacity (Btu/h) gives hours of running; times A/C kW.
annualAcKwhNeededN35=SUM(B35:M35)kWh/yr
monthlyEvapBtuLoadB48:M48=$C$21*B12Btu/monthThe same load, duplicated for the evaporative path.
monthlyEvapKwhNeededB49:M49=(B48/$L$21)*($J$21/1000)kWh/monthLoad divided by evaporative capacity, times evaporative kW.
annualEvapKwhNeededN49=SUM(B49:M49)kWh/yr

Rows 28 to 37 and 42 to 51 repeat these at bases 55, 57, 60, 65, and 70 (load rows 28, 30, 32, 34, 36 and kWh rows 29, 31, 33, 35, 37; evaporative load rows 42, 44, 46, 48, 50 and kWh rows 43, 45, 47, 49, 51). Only the base-65 rows (34, 35, 48, 49) reach the summary.

Monthly, not annual. annualBtuLoad is the sum of monthly loads from monthly CDD, which is not the annual CDD times 10152 for every zone. SAVINGS SUMMARY!D is annualBtuLoad. For example, Farmington’s D8 is 8781480 (865 × 10152), whereas C8 is 864. The implied D/10152 differs from C for Farmington (865 vs 864), Bloomfield (879 vs 878), Corona (391 vs 392), Truth or Consequences (1880 vs 1878), and Carlsbad (2152 vs 2153), because N12 is a stored number (it has no formula) that differs from the sum of the twelve monthly values in those five zones (for Farmington the monthly values sum to 865). A port that computes the annual load as C × 10152 does not reproduce the workbook.

Layer 4: monthly NSRC coverage and savings (city sheets)

NameCellFormula textUnitsReading
monthlyAcCoverageFractionB70:M70=IF(B34/B$58<1,1,1/(B34/B$58))fraction1 when the radiator capacity covers that month’s load; otherwise capacity ÷ load.
monthlyAcKwhDisplacedB71:M71=B35*B70kWh/monthA/C kWh the radiator displaces.
annualAcKwhSavedN71=SUM(B71:M71)-SUM(B71:M71)*($N$21/$G$21)kWh/yrDisplaced kWh minus the pump derate: displaced × (1 − 120/800). See “The pump derate” below.
annualAcSavedFractionN70=IF(N35>0,N71/N35,1)fractionAnnual A/C kWh saved over needed; 1 when nothing is needed.
monthlyEvapCoverageFractionB84:M84=IF(B48/B$58<1,1,1/(B48/B$58))fractionAs above, evaporative load.
monthlyEvapKwhDisplacedB85:M85=B49*B84kWh/month
annualEvapKwhSavedN85=SUM(B85:M85)-SUM(B85:M85)*($N$21/$J$21)kWh/yrDisplaced minus pump derate: displaced × (1 − 120/800).
annualEvapSavedFractionN84=IF(N49>0,N85/N49,1)fractionAnnual evaporative kWh saved over needed.

Rows 64 to 69, 72 to 73, 78 to 83, and 86 to 87 are the same formulas for the other bases and are unpublished.

The pump derate (the model’s design). Every kWh-saved figure subtracts a flat fraction of the displaced kWh: $N$21/$G$21 on the A/C path and $N$21/$J$21 on the evaporative path, which is 120 W ÷ 800 W = 0.15. It is a proportional penalty on displaced energy, not an hours-based one. This is the workbook’s model as designed. It is why most zones show exactly 0.85: where the radiator covers the whole month’s load, the saved fraction is 1 − 0.15.

Layer 5: annual summary block (city sheets, rows 106 to 107)

NameCellFormula textUnitsReading
baseTempFA106=A12°F65.
cddPerYearB106=N12CDD/yrAnnual CDD, as stored in N12.
annualBtuNeededC106=N34Btu/yrannualBtuLoad.
annualAcKwhNeededD107=N35kWh/yr
annualAcKwhSavedUsingNsrcE107=N71kWh/yrNet of the pump derate.
acDollarsSavedF107=E107*$K$91$/yrkWh saved × electricityDollarsPerKwh. Format "$"#,##0.
acWaterSavedGalG107=E107*$D$91gal/yrkWh saved × powerPlantWaterGalPerKwh (0.74).
annualEvapKwhNeededH107=N49kWh/yr
annualEvapKwhSavedUsingNsrcI107=N85kWh/yrNet of the pump derate.
evapDollarsSavedJ107=I107*$K$91$/yrFormat "$"#,##0.
evapWaterSavedGalK107=I107*$D$91+I107*$G$91gal/yrkWh saved × (0.74 + 9.5): power-plant water plus the cooler’s own evaporation and bleed-off.
savingsFractionL106=N84fractionThe evaporative-path annual saved fraction.

SAVINGS SUMMARY row n (4 to 14) links to the matching city sheet: B=A106, C=B106, D=C106, E=D107, F=E107, G=F107, H=G107, I=H107, J=I107, K=J107, L=K107, M=L106. Column M is the evaporative-path N84. It equals the A/C-path N70 here only because acWatts and evapWatts are both 800; if they differed, the two fractions would diverge, and the workbook publishes the evaporative one.

Constants hard-coded in formulas

ConstantWhereWorkbook meaning
3.412Sample House!H6 and K6Btu per Wh (as in the 2006 spreadsheet). The cell carries no label.
30.3'BTU loss rate1'!B4Days per month (as in the 2006 spreadsheet). The same value is used for every month.
303'BTU loss rate1'!B4 result (30.3 × 10); also typed into city-sheet rows 32 to 33 (see the discrepancy below)Night-cooling hours per month at 10 hours per night (as in the 2006 spreadsheet).
1000city sheets, rows 29, 31, …, 35, 43, …, 49W to kW.
1'BTU loss rate1'!B1One ft² of emitter area for the per-ft² computation.

Unused and pasted material that does not feed the summary

  • April-to-October blocks (city sheets O28:X33). Rows labelled “AC power (kwH)” (28), “AC water (gal.)” (29), “Evap power (kwH)” (30), “Evap water (gal.)” (31), “NSRC power (kwH)” (32), and “NSRC water (gal.)” (33), with April to October in P:V and a sum in X. For example P28 = E35, P29 = E35*'Sample House'!D11, P30 = E49, P31 = E49*('Sample House'!D11+'Sample House'!G11), P32 = ('Sample House'!N6*'9 ALBUQUERQUE'!E48/('9 ALBUQUERQUE'!E58/303))/1000 (pump watts × the hours the radiator must run ÷ 1000, with the hours taken as Btu needed ÷ (monthly capacity ÷ 303)), and P33 = 'Sample House'!D11*'9 ALBUQUERQUE'!P32. Their X sums feed the pasted values on Annual Power Use and Annual Water Use (rows 1 AC, 2 Evap, 3 NSRC; columns B:L are zones 11 down to 1). Neither pasted sheet has formulas, and no SAVINGS SUMMARY cell reads them.
  • The hours-based NSRC pump kWh (row 32) is a separate calculation from the proportional derate above and is not used by the summary.
  • Stray typed constants, referenced by nothing: PlateTemp1!B2 (0.44120186…), 'BTU loss rate1'!D2 (76), 'BTU loss rate1'!D3 (1.7), 'Sample House'!C7 (10156.08), and SAVINGS SUMMARY!N58 (a single space character).

Documented errors in the source

  1. SAVINGS SUMMARY!D7 (Santa Fe “Needed BTUs”) is mislinked. Its formula is ='5 FARMINGTON'!C106, which shows 8,781,480. It should read ='4 SANTA FE'!C106, whose value is 5,451,624 (Santa Fe’s monthly loads sum). This is an error in the source workbook. It is confined to column D: columns E to M of row 7 link to 4 SANTA FE correctly, as do columns E to M of every other row. The published kWh, percentage, water, and dollar outputs are unaffected. The error shows only in the displayed Santa Fe Btu figure, and the fixture table below records the workbook’s value as published with this note.
  2. Rows 32 to 33 hard-code 303 hours and carry cross-sheet copy/paste references. Row 32 divides by the literal 303 instead of 'BTU loss rate1'!B4, so changing hoursPerNightAvailable changes row 55 but not row 32. Separately, some cells point at another city’s sheet: 2 CHAMA!V32 uses '9 ALBUQUERQUE'!K58 as its capacity denominator; 2 CHAMA!P33 and 3 GALLUP!P33 read '1 RED RIVER'!P32; 2 CHAMA!T33 reads '9 ALBUQUERQUE'!T32 (cached 27.7477 gal); and 11 CARLSBAD!V33 reads '9 ALBUQUERQUE'!V32 (cached 0.3395 gal). These feed only the pasted Annual Power Use / Annual Water Use sheets, whose NSRC rows are therefore unreliable (for instance, Annual Water Use Chama NSRC water is 28.852 gal, almost entirely Albuquerque’s 27.7477 imported through T33). They do not touch SAVINGS SUMMARY.
  3. The pasted sheets also cover April to October only, while the summary sums all twelve months. The A/C kWh in Annual Power Use therefore differs from SAVINGS SUMMARY!E where a zone has CDD outside April to October: Carlsbad 2651.808 (B1) vs 2667.925 (E14), and Truth or Consequences 2328.236 (C1) vs 2330.715 (E13). Other zones match to the last digit.

Canonical cells for a port: the SAVINGS SUMMARY cells (columns B to M, rows 4 to 14) and the city-sheet cells they link to (rows 12, 34, 35, 48, 49, 55, 58, 70, 71, 84, 85, 106, 107), with the single exception of the D7 link, for which the correct reading is Santa Fe’s own C106. The rows 28 to 33 blocks and the pasted Annual Power Use / Annual Water Use sheets are not canonical.

Sample House reference values (cached, full precision)

CellValue
Sample House!C6 houseHeatTransferBtuPerDd10152
Sample House!K3 evapCop8.64
Sample House!H6 acEer8.1888 (cached binary 8.188799999999999)
Sample House!I6 acCapacityBtuPerHr6551.04 (cached 6551.039999999999)
Sample House!K6 evapEer29.47968 (cached 29.479680000000002)
Sample House!L6 evapCapacityBtuPerHr23583.744 (cached 23583.744000000002)

Display semantics

Number formats (the recorded z) of the published outputs on SAVINGS SUMMARY, rows 4 to 14. The site’s formatting must follow these. Excel rounds half away from zero for display; the underlying cached value keeps full precision.

ColumnOutputFormat zEffect
Bbase temperature0integer
CCDD per year0integer
Dneeded Btu0integer, no thousands separator (e.g. 12882888)
EA/C kWh needed0integer
FA/C kWh saved0integer
GA/C dollars saved"$"#,##0whole dollars with $ and thousands separator
HA/C gallons saved0integer
Ievaporative kWh needed0integer
Jevaporative kWh saved0integer
Kevaporative dollars saved"$"#,##0whole dollars
Levaporative gallons saved0integer
Msavings percentage0%the fraction times 100, rounded to a whole percent, with % (1 displays as 100%)

The recorded formats for columns B to M of row 5, read mechanically: B: 0, C: 0, D: 0, E: 0, F: 0, G: "$"#,##0, H: 0, I: 0, J: 0, K: "$"#,##0, L: 0, M: 0%. On the city sheets the intermediate cells use 0, with 0% for the coverage fractions, 0.00 for the P28:P33 April cells, and 0.000 for D91, G91, K91. The input cells on Cooling Worksheet are all General.

Source-defined validation

The workbook defines no input bounds; the port enforces none. The only guards in the formulas are the IF tests that keep ratios defined: the coverage fraction IF(B34/B$58<1,1,1/(B34/B$58)) and the annual fraction IF(N35>0,N71/N35,1). The extraction does not record Excel data-validation rules (see the accepted gap under Provenance), so this statement means that no input bound is visible in cell values, formulas, or labels.

Published Savings Summary

This is the test fixture’s citation target. Each cell is SAVINGS SUMMARY!<column><row>, with the full-precision cached value first and the displayed text (w, under the format in §Display semantics) in parentheses. Everything is at the 2006 default inputs.

RowZoneC CDD/yrD Needed BtuE A/C kWh neededF A/C kWh savedG A/C $ savedH A/C gal saved
4Zone1: RED RIVER0 (0)0 (0)0 (0)0 (0)0 ($0)0 (0)
5Zone 2: CHAMA37 (37)375624 (375624)45.8704572098476 (46)38.98988862837046 (39)3.3141405334114893 ($3)28.85251758499414 (29)
6Zone 3: GALLUP395 (395)4010040 (4010040)489.698124267292 (490)416.2434056271982 (416)35.380689478311844 ($35)308.02012016412664 (308)
7Zone 4: SANTA FE537 (537)8781480 (8781480) [workbook error, see note]665.7415005861665 (666)565.8802754982415 (566)48.099823417350535 ($48)418.75140386869873 (419)
8Zone 5: FARMINGTON864 (864)8781480 (8781480)1072.3769050410317 (1072)911.520369284877 (912)77.47923138921455 ($77)674.525073270809 (675)
9Zone 6: BLOOMFIELD878 (878)8923608 (8923608)1089.7332942555688 (1090)926.2733001172335 (926)78.73323050996486 ($79)685.4422420867528 (685)
10Zone 7: CORONA392 (392)3969432 (3969432)484.73915592028146 (485)412.02828253223925 (412)35.02240401524034 ($35)304.900929073857 (305)
11Zone 8: SILVER CITY760 (760)7715520 (7715520)942.2039859320049 (942)800.8733880422042 (801)68.07423798358737 ($68)592.6463071512311 (593)
12Zone 9: ALBUQUERQUE1269 (1269)12882888 (12882888)1573.2327080890977 (1573)1274.6158906799535 (1275)108.34235070779606 ($108)943.2157591031656 (943)
13Zone 10: TRUTH OR CONSEQ.1878 (1878)19085760 (19085760)2330.7151230949594 (2331)1636.592813818875 (1637)139.11038917460436 ($139)1211.0786822259674 (1211)
14Zone 11: CARLSBAD2153 (2153)21847104 (21847104)2667.924970691677 (2668)1554.539552315358 (1555)132.13586194680542 ($132)1150.3592687133648 (1150)
RowZoneI Evap kWh neededJ Evap kWh savedK Evap $ savedL Evap gal savedM Savings % (kWh)
4Zone1: RED RIVER0 (0)0 (0)0 ($0)0 (0)1 (100%)
5Zone 2: CHAMA12.741793669402108 (13)10.830524618991792 (11)0.9205945926143023 ($1)110.90457209847595 (111)0.85 (85%)
6Zone 3: GALLUP136.02725674091442 (136)115.62316822977726 (116)9.827969299531068 ($10)1183.981242672919 (1184)0.85 (85%)
7Zone 4: SANTA FE184.92819460726844 (185)157.18896541617818 (157)13.361062060375145 ($13)1609.6150058616647 (1610)0.85 (85%)
8Zone 5: FARMINGTON297.88247362250877 (298)253.20010257913245 (253)21.52200871922626 ($22)2592.7690504103166 (2593)0.85 (85%)
9Zone 6: BLOOMFIELD302.703692848769 (303)257.29813892145364 (257)21.870341808323563 ($22)2634.7329425556854 (2635)0.85 (85%)
10Zone 7: CORONA134.64976553341148 (135)114.45230070339976 (114)9.72844555978898 ($10)1171.9915592028135 (1172)0.85 (85%)
11Zone 8: SILVER CITY261.7233294255568 (262)222.46483001172328 (222)18.90951055099648 ($19)2278.039859320046 (2278)0.85 (85%)
12Zone 9: ALBUQUERQUE437.0090855803047 (437)354.0599696333203 (354)30.09509741883223 ($30)3625.5740890452 (3626)0.8101890356882713 (81%)
13Zone 10: TRUTH OR CONSEQ.647.4208675263775 (647)454.60911494968735 (455)38.64177477072343 ($39)4655.197337084799 (4655)0.7021848348611739 (70%)
14Zone 11: CARLSBAD741.0902696365767 (741)431.81654230982156 (432)36.704406096334836 ($37)4421.801393252573 (4422)0.5826773876299578 (58%)

Reading notes:

  • Row 7, column D (Santa Fe Btu) is the documented workbook error (§Documented errors in the source, item 1): the published 8781480 is Farmington’s value. The correct Santa Fe annual load, from its monthly loads, is 5451624 ('4 SANTA FE'!N34). Columns E to M of row 7 are correct.
  • Zone 9 (Albuquerque) is the sample default’s richest row: A/C need 1573.2327080890977 kWh, evaporative need 437.0090855803047 kWh, saved fraction 0.8101890356882713 (81%), reflecting the shortfall in July and August when radiator capacity is below load (monthly coverage 0.879 and 0.970).
  • Water: A/C gallons saved = A/C kWh saved × 0.74; evaporative gallons saved = evaporative kWh saved × (0.74 + 9.5). Dollars: kWh saved × 0.085.
  • Zone 1 (Red River) displays 0 for every quantity and 100% in column M.

See Also

Sources