FMD · Spatial SPDE (cattle host) —
ICAR-NIVEDI · Disease Informatics

FMD Spatial Simulator — Stochastic Partial Differential Equation Model

The cattle subsystem of the multi-host FMD SPDE: reaction–diffusion–advection drift (the PDE part) plus an Itô noise term [Gk(uk)Ẇk](x,t) on every compartment (the SDE part). Every run is one random realisation; the solver runs a Monte-Carlo ensemble and reports means, 90% bands, the probability that each district is invaded, and the probability of extinction.

PDE + SDE = SPDE
Q-Wiener noise
R₀ = TCC
Monte-Carlo ensemble
1 · The mathematical model click to collapse
ΔC ΔQC K₁ K₂(x) λC(x,t) ρ₁ σ₁ γ₃ 𝒟C † φ γ₄ αC αC2 αC1γ₁ χ₁γ₂ αC3 χ₂ ωC — waning natural immunity η·Iext (fomite spill-over) βC(IC1 + IC2)/max{NC, ε₀} SC susceptible · DSC, v⃗C — EC latent · DEC, v⃗C — IC1 pre-clinical · DI1, v⃗C — IC2 clinical · DI2, v⃗C — RC recovered · DRC, v⃗C — VC1 dose 1 · DV1, v⃗C — VC2 booster · DV2, v⃗C — QC quarantine · immobile — qC isolation · immobile — Iext IB2+IP+IS (other hosts) — νSdW νEdW νI1dW νI2dW νRdW νV1dW νV2dW νQdW νqdW
transition infection λCS contact pressure IC1 + IC2 spill-over η = fenv·F (optional) waning-immunity loop νkdW stochastic term [Gk(uk)Ẇk](x,t) immobile (D = 0, v⃗ = 0)

Cattle subsystem of the SPDE: two-dose vaccine cascade SC → VC1 → VC2, each dose seroconverting to RC or waning back to SC; QC is preventive quarantine, qC clinical isolation (both immobile). Every compartment carries its own Wiener noise (red badges). Iext is the optional spill-over from buffalo, pigs and sheep/goats (0 for cattle only). Natural mortality μC is not drawn. Run the simulation to see ensemble-mean totals in each box.

Governing system (Itô formulation) — densities, animals km⁻²

Each compartment uk(x,t) is a field over the 2-D landscape Ω. The black terms are the deterministic reaction–diffusion–advection drift; the red terms are the stochastic forcing, one independent Wiener field per compartment. This is the system the solver integrates.

