function charge_probability {of charge qe on a particle of diameter d} (q0 {number of elementary charges}: integer; dp {particle diameter : nm}, di {ion diameter : nm}, T {air temperature : K} : real) : real; {Uses external function "attachment_coefficient", presumtions: +- symmetry, ion density 2 g cm-3, air pressure 1013 mb} var j, q : integer; Nq, Nj, c, sum : real; begin q := abs (q0); Nj := 1; c := 1; sum := 1; j := 0; Nq := 0; while (j <= q) or (c > 1e-12) do begin if j = q then Nq := Nj; c := attachment_coefficient (j, di, 2, dp, T, 1013) / attachment_coefficient (-j - 1, di, 2, dp, T, 1013); Nj := Nj * c; sum := sum + 2 * Nj; j := j + 1; end; charge_probability := Nq / sum; end;