public static WBSolver GetNewSolver2(WBProjectOptions options) { var layerOpts2 = StandartOpts; var geom = new GunShape(); geom.AddPoint(layerOpts2.X_left - 0.2, 0.132); geom.AddPoint(layerOpts2.X_right + 5, 0.132); var initLayer = new OvLayer(); initLayer.Geom = geom; GunPowder powder = new GunPowder(); powder = powder_AGARD(); List <GunPowder> powder_list = new List <GunPowder>() { powder }; List <double> conc_list = new List <double>() { 1 }; MixtureGunPowder mixture = new MixtureGunPowder(powder_list, conc_list); initLayer.InitLayer(0d, layerOpts2, MySuoerFunc(mixture), InitOvBound); var grid = new OvGridRK("OvGrid_tst1", initLayer); var solver = new WBSolver(grid, options); initLayer.SynchNodes_X_V(); return(solver); }
public static Func <double, double, OvCell> MySuoerFunc(MixtureGunPowder mixture) { return((t, x) => { var answ = new OvCell(null, mixture); answ.ro = 840; answ.u = 0; answ.p = 1e5; answ.X = x; answ.V = 0; for (int i = 0; i < answ.mixture.powders.Count; i++) { answ.z[i] = 0; } return answ; }); }
public void GetPressureTest() { var powder = new GunPowder(); powder.f = 1.009e6; powder.alpha_k = 1.0838e-3; powder.dest = 1575; powder.k = 1.25; powder.nu = 0.9; powder.T1 = 2585; powder.lambda_1 = 0.2049; powder.lambda_2 = -0.8977; powder.kappa_1 = 0.7185; powder.kappa_2 = 0.5386; powder.Ik = 1.276e6; powder.zk = 1.5; List <GunPowder> powder_list = new List <GunPowder>() { powder }; List <double> conc_list = new List <double>() { 1 }; MixtureGunPowder mixture = new MixtureGunPowder(powder_list, conc_list); var cell = new OvCell(null, mixture) { ro = 840, u = 0, p = 1e5, X = 0, V = 0 }; cell.e = cell.GetE(); var p = cell.GetPressure(); Assert.AreEqual(cell.p, p, 0.1); }
public OvCell(GasConstants g, MixtureGunPowder mixture) : base(g, 3 + mixture.powders.Count) { this.mixture = mixture; z = new double[mixture.powders.Count]; }