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.

There's no dedicated ESG/sustainability panel in the app today — it surfaces in the exported PDF Report's "Economics & sustainability" section and via the API/SDK.

The math
Show the governing equations
CO2escope1=QheatEFheat,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=PelecEFelec+QcoolCOPEFelec,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 REST route only exposes product_edge (for the per-kg intensity), not a carbon-tax override, so change the rate by calling flowsim.analysis.sustainability.carbon_footprint(..., carbon_tax=...) directly rather than through the hosted API.
Execution
from flowsim.sdk import FlowSimClient
import requests

client = FlowSimClient("https://maximalabs.io")
footprint = client.sustainability(sim_id)      # 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/{sim_id}/sustainability",
    params={"product_edge": "e-distillate"},
).json()
print(by_kg["carbon_intensity"])