A cooling batch crystallizer holds a solution above its solubility curve. The driving force is the supersaturation ratio:
S(t) = C(t) / C*(T(t))
C* (T) = C0 + kT · T (linear solubility)
Two competing rate laws consume that supersaturation — this is the classic nucleation/growth trade-off PAT systems are built to manage:
Growth: G(S) = kg · max(S−1, 0)^g (µm/min per crystal)
Nucleation: B(S) = kb · max(S−1, 0)^b (new crystals/min)
Every crystal growing consumes solute mass proportional to its surface area × radial growth (dV = 4πr²·dr), which feeds back into C(t) — so growth alone pulls S back down with no controller at all. The risk is nucleation: because b ≫ g, letting S spike creates a burst of tiny new crystals (a wide, hard-to-filter size distribution) instead of growing the seeds you already have.
The inline probe (an FBRM/Raman-style PAT sensor in a real plant) reports S(t) with a little measurement noise. With PAT feedback ON, a proportional controller throttles the cooling ramp itself:
coolRate_eff = coolRate_base · clamp(1 − Kp·(S − Starget), 0, 1.6)
Cooling pauses when S drifts above the setpoint (letting existing crystals grow the supersaturation back down before more nucleation happens) and speeds back up when S falls below it. With feedback OFF the cooling ramp runs open-loop at a constant rate regardless of what the probe reads — watch how much faster the crystal count climbs and how much smaller the mean size ends up for the same batch.
- Base cooling rate — the open-loop ramp speed; also the ceiling the controller throttles against in closed loop.
- Starget — the supersaturation band the PAT controller tries to hold.
- Seed loading — starting crystal count; more seed surface area means less driving force is "wasted" on nucleation.