Class CO2Electrolyzer

All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, SimulationInterface, NamedInterface

public class CO2Electrolyzer extends ProcessEquipmentBaseClass
Electrochemical reactor converting CO₂ rich feeds to value added products.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • logger

      private static final org.apache.logging.log4j.Logger logger
    • FARADAY_CONSTANT

      private static final double FARADAY_CONSTANT
      See Also:
    • inletStream

      private StreamInterface inletStream
    • gasProductStream

      private Stream gasProductStream
    • liquidProductStream

      private Stream liquidProductStream
    • gibbsReactor

      private GibbsReactor gibbsReactor
    • gasSelectivities

      private final Map<String,Double> gasSelectivities
    • liquidSelectivities

      private final Map<String,Double> liquidSelectivities
    • faradaicEfficiencies

      private final Map<String,Double> faradaicEfficiencies
    • electronsPerProduct

      private final Map<String,Double> electronsPerProduct
    • co2ComponentName

      private String co2ComponentName
    • co2Conversion

      private double co2Conversion
    • cellVoltage

      private double cellVoltage
    • currentEfficiency

      private double currentEfficiency
    • useSelectivityModel

      private boolean useSelectivityModel
  • Constructor Details

    • CO2Electrolyzer

      public CO2Electrolyzer(String name)
      Create an empty CO2Electrolyzer.
      Parameters:
      name - unit name
    • CO2Electrolyzer

      public CO2Electrolyzer(String name, StreamInterface inlet)
      Create a CO2Electrolyzer tied to an inlet stream.
      Parameters:
      name - unit name
      inlet - inlet stream
  • Method Details

    • initializeDefaultElectronNumbers

      private void initializeDefaultElectronNumbers()
    • setInletStream

      public final void setInletStream(StreamInterface inlet)
      Attach the inlet stream and create product streams.
      Parameters:
      inlet - inlet stream
    • getGasProductStream

      public StreamInterface getGasProductStream()
      Gas product stream.
      Returns:
      gas product stream
    • getLiquidProductStream

      public StreamInterface getLiquidProductStream()
      Get liquid product stream.
      Returns:
      liquid product stream
    • getMassBalance

      public double getMassBalance(String unit)

      getMassBalance.

      Specified by:
      getMassBalance in interface ProcessEquipmentInterface
      Overrides:
      getMassBalance in class ProcessEquipmentBaseClass
      Parameters:
      unit - a String object
      Returns:
      a double
    • setUseSelectivityModel

      public void setUseSelectivityModel(boolean useSelectivity)
      Toggle between analytical selectivity split or equilibrium Gibbs reactor.
      Parameters:
      useSelectivity - true for analytical selectivity calculations
    • setGasProductSelectivity

      public void setGasProductSelectivity(String component, double selectivity)
      Selectivity for gas products (moles per mole converted CO₂).
      Parameters:
      component - component name
      selectivity - selectivity value
    • setLiquidProductSelectivity

      public void setLiquidProductSelectivity(String component, double selectivity)
      Selectivity for liquid products (moles per mole converted CO₂).
      Parameters:
      component - component name
      selectivity - selectivity value
    • setProductFaradaicEfficiency

      public void setProductFaradaicEfficiency(String component, double efficiency)
      Faradaic efficiency for a product (fraction between 0 and 1).
      Parameters:
      component - component name
      efficiency - faradaic efficiency
    • setElectronsPerMoleProduct

      public void setElectronsPerMoleProduct(String component, double electrons)
      Electron requirement per mole of product.
      Parameters:
      component - component name
      electrons - electrons per mole
    • setCO2Conversion

      public void setCO2Conversion(double conversion)
      Overall CO₂ conversion fraction.
      Parameters:
      conversion - conversion (0-1)
    • setCellVoltage

      public void setCellVoltage(double voltage)
      Set the cell voltage used for duty estimation.
      Parameters:
      voltage - cell voltage in V
    • setCurrentEfficiency

      public void setCurrentEfficiency(double efficiency)
      Set the current efficiency (fraction).
      Parameters:
      efficiency - current efficiency
    • setCo2ComponentName

      public void setCo2ComponentName(String componentName)
      Set the CO₂ component name.
      Parameters:
      componentName - component name
    • createSystem

      private SystemInterface createSystem(Map<String,Double> componentMoles, double temperature, double pressure)
    • distributeBySelectivity

      private double distributeBySelectivity(Map<String,Double> gasMoles, Map<String,Double> liquidMoles)
    • runGibbsCalculation

      private double runGibbsCalculation(Map<String,Double> gasMoles, Map<String,Double> liquidMoles, UUID id)
    • collectPhaseMoles

      private void collectPhaseMoles(SystemInterface system, PhaseType phaseType, Map<String,Double> accumulator)
    • ensureSpeciesPresent

      private void ensureSpeciesPresent(SystemInterface system)
    • calculateElectronUsage

      private double calculateElectronUsage(String component, double productMoles)
    • getInletComponentFlow

      private double getInletComponentFlow(String componentName)
    • updateProductStream

      private void updateProductStream(Stream productStream, Map<String,Double> componentMoles, double temperature, double pressure, UUID id)
    • updateEnergyConsumption

      private void updateEnergyConsumption(double electronMolesPerSecond)
    • run

      public void run(UUID id)
      Description copied from interface: SimulationInterface

      In this method all thermodynamic and unit operations will be calculated in a steady state calculation.

      Parameters:
      id - UUID