示例#1
0
        public void ConvertVectorFieldComponents()
        {
            double radialPart       = 1;
            double azimuthalPart    = 2;
            double longitudinalPart = 3;

            SpatialVector vector1 = SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                1, 0, radialPart, azimuthalPart, longitudinalPart);

            Assert.AreEqual(1, vector1.X);
            Assert.AreEqual(2, vector1.Y);
            Assert.AreEqual(3, vector1.Z);

            SpatialVector vector2 = SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                0, 1, radialPart, azimuthalPart, longitudinalPart);

            Assert.AreEqual(-2, vector2.X);
            Assert.AreEqual(1, vector2.Y);
            Assert.AreEqual(3, vector2.Z);

            SpatialVector vector3 = SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                -1, 0, radialPart, azimuthalPart, longitudinalPart);

            Assert.AreEqual(-1, vector3.X);
            Assert.AreEqual(-2, vector3.Y);
            Assert.AreEqual(3, vector3.Z);

            SpatialVector vector4 = SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                0, -1, radialPart, azimuthalPart, longitudinalPart);

            Assert.AreEqual(2, vector4.X);
            Assert.AreEqual(-1, vector4.Y);
            Assert.AreEqual(3, vector4.Z);
        }
        public SpatialVector CalculateMagneticField(
            double t_fm,
            double x_fm,
            double y_fm,
            double z_fm,
            double conductivity_MeV
            )
        {
            double effectiveTime_fm  = CalculateEffectiveTime(t_fm, z_fm);
            double radialDistance_fm = CalculateRadialDistance(x_fm, y_fm);

            double azimuthalField
                = CalculateAzimuthalMagneticComponent(effectiveTime_fm, radialDistance_fm, conductivity_MeV);

            return(SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                       x_fm, y_fm, 0, azimuthalField, 0));
        }
        public SpatialVector CalculateMagneticFieldInLCF(
            double properTime_fm,
            double x_fm,
            double y_fm,
            double rapidity,
            double conductivity_MeV
            )
        {
            double effectiveTime_fm  = CalculateEffectiveTimeFromLCFCoordinates(properTime_fm, rapidity);
            double radialDistance_fm = CalculateRadialDistance(x_fm, y_fm);

            double azimuthalField
                = CalculateAzimuthalMagneticComponentInLCF(effectiveTime_fm, radialDistance_fm, rapidity, conductivity_MeV);

            return(SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                       x_fm, y_fm, 0, azimuthalField, 0));
        }
        public SpatialVector CalculateElectricField(
            double t_fm,
            double x_fm,
            double y_fm,
            double z_fm,
            double conductivity_MeV
            )
        {
            double effectiveTime_fm  = CalculateEffectiveTime(t_fm, z_fm);
            double radialDistance_fm = CalculateRadialDistance(x_fm, y_fm);

            double longitudinalField
                = CalculateLongitudinalElectricComponent(effectiveTime_fm, radialDistance_fm, conductivity_MeV);

            double radialField
                = CalculateRadialElectricComponent(effectiveTime_fm, radialDistance_fm, conductivity_MeV);

            return(SpatialVector.ConvertCylindricalToEuclideanVectorFieldComponents(
                       x_fm, y_fm, radialField, 0, longitudinalField));
        }