Comparison of batch cultures under light integration (good mixing)
and local rate integration (poor mixing) conditions
This single-page application (SPA) simulates the growth of microalgae in a batch photobioreactor (PBR), comparing two limiting hypotheses about how cells experience light inside the culture:
| Hypothesis | Description | Assumed mixing |
|---|---|---|
| Light integration (Iav) | Every cell sees the spatially averaged irradiance $I_{av}$ | Perfect / instantaneous |
| Local rate integration (Av) | The volumetric growth rate is the spatial average of local rates $\mu(I(x))$ | Poor / slow |
Both trajectories are integrated simultaneously with a 4th-order Runge-Kutta (RK4) scheme, plotted on the same axes, and analysed for optimal batch operation.
| Parameter | Symbol | Units | Default | Description |
|---|---|---|---|---|
| Incident irradiance | $I_o$ | µmol/m²·s | 1000 | Surface photon flux density |
| Absorption coefficient | $k_a$ | m²/g | 0.10 | Biomass-specific absorption |
| Path length / Radius | $L$ or $R$ | m | 0.10 | Reactor thickness (flat panel) or radius (cylindrical) |
| Initial biomass | $C_{b0}$ | g/m³ | 50 | Inoculum concentration |
| Seeding time | $t_s$ | h | 10 | Pre-culture time before $t=0$ (for $P_{bm}$) |
| Incidence angle | $\theta$ | ° | 0 | Angle of light relative to surface normal |
Geometry selector: Flat panel 1-D Beer-Lambert attenuation along $L$. Cylindrical 2-D numerical integration over a circular cross-section (40×40 grid).
| Parameter | Symbol | Units | Default | Notes |
|---|---|---|---|---|
| Max. specific growth rate | $\mu_{max}$ | h⁻¹ | 0.080 | All models |
| Half-saturation irradiance | $I_k$ | µmol/m²·s | 150 | Molina, Bannister, Van Oorshot |
| Shape exponent | $n$ | — | 2.0 | Molina, Bannister |
| Inhibition parameter | $\alpha$ | µmol/m²·s | 300 | Camacho-Rubio only |
| Inhibition coefficient | $\kappa$ | — | 0.10 | Camacho-Rubio only |
| Maintenance coefficient | $m$ | h⁻¹ | 0.005 | All models |
The two hypotheses differ only in how $\mu$ is computed: $\mu_{Iav} = \mu(I_{av})$ vs. $\mu_{Av} = \frac{1}{V}\int_V \mu(I(\mathbf{x}))\,dV$.
Step size $h = 1$ h. Simulation stops when $|\dot{C}_b| < 10^{-9}$ g/m³·h and $t > 10$ h, or after 2000 steps.
| Trace | Axis | Style | Colour |
|---|---|---|---|
| $C_b$ — Good mixing | Left (g/m³) | Solid 3 px | Green |
| $C_b$ — Poor mixing | Left (g/m³) | Solid 3 px | Red |
| $P_{bm}$ — Good/Poor mixing | Right (g/m³·h) | Dashed 5-5 | Green / Red |
| $P_{bi}$ — Good/Poor mixing | Right (g/m³·h) | Dotted 2-2 | Green / Red |
Four coloured panels report: Optimal — time and value of max $P_{bi}$ and $P_{bm}$; Stationary — final $C_b$ and end time. Green = good mixing (Iav); red = poor mixing (local).
Exports a UTF-8 CSV: Time(h), Cb_Iav, Cb_Local, Pbm_Iav, Pbm_Local, Pbi_Iav, Pbi_Local, preceded by a configuration header.