A Python model of how a solid drug dissolves into solution, built using the Noyes–Whitney equation and solved numerically with Euler's forward method. Ibuprofen is used as a worked example, with all physical parameters sourced from published literature and converted to SI units.
Author: Jeswin Joseph · MEng Chemical Engineering Student, University of Manchester · July 2026
A drug cannot be absorbed by the body until it has dissolved, so the rate of dissolution directly affects how quickly a medicine takes effect. This project:
- Implements the Noyes–Whitney equation numerically in Python
- Simulates the dissolution of a 200 mg ibuprofen dose under standard USP test conditions
- Investigates how particle size controls the dissolution rate — the quantitative basis for why pharmaceutical drugs are micronised
Dissolution occurs in a continuous three-step cycle: molecules detach from the solid surface into the thin liquid layer touching it; this layer becomes saturated at concentration Cs; and dissolved molecules then diffuse outward into the bulk liquid down the concentration gradient.
The rate is described by the Noyes–Whitney equation (1897), in the form including the volume of the dissolution medium:
dC/dt = (D · A) / (h · V) × (Cs − C)
| Term | Meaning |
|---|---|
dC/dt |
Rate of change of dissolved concentration |
Cs − C |
Concentration gradient driving diffusion — largest at the start, zero at saturation |
D |
Diffusion coefficient |
A |
Total surface area of drug exposed |
h |
Diffusion layer thickness |
V |
Volume of dissolution medium |
Modelling the dose as N identical spheres of radius r and substituting for the particle count gives a compact analytical result:
A = 3M / (ρ · r)
Total surface area is inversely proportional to particle radius — halving the radius doubles the surface area for the same mass of drug.
Base model (r = 10 µm). Concentration rises steeply then flattens, reaching 100% of saturation — the characteristic exponential approach to saturation predicted by the theory.
Effect of particle radius. Running the model across five radii (1–9 µm), holding all other parameters constant:
Smaller particles dissolve markedly faster, exactly as A = 3M/ρr predicts. Crucially, all five curves plateau at the same Cs — particle size changes the rate of dissolution, but not its extent, since the dose and saturation solubility are unchanged.
All values converted to SI units. Sources traced to primary literature where possible; assumptions are declared as such.
| Parameter | Value | Source | Type |
|---|---|---|---|
D |
1×10⁻⁹ m²/s | Ribeiro et al. (2022); Sci. Rep. (2021) | Measured |
Cs |
0.021 kg/m³ | PubChem CID 3672 (21 mg/L at ≈pH 1–2) | Measured |
h |
3×10⁻⁵ m | Hintz–Johnson critical boundary-layer thickness | Assumption |
r |
1–10×10⁻⁶ m | Micronised ibuprofen particle size distribution | Chosen |
ρ |
1030 kg/m³ | 1.03 g/cm³ (cross-referenced, converted) | Measured |
M |
2×10⁻⁴ kg | 200 mg tablet (NHS) | Measured |
V |
9×10⁻⁴ m³ | 900 mL, USP standard dissolution volume | Standard |
The model makes several deliberate simplifications, each a candidate for refinement:
- Constant surface area — a real particle shrinks as it dissolves, so
Adecreases with time. A shrinking-particle model would relax this. - Fixed diffusion layer thickness — a flat h = 30 µm was used. Hintz–Johnson actually set δc = r for particles below 30 µm, so a stricter treatment would use h = r, strengthening the radius dependence further (rate ∝ 1/r²).
- Identical particles — real powders have a particle-size distribution.
- No absorption — the model covers dissolution only, not uptake into the bloodstream (pharmacokinetics).
- Fixed temperature and pH — both affect
DandCs. Ibuprofen's solubility is strongly pH-dependent.
| File | Description |
|---|---|
dissolution_model.ipynb |
Jupyter/Colab notebook with the full model and plots |
Dissolution_Report.pdf |
Full technical report (theory, method, results, development record, references) |
dissolution_curve.png |
Base model result |
radius_comparison.png |
Particle radius investigation |
The notebook runs in Google Colab with no setup required. Only numpy and matplotlib are needed, both pre-installed in Colab.
- Noyes, A. A. & Whitney, W. R. (1897). The rate of solution of solid substances in their own solutions. J. Am. Chem. Soc., 19(12), 930–934.
- Ribeiro, A. C. F. et al. (2022). On the diffusion of ketoprofen and ibuprofen in water. J. Chem. Thermodynamics.
- Numerical investigation of ibuprofen removal using adsorption (2021). Scientific Reports, 11.
- PubChem — Ibuprofen (CID 3672), National Library of Medicine.
- Boundary layer effects in particle dissolution, Molecular Pharmaceutics (2024).
- Ibuprofen for adults, NHS.
- USP General Chapter ⟨1092⟩, The Dissolution Procedure, United States Pharmacopeia.
Full reference list, including particle-size and density sources, is given in the report PDF.
This project reproduces well-established science and is not original research — dissolution modelling is standard practice in pharmaceutical development. It was built as an independent learning project to develop computational modelling skills and to understand dissolution by implementing it from first principles. The accompanying report documents the full development process, including errors made and corrected along the way.
Artificial intelligence (Claude, Anthropic) was used during this project as a tutor and writing assistant: for explaining the underlying theory, for generating and explaining the Python code, and for drafting the accompanying report. All parameter sourcing, unit conversions, the surface-area derivation (A = 3M/ρr), hand verification of calculated values, and the design of the particle-radius investigation were carried out by the author, who understands and can defend all content presented.

