public IDictionary <string, AppControl.BoundaryValueCollection> GetBoundaryConfig() { var config = new Dictionary <string, AppControl.BoundaryValueCollection>(); config.Add("wall_top", new AppControl.BoundaryValueCollection()); config.Add("wall_bottom", new AppControl.BoundaryValueCollection()); if (!periodic) { if (!this.ROT.ApproximateEquals(AffineTrafo.Some2DRotation(0.0))) { throw new NotSupportedException(); } double A_a0, A_a1, A_a2, B_a0, B_a1, B_a2; this.ParabolaCoeffs_A(out A_a2, out A_a1, out A_a0); this.ParabolaCoeffs_B(out B_a2, out B_a1, out B_a0); config.Add("velocity_inlet", new AppControl.BoundaryValueCollection()); config["velocity_inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => A_a0 + A_a1 * X[1] + A_a2 * X[1] * X[1]); config["velocity_inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => B_a0 + B_a1 * X[1] + B_a2 * X[1] * X[1]); config.Add("Pressure_Outlet", new AppControl.BoundaryValueCollection()); } return(config); }
public ChannelTest(double angle) { //double angle = 0.0; //double angle = 60.0 * Math.PI / 180.0; ROT = AffineTrafo.Some2DRotation(angle); ROTinv = ROT.Invert(); }
public IDictionary <string, AppControl.BoundaryValueCollection> GetBoundaryConfig() { var config = new Dictionary <string, AppControl.BoundaryValueCollection>(); config.Add("wall_top", new AppControl.BoundaryValueCollection()); config.Add("wall_bottom", new AppControl.BoundaryValueCollection()); if (!periodic) { if (!this.ROT.ApproximateEquals(AffineTrafo.Some2DRotation(0.0))) { throw new NotSupportedException(); } config.Add("velocity_inlet", new AppControl.BoundaryValueCollection()); config["velocity_inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => 1.0 - X[1] * X[1]); config["velocity_inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => 1.0 - X[1] * X[1]); config.Add("Pressure_Outlet", new AppControl.BoundaryValueCollection()); } return(config); }