Keep every explanation and worked example on the page. Nothing moves or plays by itself, and the larger instruments load only when you ask.
Brownian motion · Section 1
A particle you can seepushes like one you cannot.
Do suspended particles press on a partition the way dissolved molecules do, and does their size change the pressure at the same number per volume? Change the particle count, the volume, or the radius, and see what the law actually depends on.
The osmotic partition
The osmotic partition
Static worked example
Worked example: on the molecular-kinetic model, 1 × 10¹⁵ particles per cubic metre press on the partition with 4.05 × 10⁻⁶ Pa, a force of 4.05 × 10⁻¹⁴ N, as much as a 4.14 × 10⁻¹⁰ m column of water.
One accepted calculation, in explicit units
Number density n
1.000000 × 1015 m⁻³
Volume fraction φ
5.235988 × 10−4 (admitted domain: φ ≤ 0.01)
Osmotic pressure Π
4.047373 × 10−6 Pa
Force on partition F = ΠA
4.047373 × 10−14 N
Equivalent water column h = Π/(ρg)
4.135442 × 10−10 m
Three symbols that are easy to confuse
Np
How many suspended particles are in the chamber: the count you set, 1,000 here.
n
Their number density, Np divided by the accessible volume, in particles per cubic metre. The pressure is Π = nkT.
NA
Avogadro's number, the molecules in one mole: 6.022 × 1023, exact in the 2019 SI. Einstein writes it N. It enters when the pressure is written with the gas constant, R = NAk, and this laboratory does not use it.
Predict before the numbers
At the same number of particles per volume, does a 1000-times-larger particle push harder, the same, or less on the partition?
The result appears when you choose, say you have one in mind, or skip.
What this model leaves out
• Particle interactions and excluded volume above the dilute domain.
• Non-ideal activity coefficients.
• Imperfect partitions (any real leak of particles across it).
• Gravity and sedimentation.
• Electrostatic effects.
• Adsorption at the partition.
• The kinetics and time needed to reach osmotic equilibrium.
• Molecular collisions with the wall: the drawn glyphs are illustrative, not a collision simulation.
Show which code computes these numbers
Number density, osmotic pressure, the dilute-domain check, partition force, and hydrostatic head are computed by src/physics/reference/diffusion/routeA.ts and src/physics/reference/diffusion/distributions.ts, composed (never recomputed) by src/experiments/bm02/session.ts.
Live terms bind osmoticPressure, numberDensity, and temperature.
A dissolved sugar molecule pushes on a wall that stops it but lets water through, and that push is osmotic pressure. Einstein argued that a particle big enough to see under a microscope pushes in exactly the same way, one particle counting as one molecule, however large it is.
Section 1 begins with van 't Hoff's law for a dilute solution: z gram-molecules in a volume V*, behind a wall that lets the solvent through, press on it with pV* = RTz. For small suspended bodies in place of the dissolved substance, classical thermodynamics expects no force at all, since the free energy seems not to depend on where the wall and the bodies are. The molecular-kinetic theory disagrees: a dissolved molecule differs from a suspended body only in size, so n bodies in V*, far enough apart, should press with p = (RT/N)ν, where ν = n/V*. The instrument evaluates both views. With 1000 spheres of radius 0.5 μm in a million cubic micrometres at 293.15 K, ν = 1015 m−3 and the pressure is 4.05 × 10−6 Pa: a force of 4.05 × 10−14 N on a partition of 104 μm2, or the weight of a water column 0.41 nm high. A 0.01 mol/L sugar solution, with 6 × 109 times as many particles in each cubic metre, gives 24.4 kPa by the same law. The radius does not enter; it only limits how crowded the spheres may be before the law needs correcting, here to 1 percent of the volume.
Van 't Hoff's law says pV* = RTz for z gram-molecules in the volume V*. A gram-molecule holds N molecules, so z = n/N for n molecules, and p = (RT/V*)(n/N) = (R/N)Tν, with ν = n/V* the number per unit volume. R/N is Boltzmann's constant, kB = 1.381 × 10−23 J/K, so p = νkBT. Einstein's step is to let the n be suspended spheres instead of molecules. Count them: 1000 spheres in 106 μm3, which is 106 × 10−18 = 10−12 m3, gives ν = 1000/10−12 = 1015 per cubic metre. With kBT = 1.381 × 10−23 × 293.15 = 4.047 × 10−21 J, p = 1015 × 4.047 × 10−21 = 4.05 × 10−6 Pa. On a partition of 104 μm2 = 10−8 m2 that is a force of 4.05 × 10−14 N. To picture it as a column of water, divide by the water's density times g: 4.05 × 10−6/(998 × 9.81) = 4.1 × 10−10 m. For the sugar solution, 0.01 mol/L is 10 mol/m3, or 6.02 × 1024 molecules per cubic metre, so p = 6.02 × 1024 × 4.047 × 10−21 = 2.44 × 104 Pa; the ratio of the two pressures is just the ratio of the counts. The radius appears nowhere in p. It sets how much of the volume the spheres fill: each has volume (4/3)π(0.5 μm)3 = 0.524 μm3, so 1000 of them fill 5.2 × 10−4 of the space. For hard spheres the ideal law is off by about four times that fraction, so the instrument admits fractions up to 1 percent, where the correction is about 4 percent.
Modern qualifications
Einstein wrote z for the number of gram-molecules, V* for the partial volume, ν for the number of bodies per unit volume and N for the number of real molecules in a gram-molecule. Van 't Hoff had set out the law of dilute solutions, and its likeness to the gas law, in 1887. The claim that visible particles obey it is Einstein's, made against what classical thermodynamics would expect, and Section 2 derives it from statistical mechanics. Perrin used the same equivalence from 1908, setting it against gravity in the settling of gamboge grains to count molecules.
Show the code
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
osmoticPressure · src/physics/reference/diffusion/distributions.ts · this site’s source, as built · sha256:a981b895ccd74c72c660fd64bc27c0406701b50b7828b2e62565bdf6f9f3468c
This function computes the listed outputs when it runs.
In words
The ideal osmotic pressure of a suspension: the number of particles in a cubic metre, times the Boltzmann constant, times the temperature. A negative density or a nonpositive temperature is refused before the multiplication, and the constant comes from the declared set rather than a literal.
Implementation
exportfunctionosmoticPressure({n,T}:{n:number;T:number},set:ConstantSet):Evaluation{if(!Number.isFinite(n)||n<0||!Number.isFinite(T)||T<=0)returnoutside("osmoticPressure","osmoticPressure","n >= 0 and T > 0","Use a nonnegative number density and a positive temperature.","input",set,);returnnumber("osmoticPressure","osmoticPressure",n*thermalConstant(set).value*T,set,undefined,n>0,);}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
volumeFraction · src/physics/reference/diffusion/routeA.ts · this site’s source, as built · sha256:ae2fc4df5d298eb04523984a56ab3654a70a0e788503682ade2e87c839113fb2
This function computes the listed outputs when it runs.
In words
What fraction of the liquid the particles themselves occupy: the count times the volume of one sphere of this radius, divided by the volume of the vessel. The count must be a whole number, which is why it is checked with isSafeInteger rather than for being finite.
Implementation
exportfunctionvolumeFraction(Np:number,a:number,V:number):RouteAEvaluation{if(!Number.isSafeInteger(Np)||Np<0||![a,V].every((v)=>Number.isFinite(v)&&v>0)){returnoutside("volumeFraction","volumeFraction","Np a nonnegative integer, a > 0, V > 0","Use a whole particle count and positive radius and volume.",);}returnnumber("volumeFraction","volumeFraction",(Np*(4/3)*Math.PI*a*a*a)/V);}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
diluteDomainCheck · src/physics/reference/diffusion/routeA.ts · this site’s source, as built · sha256:7168af3321032692f9d3f7dfa32ec59745529da1b4ceecbb016e3ed2173cd0bc
This function computes the listed outputs when it runs.
In words
It compares the volume fraction with a bound and returns whether it is admitted, together with the two boundaries in the reader's own units: the largest particle count this vessel admits and the smallest vessel this count admits. At a million spheres of half a micron in a cubic millimetre the fraction is 0.000524, and against a bound of 0.01 the ceiling is 19,098,593 particles.
Implementation
exportfunctiondiluteDomainCheck(phi:number,phiMax:number,input:{Np:number;a:number;V:number;justification:string},):DiluteDomain|RouteAEvaluation{const{Np,a,V,justification}=input;if(![phi,phiMax,a,V].every((v)=>Number.isFinite(v))||phi<0||phiMax<=0||!Number.isSafeInteger(Np)||Np<0||a<=0||V<=0||!justification.trim()){returnoutside("volumeFraction","diluteDomainCheck","phiMax > 0 with a recorded justification","Declare a positive volume-fraction bound and why it is admitted. There is no hidden default.",);}constparticleVolume=(4/3)*Math.PI*a*a*a;constmaxAdmittedCount=Math.floor((phiMax*V)/particleVolume);constminAdmittedVolume=(Np*particleVolume)/phiMax;returnObject.freeze({admitted:phi<=phiMax,phi,phiMax,virialCorrectionAtBound:hardSphereVirialCorrection(phiMax),maxAdmittedCount,minAdmittedVolume,justification,});}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
partitionForce · src/physics/reference/diffusion/routeA.ts · this site’s source, as built · sha256:3362b3133d3a45c01111eef63d091ec93c9d0c86cff66a8498b9a6e3ba23839b
This function computes the listed outputs when it runs.
In words
The force the osmotic pressure puts on a partition: the pressure times the area. A zero pressure is allowed and gives a zero force, while a zero area is refused, because a partition with no area is not a partition.
Implementation
exportfunctionpartitionForce(Pi:number,A:number):RouteAEvaluation{if(![Pi,A].every((v)=>Number.isFinite(v))||Pi<0||A<=0){returnoutside("partitionForce","partitionForce","Pi >= 0 and A > 0","Use a nonnegative pressure and a positive partition area.",);}returnnumber("partitionForce","partitionForce",Pi*A);}
The site’s own reference code for this law, in TypeScript. It computes the numbers above when the page runs it, and it is what the page uses wherever a FrankenSim result is not available.
hydrostaticHead · src/physics/reference/diffusion/routeA.ts · this site’s source, as built · sha256:bb1200efdc06568c52194de05618bb14584145af82da8e46c5edeadd90e081f9
This function computes the listed outputs when it runs.
In words
Pressure divided by density times gravity. At 4 Pa in water it is 0.408 millimetres. The gravity is not an input a reader has to supply: it defaults to the declared standard 9.80665 m/s^2, and a caller may pass another.
Implementation
exportfunctionhydrostaticHead(Pi:number,rho:number,g=STANDARD_GRAVITY):RouteAEvaluation{if(![Pi,rho,g].every((v)=>Number.isFinite(v))||Pi<0||rho<=0||g<=0){returnoutside("hydrostaticHead","hydrostaticHead","Pi >= 0, rho > 0, g > 0","Use a nonnegative pressure, a positive solvent density, and a positive gravity.",);}returnwrap({...identity("hydrostaticHead","hydrostaticHead"),status:"value",value:Pi/(rho*g),},{modelNote:"Equivalent solvent column height, not a manometer in the apparatus.",},);}
Einstein's §1 makes a daring equivalence: a visible suspended particle should exert osmotic pressure by the same law as a dissolved molecule, because van 't Hoff's law has no term that knows how big the molecule is.
The osmotic pressure depends on the number of particles per unit volume and the temperature. It does not depend on the particle radius, as long as the suspension stays dilute enough that particles do not interact; the same law, whether the particles are sugar molecules or visible spheres a thousand times larger.
What classical thermodynamics expected instead
Einstein's §1 states the rival fairly: in classical thermodynamics, the free energy of a system with suspended bodies appears to depend only on total masses and qualities, pressure, and temperature, not on where a partition and the bodies sit. No force on the partition would be expected on that view. This instrument shows that expectation as a labeled alternative, not as something already refuted: what decided between the two models was Einstein's predicted displacements in §5, and later Jean Perrin's sedimentation-equilibrium measurements of 1908–1909.
This instrument uses the modern, exact SI constant set. The 1905 printed historical constant set (with Einstein's printed Avogadro number and an editorial value for the gas constant) is not yet available; that comparison depends on a separate, unbuilt constant set and is not faked here.