コード例 #1
0
ファイル: SConverge.cs プロジェクト: Xiderowg/XAJModel
        public void importExcel()
        {
            DGH.importExcel("产流量过程数据.xls");
            DT = GC.DataSource as DataTable;
            Anchor.SAnchor Col  = new Anchor.SAnchor();
            DTable         DTab = new DTable(DT);

            GC.MainView.PopulateColumns();
        }
コード例 #2
0
        public void Start()
        {
            if (DParams == null && D2Params == null)
            {
                System.Windows.Forms.MessageBox.Show("请设置参数后再进行计算", "错误!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }
            rowCount = DT.Rows.Count - 1;

            Anchor.DAnchor Col  = new Anchor.DAnchor();
            DTable         DTab = new DTable(DT);

            if (DivisionType == 3)
            {
                double FR0 = DTab.getCell(0, Col.RPE);
                double FR;
                for (int i = 0; i < rowCount; i++)
                {
                    double AU, S0;
                    double RS, RI, RG, S;
                    double R  = DTab.getCell(i, Col.R);
                    double RB = DTab.getCell(i, Col.RB);
                    double PE = DTab.getCell(i, Col.PE);

                    if (i == 0)
                    {
                        S0 = DTab.getCell(i, Col.R);
                    }
                    else
                    {
                        FR0 = DTab.getCell(i - 1, Col.FR);
                        S0  = DTab.getCell(i - 1, Col.S0) * (1 - DParams.KI - DParams.KG);
                    }

                    calFR(PE, R, FR0, out FR);
                    DTab.setCell(i, Col.FR, FR);
                    calAU(DParams.MS, S0, DParams.SM, DParams.MS, FR0, FR, DParams.EX, out AU);
                    calR(RB, AU, FR, R, PE, S0, FR0, DParams.SM, DParams.MS, DParams.EX, DParams.KI, DParams.KG, out RS, out RI, out RG, out S);
                    DTab.setCell(i, Col.S0, S); DTab.setCell(i, Col.RS, RS); DTab.setCell(i, Col.RI, RI); DTab.setCell(i, Col.RG, RG);
                }
            }
            else
            {
                for (int i = 0; i < rowCount; i++)
                {
                    double Rs, Rg;
                    double PE = DTab.getCell(i, Col.PE);
                    double R  = DTab.getCell(i, Col.R);
                    calRSplit(PE, D2Params.FC, D2Params.DT, R, out Rs, out Rg);
                    DTab.setCell(i, Col.RS, Rs); DTab.setCell(i, Col.RG, Rg);
                }
            }
        }
コード例 #3
0
        public void Start()
        {
            if (RParams == null)
            {
                System.Windows.Forms.MessageBox.Show("请设置参数后再进行计算", "错误!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }
            rowCount = DT.Rows.Count - 1;

            Anchor.RAnchor Col  = new Anchor.RAnchor();
            DTable         DTab = new DTable(DT);

            double[] IData = DT.AsEnumerable().Select(d => double.Parse(d.Field <string>("I(m3/s)"))).ToArray();
            double   O0    = IData[0];

            double[] Q = new double[IData.Length];
            Maskinen(IData, O0, RParams.DT, RParams.KE, RParams.XE, (int)RParams.N, out Q);
            for (int i = 0; i < rowCount; i++)
            {
                DTab.setCell(i, Col.O, Q[i]);
            }
        }
コード例 #4
0
        public void Start()
        {
            if (EParams == null)
            {
                System.Windows.Forms.MessageBox.Show("请设置参数后再进行计算", "错误!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }
            rowCount = DT.Rows.Count - 1;
            Anchor.EAnchor Col  = new Anchor.EAnchor();
            DTable         DTab = new DTable(DT);

            //计算蒸散发及产流量
            for (int i = 0; i < rowCount; i++)
            {
                //蒸发
                double WU = DTab.getCell(i, Col.WU); double WL = DTab.getCell(i, Col.WL); double WD = DTab.getCell(i, Col.WD);
                double W = WU + WL + WD;
                double P = DTab.getCell(i, Col.P); double E0 = DTab.getCell(i, Col.E0);
                double Ep = 0, Eu = 0, El = 0, Ed = 0, E = 0;
                calEvaporation(WU, P, EParams.C, WL, EParams.WLM, E0, EParams.Kc, out Ep, out Eu, out El, out Ed, out E);
                DTab.setCell(i, Col.PE, (P - E) * (1 - EParams.IM));
                DTab.setCell(i, Col.Ep, Ep); DTab.setCell(i, Col.Eu, Eu); DTab.setCell(i, Col.El, El);
                DTab.setCell(i, Col.Ed, Ed); DTab.setCell(i, Col.E, E);
                //产流
                double a = 0, R = 0, RB = 0;
                calRB(P, E, EParams.IM, out RB);
                calA(EParams.WMM, W, EParams.WM, EParams.b, out a);
                calR((P - E) * (1 - EParams.IM), a, EParams.WMM, EParams.WM, W, EParams.b, out R);
                DTab.setCell(i, Col.R, R);
                DTab.setCell(i, Col.RB, RB);
                DTab.setCell(i, Col.RPE, R / ((P - E) * (1 - EParams.IM)));
                //计算下一时段土壤蓄量
                double WUNext, WLNext, WDNext, WNext;
                calW(P, E, EParams.IM, R, WU, WD, WL, EParams.WUM, EParams.WDM, EParams.WLM, out WUNext, out WLNext, out WDNext, out WNext);
                DTab.setCell(i + 1, Col.WU, WUNext); DTab.setCell(i + 1, Col.WD, WDNext); DTab.setCell(i + 1, Col.WL, WLNext);
                DTab.setCell(i + 1, Col.W, WNext);
            }
        }
コード例 #5
0
ファイル: SConverge.cs プロジェクト: Xiderowg/XAJModel
        public void Start()
        {
            if (SParams == null)
            {
                System.Windows.Forms.MessageBox.Show("请设置参数后再进行计算", "错误!", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                return;
            }
            rowCount = DT.Rows.Count;

            Anchor.SAnchor Col  = new Anchor.SAnchor();
            DTable         DTab = new DTable(DT);

            if (DivisionType == 3)
            {
                //初值
                double QS0 = DTab.getCell(0, Col.RS) * SParams.U;
                double QG0 = DTab.getCell(0, Col.RG) * SParams.U;
                double QI0 = DTab.getCell(0, Col.RI) * SParams.U;
                double QS = QS0; double QG = QG0; double QI = QI0;
                double QT = QS0 + QG0 + QI0;
                // TO DO //
                double Q0 = QT; double Q = Q0;
                DTab.setCell(0, Col.QS, QS); DTab.setCell(0, Col.QI, QI); DTab.setCell(0, Col.QG, QG);
                DTab.setCell(0, Col.QT, QT); DTab.setCell(0, Col.Q, Q);
                for (int i = 1; i < rowCount; i++)
                {
                    calQS(QS0, SParams.CS, DTab.getCell(i, Col.RS), SParams.U, out QS);
                    calQI(QI0, SParams.CI, DTab.getCell(i, Col.RI), SParams.U, out QI);
                    calQG(QG0, SParams.CG, DTab.getCell(i, Col.RG), SParams.U, out QG);
                    calQ(Q0, SParams.CR, DTab.getCell(i, Col.RS) + DTab.getCell(i, Col.RI) + DTab.getCell(i, Col.RG), SParams.U, out Q);
                    QS0 = QS; QI0 = QI; QG0 = QG;
                    QT  = QS + QI + QG; Q0 = Q;
                    DTab.setCell(i, Col.QS, QS); DTab.setCell(i, Col.QI, QI); DTab.setCell(i, Col.QG, QG);
                    DTab.setCell(i, Col.QT, QT); DTab.setCell(i, Col.Q, Q);
                }
            }
            else
            {
                double[] q  = DT.AsEnumerable().Select(d => double.Parse(d.Field <string>("q (m3/s)"))).ToArray();
                double[] rs = DT.AsEnumerable().Select(d => double.Parse(d.Field <string>("Rs (mm)"))).ToArray();
                double[,] Matrix = calUHMatrix(rs.Length, q, rs);
                double QG0 = DTab.getCell(0, Col.RG) * SParams.U;
                double QG  = QG0;
                DTab.setCell(0, Col.QG, QG0);
                for (int i = 0; i < rowCount; i++)
                {
                    double QS = 0;
                    for (int j = 0; j < rs.Length; j++)
                    {
                        QS += Matrix[j, i];
                    }
                    DTab.setCell(i, Col.QS, QS);
                }
                double QT0 = QG + DTab.getCell(0, Col.QS);
                double Q0  = QT0;
                DTab.setCell(0, Col.QT, QT0); DTab.setCell(0, Col.Q, QT0);
                for (int i = 1; i < rowCount; i++)
                {
                    calQG(QG0, SParams.CG, DTab.getCell(i, Col.RG), SParams.U, out QG);
                    QG0 = QG;
                    double QS = DTab.getCell(i, Col.QS);
                    double QT = QS + QG;
                    double Q  = 0;
                    calQ(Q0, SParams.CR, DTab.getCell(i, Col.RS) + DTab.getCell(i, Col.RG), SParams.U, out Q);
                    Q0 = Q;
                    DTab.setCell(i, Col.QG, QG); DTab.setCell(i, Col.QT, QT); DTab.setCell(i, Col.Q, Q);
                }
            }
        }