function electrical_mobility_air ( {cm2 V-1 s-1} Millibar, Celsius, ParticleDensity {g cm-3, for cluster ions typically 2.08}, ParticleCharge {e, for cluster ions 1}, MassDiameter {nm} : real) : real; {NB: Massdiameter > 0.2 nm!} function Omega11 (x : real) : real; {*(1,1)*(T*) for (*-4) potential} var p, q : real; {and elastic-specular collisions} begin if x > 1 then Omega11 := 1 + 0.106 / x + 0.263 / exp ((4/3) * ln (x)) else begin p := sqrt (x); q := sqrt (p); Omega11 := 1.4691 / p - 0.341 / q + 0.181 * x * q + 0.059 end; end; const GasMass = 28.96; {amu} Polarizability = 0.00171; {nm3} a = 1.165; b = 0.483; c = 0.997; {ISO15900 slip factor coefficients} ExtraDistance = 0.115 {nm}; TransitionDiameter = 2.48 {nm}; var Temperature, GasDiameter, Viscosity, FreePath, DipolEffect, DeltaTemperature, CheckMark, ParticleMass, CollisionDistance, Kn, Omega, s, x, y, r1, r2 : real; begin if MassDiameter < 0.2 then {emergency exit} begin electrical_mobility_air := 1e99; exit; end; Temperature := Celsius + 273.15; r1 := Temperature / 296.15; r2 := 406.55 / (Temperature + 110.4); Viscosity {microPa s} := 18.3245 * r1 * sqrt (r1) * r2; FreePath {nm} := 67.3 * sqr (r1) * (1013 / millibar) * r2; ParticleMass {amu} := 315.3 * ParticleDensity * exp (3 * ln (MassDiameter)); DeltaTemperature := Temperature; repeat CheckMark := DeltaTemperature; GasDiameter {nm} := 0.3036 * (1 + exp (0.8 * ln (44 / DeltaTemperature))); CollisionDistance {nm} := MassDiameter / 2 + ExtraDistance + GasDiameter / 2; DipolEffect := 8355 * sqr (ParticleCharge) * Polarizability / sqr (sqr (CollisionDistance)); DeltaTemperature := Temperature + DipolEffect; until abs (CheckMark - DeltaTemperature) < 0.01; if ParticleCharge = 0 then Omega := 1 else Omega := Omega11 (Temperature / DipolEffect); Kn := FreePath / CollisionDistance; if Kn < 0.03 {underflow safe} then y := 0 else y := exp (- c / Kn); x := (273.15 / DeltaTemperature) * exp (3 * ln (TransitionDiameter / MassDiameter)); if x > 30 {overflow safe} then s := 1 else if x > 0.001 then s := 1 + exp (x) * sqr (x / (exp (x) - 1)) * (2.25 / (a + b) - 1) else {underflow safe} s := 1 + (2.25 / (a + b) - 1); electrical_mobility_air := 1.6022 * ParticleCharge * ((2.25 / (a + b)) / (Omega + s - 1)) * sqrt (1 + GasMass / ParticleMass) * (1 + Kn * (a + b * y)) / (6 * PI * Viscosity * CollisionDistance); end;