Class PyrolysisReactor
java.lang.Object
neqsim.util.NamedBaseClass
neqsim.process.SimulationBaseClass
neqsim.process.equipment.ProcessEquipmentBaseClass
neqsim.process.equipment.reactor.PyrolysisReactor
- All Implemented Interfaces:
Serializable, Runnable, ProcessEquipmentInterface, ProcessElementInterface, SimulationInterface, NamedInterface
Pyrolysis reactor for thermal decomposition of biomass in the absence of oxygen.
Models slow, fast, and flash pyrolysis by combining empirical product-distribution correlations
with constrained Gibbs equilibrium for the vapour phase. The reactor accepts a
BiomassCharacterization feedstock and produces three product streams:
- Pyrolysis gas — non-condensable gases (CO, CO2, H2, CH4)
- Bio-oil — condensable vapours modelled as a surrogate liquid stream
- Biochar — solid residue (fixed carbon + ash)
Pyrolysis Modes
| Mode | Temperature | Heating Rate | Residence Time | Main Product |
|---|---|---|---|---|
| SLOW | 300-500 C | low | minutes-hours | Biochar |
| FAST | 400-600 C | high | seconds | Bio-oil |
| FLASH | 450-650 C | very high | milliseconds | Bio-oil/Gas |
Product distribution is set by empirical yield fractions that the user can override. Default yields are estimated from published correlations based on pyrolysis mode and biomass volatile matter content.
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumPyrolysis mode enumeration. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleActual bio-oil yield used in last simulation (0-1).private doubleActual char yield used in last simulation (0-1).private doubleActual gas yield used in last simulation (0-1).private doubleBiochar HHV in MJ/kg.private StreamInterfaceBiochar outlet stream (solid residue).private BiomassCharacterizationThe biomass feedstock characterization.private doubleBiomass feed rate in kg/hr (dry basis).private doubleBio-oil HHV in MJ/kg.private StreamInterfaceBio-oil outlet stream (condensable vapours).private doubleBio-oil yield fraction (0-1).private doubleChar yield fraction (0-1).private doubleEnergy yield as fraction of feed energy in products.private doubleGas LHV in MJ/Nm3.private StreamInterfaceProduct gas outlet stream (non-condensable gases).private doubleGas yield fraction (0-1).private GibbsReactorInternal Gibbs reactor for vapour-phase equilibrium.private booleanWhether the reactor has been run.private doubleHeating rate in K/s (informational, affects default product yields).private static final org.apache.logging.log4j.LoggerLogger instance.private static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate PyrolysisReactor.PyrolysisModePyrolysis mode.private doublePyrolysis temperature in Kelvin.private doubleReactor pressure in bara.private static final longSerialization version UID.private booleanWhether user-supplied yields should be used.private doubleVapour residence time in seconds.Fields inherited from class ProcessEquipmentBaseClass
conditionAnalysisMessage, energyStream, hasController, isSolved, properties, reportFields inherited from class SimulationBaseClass
calcIdentifier, calculateSteadyState, timeFields inherited from class NamedBaseClass
name -
Constructor Summary
ConstructorsConstructorDescriptionPyrolysisReactor(String name) Creates a pyrolysis reactor with the given name. -
Method Summary
Modifier and TypeMethodDescriptionprivate voidCalculates performance metrics after simulation.private voidensureComponent(SystemInterface fluid, String componentName) Ensures a component exists in the fluid at a trace amount.private voidEstimates product yields based on pyrolysis mode and biomass properties when user values are not set.doubleReturns the actual bio-oil yield from the last run.doubleReturns the actual char yield from the last run.doubleReturns the actual gas yield from the last run.doubleReturns the biochar HHV in MJ/kg.Returns the biochar outlet stream.doubleReturns the bio-oil HHV in MJ/kg.Returns the bio-oil outlet stream.doubleReturns the energy yield as the fraction of feed energy recovered in all products.doubleReturns the gas LHV in MJ/Nm3.Returns the gas outlet stream.doubleGets the heating rate in K/s.Returns all inlet streams connected to this equipment.private doublegetMoleFraction(SystemInterface system, String componentName) Returns the mole fraction of a component in a system, or 0 if not present.Returns all outlet streams produced by this equipment.Gets the pyrolysis mode.doubleGets the pyrolysis temperature in Kelvin.doubleGets the reactor pressure in bara.Returns a map of key results from the pyrolysis simulation.doubleGets the vapour residence time in seconds.voidRuns the pyrolysis reactor simulation.voidsetBiomass(BiomassCharacterization biomass, double feedRateKgPerHr) Sets the biomass feedstock and feed rate.voidsetHeatingRate(double heatingRateKPerS) Sets the heating rate in K/s.voidsetProductYields(double charYieldFrac, double bioOilYieldFrac, double gasYieldFrac) Sets product yield fractions manually.voidSets the pyrolysis mode.voidsetPyrolysisTemperature(double temperatureK) Sets the pyrolysis temperature in Kelvin.voidsetPyrolysisTemperature(double temperature, String unit) Sets the pyrolysis temperature with unit specification.voidsetReactorPressure(double pressureBara) Sets the reactor pressure in bara.voidsetVapourResidenceTime(double seconds) Sets the vapour residence time in seconds.toJson()Returns a JSON string with the pyrolysis results.toString()Methods inherited from class ProcessEquipmentBaseClass
addCapacityConstraint, addController, copy, displayResult, equals, getAvailableMargin, getAvailableMarginPercent, getBottleneckConstraint, getCapacityConstraints, getConditionAnalysisMessage, getConstraintEvaluationReport, getController, getController, getControllers, getEffectiveCapacityFactor, getEnergyStream, getEntropyProduction, getExergyChange, getFailureMode, getMassBalance, getMassBalance, getMaxUtilization, getMaxUtilizationPercent, getMechanicalDesign, getMinimumFlow, getPressure, getPressure, getProperty, getReferenceDesignation, getReport_json, getResultTable, getSpecification, getTemperature, getTemperature, getThermoSystem, getUtilizationSummary, hashCode, initElectricalDesign, initializeDefaultConstraints, initInstrumentDesign, initMechanicalDesign, isActive, isActive, isCapacityAnalysisEnabled, isCapacityExceeded, isFailed, isHardLimitExceeded, isNearCapacityLimit, isSetEnergyStream, reportResults, restoreFromFailure, run_step, runConditionAnalysis, setCapacityAnalysisEnabled, setController, setEnergyStream, setEnergyStream, setFailureMode, setFlowValveController, setMinimumFlow, setPressure, setReferenceDesignation, setRegulatorOutSignal, setSpecification, setTemperature, simulateDegradedOperation, simulateTrip, solved, toJsonMethods inherited from class SimulationBaseClass
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTimeMethods inherited from class NamedBaseClass
getName, getTagNumber, setName, setTagNumberMethods inherited from interface NamedInterface
getName, getTagName, getTagNumber, setName, setTagName, setTagNumberMethods inherited from interface ProcessEquipmentInterface
getCapacityDuty, getCapacityMax, getElectricalDesign, getEquipmentState, getExergyChange, getExergyDestruction, getExergyDestruction, getFluid, getInstrumentDesign, getOperatingEnvelopeViolation, getOutletFlowRate, getOutletPressure, getOutletTemperature, getReferenceDesignationString, getRestCapacity, getSimulationValidationErrors, isSimulationValid, isWithinOperatingEnvelope, needRecalculation, validateSetupMethods inherited from interface SimulationInterface
getCalculateSteadyState, getCalculationIdentifier, getTime, increaseTime, isRunInSteps, run, run_step, runTransient, runTransient, setCalculateSteadyState, setCalculationIdentifier, setRunInSteps, setTime
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
private static final org.apache.logging.log4j.Logger loggerLogger instance. -
biomass
The biomass feedstock characterization. -
biomassFeedRateKgPerHr
private double biomassFeedRateKgPerHrBiomass feed rate in kg/hr (dry basis). -
pyrolysisMode
Pyrolysis mode. -
pyrolysisTemperature
private double pyrolysisTemperaturePyrolysis temperature in Kelvin. -
reactorPressure
private double reactorPressureReactor pressure in bara. -
heatingRate
private double heatingRateHeating rate in K/s (informational, affects default product yields). -
vapourResidenceTime
private double vapourResidenceTimeVapour residence time in seconds. -
charYield
private double charYieldChar yield fraction (0-1). Overrides automatic estimate if set. -
bioOilYield
private double bioOilYieldBio-oil yield fraction (0-1). Overrides automatic estimate if set. -
gasYield
private double gasYieldGas yield fraction (0-1). Overrides automatic estimate if set. -
userYieldsSet
private boolean userYieldsSetWhether user-supplied yields should be used. -
gibbsReactor
Internal Gibbs reactor for vapour-phase equilibrium. -
gasOutStream
Product gas outlet stream (non-condensable gases). -
bioOilOutStream
Bio-oil outlet stream (condensable vapours). -
biocharOutStream
Biochar outlet stream (solid residue). -
actualCharYield
private double actualCharYieldActual char yield used in last simulation (0-1). -
actualBioOilYield
private double actualBioOilYieldActual bio-oil yield used in last simulation (0-1). -
actualGasYield
private double actualGasYieldActual gas yield used in last simulation (0-1). -
bioOilHHV
private double bioOilHHVBio-oil HHV in MJ/kg. -
biocharHHV
private double biocharHHVBiochar HHV in MJ/kg. -
gasLHVMjPerNm3
private double gasLHVMjPerNm3Gas LHV in MJ/Nm3. -
energyYield
private double energyYieldEnergy yield as fraction of feed energy in products. -
hasRun
private boolean hasRunWhether the reactor has been run. -
MW_C
private static final double MW_C- See Also:
-
MW_H
private static final double MW_H- See Also:
-
MW_O
private static final double MW_O- See Also:
-
MW_N
private static final double MW_N- See Also:
-
MW_S
private static final double MW_S- See Also:
-
-
Constructor Details
-
PyrolysisReactor
Creates a pyrolysis reactor with the given name.- Parameters:
name- equipment name
-
-
Method Details
-
setBiomass
Sets the biomass feedstock and feed rate.- Parameters:
biomass- biomass characterizationfeedRateKgPerHr- dry biomass feed rate in kg/hr
-
setPyrolysisMode
Sets the pyrolysis mode.- Parameters:
mode- the pyrolysis mode
-
getPyrolysisMode
Gets the pyrolysis mode.- Returns:
- pyrolysis mode
-
setPyrolysisTemperature
public void setPyrolysisTemperature(double temperatureK) Sets the pyrolysis temperature in Kelvin.- Parameters:
temperatureK- temperature in Kelvin
-
setPyrolysisTemperature
Sets the pyrolysis temperature with unit specification.- Parameters:
temperature- temperature valueunit- unit string ("K", "C", "F")
-
getPyrolysisTemperature
public double getPyrolysisTemperature()Gets the pyrolysis temperature in Kelvin.- Returns:
- pyrolysis temperature in K
-
setReactorPressure
public void setReactorPressure(double pressureBara) Sets the reactor pressure in bara.- Parameters:
pressureBara- reactor pressure
-
getReactorPressure
public double getReactorPressure()Gets the reactor pressure in bara.- Returns:
- reactor pressure
-
setHeatingRate
public void setHeatingRate(double heatingRateKPerS) Sets the heating rate in K/s.- Parameters:
heatingRateKPerS- heating rate
-
getHeatingRate
public double getHeatingRate()Gets the heating rate in K/s.- Returns:
- heating rate
-
setVapourResidenceTime
public void setVapourResidenceTime(double seconds) Sets the vapour residence time in seconds.- Parameters:
seconds- vapour residence time
-
getVapourResidenceTime
public double getVapourResidenceTime()Gets the vapour residence time in seconds.- Returns:
- vapour residence time in seconds
-
setProductYields
public void setProductYields(double charYieldFrac, double bioOilYieldFrac, double gasYieldFrac) Sets product yield fractions manually. All three must sum to approximately 1.0.- Parameters:
charYieldFrac- char yield fraction (0-1)bioOilYieldFrac- bio-oil yield fraction (0-1)gasYieldFrac- gas yield fraction (0-1)
-
getGasOutStream
Returns the gas outlet stream.- Returns:
- gas outlet stream, or null if not yet run
-
getBioOilOutStream
Returns the bio-oil outlet stream.- Returns:
- bio-oil outlet stream, or null if not yet run
-
getBiocharOutStream
Returns the biochar outlet stream.- Returns:
- biochar outlet stream, or null if not yet run
-
getActualCharYield
public double getActualCharYield()Returns the actual char yield from the last run.- Returns:
- char yield fraction (0-1)
-
getActualBioOilYield
public double getActualBioOilYield()Returns the actual bio-oil yield from the last run.- Returns:
- bio-oil yield fraction (0-1)
-
getActualGasYield
public double getActualGasYield()Returns the actual gas yield from the last run.- Returns:
- gas yield fraction (0-1)
-
getBioOilHHV
public double getBioOilHHV()Returns the bio-oil HHV in MJ/kg.- Returns:
- bio-oil HHV
-
getBiocharHHV
public double getBiocharHHV()Returns the biochar HHV in MJ/kg.- Returns:
- biochar HHV
-
getGasLHVMjPerNm3
public double getGasLHVMjPerNm3()Returns the gas LHV in MJ/Nm3.- Returns:
- gas LHV
-
getEnergyYield
public double getEnergyYield()Returns the energy yield as the fraction of feed energy recovered in all products.- Returns:
- energy yield (0-1)
-
getOutletStreams
Returns all outlet streams produced by this equipment. Subclasses override to report their specific outlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Returns:
- unmodifiable list of outlet streams (empty by default)
-
getInletStreams
Returns all inlet streams connected to this equipment. Subclasses override to report their specific inlets. Used by graph builders, DEXPI export, and auto-instrumentation to discover topology withoutinstanceofchecks.- Returns:
- unmodifiable list of inlet streams (empty by default)
-
run
-
estimateProductYields
private void estimateProductYields()Estimates product yields based on pyrolysis mode and biomass properties when user values are not set.Default correlations are derived from published literature averages:
- Slow: char ~ 35%, oil ~ 30%, gas ~ 35%
- Fast: char ~ 15-20%, oil ~ 50-65%, gas ~ 15-25%
- Flash: char ~ 10-15%, oil ~ 55-70%, gas ~ 15-25%
Temperature adjustments: higher temperature shifts yield from char toward gas.
-
calculatePerformanceMetrics
private void calculatePerformanceMetrics()Calculates performance metrics after simulation. -
getMoleFraction
Returns the mole fraction of a component in a system, or 0 if not present.- Parameters:
system- the thermo systemcomponentName- the component name- Returns:
- mole fraction
-
ensureComponent
Ensures a component exists in the fluid at a trace amount.- Parameters:
fluid- the system interfacecomponentName- the component name
-
getResults
-
toJson
Returns a JSON string with the pyrolysis results.- Specified by:
toJsonin interfaceProcessEquipmentInterface- Overrides:
toJsonin classProcessEquipmentBaseClass- Returns:
- JSON results string
-
toString
-