Molecular-Weight Distribution¶
A real polymer is a mixture of chains of many lengths, not a single molar mass. In this tutorial you will use the Polymer Characterization tool to split a polydisperse polymer into a set of pseudo-component cuts that reproduce its number- and weight-average molar mass, so the flash and every downstream unit see the true spread of chain lengths.
What you will learn
- The difference between number-average (Mn) and weight-average (Mw) molar mass, and the polydispersity index (PDI = Mw/Mn)
- How to generate Schulz-Zimm or log-normal cuts from an average molar mass and a PDI
- How the cuts share the base polymer's chemistry and only differ in molar mass
Prerequisites
- Completed PC-SAFT Polymer Solutions
Process Overview¶
Two polymers with the same Mn can behave very differently if one is narrow and the other broad. A single molar mass hides that. The Polymer Characterization tool takes a base polymer, a target Mn and PDI, and a distribution shape, and produces N cuts: pseudo-components that share the base polymer's CAS number (so PC-SAFT reuses its segment parameters) but each carry a different molar mass. Their mole fractions are the distribution, and by construction they reproduce the target Mn and Mw.
Distribution shapes¶
| Shape | Use it for |
|---|---|
| Schulz-Zimm (Gamma) | free-radical and most step-growth polymers; reaches any PDI |
| Log-normal | broad, symmetric-on-a-log-axis distributions; needs enough cuts to reach the PDI (two cuts reach at most PDI = 2) |
graph LR
P["Base polymer<br/>Mn, PDI"] --> C["Polymer<br/>Characterization"]
C --> K1["Cut 1<br/>(low M)"]
C --> K2["Cut 2"]
C --> K3["..."]
C --> KN["Cut N<br/>(high M)"]
Key Design Parameters¶
| Parameter | Value |
|---|---|
| Base polymer | Polystyrene |
| Property Package | PC-SAFT |
| Target Mn | 100 000 g/mol |
| PDI (Mw/Mn) | 2.0 |
| Number of cuts | 7 |
| Distribution | Schulz-Zimm |
Step-by-Step in the Classic UI¶
1. Set up¶
File > New Chemical Process Model:
- Add a solvent (e.g.
Ethylbenzene) and the polymerPolystyrene. - Property Package:
PC-SAFT.
2. Open the Polymer Characterization tool¶
Tools > Polymer Characterization...
- Base polymer:
Polystyrene - Distribution:
Schulz-Zimm (Gamma) - Number-average Mn:
100000g/mol - Polydispersity Mw/Mn:
2.0 - Number of cuts:
7

3. Preview and add the cuts¶
Click Preview Cuts to see the table: each row is a cut with its molar mass, mole fraction and mass fraction. The mole-weighted average of the molar masses equals the target Mn; the mass-weighted average equals Mw.
Click Add Cuts to Simulation to register the cuts as compounds on the flowsheet. They all share the polystyrene CAS number, so PC-SAFT describes each one at its own molar mass with the same parameters.
4. Use the cuts in a stream¶
Add a Material Stream and set its composition from the cut mole fractions (the tool reports them). The stream now represents a polydisperse polystyrene rather than a single molar mass.
Results and Validation¶
| Variable | Expected |
|---|---|
| Mole-weighted average of cut molar masses | ≈ Mn (100 000) |
| Mass-weighted average of cut molar masses | ≈ Mw (200 000) |
| Cut count | 7 |
Expected results
Seven cuts whose distribution reproduces Mn = 100 000 and Mw = 200 000 g/mol (PDI = 2.0). A liquid-liquid flash on this stream fractionates the cuts by chain length: the concentrated phase is enriched in the long chains.
Understanding the Results¶
- Mn versus Mw. Mn is the average over chains (number basis); Mw is the average weighted by mass, so it is always ≥ Mn and is more sensitive to the long tail. Their ratio is the polydispersity.
- Cuts are the same chemistry. Every cut shares the base polymer's CAS, so you are not inventing new species; you are discretizing one polymer's chain-length axis.
- Fractionation. Because longer chains are less soluble (see tutorial 1), a demixing step concentrates the high-molar-mass cuts in the polymer-rich phase, exactly as real polymer fractionation does.
Automating This Tutorial¶
Files in this repository
- Python script:
examples/polymers/02_molecular_weight_distribution.py
See examples/polymers/02_molecular_weight_distribution.py in the DWSIM.Tutorials repository. The characterization is done with PolymerCharacterization.BuildCuts(basePolymer, Mn, PDI, N, distribution).
dwsim.polymer.characterize with the base polymer, Mn, PDI, cut count and distribution, then set a stream composition from the returned cut fractions.
Output may vary
Results depend on the LLM's reasoning quality and tool-use accuracy.
Use DWSIM (via the MCP server) to:
- Create a flowsheet "PolymerMWD" with Ethylbenzene and Polystyrene,
property package PC-SAFT
- Characterize the Polystyrene as a Schulz-Zimm distribution with
Mn = 100000 g/mol, PDI = 2.0, 7 cuts, and add the cuts to the
simulation
- Report each cut's molar mass and mole fraction, and confirm the
mole-weighted average equals 100000 and the mass-weighted average
equals 200000 g/mol
Exercises
- Change the PDI to 1.5 and regenerate. How do the cut molar masses cluster?
- Switch to a log-normal distribution with only 2 cuts and a PDI of 2.5. Why can it not reach the target?
- Increase the number of cuts to 15. How closely do the averages match the targets?
Further Reading¶
- P. J. Flory. (1953). Principles of Polymer Chemistry. Cornell University Press
- B. H. Zimm. (1948). Apparatus and Methods for Measurement and Interpretation of the Angular Variation of Light Scattering. The Journal of Chemical Physics. doi:10.1063/1.1746740
Next Steps¶
Continue with Polymer Devolatilization to strip the solvent from a polymer solution and recover a concentrated melt.