Skip to main content

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

PropertyDescription
Runs onModeledActivityNode with FoodProductFlowNode parent, or FoodProcessingActivityNode for combined products
DependenciesOriginGapFillingWorker, AttachFoodTagsGapFillingWorker, ConservationGapFillingWorker, MatchProductNameGapFillingWorker, AddClientNodesGapFillingWorker
Key InputProcessing tags (glossary terms), product origin, nutritional composition
OutputProcessing activity nodes with electricity consumption, raw material flows
TriggerProduct matched to specific glossary term combinations

When It Runs

The module triggers when:

  1. A product has a ModeledActivityNode with a parent FoodProductFlowNode containing a product name
  2. The product has matching glossary terms that trigger a processing model
  3. All dependency GFMs have completed (origin, conservation, food tags)
  4. 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 NameModel TypeDescription
GrindingProcessWithFixedElectricityAmountMechanical size reduction
Dried Fruit GrindingProcessWithUnitRawMaterialGrinding of dried fruits
CarbonatingProcessWithUnitRawMaterialAdding carbon dioxide
CuttingProcessWithFixedElectricityAmountMechanical cutting
ShreddingProcessWithFixedElectricityAmountMechanical shredding
FermentingProcessWithFixedElectricityAmountFermentation process
SmokingProcessWithUnitRawMaterialSmoking preservation
PuffingProcessWithFixedElectricityAmountExpansion by heat/pressure
Freeze-dryingProcessWithFixedElectricityAmountLyophilization
CoolingProcessWithFixedElectricityAmountRefrigeration
BakingProcessWithNonUnitRawMaterialThermal processing
Jam productionProcessWithNonUnitRawMaterialFruit preserve making
Juice productionProcessWithNonUnitRawMaterialLiquid extraction
Yoghurt productionProcessWithNonUnitRawMaterialDairy fermentation
RoastingProcessWithUnitRawMaterialDry heat cooking
ChoppingProcessWithUnitRawMaterialMechanical cutting
HeatingProcessWithUnitRawMaterialThermal treatment
DryingDryingProcessingModelMoisture removal
FreezingFreezingProcessingModelFreezing preservation
MixingProcessWithFixedElectricityAmountCombining ingredients
TransportationProcessWithUnitRawMaterialTransport 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:

ComponentPercentage
Product60%
Fans20%
Pull-down0%
Defrost15%
Other5%

Physical Constants

ParameterValueUnit
Frozen food temperature (T)-23degrees Celsius
Center temperature (T_c)-15degrees Celsius
Cooling medium temperature (T_f)-32degrees Celsius
Coefficient of Performance (COP)2.75-
Water density (p_w)1000kg/m3
Fat density (p_f)930kg/m3
Solids density (p_s)1450kg/m3
Water specific heat (c_w)4180J/kg K
Ice specific heat (c_i)2110J/kg K
Latent heat of water (L1)334kJ/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:

  1. Nutrient Subdivision GFM: Calculates the upscale ratio based on water content difference
  2. Drying GFM: Adds the evaporation energy based on the upscale ratio
  3. Processing Activity: Attaches to the existing upscaling node

Drying Process Variants

ProcessGlossary TermDescription
General dryingJ0116Default drying process
Dairy dryingJ0116 + dairy termsMilk powder production
Grain dryingJ0116 + grain termsCereal drying
Legume dryingJ0116 + legume termsBean/pea drying
Nut dryingJ0116 + nut termsNut dehydration
Oilseed dryingJ0116 + oilseed termsSeed drying
Spice dryingJ0116 + spice termsHerb/spice drying
Fruit dryingJ0116 + fruit termsFruit dehydration
Vegetable dryingJ0116 + vegetable termsVegetable 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

  1. Remove edge between parent flow and original Brightway node
  2. Create FoodProcessingActivityNode
  3. Add edge from parent flow to processing activity
  4. Duplicate parent flow as raw material flow
  5. Update amounts on raw material flow
  6. Add edge from raw material flow to original Brightway node
  7. Create PracticeFlowNode for processing
  8. 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:

  1. Processing activity node for freezing
  2. 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

  1. 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

  2. ASHRAE Handbook - Refrigeration (2018). Chapter 19: Thermal Properties of Foods.

  3. Camenzind, R. (2016). Food Processing LCA Data. ZHAW Report for Eaternity.

  4. Ecoinvent Database v3.6. Swiss Centre for Life Cycle Inventories.

  5. FoodEx2 Classification System. European Food Safety Authority (EFSA).