{
“cells”: [
{

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“# Stoichiometric reactions”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Thermosteam provides array based objects that can model stoichiometric reactions given a conversion.”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“### Single reaction”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Create a Reaction object based on the transesterification reaction:n”, “n”, “|Reaction|Reactant|% Converted|n”, “|---||---|n”, “|Lipid + 3Methanol -> 3Biodiesel + Glycerol|Lipid|90|n”

]

}, {

“cell_type”: “code”, “execution_count”: 1, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“Reaction (by mol):n”, ” stoichiometry reactant X[%]n”, ” 3 Methanol + Lipid -> 3 Biodiesel + 1 Glycerol Lipid 90.00n”

]

}

], “source”: [

“import thermosteam as tmon”, “from biorefineries import lipidcane as lcn”, “n”, “tmo.settings.set_thermo(lc.chemicals)n”, “transesterification = tmo.Reaction(n”, ” ‘Lipid + Methanol -> Biodiesel + Glycerol’, # Reactionn”, ” correct_atomic_balance=True, # Corrects stoichiometric coefficients by atomic balancen”, ” reactant=’Lipid’, # Limiting reactantn”, ” X=0.9, # Conversionn”, “)n”, “transesterification.show()”

]

}, {

“cell_type”: “code”, “execution_count”: 2, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“CompiledChemicals([Water, Ethanol, Glucose, Sucrose, H3PO4, P4O10, CO2, Octane, O2, CH4, Ash, Cellulose, Hemicellulose, Flocculant, Lignin, Solids, Yeast, CaO, Biodiesel, Methanol, Glycerol, HCl, NaOH, NaOCH3, Lipid])n”

]

}

], “source”: [

“transesterification.chemicals”

]

}, {

“cell_type”: “code”, “execution_count”: 3, “metadata”: {}, “outputs”: [

{
“data”: {
“text/plain”: [

“array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,n”, ” 0., 0., 0., 0., 0., 3., -3., 1., 0., 0., 0., -1.])”

]

}, “execution_count”: 3, “metadata”: {}, “output_type”: “execute_result”

}

], “source”: [

“transesterification.stoichiometry”

]

}, {

“cell_type”: “code”, “execution_count”: 4, “metadata”: {}, “outputs”: [

{
“data”: {
“text/plain”: [

“‘Lipid’”

]

}, “execution_count”: 4, “metadata”: {}, “output_type”: “execute_result”

}

], “source”: [

“transesterification.reactant”

]

}, {

“cell_type”: “code”, “execution_count”: 5, “metadata”: {}, “outputs”: [

{
“data”: {
“text/plain”: [

“0.9”

]

}, “execution_count”: 5, “metadata”: {}, “output_type”: “execute_result”

}

], “source”: [

“transesterification.X”

]

}, {

“cell_type”: “code”, “execution_count”: 6, “metadata”: {}, “outputs”: [

{
“data”: {
“text/plain”: [

“51641.999999999585”

]

}, “execution_count”: 6, “metadata”: {}, “output_type”: “execute_result”

}

], “source”: [

“transesterification.dH # Heat of reaction J / mol-reactant (accounts for conversion); latent heats are not included”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“When a Reaction object is called with a stream, it updates the material data to reflect the reaction:”

]

}, {

“cell_type”: “code”, “execution_count”: 7, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE REACTIONn”, “Stream: s1n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Methanol 600n”, ” Lipid 100n”, “AFTER REACTIONn”, “Stream: s1n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Biodiesel 270n”, ” Methanol 330n”, ” Glycerol 90n”, ” Lipid 10n”

]

}

], “source”: [

“feed = tmo.Stream(Lipid=100, Methanol=600)n”, “print(‘BEFORE REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed molar flow raten”, “transesterification(feed)n”, “n”, “print(‘AFTER REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Let’s change the basis of the reaction:”

]

}, {

“cell_type”: “code”, “execution_count”: 8, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“Reaction (by wt):n”, ” stoichiometry reactant X[%]n”, ” 0.109 Methanol + Lipid -> 1 Biodiesel + 0.104 Glycerol Lipid 90.00n”

]

}

], “source”: [

“transesterification.basis = ‘wt’n”, “transesterification.show()”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Notice that the stoichiometry also adjusted. If we react a stream, we should see the same result, regardless of basis:”

]

}, {

“cell_type”: “code”, “execution_count”: 9, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE REACTIONn”, “Stream: s2n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Methanol 600n”, ” Lipid 100n”, “AFTER REACTIONn”, “Stream: s2n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Biodiesel 270n”, ” Methanol 330n”, ” Glycerol 90n”, ” Lipid 10n”

]

}

], “source”: [

“feed = tmo.Stream(Lipid=100, Methanol=600)n”, “print(‘BEFORE REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed molar flow raten”, “transesterification(feed)n”, “n”, “print(‘AFTER REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“The heat of reaction is now in units of J/kg-reactant:”

]

}, {

“cell_type”: “code”, “execution_count”: 10, “metadata”: {}, “outputs”: [

{
“data”: {
“text/plain”: [

“58.32406836499681”

]

}, “execution_count”: 10, “metadata”: {}, “output_type”: “execute_result”

}

], “source”: [

“transesterification.dH # Accounts for conversion too”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Note that these reactions are carried out isothermally, but it is also possible to do so adiabatically:”

]

}, {

“cell_type”: “code”, “execution_count”: 11, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE REACTIONn”, “Stream: s3n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Water 5.55n”, ” Glucose 0.0555n”, “AFTER REACTIONn”, “Stream: s3n”, ” phase: ‘l’, T: 306.19 K, P: 101325 Pan”, ” flow (kmol/hr): Water 5.55n”, ” Ethanol 0.0999n”, ” Glucose 0.00555n”, ” CO2 0.0999n”

]

}

], “source”: [

“feed = tmo.Stream(Glucose=10, H2O=100, units=’kg/hr’)n”, “print(‘BEFORE REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed adiabatically (temperature should increase)n”, “fermentation = tmo.Reaction(‘Glucose + O2 -> Ethanol + CO2’,n”, ” reactant=’Glucose’, X=0.9,n”, ” correct_atomic_balance=True)n”, “fermentation.adiabatic_reaction(feed)n”, “n”, “print(‘AFTER REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Phases changes can be included in the reaction: “

]

}, {

“cell_type”: “code”, “execution_count”: 12, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“Reaction (by mol):n”, ” stoichiometry reactant X[%]n”, ” Glucose,l -> 2 CO2,g + 2 Ethanol,l Glucose,l 90.00n”

]

}

], “source”: [

“fermentation = tmo.Reaction(‘Glucose,l -> Ethanol,l + CO2,g’,n”, ” reactant=’Glucose’, X=0.9,n”, ” correct_atomic_balance=True)n”, “fermentation.show()”

]

}, {

“cell_type”: “code”, “execution_count”: 13, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE ADIABATIC REACTIONn”, “MultiStream: s4n”, ” phases: (‘g’, ‘l’), T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): (l) Water 5.551n”, ” Glucose 0.05551n”, “AFTER ADIABATIC REACTIONn”, “MultiStream: s4n”, ” phases: (‘g’, ‘l’), T: 306.19 K, P: 101325 Pan”, ” flow (kmol/hr): (g) CO2 0.09991n”, ” (l) Water 5.551n”, ” Ethanol 0.09991n”, ” Glucose 0.005551n”

]

}

], “source”: [

“feed = tmo.Stream(Glucose=10, H2O=100, units=’kg/hr’)n”, “feed.phases = ‘gl’n”, “print(‘BEFORE ADIABATIC REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed adiabatically (temperature should increase)n”, “fermentation.adiabatic_reaction(feed)n”, “n”, “print(‘AFTER ADIABATIC REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Lastly, when working with positive ions, simply pass a dictionary of stoichiometric coefficients instead of the equation:”

]

}, {

“cell_type”: “code”, “execution_count”: 14, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“Reaction (by mol):n”, ” stoichiometry reactant X[%]n”, ” NaCl -> Na+ + Cl- NaCl 100.00n”

]

}

], “source”: [

“# First let’s define a new set of chemicalsn”, “chemicals = NaCl, SodiumIon, ChlorideIon = tmo.Chemicals([‘NaCl’, ‘Na+’, ‘Cl-‘])n”, “n”, “# We set the state to completely ignore other possible phasesn”, “NaCl.at_state(‘s’)n”, “SodiumIon.at_state(‘l’)n”, “ChlorideIon.at_state(‘l’)n”, “n”, “# Molar volume doesn’t matter in this scenario, but itsn”, “# required to compile the chemicals. We can assume n”, “# a very low volume since its in solution.n”, “NaCl.V.add_model(1e-6)n”, “SodiumIon.V.add_model(1e-6)n”, “ChlorideIon.V.add_model(1e-6)n”, “n”, “# We can pass a Chemicals object to not have to override n”, “# the lipidcane chemicals we set earlier.n”, “dissociation = tmo.Reaction({‘NaCl’:-1, ‘Na+’:1, ‘Cl-’: 1},n”, ” reactant=’NaCl’, X=1.,n”, ” chemicals=chemicals)n”, “dissociation.show()”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“### Parallel reactions”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Create a ParallelReaction from Reaction objects:”

]

}, {

“cell_type”: “code”, “execution_count”: 15, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ParallelReaction (by mol):n”, “index stoichiometry reactant X[%]n”, “[0] Water + Glucan -> Glucose Glucan 9.90n”, “[1] Water + Glucan -> GlucoseOligomer Glucan 0.30n”, “[2] Glucan -> 2 Water + HMF Glucan 0.30n”, “[3] Sucrose -> 2 Water + HMF + Glucose Sucrose 0.30n”, “[4] Water + Xylan -> Xylose Xylan 90.00n”, “[5] Water + Xylan -> XyloseOligomer Xylan 0.24n”, “[6] Xylan -> 2 Water + Furfural Xylan 0.50n”, “[7] Acetate -> AceticAcid Acetate 100.00n”, “[8] Lignin -> SolubleLignin Lignin 0.50n”

]

}

], “source”: [

“from biorefineries import cornstover as csn”, “n”, “# Set chemicals as defined in [1-4]n”, “tmo.settings.set_thermo(cs.chemicals)n”, “n”, “# Create reactionsn”, “pretreatment_parallel_rxn = tmo.ParallelReaction([n”, ” # Reaction definition Reactant Conversionn”, ” tmo.Reaction(‘Glucan + H2O -> Glucose’, ‘Glucan’, 0.0990),n”, ” tmo.Reaction(‘Glucan + H2O -> GlucoseOligomer’, ‘Glucan’, 0.0030),n”, ” tmo.Reaction(‘Glucan -> HMF + 2 H2O’, ‘Glucan’, 0.0030),n”, ” tmo.Reaction(‘Sucrose -> HMF + Glucose + 2H2O’, ‘Sucrose’, 0.0030),n”, ” tmo.Reaction(‘Xylan + H2O -> Xylose’, ‘Xylan’, 0.9000),n”, ” tmo.Reaction(‘Xylan + H2O -> XyloseOligomer’, ‘Xylan’, 0.0024),n”, ” tmo.Reaction(‘Xylan -> Furfural + 2 H2O’, ‘Xylan’, 0.0050),n”, ” tmo.Reaction(‘Acetate -> AceticAcid’, ‘Acetate’, 1.0000),n”, ” tmo.Reaction(‘Lignin -> SolubleLignin’, ‘Lignin’, 0.0050)])n”, “n”, “pretreatment_parallel_rxn.show()”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Model the reaction:”

]

}, {

“cell_type”: “code”, “execution_count”: 16, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE REACTIONn”, “Stream: s5n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Water 2.07e+05n”, ” Ethanol 18n”, ” Furfural 172n”, ” H2SO4 1.84e+03n”, ” Sucrose 1.87n”, ” Extract 67.8n”, ” Acetate 25.1n”, ” Ash 4.11e+03n”, ” Lignin 1.31e+04n”, ” Protein 108n”, ” Glucan 180n”, ” Xylan 123n”, ” Arabinan 9.02n”, ” Mannan 3.08n”, “AFTER REACTIONn”, “Stream: s5n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Water 2.07e+05n”, ” Ethanol 18n”, ” AceticAcid 25.1n”, ” Furfural 173n”, ” H2SO4 1.84e+03n”, ” HMF 0.546n”, ” Glucose 17.8n”, ” Xylose 111n”, ” Sucrose 1.86n”, ” Extract 67.8n”, ” Ash 4.11e+03n”, ” Lignin 1.3e+04n”, ” SolubleLignin 65.5n”, ” GlucoseOligomer 0.54n”, ” XyloseOligomer 0.295n”, ” Protein 108n”, ” Glucan 161n”, ” Xylan 11.4n”, ” Arabinan 9.02n”, ” Mannan 3.08n”

]

}

], “source”: [

“feed = tmo.Stream(H2O=2.07e+05,n”, ” Ethanol=18,n”, ” H2SO4=1.84e+03,n”, ” Sucrose=1.87,n”, ” Extract=67.8,n”, ” Acetate=25.1,n”, ” Ash=4.11e+03,n”, ” Lignin=1.31e+04,n”, ” Protein=108,n”, ” Glucan=180,n”, ” Xylan=123,n”, ” Arabinan=9.02,n”, ” Mannan=3.08,n”, ” Furfural=172)n”, “print(‘BEFORE REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed molar flow raten”, “pretreatment_parallel_rxn(feed)n”, “n”, “print(‘AFTER REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“### Reactions in series”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“SeriesReaction objects work the same way, but in series:”

]

}, {

“cell_type”: “code”, “execution_count”: 17, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“SeriesReaction (by mol):n”, “index stoichiometry reactant X[%]n”, “[0] Water + Glucan -> Glucose Glucan 9.90n”, “[1] Water + Glucan -> GlucoseOligomer Glucan 0.30n”, “[2] Glucan -> 2 Water + HMF Glucan 0.30n”, “[3] Sucrose -> 2 Water + HMF + Glucose Sucrose 0.30n”, “[4] Water + Xylan -> Xylose Xylan 90.00n”, “[5] Water + Xylan -> XyloseOligomer Xylan 0.24n”, “[6] Xylan -> 2 Water + Furfural Xylan 0.50n”, “[7] Acetate -> AceticAcid Acetate 100.00n”, “[8] Lignin -> SolubleLignin Lignin 0.50n”

]

}

], “source”: [

“pretreatment_series_rxn = tmo.SeriesReaction(pretreatment_parallel_rxn)n”, “pretreatment_series_rxn.show()”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Net conversion in parallel:”

]

}, {

“cell_type”: “code”, “execution_count”: 18, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ChemicalIndexer:n”, ” Sucrose 0.003n”, ” Acetate 1n”, ” Lignin 0.005n”, ” Glucan 0.105n”, ” Xylan 0.9074n”

]

}

], “source”: [

“pretreatment_parallel_rxn.X_net”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Net conversion in series:”

]

}, {

“cell_type”: “code”, “execution_count”: 19, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ChemicalIndexer:n”, ” Sucrose 0.003n”, ” Acetate 1n”, ” Lignin 0.005n”, ” Glucan 0.1044n”, ” Xylan 0.9007n”

]

}

], “source”: [

“# Notice how the conversion isn”, “# slightly lower for some reactantsn”, “pretreatment_series_rxn.X_net”

]

}, {

“cell_type”: “code”, “execution_count”: 20, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“BEFORE REACTIONn”, “Stream: s6n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Water 2.07e+05n”, ” Ethanol 18n”, ” Furfural 172n”, ” H2SO4 1.84e+03n”, ” Sucrose 1.87n”, ” Extract 67.8n”, ” Acetate 25.1n”, ” Ash 4.11e+03n”, ” Lignin 1.31e+04n”, ” Protein 108n”, ” Glucan 180n”, ” Xylan 123n”, ” Arabinan 9.02n”, ” Mannan 3.08n”, “AFTER REACTIONn”, “Stream: s6n”, ” phase: ‘l’, T: 298.15 K, P: 101325 Pan”, ” flow (kmol/hr): Water 2.07e+05n”, ” Ethanol 18n”, ” AceticAcid 25.1n”, ” Furfural 172n”, ” H2SO4 1.84e+03n”, ” HMF 0.491n”, ” Glucose 17.8n”, ” Xylose 111n”, ” Sucrose 1.86n”, ” Extract 67.8n”, ” Ash 4.11e+03n”, ” Lignin 1.3e+04n”, ” SolubleLignin 65.5n”, ” GlucoseOligomer 0.487n”, ” XyloseOligomer 0.0295n”, ” Protein 108n”, ” Glucan 161n”, ” Xylan 12.2n”, ” Arabinan 9.02n”, ” Mannan 3.08n”

]

}

], “source”: [

“feed = tmo.Stream(H2O=2.07e+05,n”, ” Ethanol=18,n”, ” H2SO4=1.84e+03,n”, ” Sucrose=1.87,n”, ” Extract=67.8,n”, ” Acetate=25.1,n”, ” Ash=4.11e+03,n”, ” Lignin=1.31e+04,n”, ” Protein=108,n”, ” Glucan=180,n”, ” Xylan=123,n”, ” Arabinan=9.02,n”, ” Mannan=3.08,n”, ” Furfural=172)n”, “print(‘BEFORE REACTION’)n”, “feed.show(N=100)n”, “n”, “# React feed molar flow raten”, “pretreatment_series_rxn(feed)n”, “n”, “print(‘AFTER REACTION’)n”, “feed.show(N=100)”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“### Indexing reactions”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Both SeriesReaction, and ParallelReaction objects are indexable:”

]

}, {

“cell_type”: “code”, “execution_count”: 21, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ParallelReaction (by mol):n”, “index stoichiometry reactant X[%]n”, “[0] Water + Glucan -> Glucose Glucan 9.90n”, “[1] Water + Glucan -> GlucoseOligomer Glucan 0.30n”

]

}

], “source”: [

“# Index a slicen”, “pretreatment_parallel_rxn[0:2].show()”

]

}, {

“cell_type”: “code”, “execution_count”: 22, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ReactionItem (by mol):n”, ” stoichiometry reactant X[%]n”, ” Water + Glucan -> Glucose Glucan 9.90n”

]

}

], “source”: [

“# Index an itemn”, “pretreatment_parallel_rxn[0].show()”

]

}, {

“cell_type”: “code”, “execution_count”: 23, “metadata”: {}, “outputs”: [], “source”: [

“# Change conversion through the itemn”, “pretreatment_parallel_rxn[0].X = 0.10”

]

}, {

“cell_type”: “code”, “execution_count”: 24, “metadata”: {}, “outputs”: [

{

“name”: “stdout”, “output_type”: “stream”, “text”: [

“ParallelReaction (by mol):n”, “index stoichiometry reactant X[%]n”, “[0] Water + Glucan -> Glucose Glucan 10.00n”, “[1] Water + Glucan -> GlucoseOligomer Glucan 0.30n”, “[2] Glucan -> 2 Water + HMF Glucan 0.30n”, “[3] Sucrose -> 2 Water + HMF + Glucose Sucrose 0.30n”, “[4] Water + Xylan -> Xylose Xylan 90.00n”, “[5] Water + Xylan -> XyloseOligomer Xylan 0.24n”, “[6] Xylan -> 2 Water + Furfural Xylan 0.50n”, “[7] Acetate -> AceticAcid Acetate 100.00n”, “[8] Lignin -> SolubleLignin Lignin 0.50n”

]

}

], “source”: [

“pretreatment_parallel_rxn.show()”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“Notice how changing conversion of a ReactionItem object changes the conversion in the ParallelReaction object.”

]

}, {

“cell_type”: “markdown”, “metadata”: {}, “source”: [

“### Referencesn”, “n”, “<a id=’References’></a>n”, “n”, “1. Humbird, D., Davis, R., Tao, L., Kinchin, C., Hsu, D., Aden, A., Dudgeon, D. (2011). Process Design and Economics for Biochemical Conversion of Lignocellulosic Biomass to Ethanol: Dilute-Acid Pretreatment and Enzymatic Hydrolysis of Corn Stover (No. NREL/TP-5100-47764, 1013269). https://doi.org/10.2172/1013269n”, “n”, “2. Hatakeyama, T., Nakamura, K., & Hatakeyama, H. (1982). Studies on heat capacity of cellulose and lignin by differential scanning calorimetry. Polymer, 23(12), 1801–1804. https://doi.org/10.1016/0032-3861(82)90125-2n”, “n”, “3. Thybring, E. E. (2014). Explaining the heat capacity of wood constituents by molecular vibrations. Journal of Materials Science, 49(3), 1317–1327. https://doi.org/10.1007/s10853-013-7815-6n”, “n”, “4. Murphy W. K., and K. R. Masters. (1978). Gross heat of combustion of northern red oak (Quercus rubra) chemical components. Wood Sci. 10:139-141.”

]

}

], “metadata”: {

“kernelspec”: {

“display_name”: “Python 3”, “language”: “python”, “name”: “python3”

}, “language_info”: {

“codemirror_mode”: {

“name”: “ipython”, “version”: 3

}, “file_extension”: “.py”, “mimetype”: “text/x-python”, “name”: “python”, “nbconvert_exporter”: “python”, “pygments_lexer”: “ipython3”, “version”: “3.7.6”

}

}, “nbformat”: 4, “nbformat_minor”: 2

}