private List <List <double> > CreatePointChargeAndNucleusFieldComponentsRadialDistanceDataList() { List <List <double> > dataList = new List <List <double> >(); List <double> radialDistanceValues = GetLogarithmicAbscissaList(0.1, 100, Samples); dataList.Add(radialDistanceValues); Nucleus.CreateNucleusPair(CreateFireballParam(), out Nucleus nucleusA, out Nucleus nucleusB); PointChargeElectromagneticField pcEMF = PointChargeElectromagneticField.Create( EMFCalculationMethod, ParticleRapidity); NucleusElectromagneticField nucEMF = new NucleusElectromagneticField( EMFCalculationMethod, ParticleRapidity, nucleusA, EMFQuadratureOrder); PlotFunction[] plotFunctions = { r => EMFNormalization * pcEMF.CalculateElectromagneticField(EMFComponent.AzimuthalMagneticComponent, FixedTime, r, QGPConductivity_MeV), r => EMFNormalization * pcEMF.CalculateElectromagneticField(EMFComponent.LongitudinalElectricComponent, FixedTime, r, QGPConductivity_MeV), r => EMFNormalization * pcEMF.CalculateElectromagneticField(EMFComponent.RadialElectricComponent, FixedTime, r, QGPConductivity_MeV), r => EMFNormalization * nucEMF.CalculateAzimuthalMagneticComponent(FixedTime, r, QGPConductivity_MeV), r => EMFNormalization * nucEMF.CalculateLongitudinalElectricComponent(FixedTime, r, QGPConductivity_MeV), r => EMFNormalization * nucEMF.CalculateRadialElectricComponent(FixedTime, r, QGPConductivity_MeV) }; foreach (PlotFunction function in plotFunctions) { AddPlotFunctionLists(dataList, radialDistanceValues, function); } return(dataList); }
/******************************************************************************************** * Private/protected members, functions and properties ********************************************************************************************/ private SpatialVector[] CalculateElectricFieldValues() { FireballParam param = CreateFireballParam(); Nucleus.CreateNucleusPair(param, out Nucleus nucleusA, out Nucleus nucleusB); NucleusElectromagneticField emf = new NucleusElectromagneticField( param.EMFCalculationMethod, param.BeamRapidity, nucleusA, param.EMFQuadratureOrder); SpatialVector[] fieldValues = new SpatialVector[Positions.Length]; for (int i = 0; i < Positions.Length; i++) { fieldValues[i] = emf.CalculateElectricField( Time, Positions[i].X, Positions[i].Y, Positions[i].Z, QGPConductivity); } return(fieldValues); }
private List <List <double> > CreateNucleusElectricFieldStrengthInLCFDataList() { List <List <double> > dataList = new List <List <double> >(); FireballParam param = CreateFireballParam(); List <double> rapidityValues = GetLinearAbscissaList(-8, 8, Samples); List <double> radialDistanceValues = GetLinearAbscissaList(0, 25, Samples); SurfacePlotFunction function = (rapidity, radialDistance) => { Nucleus.CreateNucleusPair(param, out Nucleus nucleusA, out Nucleus nucleusB); NucleusElectromagneticField emf = new NucleusElectromagneticField( param.EMFCalculationMethod, ParticleRapidity, nucleusA, EMFQuadratureOrder); return(EMFNormalization * emf.CalculateElectricFieldInLCF( FixedTime, radialDistance, 0, rapidity, QGPConductivity_MeV).Norm); };