using System; namespace Science.Physics.GeneralPhysics { /// /// QuantumPhysics /// public class QuantumPhysics { public QuantumPhysics() { } private static double h = Constant.PlankConstant; public static double WaveLengthInWienLaw(Temperature T) { return 2.898E-3/T.K; } public static double PlanckWavelengthDistributionFunction(Length wavelength, Temperature T) { double kB = Constant.BolzmannConstant; double c = Constant.SpeedOfLightInVacuum; return 2.0*Math.PI*h*c*c/ (Math.Pow(wavelength.m,5.0) *(Math.Exp(h*c/wavelength.m/kB/T.K)-1.0)); } public static KineticEnergy MaximumKineticEnergyInPhotoelectricEffect(Frequency f, Work phi) { KineticEnergy Kmax = new KineticEnergy(); Kmax.J = h*f.Hz - phi.J; return Kmax; } public static double ScatteredWavelengthInComptonEffect(Length incidentWavelength, Angle theta) { double m = Constant.ElectronMass; double c = Constant.SpeedOfLightInVacuum; return incidentWavelength.m + h/m/c*(1.0 - Math.Cos(theta.rad)); } public static double deBroglieWavelength(Momentum p) { return h/p.kgmPERs; } public static void UncertaintyPrinciple(Position x, Momentum p) { if(x.XVariableQ) x.X = h/2.0/Math.PI/2.0/p.X; if(x.YVariableQ) x.Y = h/2.0/Math.PI/2.0/p.Y; if(x.ZVariableQ) x.Z = h/2.0/Math.PI/2.0/p.Z; if(p.XVariableQ) p.X = h/2.0/Math.PI/2.0/x.X; if(p.YVariableQ) p.Y = h/2.0/Math.PI/2.0/x.Y; if(p.ZVariableQ) p.Z = h/2.0/Math.PI/2.0/x.Z; } public static void UncertaintyPrinciple(Time t, Energy E) { if(t.VariableQ) t.s = h/2.0/Math.PI/2.0/E.J; if(E.VariableQ) E.J = h/2.0/Math.PI/2.0/t.s; } } }