Calculator Methodology

    Last updated: October 2026

    This page documents what each calculator on the site actually computes — the exact formulas as they are implemented in the code, the data sources behind the default numbers, and how much accuracy you should expect. Each section cites the source file and line numbers it was verified against, so nothing here has to be taken on trust. Where the implementation is a simplification, we say so explicitly.

    Standing disclaimer — ballpark guidance, not licensed advice. All calculators, guides, and reports on this site provide general ballpark estimates for planning purposes only. They are not engineering, electrical, plumbing, financial, or legal advice. Solar arrays, battery banks, high-voltage DC systems, and water and waste installations must be designed and signed off by appropriately licensed tradespeople (in Australia, CEC-accredited installers and licensed electricians). We have not formally validated most outputs against physical installations — treat every figure as a ballpark and confirm with a professional before purchasing equipment.

    Data sources (site-wide)

    Climate inputs flow from two places:

    • NASA POWER — when you pin a location on the globe, the site calls the NASA POWER climatology API (ALLSKY_SFC_SW_DWN global horizontal irradiance and PRECTOTCORR corrected precipitation), at power.larc.nasa.gov. The climatology endpoint returns long-term monthly averages (NASA documents this climatology as 2001–2020). Global horizontal irradiance in kWh/m²/day is reported directly as "peak sun hours", which is standard practice — the code comments note that real panels capture roughly 75–85% of GHI, and the calculator's efficiency selector (70–85%) is where that gap is meant to be absorbed. Results are cached in your browser for 24 hours.
    • City preset tables — for Australian capital cities the rainfall figure is a rounded long-term average of Bureau of Meteorology-style reference values, hardcoded in the rainwater calculator (e.g. Sydney 1213 mm, Melbourne 648 mm, Brisbane 1207 mm, Perth 721 mm, Adelaide 528 mm, Darwin 1729 mm, Hobart 616 mm, Canberra 629 mm). These are planning-grade round numbers, not station-accurate normals.

    Verified against: src/lib/nasaPowerApi.ts:48-115 (fetch, caching, PSH conversion); src/components/calculators/RainwaterHarvestingCalculator.tsx:108-111 (CITY_RAINFALL)

    Simplification / tolerance: The NASA POWER climatology is a satellite/agglomerated product on a coarse grid — expect it to differ from a local weather station by several percent. We have not formally validated the GHI-to-yield chain against metered Australian installations; treat solar and rainfall outputs as ballpark ±10–20%.

    Solar panel sizing

    The array is sized from your daily energy use, peak sun hours and a combined loss/efficiency factor:

    totalDailyWh   = dailyKWh × 1000 × 1.3        (system loss multiplier)
    effectiveEff   = (systemEfficiency% / 100) × mountingMultiplier × coolingBonus
    energyNeeded   = (totalDailyWh / 1000) / effectiveEff
    arrayWatts     = energyNeeded / peakSunHours × 1000
    recommendedW   = max(arrayWatts, worstMonthArrayWatts, minimum)
    • The 1.3× system loss multiplier covers wiring, dust, temperature and inverter losses (constant SYSTEM_LOSS_MULTIPLIER = 1.3).
    • Mounting multipliers: fixed 1.0, tilt-adjustable 1.10, single-axis tracker 1.25, dual-axis tracker 1.35. Water-cooled panels add a further ×1.05.
    • Worst-month sizing (standalone route): the array is also computed with your worst-month peak sun hours, and the larger of the two wins. "System Sufficient" is gated on the worst month covering your daily use, not the annual average.
    • Floor: minimum 100 W normally, 1,800 W when AC loads are present.
    • Derived figures: panel count = ceil(watts / 400); daily production = watts × PSH × effectiveEff / 1000; roof space = watts / 200 m² (≈200 W/m²); cost = watts × cost-per-watt (budget $0.80–1.20, mid $1.20–1.80, premium $1.80–2.80) plus fixed hardware (tilt $200, single-axis $3,000, dual-axis $8,000, water cooling $1,200).

    Verified against: src/components/calculators/SolarPanelSizingCalculator.tsx:32-36 (constants), 100-160 (result useMemo), 13-20 (mounting table, costs)

    Simplification / tolerance: The 1.3× loss lump and the mounting multipliers are rules of thumb, not measured data. Tracker gains in particular vary widely with site and maintenance. Sizing accuracy is realistically ±10–20% in either direction; the worst-month view exists precisely because the annual-average figure alone hides a winter deficit.

    Battery bank sizing

    totalKWh      = dailyKWh × daysOfAutonomy          (− V2H vehicle offset, if selected)
    rawAh         = totalKWh × 1000 / systemVoltage
    selfDischAh   = rawAh × selfDischargePerMonth × (daysAutonomy / 30)
    batteryAh     = (rawAh + selfDischAh) / (DOD / 100) / roundTripEfficiency
    batteryKWh    = batteryAh × systemVoltage / 1000
    usableKWh     = batteryKWh × DOD
    • A temperature penalty scales capacity up: ×(1 + coldPenalty) in cold climates, ×(1 + hotPenalty) in hot ones.
    • Chemistry table as implemented — DOD / round-trip efficiency / self-discharge per month / cycles / cost per kWh: flooded lead-acid 50% / 0.80 / 10% / 600 / $150; AGM 50% / 0.87 / 4% / 1,000 / $250; LiFePO4 80% / 0.96 / 1.5% / 4,000 / $500; lithium-ion NMC 80% / 0.92 / 2.5% / 2,000 / $450; sodium-ion 80% / 0.88 / 3% / 3,000 / $300; redox flow 90% / 0.75 / 0.5% / 10,000 / $400.
    • Derived figures: cost = batteryKWh × costPerKWh × 0.9–1.2 (±10–20% band); cost per cycle = mid-cost ÷ cycle life; runtime profiles assume 0.5 / 1.5 / 3.0 kWh loads (critical / normal / heavy); weight = batteryKWh × weightPerKWh; 12 V battery count = ceil(Ah / 200).

    Verified against: src/components/calculators/BatteryBankSizingCalculator.tsx:14-112 (BATTERY_SPECS), 230-279 (result useMemo)

    Simplification / tolerance: The chemistry constants are representative manufacturer/data-sheet figures, not measurements, and the cost band (±10–20%) is a heuristic. Cold penalties in particular are crude — lithium chemistry below 0 °C needs heating, not just a 5% upsize. Treat bank capacity as ballpark and confirm with the battery vendor's own sizing tools.

    Inverter sizing

    surgeMult      = max(1.2, worst selected appliance surge)   (well pump 3.0, fridge 2.0, AC 2.5, power tools 1.5)
    surgeWatts     = largestApplianceW × surgeMult
    peakLoad       = continuousLoadW + (surgeWatts − largestApplianceW)
    futureAdjusted = peakLoad × (1 + futureExpansion% / 100)
    minimumWatts   = futureAdjusted × 1.1
    recommendedVA  = minimumWatts / powerFactor      (PF 0.85; +0.02 in HV mode)
    maxAmpsDC      = recommendedVA / systemVoltage   (fuse = ×1.25)
    • The DC cable picker chooses the smallest wire that passes both an ampacity check (80% derating of the NEC 310.16-derived table) and a ≤3% voltage drop at a 5 m run, using copper resistivity 1.72×10⁻⁸ Ω·m.
    • Price tiers: budget = $0.08/W of minimum watts; mid = $0.15/VA of recommended VA; premium = 1.2× VA at $0.30/VA.

    Verified against: src/components/calculators/InverterSizingCalculator.tsx:195-254 (result useMemo), 40-57 (AWG/ampacity table), 285-321 (cable drop calc)

    Simplification / tolerance: Surge multipliers are typical starting-multiplier ranges, not measured LRA/locked-rotor values for your specific appliances — a compressor's real startup surge can exceed them. The PF of 0.85 is a generic assumption. Verify any inverter against the actual surge rating in its datasheet.

    Appliance load analysis

    baseWh        = watts × hoursPerDay × quantity × dutyCycle × frequencyMultiplier
    frequencyMult = daily 1, weekly 1/7, monthly 1/30
    effectiveWh   = baseWh × seasonalAverage × weekdayWeekendAverage
    seasonalAvg   = (summerMult + winterMult) / 2
    weekAvg       = 5/7 × 1 + 2/7 × weekendMult
    peakWatts     = Σ (watts × quantity);  adjustedPeak = peakWatts × 0.7

    Daily consumption, category breakdowns and critical-load totals all derive from effectiveWh per appliance. The 0.7 "adjusted peak" is a diversity factor (not everything runs at once).

    Verified against: src/components/calculators/ApplianceLoadCalculator.tsx:250-254 (frequency multipliers), 438-446 (effective Wh), 448-490 (totals)

    Simplification / tolerance: Everything hinges on the wattage and hours you enter (or template defaults). Nameplate watts are often above real consumption, and the 0.7 diversity factor is a blunt instrument — for inverter sizing, use the unadjusted peak if your loads genuinely coincide.

    Wire sizing & circuit protection

    Two related tools cover the balance of system:

    Wire:   A(mm²) = 0.0344 × oneWayRun(m) × current(A) / allowedDrop(V)
            (0.0344 = 2 × 1.72e-8 Ω·m × 1e6; round-trip length included)
            Governing size = max(size by drop, size by ampacity table)
    • The ampacity table is a conservative copper-PVC-in-air (30 °C) column (16 A at 1.5 mm² up to 280 A at 150 mm²); the code comments say to derate for conduit, bundling and heat, and to upsize for engine bays or ambient above 30 °C.
    • Circuit protection rows (formula shown per row in the tool): battery→inverter DC link = P ÷ (V × 0.90 eff) × 1.25; PV string fuse = Isc × 1.56 (1.25 × 1.25 per NEC 690.8/690.9, only required at 3+ parallel strings); array disconnect = Isc × strings × 1.25; charge controller→battery = arrayW ÷ V × 1.25; inverter AC main = P ÷ 230 V × 1.25, then next standard MCB size with a breaker→cable-mm² table.

    Verified against: src/components/calculators/WireSizingCalculator.tsx:13-60 (sizeWire); src/components/calculators/CircuitProtectionCalculator.tsx:63-125 (rows), 14-30 (tables)

    Simplification / tolerance: The wire calculator is sound physics ( resistivity × length), but the ampacity table is a deliberately conservative simplification of AS/NZS 3008 — real installations require derating for installation method, temperature grouping and soil, plus voltage-drop and fault-loop verification by a licensed electrician. Fixed 230 V wiring in Australia must be signed off by a licensed electrician; the tool states this in its own header.

    Solar ROI / payback

    annualProduction  = systemKW × 5 (PSH) × 365 × 0.8
    annualMaintenance = systemCost × 1%
    gridConnectCost   = 0 (≤100m) | $50/m (≤500m) | $25k+$40/m (≤1km) | $45k+$30/m (>1km)
    generatorCost/yr  = 3.5 L/h × dieselPrice × hrs/day × 365 + $2,000
    paybackYear       = first year cumulativeSolar < cumulativeGrid
    • Grid bills escalate at your chosen escalation rate; municipal water costs escalate at 0.6× that rate. A battery replacement is injected at year 12. Maintenance is 1% of system cost per year; off-grid water maintenance is a flat $200/yr.
    • Environmental figures: grid CO₂ 0.8 kg/kWh (Australian average), diesel 2.68 kg/L, one mature tree ≈ 21 kg CO₂/yr.

    Verified against: src/components/calculators/OffGridSolarROICalculator.tsx:57-135 (result useMemo)

    Simplification / tolerance: This is a deliberately simple cash-flow comparison, not a financial model: 5 peak sun hours is hardcoded regardless of your location (an Australian temperate-climate default), panel degradation, inverter replacement, feed-in revenue and discount rates are not modelled, and the grid-connection cost tiers are rough per-metre heuristics. Treat payback figures as ±several years, and note that battery prices at year 12 will likely be lower than today's quote.

    Rainwater harvesting

    Annual supply per source, summed across all active sources:

    Roof:          roofArea × rainfall(mm) × 0.85 runoff × (0.94 if first-flush diverter)
    Bore:          flow(L/min) × 60 × 8h × 365
    Dam:           surface(m²) × depth(m) × 1000 × (1 − evap%)
    River:         min(flow(L/s) × 86400, extraction limit) × 365
    Atmospheric:   solarKW × yield(L/kWh) × (humidity/50) × 365
    Fog nets:      area × yield(L/m²/day) × 365
    Desalination:  still: area × 4 L/m²/day × 365 | RO: capacity(L/day) × 365
    Spring:        flow(L/min) × 60 × 24 × 365
    • Tank sizing: dry-season buffer = daily use × dry days × 1.2; if the annual balance is a deficit, the recommendation is ×1.5 of that. A monthly tank-level simulation walks the year month by month (tank starts 50% full), so you can see the low point.
    • Delivery: pump watts = dailyLitres × 9.81 × effective head ÷ (3600 × 0.6 efficiency), assuming 4 pumping hours/day; gravity flow uses v = √(2gh) as a flow heuristic. Effective head adds friction of 0.05 m per metre of pipe.
    • Rainfall input: the city presets use the rounded BOM-style long-term averages listed under Data sources; a pinned globe location uses the NASA POWER annual total instead.

    Verified against: src/components/calculators/RainwaterHarvestingCalculator.tsx:322-360 (supply formulas, tank sizing, pump), 108-111 (city rainfall), 388-400 (monthly simulation)

    Simplification / tolerance: The monthly simulation distributes annual rainfall across the year using a latitude-band template (winter-dominant for temperate zones, summer-dominant for the tropics, etc.) — it is not your location's measured monthly distribution. The 0.85 runoff coefficient and 0.94 first-flush factor are standard planning values. We have not formally validated storage recommendations against drought records; check your region's longest recorded dry spell before relying on the tank size.

    Greywater recycling

    Shower water   = showers/day × duration × 8 L/min
    Recirculating:  recoverable = (shower − initial dump) × 0.85   (savings capped at 80%)
    Diversion:      recoverable = (shower + people × 20 L sink) × 0.7 (savings capped at 50%)
    Energy          = m³ treated × (1.6 recirc / 0.9 diversion kWh/m³) + filter unit kWh
    Irrigation bonus = 10% of recovered (30% if annual rainfall < 600 mm)

    Costs are fixed formulas: recirculating $1,800 + $200/person + filter; diversion $600 + $80/person + filter (filter options $0–2,500 depending on treatment class).

    Verified against: src/components/calculators/GreywaterRecyclingCalculator.tsx:69-126 (calculations useMemo)

    Simplification / tolerance: The 0.85 / 0.7 recovery fractions, the 8 L/min shower rate and the per-m³ energy figures are planning heuristics drawn from typical system data, not validated against your household's behaviour. Actual recovery depends heavily on soaps, plumbing layout and maintenance.

    Waste management (toilet + advanced closure)

    Organic waste      = people × 0.6 kg/day
    Biogas (basic)     = organic kg × 0.5 m³/kg × 6 kWh/m³  →  cooking hours = m³ / 0.3
    Biogas (advanced)  = (organic + people × 0.3 human waste) × 0.05 m³/kg × climateMult
                         climateMult = 1.2 warm / 0.85 cool climate
    Pyrolysis diesel   = plastic(kg/week) / 7 × 0.8 L/kg
    Pyrolysis energy   = batches/week × 3 kWh ÷ 7      (batch = 10 kg)
    Compost            = people × 0.5 L/day × 365 × 0.4 kg/L
    Greywater estimate = people × 80 L/day;  irrigation area = L/day ÷ 4
    • Each toilet/waste system type carries a fixed electricity constant (e.g. aerated treatment ~60 W 24/7 = 1.44 kWh/day; incineration ~1.5 kWh per use × 5 = 7.5 kWh/day; biodigester −2 kWh/day as a cooking-gas offset), scaled linearly by household size ÷ 4.
    • The 10-year cost comparison is install-cost midpoint + 10 × annual maintenance, with install cost reduced by the greywater septic-reduction percentage when greywater diversion is enabled.

    Verified against: src/components/calculators/WasteManagementCalculator.tsx:60-115 (system table), 130-161 (scaling, biogas, cost comparison); src/components/calculators/AdvancedWasteClosureCalculator.tsx:51-123 (calculations)

    Simplification / tolerance: Per-type electricity constants are single-point estimates — a cold aerated system, a heavily used incinerating toilet or a poorly fed biodigester will all differ. Biogas yields (0.05–0.5 m³/kg across the two calculators) reflect different feedstock assumptions; the advanced figure is the more conservative, human-waste-inclusive one. We have not formally validated either against operating digesters.

    Food production

    Target          = people × kg/person/day
    LEDs needed?    = false only for outdoor systems with peakSunHours ≥ 4.5
    Pump energy     = 0.14 kWh/day (35 W × 4 h) for non-outdoor systems
    LED energy      = 120 W × hours ÷ 1000 + max(0, target−6 kg) × 0.3 kWh
                      hours = 14, or automated: min(18, 14 + max(0, 6 − PSH))
    Water           = target × 50 L/kg (outdoor) or × 5 L/kg (indoor)
    Area            = target × 365 ÷ yieldPerM², capped at 100 m² outdoor / 20 m² indoor
    System cost     = low + (high − low) × min(2, target/6) × 0.5

    Yield-per-m² and self-sufficiency figures come from a per-system-type table (outdoor, hydroponic towers, aquaponics, greenhouse, vertical farm, hybrid), with ranges sourced in the tool's own tooltips to Gardening Australia yield references and the USDA vertical farming report.

    Verified against: src/components/calculators/FoodProductionCalculator.tsx:148-206 (all useMemos), 40-72 (system table)

    Simplification / tolerance: Yield figures are literature-range midpoints; the area caps (100 m² outdoor / 20 m² indoor) mean large households see the yield saturate rather than grow. Self-sufficiency percentages are estimates, not diet-planning guarantees. No formal validation has been performed.

    Backup generator

    Fuel/month   = size(kW) × consumptionRate × runtime(hrs/month)
    consumptionRate (per kWh): diesel 0.3 L | petrol 0.4 L | propane 0.5 L | nat gas 0.35 m³ | biogas 0.6 m³ | hydrogen 0.06 kg
    Annual cost  = fuel/month × price × 12
    Biogas hours = biogasAvailable(m³/day) ÷ (kW × biogas rate)
    H₂ electrolyser = monthlyConsumption × 12 × 50 ÷ (365 × 5 kWh/m²/day)

    Purchase price is the midpoint of a per-fuel, per-type (portable/standby) range. Hydrogen figures assume solar electrolysis with 30–40% round-trip efficiency.

    Verified against: src/components/calculators/BackupGeneratorCalculator.tsx:21-70 (fuel & price tables), 85-102 (calculations)

    Simplification / tolerance: Consumption rates are flat per-kWh averages — real generators burn more at part load and less at optimal load, so actual fuel use at light loading can be materially higher. Rates are planning values, not bench tests of specific models.

    Alternative energy (wind, hydro, pumped storage, thermal)

    Wind       = turbineW × capacityFactor% × 24 ÷ 1000     (kWh/day)
    Hydro      = flow(L/s) × head(m) × 9.81 × efficiency% × 24 ÷ 1000
    Pumped storage = mass(kg) × 9.81 × height × turbineEff ÷ 3,600,000 (kWh)
    Thermal    = volume(L) × 4.186 × ΔT°C ÷ 3600                  (kWh)

    Pumped-storage detail: pump watts = flow × total dynamic head × 9.81 ÷ pump efficiency, fill time = tank volume ÷ flow, and the tool reports the round-trip percentage (stored ÷ energy to fill). Friction adds 0.05 m of head per metre of pipe.

    Verified against: src/components/calculators/AlternativeEnergyCalculator.tsx:69-96 (calculations)

    Simplification / tolerance: Wind output uses a capacity factor you supply (typical small-turbine 15–30%) — it does not model the wind-speed-cubed power curve, so a bad site estimate propagates straight into the answer. Hydro assumes a constant 24 h/day flow; seasonal streams will deliver far less. Pumped-storage round-trip typically lands well under 100% — the physics guarantees it — so read that percentage before committing.

    Master calculator: interlinking, proposals & PDF

    The Master calculator embeds the same components documented above and links them by callbacks rather than re-computing:

    • Result flow up: each child calculator reports its result via an onResult callback; the master aggregates them. Extra loads (water pump, LED grow lights, greywater filtration, waste-system electricity, pyrolysis heater) are converted into synthetic load entries and injected into the appliance-load audit, so they appear in daily kWh, the load profile chart and inverter sizing.
    • System voltage is linked two-way between the battery and inverter tabs — changing one updates the other.
    • Planning surge loads push back into the load calculator (e.g. ticking "well pump" in inverter sizing adds a deep-well-pump entry to your load list).
    • Aggregation formulas (fallbacks when a tab wasn't configured): effective daily load = appliance daily kWh + any negative waste-system offset (biodigester gas credit); fallback battery bank = effective daily kWh × 2; fallback array = effective daily kWh ÷ PSH × 1.2 × 1,000 W with cost at $0.80/W; fallback battery cost = $150/kWh; fallback inverter cost = peak watts × $0.15; master rain-catch estimate = annual rainfall ÷ 365 × 150 m² roof × 0.85 against a fixed 200 L/day need. Note the master fallback uses a 1.2 loss factor while the solar component itself uses 1.3 — the component's own result takes precedence whenever the solar tab has been run.
    • Total system cost sums only the modules visible at your selected expertise tier: solar + battery + inverter + water + alt-energy + EV charger (V2H) + food + greywater + advanced waste.
    • Proposal & PDF pipeline: the report generator assembles an HTML summary of every configured module and, in the PDF path, renders it with jsPDF + jspdf-autotable (src/lib/pdfExport.ts) with branded/unbranded footer variants. Generated reports persist in your browser under the offgrid_proposal_report_v1 localStorage key and surface on the proposal page.

    Verified against: src/components/calculators/MasterOffGridCalculator.tsx:463-618 (load injection, aggregation, cost totals), 632+ (report generator); src/lib/pdfExport.ts:1-2, 134 (jsPDF pipeline)

    Simplification / tolerance: Fallback formulas exist so the summary cards always show a number — they are coarser than the component-level calculations they stand in for (a flat 2-day autonomy, a fixed 150 m² roof, a fixed 200 L/day water need). A proposal generated without visiting a tab carries those assumptions; run every tab for a proposal you intend to act on.

    Questions or corrections? If a formula on this page ever diverges from the code, the code is wrong or this page is — both should be fixed, so please tell us. An independent third-party engineering review of the calculators is planned but not yet complete; until then, everything above remains ballpark planning guidance.