Esempio n. 1
0
        private void simulateButton_Click_1(object sender, EventArgs e)
        {
            double dt       = Convert.ToDouble(stepBox.Text);
            double duration = Convert.ToDouble(durationBox.Text);
            int    steps    = (int)(duration / dt);

            simConsole.InitializeConsole(gridWidth, gridLength, gridHeight, steps);// = new SimulatorConsole();
            double[] d     = { Convert.ToDouble(dxBox.Text), Convert.ToDouble(dyBox.Text), Convert.ToDouble(dzBox.Text) };
            double[] k     = { Convert.ToDouble(kxBox.Text), Convert.ToDouble(kyBox.Text), Convert.ToDouble(kzBox.Text) };
            double   phi   = Convert.ToDouble(porosityText.Text);
            double   ct    = Convert.ToDouble(ctBox.Text);
            double   E     = Convert.ToDouble(eBox.Text);
            double   v     = Convert.ToDouble(vBox.Text);
            double   alpha = Convert.ToDouble(alphaBox.Text);

            simConsole.SetRockProperties(d, k, phi, ct, E, v, alpha);
            double p    = Convert.ToDouble(pressureBox.Text);
            double sat  = Convert.ToDouble(saturationBox.Text);
            double visc = Convert.ToDouble(viscosityBox.Text);

            simConsole.SetFluidProperties(p, sat, visc);
            simConsole.SetSimulatorSettings(porosityCheck.Checked, heightCheck.Checked);
            simConsole.RunSimulator(duration, dt);
            plog      = simConsole.GetPressureLog();
            hlog      = simConsole.GetHeightLog();
            philog    = simConsole.GetPorosityLog();
            strainlog = simConsole.GetStrainLog();
            stresslog = simConsole.GetStressLog();
            int nodes = simConsole.GetNodes();

            storedvals = new double[nodes];
            UpdatePressureChart(plog, nodes, steps, dt);
            UpdateHeightChart(hlog, nodes, steps, dt);
            UpdateStrainChart(strainlog, nodes, steps, dt);
            dataTrack.Minimum = 0;
            dataTrack.Maximum = steps;
            maxH      = 0;
            minH      = 99999;
            maxP      = 0;
            minP      = 99999;
            maxPhi    = 0;
            minPhi    = 1;
            maxStrain = 0;
            minStrain = 99999;
            maxStress = 0;
            minStress = 0;
            try {
                StreamWriter outfileM = new StreamWriter(@"Z:\Workspace\ResSimTerm2.txt", false, Encoding.UTF8);
                for (int t = 0; t < steps; t++)
                {
                    string mat = "";
                    for (int n = 0; n < nodes; n++)
                    {
                        mat      += strainlog[n, t].ToString("0.000000000") + ",";
                        maxH      = Math.Max(maxH, hlog[n, t]);
                        maxP      = Math.Max(maxP, plog[n, t]);
                        maxPhi    = Math.Max(maxPhi, philog[n, t]);
                        maxStrain = Math.Max(maxStrain, strainlog[n, t]);
                        minH      = Math.Min(minH, hlog[n, t]);
                        minP      = Math.Min(minP, plog[n, t]);
                        minPhi    = Math.Min(minPhi, philog[n, t]);
                        minStrain = Math.Min(minStrain, strainlog[n, t]);
                        maxStress = Math.Max(maxStress, stresslog[n, t]);
                        minStress = Math.Min(minStress, stresslog[n, t]);
                    }
                    outfileM.WriteLine(mat);
                }
                outfileM.Close();
            }
            catch { }
            //testing purposes only
            // Set the tick frequency to one tick every ten units.
            dataTrack.TickFrequency = 1;

            // Associate the event-handling method with the
            // ValueChanged event.
            dataTrack.ValueChanged +=
                new System.EventHandler(dataTrack_ValueChanged);
            //this.Controls.Add(this.dataTrack);
        }