Cattle Subsystem
∂SC∂t = ∇ · (DSC∇SC) − ∇ · (v⃗CSC) + ΔC + αC3VC1 + χ2VC2 + K1QC + ωCRC − (αC + μC + λC)SC + [GSC(SC)ẆSC](x, t)
∂EC∂t = ∇ · (DEC∇EC) − ∇ · (v⃗CEC) + λCSC − (ρ1 + μC)EC + [GEC(EC)ẆEC](x, t)
∂IC1∂t = ∇ · (DIC1∇IC1) − ∇ · (v⃗CIC1) + ρ1EC − (μC + σ1)IC1 + [GIC1(IC1)ẆIC1](x, t)
∂IC2∂t = ∇ · (DIC2∇IC2) − ∇ · (v⃗CIC2) + σ1IC1 + K2QC − (γ3 + μC + φ + 𝒟C)IC2 + [GIC2(IC2)ẆIC2](x, t)
∂RC∂t = ∇ · (DRC∇RC) − ∇ · (v⃗CRC) + αC1γ1VC1 + χ1γ2VC2 + γ3IC2 + γ4qC − (μC + ωC)RC + [GRC(RC)ẆRC](x, t)
∂VC1∂t = ∇ · (DVC1∇VC1) − ∇ · (v⃗CVC1) + αCSC − (αC1γ1 + αC2 + αC3 + μC)VC1 + [GVC1(VC1)ẆVC1](x, t)
∂VC2∂t = ∇ · (DVC2∇VC2) − ∇ · (v⃗CVC2) + αC2VC1 − (χ1γ2 + μC + χ2)VC2 + [GVC2(VC2)ẆVC2](x, t)
Quarantine and isolation enforce strict spatial immobility (DQC = DqC = 0, v⃗QC = v⃗qC = 0)
∂QC∂t = ΔQC − (K1 + K2 + μC)QC + [GQC(QC)ẆQC](x, t)
∂qC∂t = φIC2 − (γ4 + μC)qC + [GqC(qC)ẆqC](x, t)
Regularised force of infection
λC(x,t) = βC · [ IC1 + IC2 + fenv(x,t)F(x,t)·(IB2 + IP + IS) ] / max{ N(x,t), ε₀ }
With cattle as the only host, N = NC (the live sum of the nine compartments) and the other-host term is held as a constant spill-over density Iext = IB2 + IP + IS (default 0), scaled by η = fenv·F.
Noise operators — the red terms
[Gk(uk)Ẇk](x,t),   Gk(uk) = νk · uk+   (gk(s) = νk max{s,0}, gk(s) = 0 for s ≤ 0)
k ∈ {SC, EC, IC1, IC2, RC, VC1, VC2, QC, qC},   Wk independent Q-Wiener fields
E[dWk(x)dWk(y)] = c(|x−y|) dt,   c(r) = exp(−r²/2ℓ²), c(0) = 1
The barrier property (H3) gives almost-sure positivity; ‖Gk(u)‖²ℒ₂ = νk²‖u‖² gives the linear-growth bound (H7), so νk is exactly the σi of the stochastic threshold theorem.
Integrated (Itô) form — PDE + SDE
duk = [ ∇·(Dk∇uk) − ∇·(v⃗Cuk) + fk(u) ] dt + Gk(uk) dWk(x,t)
uk(x,t) = uk(x,0) + ∫₀t[ ∇·(Dk∇uk) − ∇·(v⃗Cuk) + fk(u) ] ds + ∫₀t νkuk+(x,s) dWk(x,s)
The first integral is the PDE part, the second (red) the SDE part. fk(u) is the reaction drift of compartment k. The stochastic integral is a martingale, so the ensemble mean stays close to the deterministic skeleton while individual realisations scatter around it.
Why an SPDE and not just the PDE
  • The PDE gives one smooth answer. In the field, the same incursion can fizzle out in one district and explode in the next; the noise terms reproduce that spread, so outputs come with a 90% band instead of a single curve.
  • It gives the quantities a PDE cannot: P(invaded) for every district and P(extinction) of the whole epidemic.
  • Noise lowers the pathwise growth rate (rS ≈ r − ½ν²), and the stochastic thresholds R₀S say when extinction is guaranteed almost surely.
  • The control counterfactual uses the same random seeds, so "cases averted" is not distorted by sampling luck.
