Sustainability and Emissions Tracking
This module provides CO2 equivalent emissions tracking and energy consumption monitoring for process systems.
Overview
As sustainability becomes central to process design and operation, NeqSim provides:
- Equipment-Level Emissions: CO2e breakdown by equipment type
- Scope Classification: Direct (flaring, combustion) vs indirect (electricity)
- Time-Series Tracking: Historical emissions for trend analysis
- Regulatory Reporting: Export formats for EU ETS, EPA, and other frameworks
Classes
EmissionsTracker
Calculates and tracks CO2 equivalent emissions from a ProcessSystem.
Emission Categories
| Category | Description | Example Equipment |
|---|---|---|
FLARING |
Direct CO2 from flare combustion | Flare systems |
COMBUSTION |
Direct CO2 from fuel burning | Furnaces, fired heaters |
COMPRESSION |
Indirect from compressor power | Gas compressors |
EXPANSION |
Power generated by expanders (negative) | Turboexpanders |
PUMPING |
Indirect from pump power | Liquid pumps |
HEATING |
Indirect from heater power | Electric heaters |
COOLING |
Indirect from cooler power | Air coolers, fans |
VENTING |
Direct methane/CO2 venting | Vent systems |
Note: Expanders generate power, so their emissions contribution is negative, offsetting other electrical consumption.
Usage Example
ProcessSystem process = new ProcessSystem();
// ... configure process with compressors, heaters, etc. ...
process.run();
// Create emissions tracker
EmissionsTracker tracker = new EmissionsTracker(process);
// Set grid emission factor based on location
tracker.setGridEmissionFactor(0.05); // Norway: ~50 g CO2/kWh
// tracker.setGridEmissionFactor(0.4); // Global average: ~400 g CO2/kWh
// Calculate emissions
EmissionsReport report = tracker.calculateEmissions();
// Print summary
System.out.println(report.getSummary());
// Get specific values
double totalCO2e = report.getTotalCO2e("kg/hr");
double annualTonnes = report.getTotalCO2e("ton/yr");
double flaringOnly = report.getFlaringCO2e("kg/hr");
double totalPower = report.getTotalPower("MW");
// Export for regulatory reporting
report.exportToCSV("emissions_report.csv");
Convenience Methods on ProcessSystem
// Quick emissions calculation with default grid factor
EmissionsReport report = process.getEmissions();
// With custom grid emission factor
EmissionsReport reportNorway = process.getEmissions(0.05);
// Get total CO2 emissions directly
double totalCO2 = process.getTotalCO2Emissions();
EmissionsReport
Detailed breakdown of emissions from a calculation run.
Key Methods
| Method | Description |
|---|---|
getTotalCO2e(unit) |
Total CO2e in kg/hr, ton/hr, ton/day, ton/yr |
getTotalPower(unit) |
Total power consumption in kW, MW, hp |
getFlaringCO2e(unit) |
Emissions from flaring only |
getEmissionsByCategory() |
Breakdown by category |
exportToCSV(path) |
Export for regulatory reporting |
exportToJSON(path) |
Export to JSON format |
toJson() |
Get report as JSON string |
getSummary() |
Human-readable summary |
Example Output
=== Emissions Report: GasExportProcess ===
Timestamp: 2024-01-15T10:30:00Z
Total CO2e: 1250.00 kg/hr (10950.00 tonne/yr)
Total Power: 5200.00 kW (5.20 MW)
Total Heat Duty: 8500.00 kW
Breakdown by Category:
COMPRESSION: 850.00 kg/hr
HEATING: 340.00 kg/hr
COOLING: 60.00 kg/hr
Time-Series Tracking
For continuous monitoring applications:
EmissionsTracker tracker = new EmissionsTracker(process);
// Record snapshots over time
while (running) {
process.run();
tracker.recordSnapshot();
Thread.sleep(60000); // Every minute
}
// Get cumulative emissions
double cumulativeKg = tracker.getCumulativeCO2e();
// Access history
List<EmissionsSnapshot> history = tracker.getHistory();
Grid Emission Factors
The grid emission factor (kg CO2/kWh) varies significantly by region:
| Region | Factor | Notes |
|---|---|---|
| Norway | 0.02-0.05 | Hydropower dominated |
| France | 0.05-0.08 | Nuclear dominated |
| UK | 0.20-0.30 | Mixed grid |
| Germany | 0.35-0.45 | Coal + renewables |
| USA (avg) | 0.40-0.45 | Mixed grid |
| China | 0.55-0.65 | Coal dominated |
| Global avg | 0.40 | Default value |
Regulatory Frameworks
The emissions data can be exported for various reporting requirements:
| Framework | Region | Key Metrics |
|---|---|---|
| EU ETS | Europe | Total CO2e, by installation |
| EPA GHG | USA | Scope 1, 2, 3 emissions |
| NGER | Australia | Facility-level reporting |
| Carbon Tax | Various | Total CO2e |
Best Practices
- Accurate Grid Factors: Use location-specific emission factors
- Regular Updates: Recalculate after process changes
- Baseline Comparison: Compare alternatives on equal footing
- Uncertainty: Consider factor uncertainty in reporting
- Scope Classification: Clearly distinguish direct vs indirect
Integration with Design Optimization
// Compare alternatives by emissions
for (ProcessSystem alternative : alternatives) {
EmissionsReport report = new EmissionsTracker(alternative)
.calculateEmissions();
System.out.printf("%s: %.0f ton CO2e/yr%n",
alternative.getName(),
report.getTotalCO2e("ton/yr"));
}
Related Documentation
- Batch Studies - Multi-objective optimization including emissions
- Lifecycle Management - Track emissions over model lifecycle