public static WBSolver GetNewSolver(WBProjectOptions options) { var layerOpts = StandartOpts; var geom = new GunShape(); geom.AddPoint(layerOpts.X_left - 10, 0.2); geom.AddPoint(layerOpts.X_right + 10, 0.2); var initLayer = new GasLayer(); initLayer.Geom = geom; initLayer.InitLayer(0d, layerOpts, InitGasCell, InitGasBound); var grid = new GasGrid("GasGrid_tst1", initLayer); var solver = new WBSolver(grid, options); return(solver); }
public static WBSolver GetNewSolver2(WBProjectOptions options) { var layerOpts1 = StandartOpts1; var geom = new GunShape(); geom.AddPoint(layerOpts1.X_left - 0.2, 0.2); geom.AddPoint(layerOpts1.X_right * 100, 0.2); var initLayer = new GasLayer(); initLayer.Geom = geom; initLayer.InitLayer(0d, layerOpts1, InitGasCell1, InitGasBound); var grid = new PnGrid("GasGrid_tst1", initLayer); var solver = new WBSolver(grid, options); initLayer.SynchNodes_X_V(); return(solver); }
//public GasLayer EulerStep(double tau) { // var lr0 = this; // foreach (var c in lr0.RealCells) { // c.Sync(); // } // lr0.SetBounds(); // foreach (var b in lr0.RealBounds) { // b.SetFlux(); // } // var lr1 = lr0.Clone() as GasLayer; // lr1.StrechStep(tau); // for (int i = 0; i < lr1.RealCells.Count; i++) { // var c_0 = lr0.RealCells[i]; // var c_05 = lr1.RealCells[i]; // var qs = (c_0.q * c_0.W + tau * c_0.Get_dQS()) / c_05.W; // c_05.SetQ(qs); // } // return lr1; //} public GasLayer EulerStep(double tau, GasLayer dqLayer, bool synchMe = true, bool syncDqLayer = true, bool calcDqLayerFluxes = true) { var lr0 = this; if (synchMe) { foreach (var c in lr0.RealCells) { c.Sync(); } lr0.SetBounds(); } if (calcDqLayerFluxes) { foreach (var b in dqLayer.RealBounds) { b.SetFlux(); } } var lr1 = lr0.Clone() as GasLayer; lr1.StrechStep(tau); for (int i = 0; i < lr1.RealCells.Count; i++) { var c_0 = lr0.RealCells[i]; var c_n = lr1.RealCells[i]; var c_dq = dqLayer.RealCells[i]; var qs = (c_0.q * c_0.W + tau * c_dq.Get_dQS()) / c_n.W; c_n.SetQ(qs); } return(lr1); //var lst = new List<ComplexStepContainer<GasCell, GasBound>> { // new ComplexStepContainer<GasCell, GasBound>() { // calcFluxes = calcDqLayerFluxes, // synch = syncDqLayer, // multipl = 1d, // dyLayer = dqLayer // } //}; //return ComplexStep(tau, synchMe, lst) as GasLayer; }
public static WBSolver GetNewSolver1(WBProjectOptions options) { var layerOpts = StandartOpts; var geom = new GunShape(); geom.AddPoint(layerOpts.X_left - 10, 0.2); geom.AddPoint(layerOpts.X_right + 10, 0.2); var initLayer = new GasLayer(); initLayer.Geom = geom; initLayer.InitLayer(0d, layerOpts, InitGasCell, InitGasBound); var grid = new GasGrid("GasGrid_tst1", initLayer); var solver = new WBSolver(grid, options); initLayer.RealBoundsRev[0].V = 0; initLayer.RealBounds[0].V = 0.5; // initLayer.RealCells.ForEach(n => n.u = 0.5); initLayer.SynchNodes_X_V(); return(solver); }
public PnGrid(string name, IWBNodeLayer initLayer) : base(name, initLayer) { lrInit = initLayer as GasLayer; }