Ejemplo n.º 1
0
        public SinglePhaseField[] LeastSquaresInterpolation(MultidimensionalArray rhoValues, MultidimensionalArray uValues, MultidimensionalArray vValues, MultidimensionalArray pValues)
        {
            // Project DG fields
            SinglePhaseField rhoField = new SinglePhaseField(new Basis(gridData, dgDegree), "rho");

            rhoField.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => rho),
                nodeSet);

            SinglePhaseField u0Field = new SinglePhaseField(new Basis(gridData, dgDegree), "u0");

            u0Field.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => u),
                nodeSet);

            SinglePhaseField u1Field = new SinglePhaseField(new Basis(gridData, dgDegree), "u1");

            u1Field.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => v),
                nodeSet);

            SinglePhaseField pField = new SinglePhaseField(new Basis(gridData, dgDegree), "p");

            pField.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => p),
                nodeSet);

            SinglePhaseField m0Field = new SinglePhaseField(new Basis(gridData, dgDegree), "m0");

            m0Field.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => rho * u),
                nodeSet);

            SinglePhaseField m1Field = new SinglePhaseField(new Basis(gridData, dgDegree), "m1");

            m1Field.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => rho * v),
                nodeSet);

            SinglePhaseField rhoEField = new SinglePhaseField(new Basis(gridData, dgDegree), "rhoE");

            rhoEField.ProjectNodal(
                1.0,
                GetScalarFunction(rhoValues, uValues, vValues, pValues, (rho, u, v, p) => p / 0.4 + 0.5 * rho * (u * u + v * v)),
                nodeSet);

            return(new SinglePhaseField[] { rhoField, u0Field, u1Field, pField, m0Field, m1Field, rhoEField });
        }