public static GasCell InitGasCell1(double t, double x)
        {
            var answ = new GasCell(gc);

            answ.ro = 40;
            answ.u  = 0;
            answ.p  = 4e5;
            answ.X  = x;
            answ.V  = 0;
            return(answ);
        }
        /// <summary>
        /// Согласно AUSMp.f90
        /// </summary>
        /// <param name="nodeL"></param>
        /// <param name="nodeR"></param>
        /// <param name="vbi"></param>
        /// <returns>flux</returns>
        public static WBVec AUSMp(GasCell nodeL, GasCell nodeR, double vbi)
        {
            double r1 = nodeL.ro;
            double u1 = nodeL.u;
            double e1 = nodeL.e;

            double r2 = nodeR.ro;
            double u2 = nodeR.u;
            double e2 = nodeR.e;

            double p1 = nodeL.p;
            double p2 = nodeR.p;

            double H1 = nodeL.H;
            double H2 = nodeR.H;

            double c1 = nodeL.CSound;
            double c2 = nodeR.CSound;

            double cs  = 0.5 * (c1 + c2);
            double Mr1 = (u1 - vbi) / cs;
            double Mr2 = (u2 - vbi) / cs;
            double du  = u2 - u1;

            double M4p = Abs(Mr1) >= 1d
                ? 0.5 * (Mr1 + Abs(Mr1))
                : 0.25 * ((Mr1 + 1.0) * (Mr1 + 1.0)) * (1.0 + 2.0 * 0.25 * (Mr1 - 1.0) * (Mr1 - 1.0));
            double P5p = Abs(Mr1) >= 1d
                ? 0.5 * (Mr1 + Abs(Mr1)) / Mr1
                : 0.25 * ((Mr1 + 1.0) * (Mr1 + 1.0)) * ((2.0 - Mr1) + 3.0 * Mr1 * 0.25 * (Mr1 - 1.0) * (Mr1 - 1.0));


            double M4m = Abs(Mr2) >= 1d
                ? 0.5 * (Mr2 - Abs(Mr2))
                : -0.25 * ((Mr2 - 1.0) * (Mr2 - 1.0)) * (1.0 + 2.0 * 0.25 * (Mr2 + 1.0) * (Mr2 + 1.0));

            double P5m = Abs(Mr2) >= 1d
                ? 0.5 * (Mr2 - Abs(Mr2)) / Mr2
                : 0.25 * ((Mr2 - 1.0) * (Mr2 - 1.0)) * ((2.0 + Mr2) - 3.0 * Mr2 * 0.25 * (Mr2 + 1.0) * (Mr2 + 1.0));

            double Mrf = M4p + M4m;
            double pf  = P5p * p1 + P5m * p2;

            double flux1 = 0.5 * (cs * Mrf * (r1 + r2) - cs * Abs(Mrf) * (r2 - r1));
            double flux2 = 0.5 * (cs * Mrf * (r1 * u1 + r2 * u2) - cs * Abs(Mrf) * (r2 * u2 - r1 * u1)) + pf;
            double flux3 = 0.5 * (cs * Mrf * (r1 * H1 + r2 * H2) - cs * Abs(Mrf) * (r2 * H2 - r1 * H1)) + pf * vbi;

            return(new WBVec(flux1, flux2, flux3));
        }
        public static GasCell InitGasCell(double t, double x)
        {
            var answ = new GasCell(gc);

            if (x <= 0d)
            {
                answ.ro = 1;
                answ.u  = 0;
                answ.p  = 1;
            }
            else
            {
                answ.ro = 0.125;
                answ.u  = 0;
                answ.p  = 0.1;
            }
            answ.X = x;
            answ.V = 0;
            return(answ);
        }