MaximaLabsOpen app

Sustainability — Scope 1/2/3 Carbon Footprint

Maps solved unit-op duties to CO2e via pinned emission factors (Scope 1 on-site fuel, Scope 2 purchased electricity/refrigeration, Scope 3 embodied feedstock), with an optional per-kg-of-product carbon intensity and an annualized carbon-tax cost — GHG Protocol/ISO 14040-aligned labels, screening-fidelity factors.

sustainabilityesgcarbonscope-1-2-3
Concept

Maps the solver's already-computed energy duties to CO2e via pinned emission factors, split GHG-Protocol-style: Scope 1 (on-site fuel firing a reboiler/heater/ exothermic reactor), Scope 2 (purchased electricity for pumps/compressors/ electrolyzers, plus refrigeration electricity behind a condenser or a cooling duty via a COP = 3 proxy), and Scope 3 (cradle-to-gate embodied emissions of purchased feedstocks). A heat exchanger is recuperative — no external utility, no emissions charged to it.

In the app it is Economics ▸ Carbon & LCA on a solved simulation, and the exported report's "Economics & sustainability" section carries the same numbers.

The math
Show the governing equations
CO2escope1=Qheat⋅EFheat,EFheat=0.065 kgMJ(fired heat,  85% boiler eff.)\text{CO}_2e_{scope1} = Q_{heat}\cdot EF_{heat}, \quad EF_{heat} = 0.065\ \tfrac{\text{kg}}{\text{MJ}} \quad \text{(fired heat, ~85\% boiler eff.)}
CO2escope2=Pelec⋅EFelec+QcoolCOP⋅EFelec,EFelec=0.111 kgMJ, COP=3\text{CO}_2e_{scope2} = P_{elec}\cdot EF_{elec} + \tfrac{Q_{cool}}{COP}\cdot EF_{elec}, \quad EF_{elec} = 0.111\ \tfrac{\text{kg}}{\text{MJ}},\ COP = 3
intensity=CO2escope1+CO2escope2m˙product(kg CO2e / kg product)\text{intensity} = \frac{\text{CO}_2e_{scope1} + \text{CO}_2e_{scope2}}{\dot{m}_{product}} \quad \text{(kg CO}_2\text{e / kg product)}
8,000 h/yr annualization; $50/tonne CO2e is the analysis module's default carbon-tax rate — the hosted API does not take a carbon-tax override yet, so for another rate multiply total_tonnes_per_year by it.
Execution
import requests

# In the simulation's notebook — Simulator is pre-loaded and bound to it.
footprint = Simulator.sustainability()     # GET /api/simulations/{id}/sustainability
print(footprint["total_tonnes_per_year"], footprint["carbon_tax_cost_usd_per_year"])

# Per-kg-of-product intensity: the SDK method doesn't take product_edge yet, so query the
# route directly.
by_kg = requests.get(
    f"https://maximalabs.io/api/simulations/{Simulator.sim_id}/sustainability",
    params={"product_edge": "e-distillate"},
).json()
print(by_kg["carbon_intensity"])