h2integrate.converters.iron.humbert_stinn_ewin_cost

Contents

h2integrate.converters.iron.humbert_stinn_ewin_cost#

Iron electronwinning cost model based on Humbert et al. and Stinn and Allanore

This module contains H2I cost configs and components for modeling iron electrowinning. It is based on the work of Humbert et al. (doi.org/10.1007/s40831-024-00878-3), which contains relevant iron electrowinning performance and cost data, and Stinn & Allanore (doi.org/10.1149.2/2.F06202IF), which presents an empirical capex model for electrowinning of many different metals based on many physical parameters of the electrowinning process.

The opex model developed by Humbert et al. is imported from ./humbert/cost_model.py

The capex model developed by Stinn & Allanore is imported from ./stinn/cost_model.py

Classes:

HumbertEwinCostConfig: Sets the required model_inputs fields. HumbertEwinCostComponent: Defines initialize(), setup(), and compute() methods.

Classes

HumbertStinnEwinCostComponent(**kwargs)

OpenMDAO component for the Humbert/Stinn iron electrowinning cost model.

HumbertStinnEwinCostConfig([cost_year, ...])

Configuration class for the Humbert iron electrowinning cost model.

class h2integrate.converters.iron.humbert_stinn_ewin_cost.HumbertStinnEwinCostConfig(cost_year=2018, labor_rate_cost=55.9, anode_cost_per_tonne=1660.716, annual_labor_hours_per_position=2000, *, electrolysis_type)#

Configuration class for the Humbert iron electrowinning cost model.

Default values for the labor_rate_cost, anode_cost_per_tonne, and annual_labor_hours_per_position came from the SI spreadsheet of the Humbert Opex model and were adjusted to 2018 dollars using CPI.

Parameters:
  • electrolysis_type (str) – The type of electrowinning being performed. Options: “ahe”: Aqueous Hydroxide Electrolysis (AHE) “mse”: Molten Salt Electrolysis (MSE) “moe”: Molten Oxide Electrolysis (MOE)

  • cost_year (int) – The dollar year of costs output by the model. Defaults to 2018, the dollar year in which data was given in the Stinn paper

  • labor_rate_cost (float, optional) – labor cost in USD/person-hour. Defaults to 55.90, the number used in the Humbert OpEx model and adjusted to 2018 USD using CPI.

  • anode_cost_per_tonne (float, optional) – anode cost in USD/tonne. Defaults to 1660.716, the number used in the Humbert OpEx model and adjusted to 2018 USD using CPI.

  • annual_labor_hours_per_position (float | int, optional) – The labor hours per position per year. Defaults to 2000, the number used in the Humbert OpEx model.

electrolysis_type: str#
cost_year: int#
labor_rate_cost: float#
anode_cost_per_tonne: float#
annual_labor_hours_per_position: int | float#
class h2integrate.converters.iron.humbert_stinn_ewin_cost.HumbertStinnEwinCostComponent(**kwargs)#

OpenMDAO component for the Humbert/Stinn iron electrowinning cost model.

Default values for many inputs are set for 3 technology classes:

  • Aqueous Hydroxide Electrolysis (AHE)

  • Molten Salt Electrolysis (MSE)

  • Molten Oxide Electrolysis (MOE)

All of these values come from the SI spreadsheet for the Humbert paper that can be downloaded at doi.org/10.1007/s40831-024-00878-3 except for the default anode replacement interval. These are exposed to OpenMDAO for potential future optimization/sensitivity analysis.

We calculate both CapEx and OpEx in this component. CapEx is calculated using the Stinn & Allanore model. OpEx is calculated using the Humbert et al. model.

OpenMDAO Inputs
output_capacity#

Maximum annual iron production capacity in kg/year.

Type:

float

iron_ore_in#

Iron ore mass flow available in kg/h for each timestep.

Type:

array

electricity_in#

Electric power input available in kW for each timestep.

Type:

array

specific_energy_electrolysis#

The specific electrical energy consumption required to win pure iron (Fe) from iron ore - JUST the electrolysis step.

Type:

float

electrolysis_temp#

Electrolysis temperature (°C).

Type:

float

electron_moles#

Moles of electrons per mole of iron product.

Type:

float

current_density#

Current density (A/m²).

Type:

float

electrode_area#

Electrode area per cell (m²).

Type:

float

current_efficiency#

Current efficiency (dimensionless).

Type:

float

cell_voltage#

Cell operating voltage (V).

Type:

float

rectifier_lines#

Number of rectifier lines.

Type:

float

positions#

Labor rate (position-years/tonne).

Type:

float

NaOH_ratio#

Ratio of NaOH consumed to Fe produced.

Type:

float

CaCl2_ratio#

Ratio of CaCl2 consumed to Fe produced.

Type:

float

limestone_ratio#

Ratio of limestone consumed to Fe produced.

Type:

float

anode_ratio#

Ratio of anode mass to annual iron production.

Type:

float

anode_replacement_interval#

Replacement interval of anodes (years).

Type:

float

OpenMDAO Outputs
CapEx#

Total capital cost of the electrowinning plant (USD).

Type:

float

OpEx#

Yearly operating expenses in USD/year which do NOT depend on plant output.

Type:

float

VarOpEx#

Yearly operating expenses in USD/year which DO depend on plant output.

Type:

float

processing_capex#

Portion of the capex that is apportioned to preprocessing of ore.

Type:

float

electrolysis_capex#

Portion of the capex that is apportioned to electrolysis.

Type:

float

rectifier_capex#

Portion of the capex that is apportioned to rectifiers.

Type:

float

labor_opex#

Portion of the opex that is apportioned to labor.

Type:

float

NaOH_opex#

Portion of the opex that is apportioned to NaOH.

Type:

float

CaCl2_opex#

Portion of the opex that is apportioned to CaCl2.

Type:

float

limestone_opex#

Portion of the opex that is apportioned to limestone.

Type:

float

anode_opex#

Portion of the opex that is apportioned to anodes.

Type:

float

ore_opex#

Portion of the opex that is apportioned to ore.

Type:

float

elec_opex#

Portion of the opex that is apportioned to electricity.

Type:

float

initialize()#

Perform any one-time initialization run at instantiation.

setup()#

Declare inputs and outputs.

Available attributes:

name pathname comm options

compute(inputs, outputs, discrete_inputs, discrete_outputs)#

Computation for the OM component.

For a template class this is not implement and raises an error.