Instead of tracking individual cells as off-lattice particles (the 3D version of this sim), this is a continuum / mean-field model: a cell-density field ρ(x,y,t) evolves on a 2D finite-volume grid under a conservation law ∂ρ/∂t = −∇·J, where the flux J is built from the exact same three local rules, coarse-grained:
J = J_chemo + J_diff(CIL) + J_co(co-attraction)
J_chemo = χ · ρ · x̂ (advection up the fixed SDF1 gradient)
J_diff = −(D₀ + D_cil·k_cil·ρ) ∇ρ (CIL ⇒ diffusivity grows with local crowding,
so a dense patch actively spreads itself apart —
the continuum echo of "repolarise away from contact")
J_co = −D_co·k_co·ρ ∇ρ̃ (ρ̃ = ρ smoothed over the co-attraction radius;
flux runs toward higher smoothed density, pulling
the stream back together just outside CIL range)
- Chemotaxis (χ) — a constant advective velocity along +x, identical in spirit to the 3D model's per-cell gradient bias, but here it transports density rather than steering individual headings.
- Contact inhibition of locomotion — recast as a nonlinear, density-dependent diffusion coefficient: the more crowded a patch of tissue is, the faster it locally disperses. This reproduces the same qualitative effect (dense clumps can't persist) without simulating pairwise contacts.
- Co-attraction — an aggregation flux that moves mass toward regions of higher smoothed density, cohering the stream just outside the CIL length scale — the same "co-attraction paradox" the 3D model documents: turn it off and CIL alone shreds the stream into a diffuse haze even though chemotaxis is unchanged.
The right-hand edge (target zone) absorbs density; the absorbed mass is instantly re-injected at the source edge, so total tissue mass is exactly conserved — a continuum analogue of the 3D model recycling arrived cells back to the start. Arrows show the local bulk velocity field u = J/ρ. Directionality is the mass-weighted mean of u_x/|u| (1 = the whole field flowing straight toward the target, 0 = no net bias).