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 }); }