How impacts are calculated
Foreground "inventory × characterization factor" dot products, fully transparent.
The core formula
impact[category] = Σ flow.amount × CF[category, substance, compartment]For each impact category (Global Warming, Acidification, Eutrophication, ...) the engine iterates over every elementary flow in the scenario, looks up its characterization factor for that category, and accumulates the product.
Electricity → emissions expansion
Templates often produce a single electricity flow (in kWh/yr). Before characterization, the calc engine expands each electricity flow into three elementary emissions (CO₂ fossil, CH₄ fossil, N₂O) using EPA eGRID 2024 emission factors for the project's pinned subregion. This is what makes the same scenario produce different results depending on the local grid.
Direct biological emissions
Wastewater templates encode IPCC 2019 Refinement defaults directly in their flow expressions:
- N₂O = 1.6% of influent total nitrogen (Vol 5 Ch 6)
- CH₄ = 0.2 kg CH₄/kg COD removed in anaerobic digestion
Both are overridable per scenario via the template drivers. Site-specific measurements are strongly encouraged where available.
Embodied carbon
Construction-phase flows (concrete m³, steel ton, pipe material kg) are divided by the scenario's service life and reported as annualized embodied flows. They show up in the same totals as operational flows so the comparison is "apples to apples" per year.
Negative flows (credits)
Some templates produce negative flows to model environmental credits — solar PV offsets grid electricity, biogas-to-RNG displaces fossil natural gas, heat recovery displaces gas heating, and biochar carbon sequestration. The LCIA dot product is sign-aware so these reduce category totals correctly.
Sensitivity
The one-at-a-time tornado analysis picks an inventory item and varies each of its drivers ±20% (configurable), re-evaluating the template formulas and recomputing the item's GWP contribution. Drivers are ranked by absolute swing — telling you which inputs deserve the most design attention.
Precision
All accumulation runs through decimal.js with 40 digits of precision so very large inventories don't accumulate floating-point drift before display rounding.
Limitations
- v1 uses direct foreground × CF only. Full upstream supply chain inversion (à la Brightway2) is on the roadmap.
- Some substance-CF gaps exist for emerging contaminants (PFAS toxicity factors are still in flux).
- Template defaults are typical engineering values. Site-specific data always beats defaults.
