Processing GFM
The Processing Gap Filling Module calculates greenhouse gas emissions from food processing operations. It covers a wide range of processes including freezing, drying, baking, juice production, and many more. Processing can significantly affect the environmental footprint of food products, making this module essential for accurate life cycle assessments.
Quick Reference
| Property | Description |
|---|---|
| Runs on | ModeledActivityNode with FoodProductFlowNode parent, or FoodProcessingActivityNode for combined products |
| Dependencies | OriginGapFillingWorker, AttachFoodTagsGapFillingWorker, ConservationGapFillingWorker, MatchProductNameGapFillingWorker, AddClientNodesGapFillingWorker |
| Key Input | Processing tags (glossary terms), product origin, nutritional composition |
| Output | Processing activity nodes with electricity consumption, raw material flows |
| Trigger | Product matched to specific glossary term combinations |
When It Runs
The module triggers when:
- A product has a
ModeledActivityNodewith a parentFoodProductFlowNodecontaining a product name - The product has matching glossary terms that trigger a processing model
- All dependency GFMs have completed (origin, conservation, food tags)
- The product is not matched to a non-food term
Key Output
The module adds processing activity nodes to the calculation graph:
- Electricity consumption: Country-specific electricity market flows
- Raw material flows: Input materials required for processing
- Processing activity: Complete life cycle inventory for the process
Scientific Methodology
The Processing GFM uses two fundamentally different approaches based on the type of processing:
Simple Processing Models
Simple processing models add processing activities on top of existing base products. These processes:
- Have a 1:1 input-to-output ratio (1 kg input = 1 kg output)
- Scale linearly with product weight
- Do not fundamentally change product properties
Examples: Cutting, shredding, mixing, cooling, grinding
Complex Processing Models
Complex processing models create new life cycle inventories for transformed products. These processes:
- May have non-unit input-to-output ratios (for example, more raw material needed than output)
- Depend on product characteristics (nutritional composition)
- Can create fundamentally different products
Examples: Drying, freezing, juice production, jam production, yogurt production
Processing Model Categories
The Processing GFM implements several model types organized in a class hierarchy:
AbstractProcessingModel
|
+-- ProcessWithElectricityNode (electricity-only models)
| |
| +-- ProcessWithFixedElectricityAmount
| +-- FreezingProcessingModel
|
+-- ProcessWithBWNode (Brightway/Ecoinvent models)
|
+-- ProcessWithUnitRawMaterial
+-- ProcessWithNonUnitRawMaterial
+-- DryingProcessingModel
ProcessWithFixedElectricityAmount
Simple processes that only require electricity consumption, scaled by product weight.
Formula:
Electricity [kWh] = Fixed electricity amount [kWh/kg] * Production amount [kg]
Processes using this model:
- Grinding
- Cutting
- Shredding
- Fermenting
- Puffing
- Freeze-drying
- Cooling
- Mixing
ProcessWithUnitRawMaterial
Processes that use Brightway/Ecoinvent activity nodes with a 1:1 raw material ratio.
Formula:
Raw material [kg] = Production amount [kg]
Processing flow = Brightway activity * Production amount
Processes using this model:
- Dried Fruit Grinding
- Carbonating
- Smoking
- Roasting
- Chopping
- Heating
- Transportation
ProcessWithNonUnitRawMaterial
Processes that use Brightway/Ecoinvent activity nodes where raw material input differs from output.
Formula:
Raw material [kg] = Raw material ratio * Production amount [kg]
Processing flow = Brightway activity * Production amount
Processes using this model:
- Baking
- Jam production
- Juice production
- Yogurt production
Implemented Processes
The following table lists all implemented processing types with their model class:
| Process Name | Model Type | Description |
|---|---|---|
| Grinding | ProcessWithFixedElectricityAmount | Mechanical size reduction |
| Dried Fruit Grinding | ProcessWithUnitRawMaterial | Grinding of dried fruits |
| Carbonating | ProcessWithUnitRawMaterial | Adding carbon dioxide |
| Cutting | ProcessWithFixedElectricityAmount | Mechanical cutting |
| Shredding | ProcessWithFixedElectricityAmount | Mechanical shredding |
| Fermenting | ProcessWithFixedElectricityAmount | Fermentation process |
| Smoking | ProcessWithUnitRawMaterial | Smoking preservation |
| Puffing | ProcessWithFixedElectricityAmount | Expansion by heat/pressure |
| Freeze-drying | ProcessWithFixedElectricityAmount | Lyophilization |
| Cooling | ProcessWithFixedElectricityAmount | Refrigeration |
| Baking | ProcessWithNonUnitRawMaterial | Thermal processing |
| Jam production | ProcessWithNonUnitRawMaterial | Fruit preserve making |
| Juice production | ProcessWithNonUnitRawMaterial | Liquid extraction |
| Yoghurt production | ProcessWithNonUnitRawMaterial | Dairy fermentation |
| Roasting | ProcessWithUnitRawMaterial | Dry heat cooking |
| Chopping | ProcessWithUnitRawMaterial | Mechanical cutting |
| Heating | ProcessWithUnitRawMaterial | Thermal treatment |
| Drying | DryingProcessingModel | Moisture removal |
| Freezing | FreezingProcessingModel | Freezing preservation |
| Mixing | ProcessWithFixedElectricityAmount | Combining ingredients |
| Transportation | ProcessWithUnitRawMaterial | Transport to processing |
Freezing Processing Model
The freezing model calculates energy requirements based on product composition using thermodynamic principles.
Energy Calculation Formula
The total freezing energy is calculated as:
Q_total = Q_heat_load + Q_refrigerator
Where:
- Q_heat_load: Energy to cool and freeze the product
- Q_refrigerator: Energy for refrigeration system operation
Product Heat Load
Q_product = W_pr / t_pr * (c_u * (T_i - T_if) + L * 1000 + c_fr * (T_if - T_out))
Where:
- W_pr: Product mass (kg)
- t_pr: Residence time (s)
- c_u: Unfrozen specific heat (J/kg K)
- T_i: Initial temperature (20 degrees Celsius)
- T_if: Initial freezing temperature (-1.7 degrees Celsius)
- L: Latent heat of freezing (kJ/kg)
- c_fr: Frozen specific heat (J/kg K)
- T_out: Outlet temperature (-18 degrees Celsius)
Nutritional Composition Impact
The model uses water and fat content to calculate thermophysical properties:
# Solid fraction
x_s = 1 - x_w - x_f
# Bound water fraction (limited by total water)
x_b = min(0.25 * x_s, x_w)
# Ice fraction
x_i = (x_w - x_b) * (1 - T_if / T)
# Latent heat of freezing
L = 334 * x_i # kJ/kg
Heat Load Components
For continuous air blast freezing:
| Component | Percentage |
|---|---|
| Product | 60% |
| Fans | 20% |
| Pull-down | 0% |
| Defrost | 15% |
| Other | 5% |
Physical Constants
| Parameter | Value | Unit |
|---|---|---|
| Frozen food temperature (T) | -23 | degrees Celsius |
| Center temperature (T_c) | -15 | degrees Celsius |
| Cooling medium temperature (T_f) | -32 | degrees Celsius |
| Coefficient of Performance (COP) | 2.75 | - |
| Water density (p_w) | 1000 | kg/m3 |
| Fat density (p_f) | 930 | kg/m3 |
| Solids density (p_s) | 1450 | kg/m3 |
| Water specific heat (c_w) | 4180 | J/kg K |
| Ice specific heat (c_i) | 2110 | J/kg K |
| Latent heat of water (L1) | 334 | kJ/kg |
Drying Processing Model
The drying model calculates water evaporation based on the nutrient upscale ratio from the Nutrient Subdivision GFM.
Water Loss Calculation
Water to evaporate [kg] = (Upscale ratio - 1.0) * Production amount [kg]
The upscale ratio represents how much fresh product is needed to produce 1 kg of dried product.
Evaporation Formula
The percentage of water loss is calculated as:
Water loss % = 100 * {1 - [(Final water % / 100) * (Total weight - Water weight)] /
[(1 - Final water % / 100) * Water weight]}
For dried products:
- Final water content: 0-20% (dry weight content 80-100%)
- Based on Afolabi 2014 research
Integration with Nutrient Subdivision GFM
The drying model works in conjunction with the Nutrient Subdivision GFM:
- Nutrient Subdivision GFM: Calculates the upscale ratio based on water content difference
- Drying GFM: Adds the evaporation energy based on the upscale ratio
- Processing Activity: Attaches to the existing upscaling node
Drying Process Variants
| Process | Glossary Term | Description |
|---|---|---|
| General drying | J0116 | Default drying process |
| Dairy drying | J0116 + dairy terms | Milk powder production |
| Grain drying | J0116 + grain terms | Cereal drying |
| Legume drying | J0116 + legume terms | Bean/pea drying |
| Nut drying | J0116 + nut terms | Nut dehydration |
| Oilseed drying | J0116 + oilseed terms | Seed drying |
| Spice drying | J0116 + spice terms | Herb/spice drying |
| Fruit drying | J0116 + fruit terms | Fruit dehydration |
| Vegetable drying | J0116 + vegetable terms | Vegetable drying |
Implementation Details
Trigger Tag System
Processing is triggered by specific combinations of FoodEx2 glossary terms. The configuration is stored in a Google Sheet with:
- Columns B-D: Glossary term combinations
- Column E: Brightway ID or electricity amount
- Column F: GFM involved
- Column G: Comments (location: GLO, RER, etc.)
Tag Priority
When multiple tag combinations match, the most specific one is selected:
# The processing with a higher number of tags is prioritized
# as they are more specific for this particular product
if len(processing_xid_and_tags.tags) > len(viable_processing[0].tags):
viable_processing = [processing_xid_and_tags]
Country-Specific Electricity
The module uses country-specific electricity markets:
# Low voltage electricity for processing
electricity_node = electricity_node_by_country.low_voltage.get(country_code)
# Fallback to global if country not available
if electricity_node is None:
electricity_node = electricity_node_by_country.low_voltage.get("GLO")
Transportation Addition
Transportation to processing facilities is added when:
- The glossary term
Z0001(Adjunct Characteristics of Food Not Known) is present - The process creates a new LCI (not just adding processing on top)
- Excludes: Cooling and Freezing (to avoid double-counting)
# Add transport term for new inventory creation
if "Z0001" in filtered_tag_term_xids:
filtered_tag_term_xids.add("EOS_Transportation")
Calculation Graph Integration
Node Structure
The Processing GFM creates the following graph structure:
FoodProductFlowNode (parent)
|
+-- FoodProcessingActivityNode (processing activity)
|
+-- FoodProductFlowNode (raw material flow)
| |
| +-- ModeledActivityNode (original Brightway node)
|
+-- PracticeFlowNode (processing flow)
|
+-- ModeledActivityNode (electricity or Brightway process)
Mutation Sequence
- Remove edge between parent flow and original Brightway node
- Create FoodProcessingActivityNode
- Add edge from parent flow to processing activity
- Duplicate parent flow as raw material flow
- Update amounts on raw material flow
- Add edge from raw material flow to original Brightway node
- Create PracticeFlowNode for processing
- Connect processing flow to electricity/Brightway process
Calculation Example
Scenario: 1 kg of frozen peas, produced in Germany
Step 1: Determine Nutritional Composition
From nutrient data:
- Water content (x_w): 78.9%
- Fat content (x_f): 0.4%
Step 2: Calculate Thermophysical Properties
# Solid fraction
x_s = 1 - 0.789 - 0.004 = 0.207
# Bound water fraction
x_b = min(0.25 * 0.207, 0.789) = 0.052
# Ice fraction at -23 degrees Celsius
x_i = (0.789 - 0.052) * (1 - (-1.7) / (-23)) = 0.682
# Latent heat
L = 334 * 0.682 = 227.8 kJ/kg
Step 3: Calculate Energy Requirements
# Unfrozen specific heat
c_u = 4180 * 0.789 + 1600 * 0.207 + 1900 * 0.004 = 3638 J/kg K
# Frozen specific heat (simplified)
c_fr = 2650 J/kg K
# Product heat load
Q_product = 1 * (3638 * (20 - (-1.7)) + 227800 + 2650 * ((-1.7) - (-18)))
= 79,005 + 227,800 + 43,185 = 349,990 J
# Total including freezer components (60% product load)
Q_heat_total = 349,990 / 0.6 = 583,317 J
# Refrigerator energy (COP = 2.75)
Q_refrigerator = 583,317 / 2.75 * 1.175 = 249,425 J
# Total energy
Q_total = 583,317 + 249,425 = 832,742 J = 0.231 kWh/kg
Step 4: Apply Country-Specific Electricity
Emissions = 0.231 kWh * German electricity mix [kg CO2eq/kWh]
Final Output
The module adds:
- Processing activity node for freezing
- Electricity flow (0.231 kWh) connected to German low-voltage electricity market
Known Limitations
Model Coverage
- Not all processing types have dedicated models
- Some processes use simplified electricity-only approaches
- Complex multi-step processes may not be fully captured
Data Gaps
- Default electricity amounts may not reflect actual industrial practice
- Some product-specific processing parameters are unavailable
- Regional variations in processing efficiency not captured
Double-Counting Risk
Products with existing processing in the base inventory may have processing counted twice. A potential solution involves tagging Brightway activities that already include processing.
Nutritional Dependency
For drying and freezing:
- Models require nutritional composition data
- If nutrients unavailable, default values are used
- Default assumes 90% dry weight content for drying
Process String Matching
The following processing strings are automatically matched to their respective processes:
# Drying variants
"drying", "dairy drying", "grain drying", "legume drying",
"nut drying", "oilseed drying", "spice drying",
"fruit drying", "vegetable drying"
# Production processes
"fruit jam production", "fruit yoghurt production (cow milk)",
"fruit yoghurt production (soy milk)", "fruit juice production",
"fruit juice concentrate production"
# Mechanical processes
"grinding", "dried fruit grinding", "cutting", "shredding",
"tree nut chopping", "chopping", "mixing"
# Thermal processes
"roasting", "nut roasting", "baking", "heating",
"cooking with fat or oil", "uht pasteurization"
# Preservation processes
"freezing", "cooling", "smoking", "fermenting", "freeze-drying"
# Other processes
"artificial carbonation", "puffing",
"transportation for processing", "cooled transportation for processing"
References
-
Afolabi, I.S. (2014). Moisture Migration and Bulk Nutrients Interaction in a Drying Food Systems. Food and Nutrition Sciences, 5(8), 692-714. http://dx.doi.org/10.4236/fns.2014.58080
-
ASHRAE Handbook - Refrigeration (2018). Chapter 19: Thermal Properties of Foods.
-
Camenzind, R. (2016). Food Processing LCA Data. ZHAW Report for Eaternity.
-
Ecoinvent Database v3.6. Swiss Centre for Life Cycle Inventories.
-
FoodEx2 Classification System. European Food Safety Authority (EFSA).