Crystallisation Population-Balance Model
A chemical-engineering study of nucleation, growth, seeding, and cooling policy in a seeded batch crystalliser for paracetamol in ethanol.

Project definition
Problem statement
A batch crystalliser must produce enough solid while controlling the crystal-size distribution. Cooling too quickly can create excessive fines, while cooling too slowly can limit throughput or change the final yield.
The engineering problem is to compare cooling policies while keeping nucleation, crystal growth, solute balance, seeding, numerical resolution, and uncertain kinetic inputs visible in one reproducible study.
Project objectives
- Model a seeded paracetamol-in-ethanol batch cooled from 341 K to 273 K over 2.75 hours.
- Compare linear, early, late, smooth, and staged cooling policies.
- Run 45 factorial cases across cooling policy, seed loading, and nucleation strength.
- Run 500 uncertainty simulations using common kinetic samples across all five policies.
- Verify the crystal-size distribution with twelve grid cases and explicit mass-residual checks.
- Retain complete numerical evidence, figures, tests, references, and editable documentation.
Project structure
Project components
Solubility and kinetics
Calculates temperature-dependent solubility, nucleation, and size-dependent crystal growth.
Population balance
Advances the crystal-size distribution on a sectional grid while closing the liquid and solid mass balance.
Cooling policies
Defines five reproducible temperature trajectories for the same initial and final conditions.
Experiment runner
Runs the nominal, factorial, uncertainty, and grid-resolution studies.
Evidence builder
Writes complete CSV, JSON, PNG, and SVG results for analysis and documentation.
Methodology
Project workflow
- 01Set the batch
The initial concentration, temperature, seed distribution, kinetic constants, and time horizon are declared.
- 02Apply a cooling policy
The selected temperature trajectory controls supersaturation throughout the batch.
- 03Solve the population balance
Nucleation, growth, dissolved concentration, and crystal mass are advanced together.
- 04Calculate product measures
Yield, D10, D50, D90, D43, fines fraction, residuals, and boundary fractions are retained.
- 05Compare and verify
Factorial, uncertainty, and grid studies show policy tradeoffs and numerical limitations.
Demonstration scenario
The released study compares five policies under identical batch conditions. The late policy gives the largest nominal D43 at 20.58 micrometres, while the smooth policy gives the highest nominal yield at 0.9989. The uncertainty study then tests whether those rankings persist across 100 common kinetic samples per policy.
Engineering
Tools and method
- Tools
- The project uses Python 3.12, NumPy, SciPy, Pandas, Matplotlib for subject analysis, simulation, and results.
- Engineering model
- Python and NumPy for the sectional population balance, solute balance, kinetics, and cooling policies.
- Experiment design
- Deterministic factorial cases and common-sample uncertainty comparisons across all policies.
- Data and figures
- Pandas and Matplotlib for retained result tables and fifteen labelled figures.
- Verification
- Automated tests cover balances, bounds, trends, grids, commands, outputs, and repeatability.
- Documentation
- Project documentation and setup guide in fixed PDF and editable Word formats.
Testing
Evaluation
Evaluation measures
- Crystallisation yield and dissolved concentration
- D10, D50, D90, and volume-weighted mean size D43
- Fines fraction and distribution span
- Maximum sectional mass residual
- Upper-boundary crystal fraction and grid convergence
- Cooling-policy performance under kinetic uncertainty
- Automated tests, coverage, dependency audit, and repository validation
Project boundaries
- The model is a one-dimensional, well-mixed, seeded batch population balance with idealised kinetics.
- The parameters are literature-informed study values and are not fitted to a specific industrial crystalliser.
- Agglomeration, breakage, polymorphism, solvent loss, detailed mixing, heat-transfer equipment, filtration, and drying are outside scope.
- The results support engineering study and comparison, not plant design, product approval, or operating instructions.
Included
- 01Complete Python engineering source code
- 02Five seeded batch cooling-policy models
- 0345 factorial cases and 500 uncertainty runs
- 04Five detailed crystal-size distributions and twelve grid cases
- 05Complete CSV and JSON numerical results
- 0615 project figures in PNG and SVG formats
- 0794-page project documentation in PDF and editable Word formats
- 0813-page setup and usage guide in PDF and editable Word formats
- 0954 annotated references and three sourced literature figures
- 1057 automated tests with 94.20 percent statement and branch coverage
Project record
No information is collected on this page.
- Permanent project ID
- GP-CH-1FGDC6C
- Catalogued
- 21 Aug 2026
- Completed
- 26 Aug 2026
- Verified
- 26 Aug 2026
- Demonstration
- Included in repository
Handover
After purchase
- 01Payment is confirmed
The project is marked unavailable and cannot be purchased again.
- 02Repository access is granted
The buyer's submitted GitHub account receives access to the private repository.
- 03The purchase record is delivered
The certification sheet is prepared from the reviewed buyer details and sent privately by email.