- {
- “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”: [
“Model the pretreatment hydrolysis reactions and assumed conversions from Humbird et. al. as shown in the follwing table [[1]](#References):n”, “n”, “|Reaction|Reactant|% Converted|n”, “|---|—|---|n”, “|(Glucan)n + n H2O→ n Glucose|Glucan|9.9|n”, “|(Glucan)n + n H2O → n Glucose Oligomer|Glucan|0.3|n”, “|(Glucan)n → n HMF + 2n H2O|Glucan|0.3|n”, “|Sucrose → HMF + Glucose + 2 H2O|Sucrose|100.0|n”, “|(Xylan)n + n H2O→ n Xylose|Xylan|90.0|n”, “|(Xylan)n + m H2O → m Xylose Oligomer|Xylan|2.4|n”, “|(Xylan)n → n Furfural + 2n H2O|Xylan|5.0|n”, “|Acetate → Acetic Acid|Acetate|100.0|n”, “|(Lignin)n → n Soluble Lignin|Lignin|5.0|n”
]
}, {
“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
}