public void DrawdownTest()
    {
      TheisAnalysis target = new TheisAnalysis(); // TODO: Initialize to an appropriate value
      IXYPoint PumpingWell = new XYPoint(0, 0);
      double PumpingRate = 5000.0/24.0 / 3600.0; //5000 m3/day
      double Storativity = 1.83e-3;
      double Transmissivity = 164.49 / 24.0 / 3600.0; //90 m2/day
      TimeSpan Time = TimeSpan.FromMinutes(100);
      IXYPoint ObservationPoint = new XYPoint(50, 50);
      double actual;
      actual = target.Drawdown(PumpingWell, PumpingRate, Storativity, Transmissivity, Time, ObservationPoint);

      Assert.AreEqual(2.959, actual, 0.01);
    }
    public void NovoTest()
    {
      TheisAnalysis target = new TheisAnalysis(); // TODO: Initialize to an appropriate value
      IXYPoint PumpingWell = new XYPoint(0, 0);
      double PumpingRate = 15 / 3600.0; //
      double Storativity = 5e-3;
      double Transmissivity = 1e-3; //


      List<IXYPoint> InjectionWells = new List<IXYPoint>();

//      InjectionWells.Add(new XYPoint(704288.01, 6201186.04));
//      InjectionWells.Add(new XYPoint(704455.3,6201201.6 ));
//      InjectionWells.Add(new XYPoint(704621.99, 6201219));
////      InjectionWells.Add(new XYPoint(704951.98, 6201249.18));

      List<IXYPoint> ExtractionWells = new List<IXYPoint>();

      //ExtractionWells.Add(new XYPoint(704934.54, 6200994.85));
      //ExtractionWells.Add(new XYPoint(704896.26, 6200720.37));
      //ExtractionWells.Add(new XYPoint(704940, 6200550));


      //InjectionWells.Add(new XYPoint(704698, 6202442));
      //ExtractionWells.Add(new XYPoint(704850, 6202365));


      using (ShapeReader sr = new ShapeReader(@"C:\Users\Jacob\Dropbox\Enopsol\BiogenLocation.shp"))
      {

        foreach (var g in sr.GeoData)
        {
          if ((int)g.Data[0] == 1)
            InjectionWells.Add((IXYPoint)g.Geometry);
          else if ((int)g.Data[0] == 2)
            ExtractionWells.Add((IXYPoint)g.Geometry);
        }
      }



      var d = target.Drawdown(InjectionWells.First(), 56.0/3600.0, Storativity, Transmissivity, TimeSpan.FromHours(4), new XYPoint(InjectionWells.First().X + 2, InjectionWells.First().Y +2));

      List<List<double>> drawdowns = new List<List<double>>();

      drawdowns.Add(new List<double>());
      drawdowns.Add(new List<double>());
      drawdowns.Add(new List<double>());

      //Frederiksgade
      IXYPoint ObservationPoint = new XYPoint(705669, 6202256);

      int j = 0;
      for (int i = 0; i < 100; i++)
      {
        double s = 0;
        TimeSpan Time = TimeSpan.FromDays(i);

        foreach (var w in ExtractionWells)
          s += target.Drawdown(w, +PumpingRate, Storativity, Transmissivity, Time, ObservationPoint);

        drawdowns[j].Add(s);


        foreach (var w in InjectionWells)
          s += target.Drawdown(w, -PumpingRate, Storativity, Transmissivity, Time, ObservationPoint);

        drawdowns[j+1].Add(s);

        double dw = target.Drawdown(ExtractionWells[0], PumpingRate, Storativity, Transmissivity, Time, new XYPoint(ExtractionWells[0].X+0.5,ExtractionWells[0].Y+0.5));
        drawdowns[j + 2].Add(dw);


      }

      using (System.IO.StreamWriter sw = new System.IO.StreamWriter(@"c:\temp\enopsol.txt"))
      {
        for (int i = 0; i < 100; i++)
        {
          sw.WriteLine(drawdowns[0][i].ToString() + "\t" + drawdowns[1][i].ToString() + "\t" + drawdowns[2][i].ToString());

        }
      }
    }