Class BiomassCharacterization
- All Implemented Interfaces:
Serializable
Converts proximate and ultimate analysis data into derived properties needed by gasifiers, pyrolysis reactors, and combustion models. Provides higher/lower heating values, stoichiometric air requirements, and a chemical formula representation.
Supports two input modes:
- Proximate analysis (dry basis): moisture, volatile matter, fixed carbon, ash — all in mass-percent.
- Ultimate analysis (dry-ash-free basis): C, H, O, N, S, Cl — all in mass-percent.
Heating values are estimated with the Channiwala-Parikh correlation when not supplied directly.
Usage example:
BiomassCharacterization wood = BiomassCharacterization.library("wood_chips");
double hhv = wood.getHHV(); // MJ/kg daf
BiomassCharacterization custom = new BiomassCharacterization("MyBiomass");
custom.setProximateAnalysis(8.0, 78.0, 14.0, 0.5);
custom.setUltimateAnalysis(50.0, 6.1, 43.0, 0.3, 0.05, 0.01);
custom.calculate();
- Version:
- 1.0
- Author:
- Even Solbraa
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleAsh content in weight percent (dry basis).private booleanWhether calculate() has been called.private doubleCarbon content in weight percent (daf).private StringEmpirical chemical formula string, e.g.private doubleChlorine content in weight percent (daf).private doubleFixed carbon in weight percent (dry basis).private doubleMolar H/C ratio.private doubleHigher heating value in MJ/kg (dry-ash-free).private booleanWhether HHV has been explicitly set by the user.private doubleHydrogen content in weight percent (daf).private doubleLower heating value in MJ/kg (dry-ash-free).private doubleMoisture content in weight percent (as-received basis).private static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate static final doubleprivate StringName or label for this biomass feedstock.private doubleNitrogen content in weight percent (daf).private doubleMolar O/C ratio.private doubleOxygen content in weight percent (daf).private static final longSerialization version UID.private doubleStoichiometric air requirement in kg-air / kg-fuel (dry basis).private doubleSulfur content in weight percent (daf).private doubleVolatile matter in weight percent (dry basis). -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new BiomassCharacterization with the given name. -
Method Summary
Modifier and TypeMethodDescriptionvoidCalculates all derived properties from the proximate and ultimate analysis.private voidBuilds the empirical chemical formula (normalised to 1 mole of carbon).private voidEstimates higher heating value using the Channiwala-Parikh correlation.private voidCalculates lower heating value from HHV.private voidCalculates the stoichiometric air requirement (kg air per kg fuel, dry basis).private voidEnsures calculate() has been called; calls it automatically if not.doublegetAsh()Returns the ash content (wt%, dry basis).doubleReturns the carbon content (wt%, daf).Returns the empirical chemical formula string (normalised to 1 C atom).doubleReturns the chlorine content (wt%, daf).doubleReturns the fixed carbon (wt%, dry basis).doubleReturns the molar H/C ratio.doublegetHHV()Returns the higher heating value (MJ/kg, daf).doubleReturns the hydrogen content (wt%, daf).doublegetLHV()Returns the lower heating value (MJ/kg, daf).Returns an unmodifiable list of supported library feedstock names.doubleReturns the moisture content (wt%, as-received).getName()Returns the feedstock name.doubleReturns the nitrogen content (wt%, daf).doubleReturns the molar O/C ratio.doubleReturns the oxygen content (wt%, daf).doubleReturns the stoichiometric air requirement (kg air / kg dry fuel).doubleReturns the sulfur content (wt%, daf).doubleReturns the volatile matter (wt%, dry basis).booleanReturns true ifcalculate()has been called.static BiomassCharacterizationReturns a pre-configured BiomassCharacterization for a common feedstock.voidsetHHV(double hhvMjPerKg) Sets the HHV directly (overrides the Channiwala-Parikh estimate).voidsetLHV(double lhvMjPerKg) Sets the LHV directly (overrides the calculated value).voidsetProximateAnalysis(double moisturePercent, double volatileMatterPercent, double fixedCarbonPercent, double ashPercent) Sets the proximate analysis on a dry basis.voidsetUltimateAnalysis(double carbonPercent, double hydrogenPercent, double oxygenPercent, double nitrogenPercent, double sulfurPercent, double chlorinePercent) Sets the ultimate analysis on a dry-ash-free basis.toMap()Returns a map summarising the characterization results.toString()
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
name
Name or label for this biomass feedstock. -
moisture
private double moistureMoisture content in weight percent (as-received basis). -
volatileMatter
private double volatileMatterVolatile matter in weight percent (dry basis). -
fixedCarbon
private double fixedCarbonFixed carbon in weight percent (dry basis). -
ash
private double ashAsh content in weight percent (dry basis). -
carbonWt
private double carbonWtCarbon content in weight percent (daf). -
hydrogenWt
private double hydrogenWtHydrogen content in weight percent (daf). -
oxygenWt
private double oxygenWtOxygen content in weight percent (daf). -
nitrogenWt
private double nitrogenWtNitrogen content in weight percent (daf). -
sulfurWt
private double sulfurWtSulfur content in weight percent (daf). -
chlorineWt
private double chlorineWtChlorine content in weight percent (daf). -
hhv
private double hhvHigher heating value in MJ/kg (dry-ash-free). -
hhvUserOverride
private boolean hhvUserOverrideWhether HHV has been explicitly set by the user. -
lhv
private double lhvLower heating value in MJ/kg (dry-ash-free). -
stoichiometricAir
private double stoichiometricAirStoichiometric air requirement in kg-air / kg-fuel (dry basis). -
chemicalFormula
Empirical chemical formula string, e.g. "CH1.46O0.64N0.005S0.001". -
hcRatio
private double hcRatioMolar H/C ratio. -
ocRatio
private double ocRatioMolar O/C ratio. -
calculated
private boolean calculatedWhether calculate() has been called. -
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:
-
MW_CL
private static final double MW_CL- See Also:
-
-
Constructor Details
-
BiomassCharacterization
Constructs a new BiomassCharacterization with the given name.- Parameters:
name- feedstock name
-
-
Method Details
-
setProximateAnalysis
public void setProximateAnalysis(double moisturePercent, double volatileMatterPercent, double fixedCarbonPercent, double ashPercent) Sets the proximate analysis on a dry basis.- Parameters:
moisturePercent- moisture content (wt%, as-received)volatileMatterPercent- volatile matter (wt%, dry basis)fixedCarbonPercent- fixed carbon (wt%, dry basis)ashPercent- ash content (wt%, dry basis)
-
setUltimateAnalysis
public void setUltimateAnalysis(double carbonPercent, double hydrogenPercent, double oxygenPercent, double nitrogenPercent, double sulfurPercent, double chlorinePercent) Sets the ultimate analysis on a dry-ash-free basis.- Parameters:
carbonPercent- carbon (wt%, daf)hydrogenPercent- hydrogen (wt%, daf)oxygenPercent- oxygen (wt%, daf)nitrogenPercent- nitrogen (wt%, daf)sulfurPercent- sulfur (wt%, daf)chlorinePercent- chlorine (wt%, daf)
-
calculate
public void calculate()Calculates all derived properties from the proximate and ultimate analysis. -
calculateHHV
private void calculateHHV()Estimates higher heating value using the Channiwala-Parikh correlation.HHV (MJ/kg, daf) = 0.3491 C + 1.1783 H + 0.1005 S - 0.1034 O - 0.0151 N - 0.0211 Ash_daf
-
calculateLHV
private void calculateLHV()Calculates lower heating value from HHV.LHV = HHV - 0.2183 * H (accounts for latent heat of water formed from hydrogen combustion)
-
calculateChemicalFormula
private void calculateChemicalFormula()Builds the empirical chemical formula (normalised to 1 mole of carbon). -
calculateStoichiometricAir
private void calculateStoichiometricAir()Calculates the stoichiometric air requirement (kg air per kg fuel, dry basis).Based on the stoichiometry: C + O2 -> CO2, H2 + 0.5 O2 -> H2O, S + O2 -> SO2, less oxygen already present in biomass, divided by oxygen mass fraction in air (0.233).
-
getName
-
getMoisture
public double getMoisture()Returns the moisture content (wt%, as-received).- Returns:
- moisture content in percent
-
getVolatileMatter
public double getVolatileMatter()Returns the volatile matter (wt%, dry basis).- Returns:
- volatile matter in percent
-
getFixedCarbon
public double getFixedCarbon()Returns the fixed carbon (wt%, dry basis).- Returns:
- fixed carbon in percent
-
getAsh
public double getAsh()Returns the ash content (wt%, dry basis).- Returns:
- ash content in percent
-
getCarbonWt
public double getCarbonWt()Returns the carbon content (wt%, daf).- Returns:
- carbon in percent
-
getHydrogenWt
public double getHydrogenWt()Returns the hydrogen content (wt%, daf).- Returns:
- hydrogen in percent
-
getOxygenWt
public double getOxygenWt()Returns the oxygen content (wt%, daf).- Returns:
- oxygen in percent
-
getNitrogenWt
public double getNitrogenWt()Returns the nitrogen content (wt%, daf).- Returns:
- nitrogen in percent
-
getSulfurWt
public double getSulfurWt()Returns the sulfur content (wt%, daf).- Returns:
- sulfur in percent
-
getChlorineWt
public double getChlorineWt()Returns the chlorine content (wt%, daf).- Returns:
- chlorine in percent
-
getHHV
public double getHHV()Returns the higher heating value (MJ/kg, daf).- Returns:
- HHV in MJ/kg
-
getLHV
public double getLHV()Returns the lower heating value (MJ/kg, daf).- Returns:
- LHV in MJ/kg
-
getStoichiometricAir
public double getStoichiometricAir()Returns the stoichiometric air requirement (kg air / kg dry fuel).- Returns:
- stoichiometric air in kg/kg
-
getChemicalFormula
Returns the empirical chemical formula string (normalised to 1 C atom).- Returns:
- chemical formula string
-
getHCRatio
public double getHCRatio()Returns the molar H/C ratio.- Returns:
- H/C ratio
-
getOCRatio
public double getOCRatio()Returns the molar O/C ratio.- Returns:
- O/C ratio
-
isCalculated
public boolean isCalculated()Returns true ifcalculate()has been called.- Returns:
- true if calculated
-
setHHV
public void setHHV(double hhvMjPerKg) Sets the HHV directly (overrides the Channiwala-Parikh estimate).- Parameters:
hhvMjPerKg- higher heating value in MJ/kg (daf)
-
setLHV
public void setLHV(double lhvMjPerKg) Sets the LHV directly (overrides the calculated value).- Parameters:
lhvMjPerKg- lower heating value in MJ/kg (daf)
-
ensureCalculated
private void ensureCalculated()Ensures calculate() has been called; calls it automatically if not. -
toMap
-
toString
-
library
Returns a pre-configured BiomassCharacterization for a common feedstock.Supported names (case-insensitive):
- wood_chips — softwood chips (pine/spruce)
- straw — wheat/barley straw
- corn_stover — dried maize residue
- bagasse — sugarcane bagasse
- sewage_sludge — dried municipal sewage sludge
- msw — municipal solid waste (generic)
- microalgae — generic Chlorella-type microalgae
- rice_husk — rice husk
- Parameters:
feedstockName- name of feedstock (case-insensitive)- Returns:
- configured BiomassCharacterization
- Throws:
IllegalArgumentException- if feedstock name is unknown
-
getLibraryFeedstocks
-