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(); }
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); } } }
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]); } }
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); } }
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); } } }