Disease-free equilibrium (per unit census density)
ΔC = πCN(x), ΔQC = πQN(x);   QC* = ΔQC/(K₁ + μC)   (K₂(0) = 0)
θC1 = αC/(αC1γ₁ + αC2 + αC3 + μC),   θC2 = αC2/(χ₁γ₂ + μC + χ₂)
θRC = (αC1γ₁θC1 + χ₁γ₂θC1θC2)/(μC + ωC)
SC* = (ΔC + K₁QC*) / [αC + μC − (αC3θC1 + χ₂θC1θC2 + ωCθRC)]
VC1* = θC1SC*, VC2* = θC2VC1*, RC* = θRCSC*, NC* = SC* + VC1* + VC2* + RC* + QC*
Basic reproduction number — next-generation matrix
Infected states x = (EC, IC1, IC2, qC),   κC = βCSC*/NC*,   R₀ = ρ(FV⁻¹)
R₀ = TCC = (βCSC*/NC*) · ρ₁ / ((ρ₁+μC)(μC+σ₁)) · [ 1 + σ₁/(γ₃+μC+φ+𝒟C) ]
The multi-host ℛ₀ = max{ℛ0,CB, ℛ0,P, ℛ0,S} reduces to TCC when cattle are the only host; column qC of F is zero (isolated animals do not transmit).
Global stochastic threshold: R̄₀ = ρ(F̄V⁻¹) (κC → βC),   R₀S = R̄₀ + maxiσi²/(2γ₀)
Local stochastic threshold (R₀ < 1): R₀S = R₀ + wmaxσ²max/(2λmin(Q₀))
r = dominant eigenvalue of F − V;   rS ≈ r − ½⟨σ²⟩;   c* = 2√(Deffr)
Numerical scheme — the update applied every step
1. PDE part (drift + transport, Euler or RK4 for fk):
uk* = ukn + Δt [ DkΔhukn − v⃗C·∇hupukn + fk(un) ]
2. Noise increment: ΔWkn(x) = √Δt · ξkn(x), ξ ~ N(0,1) smoothed to length ℓ
3. SDE part (default, positivity-preserving):
ukn+1 = (uk*)+ · exp( νkΔWkn − ½νk²Δt )
or Euler–Maruyama: ukn+1 = max{ 0, uk* + νk(ukn)+ΔWkn }
Δh is the 5-point Laplacian, ∇hup the upwind gradient. Zero-flux (Neumann) boundaries, J·n = 0; Δt ≤ h²/(4Dmax) and the CFL limit are enforced automatically. Each realisation has its own seed.
SymbolMeaningUnit SymbolMeaningUnit
βC, ε₀Cattle transmission rate, regularisation thresholdday⁻¹, km⁻² ρ₁, σ₁Latent → pre-clinical, pre-clinical → clinicalday⁻¹
γ₃, γ₄Recovery from IC2 / from isolation qCday⁻¹ φ, 𝒟CIsolation rate, disease-induced mortalityday⁻¹
αC, αC1γ₁Vaccination SC → VC1; VC1 → RCday⁻¹ αC2, αC3, χ₁γ₂, χ₂Booster, failure, VC2 → RC, VC2 → SCday⁻¹
K₁, K₂Quarantine release to SC / progression to IC2day⁻¹ ωC, μCLoss of immunity, natural mortalityday⁻¹
ΔC, ΔQCRecruitment into SC and into QC (π·N(x))km⁻² day⁻¹ Dk, v⃗CDiffusivity of class k, advection velocitykm² day⁻¹, km day⁻¹
Gk, νkNoise operator and intensity of compartment k (red terms)day−½ Ẇk, ℓSpace–time Wiener noise, its correlation lengthkm
Set inputs here, then open Results & graphs.

2 · Spatial domain & data source

The scale you pick determines the grid extent, the cell size and how the host density field N(x,y) is built from your FMD data.

Data provenance. District centroids and geographic areas in the built-in Karnataka table are real. The cattle-population and reported-attack series bundled with this file are a demonstration series anchored on the Ramanagara figures used by the ODE dashboard and interpolated across districts and years — they are placeholders for wiring and teaching, and must not be quoted as surveillance results. For any analysis that leaves this screen, load your own NADRES / Livestock Census extract through Upload custom domain (CSV) (columns: name, lat, lon, area_km2, population, infected); the uploaded table replaces the built-in one completely.
Reported attacks of this year become the initial IC2 field.
0 = use the reported attacks from the data.
Columns: name, lat, lon, area_km2, population, infected
Karnataka mosaic · 30 districts

3 · Parameters

Transmission
Progression & isolation
Vaccination & immunity
Quarantine & recruitment
Movement — diffusion & advection
Environment f_env
f_env = —  ·  η = f_env·F = — — Briere-type response, clamped to [0, 1]
Stochastic forcing — red noise terms (dW)
Thresholds (live)
DFE: S*/N* = — · V*/N* = — · R*/N* = — · Q*/N* = —
N* ÷ census density = —
R₀ = TCC = —  ·  R̄₀ = —
R₀S (global) = —  ·  R₀S (local) = —
Numerics
Stability check
cell size h = — km  ·  domain —
diffusion limit Δt ≤ — d
CFL limit Δt ≤ — d
noise: max ν√Δt = —
Spatial control measures
Idle.
`