using System; using GP = Science.Physics.GeneralPhysics; namespace ScienceTest.PhysicsTest.GeneralPhysicsTest { /// /// ElectricFluxTest /// public class ElectricFluxTest { public ElectricFluxTest() { } private string result; public string Result { get{return result;} } public void Compute() { GP.Vector.Field vf = new GP.Vector.Field(efield); GP.ElectricField E = new GP.ElectricField(vf); GP.Surface.Parameterization ptp = new GP.Surface.Parameterization(func); GP.Surface S = new GP.Surface(); S.ParameterToPosition = ptp; S.Parameter1StartValue = 0.0; S.Parameter1EndValue = Math.PI; S.Parameter2StartValue = 0.0; S.Parameter2EndValue = 2.0*Math.PI; GP.Time t = new GP.Time(); t.s = 0.0; GP.ElectricFlux Phi = new GP.ElectricFlux(E,S,t); result += Convert.ToString(GP.Constant.PermittivityOfFreeSpace * Phi.NmSQUAREPERC) +" +/- " + Convert.ToString(GP.Constant.PermittivityOfFreeSpace * Phi.StandardDeviation); } private GP.Vector efield(GP.Position r, GP.Time t) { GP.Vector v = new GP.Vector(); double n = Math.Sqrt(r.X*r.X+r.Y*r.Y+r.Z*r.Z); double c = 1.0/4.0/Math.PI/GP.Constant.PermittivityOfFreeSpace; v.X = c*1.0/n/n*r.X/n; v.Y = c*1.0/n/n*r.Y/n; v.Z = c*1.0/n/n*r.Z/n; return v; } private GP.Position func(double x, double y) { GP.Position r = new GP.Position(); r.X = 10.0*Math.Sin(x)*Math.Cos(y); r.Y = 10.0*Math.Sin(x)*Math.Sin(y); r.Z = 10.0*Math.Cos(x); return r; } } } // 1.00001397582719 +/- 5.67668648835532E-06