We can look at the 2d arrays later. Your code is almost there.
First, with your columns if you know they are going to be doubles then set the column data type as a double too.
Finally at the end instead of your line
myDataSet.Tables["Table 1"].Rows.Add(split);
use the following
DataRow theRow = myDataSet.Tables["Table 1"].NewRow();
theRow["X value"] = (decimal)split[0];
theRow["Y value"] = (decimal)split[1];
theRow["Vorticity"] = (decimal)split[2];
theRow["Stream Function"] = (decimal)split[3];
myDataSet.Tables["Table 1"].Rows.Add(theRow);
But thats just better code... your main problem is you didnt bind the dataset to the grid!!! Easy to miss but causes a problem after so much coding huh.
MyGrid.Datasource = myDataSet.Tables["Table 1"];
or MyGrid.DataMember = "Table 1";
myGrid.DataSource = myDataSet
If you use the second option always set the datamember name before binding the datasource otherwise you will bind twice and waste performance
Hope that gets you going.
However, i still think you could have just called myDataSet.SaveXML("mydatfile.dat")
then all you have to do is create a dataset, then call myDataSet.ReadXml("mydatfile.dat") and then bind it straight to the grid, no reading, no stream writers and readers, no anything but 2 lines of code.
You fill the table in the first place much the same way column by column .. row by row but that is the same as the dat file, only i suspect it will be easier too.
Let me know how you get on