/******************************************************************************************** * Public members, functions and properties ********************************************************************************************/ public void Advance( double newTime ) { LinearInterpolation2D interpT = new LinearInterpolation2D(System.XAxis, System.YAxis, Temperature.GetValues()); LinearInterpolation2D interpVX = new LinearInterpolation2D(System.XAxis, System.YAxis, VelocityX.GetValues()); LinearInterpolation2D interpVY = new LinearInterpolation2D(System.XAxis, System.YAxis, VelocityY.GetValues()); LinearInterpolation2D interpE = new LinearInterpolation2D(System.XAxis, System.YAxis, ElectricField.GetValues()); LinearInterpolation2D interpB = new LinearInterpolation2D(System.XAxis, System.YAxis, MagneticField.GetValues()); SetValues((xIndex, yIndex, pTIndex, stateIndex) => { if (!IsStateAlreadyFormed(pTIndex, stateIndex, newTime)) { return(0); } else { GetQQStateCoordinates(xIndex, yIndex, pTIndex, stateIndex, newTime, out double x, out double y); if (!IsInDomainOfCalculation(x, y)) { return(0); } else { double vQGP = Math.Sqrt(Math.Pow(interpVX.GetValue(x, y), 2) + Math.Pow(interpVY.GetValue(x, y), 2)); return(GetDecayWidth( (BottomiumState)stateIndex, interpT.GetValue(x, y), GetRelativeVelocityInQQFrame(BetaT[pTIndex, stateIndex], vQGP), interpE.GetValue(x, y), interpB.GetValue(x, y)) / GammaT[pTIndex, stateIndex]); } } }); }