/******************************************************************************************** * Constructors ********************************************************************************************/ protected PointChargeElectromagneticField( EMFCalculationMethod emfCalculationMethod, double pointChargeRapidity ) { EMFCalculationMethod = emfCalculationMethod; PointChargeVelocity = Math.Tanh(pointChargeRapidity); PointChargeLorentzFactor = Math.Cosh(pointChargeRapidity); PointChargeLorentzFactorTimesVelocity = Math.Sinh(pointChargeRapidity); }
/******************************************************************************************** * Constructors ********************************************************************************************/ public NucleusElectromagneticField( EMFCalculationMethod emfCalculationMethod, double nucleusRapidity, Nucleus nucleus, int quadratureOrder ) { PointChargeEMF = PointChargeElectromagneticField.Create( emfCalculationMethod, nucleusRapidity); Nucleus = nucleus; NucleusVelocity = Math.Tanh(nucleusRapidity); QuadratureOrder = quadratureOrder; }
private double[,] CalculatePointChargeFields_NegativeRapidity(EMFCalculationMethod method) { PointChargeElectromagneticField emf = PointChargeElectromagneticField.Create( method, -PointChargeRapidity); double[,] fieldValues = new double[3, EffectiveTimes.Length]; for (int i = 0; i < EffectiveTimes.Length; i++) { emf.CalculateElectromagneticField( EffectiveTimes[i], RadialDistance, QGPConductivity, out double azimuthalMagneticComponent, out double longitudinalElectricComponent, out double radialElectricComponent); fieldValues[0, i] = azimuthalMagneticComponent; fieldValues[1, i] = longitudinalElectricComponent; fieldValues[2, i] = radialElectricComponent; } return(fieldValues); }
/******************************************************************************************** * Public static members, functions and properties ********************************************************************************************/ public static PointChargeElectromagneticField Create( EMFCalculationMethod emfCalculationMethod, double pointChargeRapidity ) { switch (emfCalculationMethod) { case EMFCalculationMethod.URLimitFourierSynthesis: return(new PointChargeElectromagneticField_URLimitFourierSynthesis( emfCalculationMethod, pointChargeRapidity)); case EMFCalculationMethod.DiffusionApproximation: return(new PointChargeElectromagneticField_DiffusionApproximation( emfCalculationMethod, pointChargeRapidity)); case EMFCalculationMethod.FreeSpace: return(new PointChargeElectromagneticField_FreeSpace( emfCalculationMethod, pointChargeRapidity)); default: throw new Exception("Invalid Calculation Method."); } }
/**************************************************************************************** * Constructors ****************************************************************************************/ public PointChargeElectromagneticField_FreeSpace( EMFCalculationMethod emfCalculationMethod, double pointChargeRapidity ) : base(emfCalculationMethod, pointChargeRapidity) { }
/**************************************************************************************** * Constructors ****************************************************************************************/ public PointChargeElectromagneticField_DiffusionApproximation( EMFCalculationMethod emfCalculationMethod, double pointChargeRapidity ) : base(emfCalculationMethod, pointChargeRapidity) { }
/**************************************************************************************** * Constructors ****************************************************************************************/ public PointChargeElectromagneticField_URLimitFourierSynthesis( EMFCalculationMethod emfCalculationMethod, double pointChargeRapidity ) : base(emfCalculationMethod, pointChargeRapidity) { }