using System; namespace Science.Physics.GeneralPhysics { /// /// Sound /// public class Sound { public Sound() { } private double v = 343; // at t=20C public double TypicalSpeed { get{return v;} set{v=value;} } public void SetSpeed(Temperature t) { v = 331.0*Math.Sqrt(1.0+t.C/273.0); } public double Speed(Elasticity e, Density rho) { return Math.Sqrt(e.BulkModulus/rho.kgPERmCUBE); } public void DopplerEffect(Frequency source, Speed vs, Frequency observer, Speed vo) { if(source.VariableQ) source.Hz = observer.Hz*(v-vs.mPERs)/(v+vo.mPERs); else if(vs.VariableQ) vs.mPERs = v - (v+vo.mPERs)*source.Hz/observer.Hz; else if(observer.VariableQ) observer.Hz = (v+vo.mPERs)/(v-vs.mPERs)*source.Hz; else vo.mPERs = -v + (v-vs.mPERs)/source.Hz*observer.Hz; } private double I; public double Intensity { get{return I;} set{I = value;} } public double dB { get{return 10.0*Math.Log10(I/1.0E-12);} } } }