static void TestPotential(Func <LorentzVectorVariableU, LorentzVectorU> createPotential, EuclideanVector3 v) { LorentzVectorVariableU coordinates = new LorentzVectorVariableU("t", "x", "y", "z"); LorentzVectorU potential = createPotential(coordinates); LorentzVectorOperatorL del = coordinates.Del; ElectromagneticField field0 = new ElectromagneticField(potential, del); TestField(field0); ElectromagneticField field1 = field0.Transform(v); TestField(field1); TestFieldTransforms(field0.ElectricField, field0.MagneticField, field1.ElectricField, field1.MagneticField, v); CompareInvariantScalars(field0, field1); ElectromagneticField field2 = field1.Transform(-v); TestField(field2); TestFieldTransforms(field1.ElectricField, field1.MagneticField, field2.ElectricField, field2.MagneticField, -v); CompareInvariantScalars(field1, field2); Assert.AreEqual(field0.Potential, field2.Potential, "A dual transform"); Assert.AreEqual(field0.Del.ToString(), field2.Del.ToString(), "Del dual transform"); Assert.AreEqual(field0.ElectricField, field2.ElectricField, "E dual transform"); Assert.AreEqual(field0.MagneticField, field2.MagneticField, "B dual transform"); Assert.AreEqual(field0.CurrentDensity, field2.CurrentDensity, "J dual transform"); }
public ElectromagneticField(LorentzVectorU potential, LorentzVectorOperatorL del) { this.Potential = potential; this.Del = del; this.ElectricField = -this.Del.Vector * potential.Scalar - this.Del.Scalar * potential.Vector; this.MagneticField = this.Del.Vector.Cross(potential.Vector); this.FieldStrengthTensor = potential.Curl(this.Del.Invert()); this.CurrentDensity = this.Del * this.FieldStrengthTensor; this.DualFieldStrengthTensor = new LorentzMatrixLL((i, j) => { Symbol symbol = Symbol.Zero; for (int k = 0; k < 4; k++) { for (int l = 0; l < 4; l++) { symbol = symbol - LeviCivita.Four[i, j, k, l] * this.FieldStrengthTensor[k, l] / 2; } } return(symbol); }); }
static void TestCurrentDensity(LorentzVectorU J, LorentzVectorOperatorL del) { Assert.AreEqual(del.Dot(J), Symbol.Zero, "Divergence of current density"); }