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 ViscosityInSpeciesBulk_GradUtranspTerm(double penalty, double sw, IncompressibleMultiphaseBoundaryCondMap bcMap, string spcName, SpeciesId spcId, int _d, int _D, double _muA, double _muB, double _betaS = 0.0) : base(penalty, _d, _D, bcMap, NSECommon.ViscosityOption.ConstantViscosity, constantViscosityValue: double.NegativeInfinity) { base.m_alpha = sw; this.m_bcMap = bcMap; m_spcId = spcId; switch (spcName) { case "A": currentMu = _muA; complementMu = _muB; break; case "B": currentMu = _muB; complementMu = _muA; break; default: throw new ArgumentException("Unknown species."); } double muFactor = Math.Max(currentMu, complementMu) / currentMu; base.m_penalty_base = penalty * muFactor; int D = base.m_D; base.velFunction = D.ForLoop(d => this.m_bcMap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName]); betaS = _betaS; }
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); }
public ConvectionInSpeciesBulk_LLF(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, int _component, double _rho, double _LFF, LevelSetTracker _lsTrk) : base(SpatDim, _bcmap, _component, false) { // rho = _rho; m_spcId = spcId; ValidSpecies = spcName; //varMode = _varMode; this.lsTrk = _lsTrk; this.LFF = _LFF; this.m_bcmap = _bcmap; int dir = base.m_component; base.velFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { base.velFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } //SubGrdMask = lsTrk.Regions.GetSpeciesSubGrid(spcId).VolumeMask.GetBitMaskWithExternal(); }
public ConstitutiveEqns_CellWiseForm(int _ComponentRow, int _ComponentCol, BoundaryCondMap <IncompressibleBcType> _BcMap, double Weissenberg, double alpha = 1.0) { ComponentRow = _ComponentRow; ComponentCol = _ComponentCol; this.m_BcMap = _BcMap; this.m_Weissenberg = Weissenberg; this.m_alpha = alpha; StressFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, 2, 2]; var stressXXfuncS = m_BcMap.bndFunction[VariableNames.StressXX]; var stressXYfuncS = m_BcMap.bndFunction[VariableNames.StressXY]; var stressYYfuncS = m_BcMap.bndFunction[VariableNames.StressYY]; for (int et = 0; et < GridCommons.FIRST_PERIODIC_BC_TAG; et++) { StressFunction[et, 0, 0] = stressXXfuncS[et]; StressFunction[et, 1, 0] = stressXYfuncS[et]; StressFunction[et, 0, 1] = stressXYfuncS[et]; StressFunction[et, 1, 1] = stressYYfuncS[et]; } velFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, 2]; for (int d = 0; d < 2; d++) { velFunction.SetColumn(m_BcMap.bndFunction[VariableNames.Velocity_d(d)], d); } }
protected override SpatialOperator GetSpatialOperator(SolverConfiguration SolverConf, int SpatialComponent, int SpatialDirection) { SpatialOperator DivergenceOp = new SpatialOperator(new string[] { VariableNames.Velocity_d(SpatialComponent) }, new string[] { "div_d" }, QuadOrderFunc.Linear()); DivergenceOp.EquationComponents["div_d"].Add(new Divergence_DerivativeSource(SpatialComponent, SolverConf.SpatialDimension)); DivergenceOp.EquationComponents["div_d"].Add(new Divergence_DerivativeSource_Flux(SpatialComponent, SolverConf.BcMap)); DivergenceOp.Commit(); return(DivergenceOp); }
public IDictionary <string, AppControl.BoundaryValueCollection> GetBoundaryConfig() { var config = new Dictionary <string, AppControl.BoundaryValueCollection>(); config.Add("Velocity_Inlet_top", new AppControl.BoundaryValueCollection()); config["Velocity_Inlet_top"].Evaluators.Add( VariableNames.Velocity_d(1) + "#A", (X, t) => U2); config["Velocity_Inlet_top"].Evaluators.Add( VariableNames.Velocity_d(1) + "#B", (X, t) => U2); config.Add("Velocity_Inlet_bottom", new AppControl.BoundaryValueCollection()); config["Velocity_Inlet_bottom"].Evaluators.Add( VariableNames.Velocity_d(1) + "#A", (X, t) => U2); config["Velocity_Inlet_bottom"].Evaluators.Add( VariableNames.Velocity_d(1) + "#B", (X, t) => U2); //config.Add("wall_top", new AppControl.BoundaryValueCollection()); //config.Add("wall_bottom", new AppControl.BoundaryValueCollection()); if (!m_periodic) { Func <double[], double, double> u1Inlet; if (Math.Abs(U2) >= 1.0e-10) { u1Inlet = (X, t) => ((X[1] + 1) / U2 - (2.0 * (1.0 - Math.Exp(U2 * (X[1] + 1) * Rey))) / (U2 * (1 - Math.Exp(2.0 * U2 * Rey)))); } else { u1Inlet = (X, t) => (Rey * 0.5) * (1.0 - X[1] * X[1]); } config.Add("Velocity_Inlet_left", new AppControl.BoundaryValueCollection()); config["Velocity_Inlet_left"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", u1Inlet); config["Velocity_Inlet_left"].Evaluators.Add( VariableNames.Velocity_d(1) + "#A", (X, t) => U2); config["Velocity_Inlet_left"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", u1Inlet); config["Velocity_Inlet_left"].Evaluators.Add( VariableNames.Velocity_d(1) + "#B", (X, t) => U2); config.Add("Pressure_Outlet", new AppControl.BoundaryValueCollection()); } return(config); }
void SetBndfunc(string S) { int SpatDim = base.m_SpatialDimension; int dir = base.m_component; base.velFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { base.velFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + S], d); } }
public VelocityGrad_SU(int Component, BoundaryCondMap <IncompressibleBcType> _BcMap) { this.Component = Component; this.m_BcMap = _BcMap; velFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, 2]; for (int d = 0; d < 2; d++) { velFunction.SetColumn(m_BcMap.bndFunction[VariableNames.Velocity_d(d)], d); } }
public IncompressibleMultiphaseBoundaryCondMap(IGridData f, IDictionary <string, BoSSS.Solution.Control.AppControl.BoundaryValueCollection> b, string[] SpeciesNames) : base(f, b, PhysicsMode.Incompressible, BndFunctions(f, SpeciesNames)) // { string S0 = "#" + SpeciesNames[0]; int D = f.SpatialDimension; for (int d = 0; d < D; d++) { base.bndFunction.Add(VariableNames.Velocity_d(d), base.bndFunction[VariableNames.Velocity_d(d) + S0]); } base.bndFunction.Add(VariableNames.Pressure, base.bndFunction[VariableNames.Pressure + S0]); }
public LinearizedHeatConvection(int SpatDim, ThermalBoundaryCondMap _bcmap) { m_SpatialDimension = SpatDim; m_bcmap = _bcmap; VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < m_SpatialDimension; d++) { VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d)], d); } TempFunction = m_bcmap.bndFunction[VariableNames.Temperature]; }
//protected Func<double[], double, double>[] ScalarFunction; public LinearizedConvection(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap) { m_SpatialDimension = SpatDim; m_bcMap = _bcmap; VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < m_SpatialDimension; d++) { VelFunction.SetColumn(m_bcMap.bndFunction[VariableNames.Velocity_d(d)], d); } //ScalarFunction = m_bcMap.bndFunction["KineticEnergy"]; }
public LevelSetAdvectionFlux(GridData GridDat, IncompressibleBoundaryCondMap BcMap) { this.GridDat = GridDat; D = this.GridDat.SpatialDimension; this.BcMap = BcMap; VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, D]; for (int d = 0; d < D; d++) { VelFunction.SetColumn(this.BcMap.bndFunction[VariableNames.Velocity_d(d)], d); } LevelSetFunction = this.BcMap.bndFunction[VariableNames.LevelSet]; }
public ThermalMultiphaseBoundaryCondMap(IGridData f, IDictionary <string, BoSSS.Solution.Control.AppControl.BoundaryValueCollection> b, string[] SpeciesNames) : base(f, b, BndFunctions(f, SpeciesNames)) // { string S0 = "#" + SpeciesNames[0]; int D = f.SpatialDimension; for (int d = 0; d < D; d++) { base.bndFunction.Add(VariableNames.Velocity_d(d), base.bndFunction[VariableNames.Velocity_d(d) + S0]); } base.bndFunction.Add(VariableNames.Temperature, base.bndFunction[VariableNames.Temperature + S0]); base.bndFunction.Add("HeatFlux", base.bndFunction["HeatFlux" + S0]); }
public HeatConvectionInSpeciesBulk_Upwind(int SpatDim, ThermalMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _cap) { this.m_SpatialDimension = SpatDim; this.cap = _cap; this.m_spcId = spcId; this.ValidSpecies = spcName; this.m_bcmap = _bcmap; this.VelFunction = new Func<double[], double, double>[GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) this.VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); this.TempFunction = m_bcmap.bndFunction[VariableNames.Temperature + "#" + spcName]; }
public DivergencePressureEnergyInSpeciesBulk(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId) { m_D = SpatDim; m_bcMap = _bcmap; m_spcId = spcId; ValidSpecies = spcName; VelocFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < m_D; d++) { VelocFunction.SetColumn(m_bcMap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } PressFunction = m_bcMap.bndFunction[VariableNames.Pressure + "#" + spcName]; }
public KineticEnergyConvectionInSpeciesBulk_Upwind(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _rho) { this.m_SpatialDimension = SpatDim; this.rho = _rho; this.m_spcId = spcId; this.ValidSpecies = spcName; this.m_bcmap = _bcmap; this.VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { this.VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } }
public ConvectivePressureTerm_Upwind(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId) { this.m_SpatialDimension = SpatDim; this.m_bcmap = _bcmap; this.VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { this.VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } PressFunction = m_bcmap.bndFunction[VariableNames.Pressure + "#" + spcName]; this.m_spcId = spcId; this.ValidSpecies = spcName; }
/// <summary> /// ctor /// </summary> /// <param name="_component"> /// component of the divergence /// </param> /// <param name="_bcmap"></param> public DivergenceInSpeciesBulk_Edge(int _component, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _rho, double _vorZeichen, bool _RescaleConti) : base(_component, _bcmap) { rho = _rho; m_spcId = spcId; //vorZeichen = _vorZeichen; this.RescaleConti = _RescaleConti; scale = _vorZeichen / ((RescaleConti) ? rho : 1.0); int d = base.component; base.bndFunction = _bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName]; this.m_bcmap = _bcmap; }
public StressDivergenceInSpeciesBulk(int SpatDim, IncompressibleMultiphaseBoundaryCondMap bcMap, string spcName, SpeciesId spcId, double _mu, bool transposed = false) { m_D = SpatDim; this.m_bcMap = bcMap; m_spcId = spcId; mu = _mu; ValidSpecies = spcName; transposedTerm = transposed; VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < m_D; d++) { VelFunction.SetColumn(m_bcMap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } }
static string[] BndFunctions(IGridData g, string[] SpeciesNames) { int D = g.SpatialDimension; List <string> scalarFields = new List <string>(); foreach (var S in SpeciesNames) { for (int d = 0; d < D; d++) { scalarFields.Add(VariableNames.Velocity_d(d) + "#" + S); } scalarFields.Add(VariableNames.Temperature + "#" + S); scalarFields.Add("HeatFlux" + "#" + S); } return(scalarFields.ToArray()); }
public KineticEnergyConvectionInSpeciesBulk(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _rho, double _LFF, LevelSetTracker _lsTrk) : base(SpatDim, _bcmap) { this.rho = _rho; base.LaxFriedrichsSchemeSwitch = _LFF; this.m_bcMap = _bcmap; base.VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { base.VelFunction.SetColumn(m_bcMap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } this.lsTrk = _lsTrk; this.ValidSpecies = spcName; m_spcId = spcId; SubGrdMask = lsTrk.Regions.GetSpeciesSubGrid(spcId).VolumeMask.GetBitMaskWithExternal(); }
public ConvectivePressureTerm_LLF(int SpatDim, IncompressibleMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _LFF, LevelSetTracker _lsTrk) { this.m_SpatialDimension = SpatDim; this.LaxFriedrichsSchemeSwitch = _LFF; this.lsTrk = _lsTrk; this.m_bcmap = _bcmap; this.VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { this.VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } PressFunction = m_bcmap.bndFunction[VariableNames.Pressure + "#" + spcName]; this.m_spcId = spcId; this.ValidSpecies = spcName; }
public ConstitutiveEqns_Convective_FluxDiff(int Component, BoundaryCondMap <IncompressibleBcType> _BcMap, double Weissenberg, double alpha) { this.Component = Component; this.m_BcMap = _BcMap; this.m_Weissenberg = Weissenberg; this.m_alpha = 0.5; // alpha; StressFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, 3]; StressFunction.SetColumn(m_BcMap.bndFunction[VariableNames.StressXX], 0); StressFunction.SetColumn(m_BcMap.bndFunction[VariableNames.StressXY], 1); StressFunction.SetColumn(m_BcMap.bndFunction[VariableNames.StressYY], 2); velFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, 2]; for (int d = 0; d < 2; d++) { velFunction.SetColumn(m_BcMap.bndFunction[VariableNames.Velocity_d(d)], d); } }
public IDictionary <string, AppControl.BoundaryValueCollection> GetBoundaryConfig() { var config = new Dictionary <string, AppControl.BoundaryValueCollection>(); config.Add("Velocity_Inlet", new AppControl.BoundaryValueCollection()); config["Velocity_Inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => X[0] * X[0]); config["Velocity_Inlet"].Evaluators.Add( VariableNames.Velocity_d(1) + "#A", (X, t) => - 2.0 * X[0] * X[1]); config["Velocity_Inlet"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => X[0] * X[0]); config["Velocity_Inlet"].Evaluators.Add( VariableNames.Velocity_d(1) + "#B", (X, t) => - 2.0 * X[0] * X[1]); return(config); }
protected override void CreateFields() { var b = new Basis(this.GridData, this.PolynomialDegree); int D = this.GridData.SpatialDimension; var _U = new SinglePhaseField[D]; for (int d = 0; d < D; d++) { _U[d] = new SinglePhaseField(b, VariableNames.Velocity_d(d)); } this.U = new VectorField <SinglePhaseField>(_U); this.ViscU_nonlinear = new VectorField <SinglePhaseField>(D, b, "ViscU_nonlinear", SinglePhaseField.Factory); this.ViscU_linear = new VectorField <SinglePhaseField>(D, b, "ViscU_linear", SinglePhaseField.Factory); this.RHS = new VectorField <SinglePhaseField>(D, b, "RHS", SinglePhaseField.Factory); this.bnd = new VectorField <SinglePhaseField>(D, b, "bnd", (c, s) => (new SinglePhaseField(c, s))); this.Residual = new VectorField <SinglePhaseField>(D, b, "Residual", (c, s) => (new SinglePhaseField(c, s))); this.Err = new VectorField <SinglePhaseField>(D, b, "Error", (c, s) => (new SinglePhaseField(c, s))); this.mu = new SinglePhaseField(b, VariableNames.ViscosityMolecular); }
static string[] BndFunctions(IGridData g, string[] SpeciesNames) { int D = g.SpatialDimension; List <string> scalarFields = new List <string>(); foreach (var S in SpeciesNames) { for (int d = 0; d < D; d++) { scalarFields.Add(VariableNames.Velocity_d(d) + "#" + S); } scalarFields.Add(VariableNames.Pressure + "#" + S); scalarFields.Add(VariableNames.StressXX + "#" + S); scalarFields.Add(VariableNames.StressXY + "#" + S); scalarFields.Add(VariableNames.StressYY + "#" + S); } scalarFields.Add(VariableNames.LevelSet); return(scalarFields.ToArray()); }
public DimensionlessViscosityInSpeciesBulk_GradUtranspTerm(double penalty, double sw, IncompressibleMultiphaseBoundaryCondMap bcMap, string spcName, SpeciesId spcId, int _d, int _D, double _reynoldsA, double _reynoldsB) : base(penalty, _d, _D, bcMap, NSECommon.ViscosityOption.ConstantViscosityDimensionless, reynolds: 0.0) { base.m_alpha = sw; this.m_bcMap = bcMap; m_spcId = spcId; switch (spcName) { case "A": base.m_reynolds = _reynoldsA; break; case "B": base.m_reynolds = _reynoldsB; break; default: throw new ArgumentException("Unknown species."); } int D = base.m_D; base.velFunction = D.ForLoop(d => this.m_bcMap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName]); }
public HeatConvectionInSpeciesBulk(int SpatDim, ThermalMultiphaseBoundaryCondMap _bcmap, string spcName, SpeciesId spcId, double _cap, double _LFF, LevelSetTracker _lsTrk) : base(SpatDim, _bcmap) { this.cap = _cap; this.m_spcId = spcId; this.lsTrk = _lsTrk; this.LFF = _LFF; this.m_bcmap = _bcmap; base.VelFunction = new Func <double[], double, double> [GridCommons.FIRST_PERIODIC_BC_TAG, SpatDim]; for (int d = 0; d < SpatDim; d++) { base.VelFunction.SetColumn(m_bcmap.bndFunction[VariableNames.Velocity_d(d) + "#" + spcName], d); } base.TempFunction = m_bcmap.bndFunction[VariableNames.Temperature + "#" + spcName]; //SubGrdMask = lsTrk.Regions.GetSpeciesSubGrid(spcId).VolumeMask.GetBitMaskWithExternal(); }
public IDictionary <string, AppControl.BoundaryValueCollection> GetBoundaryConfig() { var config = new Dictionary <string, AppControl.BoundaryValueCollection>(); config.Add("velocity_inlet_pos", new AppControl.BoundaryValueCollection()); config["velocity_inlet_pos"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => Ux); config["velocity_inlet_pos"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => Ux); config.Add("velocity_inlet_neg", new AppControl.BoundaryValueCollection()); config["velocity_inlet_neg"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => Ux); config["velocity_inlet_neg"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => Ux); config.Add("wall_bottom", new AppControl.BoundaryValueCollection()); config["wall_bottom"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => 1.0); config["wall_bottom"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => Ux); config.Add("wall_top", new AppControl.BoundaryValueCollection()); config["wall_top"].Evaluators.Add( VariableNames.Velocity_d(0) + "#A", (X, t) => Ux); config["wall_top"].Evaluators.Add( VariableNames.Velocity_d(0) + "#B", (X, t) => Ux); return(config); }