protected override IGrid CreateOrLoadGrid()
        {
            GridCommons grd;

            switch (TestCase)
            {
            case 1: {
                // ++++++++++++++++++
                // affine-linear mesh
                // ++++++++++++++++++
                double[] xNodes = GenericBlas.Linspace(-5, 5, 21);
                double[] yNodes = GenericBlas.Linspace(-5, 5, 21);
                grd = Grid2D.Cartesian2DGrid(xNodes, yNodes);
                break;
            }

            case 2: {
                // +++++++++++
                // curved mesh
                // +++++++++++
                double[] xNodes = GenericBlas.Linspace(-5, 5, 21);
                double[] yNodes = GenericBlas.Linspace(-5, 5, 21);
                grd = Grid2D.BilinearSquareGrid(xNodes, yNodes, factor: 0.8);
                break;
            }

            default:
                throw new ArgumentException("unknown test-case index");
            }

            return(grd);
        }