.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/polymer/solution_properties/plot_01_staudinger_viscosity_law.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_api_gallery_polymer_solution_properties_plot_01_staudinger_viscosity_law.py: Staudinger's macromolecules: solution viscosity grows with chain length ========================================================================== Staudinger's case that rubber and cellulose are genuine covalent macromolecules rested heavily on dilute-solution viscosity: he found the specific viscosity per unit concentration rising in proportion to the chain length, :math:`\eta_\text{sp}/c=K_mM` (:func:`~chemistrykit.polymer.systems.solution_viscosity.staudinger_specific_viscosity`). If the chains were colloidal aggregates held together by weak association, the "particle size" would fall apart on dilution or change of solvent; covalent chains keep their length, so a polymer-analogous reaction (e.g. hydrogenating rubber) leaves the degree of polymerization -- and hence :math:`\eta_\text{sp}/c` -- unchanged. This example contrasts the two pictures. .. GENERATED FROM PYTHON SOURCE LINES 19-32 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from chemistrykit.polymer.systems.solution_viscosity import staudinger_specific_viscosity Km = 1.0e-4 # Staudinger constant (per molar-mass unit, per concentration unit) M = np.array([1e4, 3e4, 1e5, 3e5]) c = np.linspace(0.001, 0.01, 10) for Mi in M: ratio = staudinger_specific_viscosity(c, Mi, Km) / c print(f"M = {Mi:8.0f}: eta_sp/c = {ratio[0]:.2f} at every concentration (constant: {np.allclose(ratio, ratio[0])})") .. rst-class:: sphx-glr-script-out .. code-block:: none M = 10000: eta_sp/c = 1.00 at every concentration (constant: True) M = 30000: eta_sp/c = 3.00 at every concentration (constant: True) M = 100000: eta_sp/c = 10.00 at every concentration (constant: True) M = 300000: eta_sp/c = 30.00 at every concentration (constant: True) .. GENERATED FROM PYTHON SOURCE LINES 33-37 Colloidal-aggregate picture: particles of 1e5 units dissociate on dilution (a simple association equilibrium, apparent size ~ sqrt(c)), so eta_sp/c would *fall* as the solution is diluted, unlike a real macromolecule. .. GENERATED FROM PYTHON SOURCE LINES 37-41 .. code-block:: Python M_apparent = 1e5 * np.sqrt(c / c[-1]) eta_colloid = staudinger_specific_viscosity(c, M_apparent, Km) / c eta_macro = staudinger_specific_viscosity(c, 1e5, Km) / c .. GENERATED FROM PYTHON SOURCE LINES 42-58 .. code-block:: Python fig, axes = plt.subplots(1, 2, figsize=(11, 4.2)) M_scan = np.logspace(3.5, 6, 50) axes[0].loglog(M_scan, staudinger_specific_viscosity(1.0, M_scan, Km), "k-") axes[0].loglog(M, staudinger_specific_viscosity(1.0, M, Km), "o") axes[0].set_xlabel("molar mass M") axes[0].set_ylabel(r"$\eta_{sp}/c$") axes[0].set_title(r"Staudinger's rule: $\eta_{sp}/c = K_m M$") axes[1].plot(c, eta_macro, label="covalent macromolecule (Staudinger)") axes[1].plot(c, eta_colloid, "--", label="dissociating colloidal aggregate") axes[1].set_xlabel("concentration c") axes[1].set_ylabel(r"$\eta_{sp}/c$") axes[1].set_title("Dilution test: real molecules keep their size") axes[1].legend() plt.tight_layout() plt.show() .. image-sg:: /api/gallery/polymer/solution_properties/images/sphx_glr_plot_01_staudinger_viscosity_law_001.png :alt: Staudinger's rule: $\eta_{sp}/c = K_m M$, Dilution test: real molecules keep their size :srcset: /api/gallery/polymer/solution_properties/images/sphx_glr_plot_01_staudinger_viscosity_law_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.092 seconds) .. _sphx_glr_download_api_gallery_polymer_solution_properties_plot_01_staudinger_viscosity_law.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_01_staudinger_viscosity_law.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_01_staudinger_viscosity_law.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_01_staudinger_viscosity_law.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_