Пример #1
0
        /********************************************************************************************
        * 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]);
                    }
                }
            });
        }