Exemple #1
0
        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;
        }
Exemple #3
0
        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);
            }
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
            }
        }
Exemple #10
0
        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"];
        }
Exemple #13
0
        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];
        }
Exemple #14
0
        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];
        }
Exemple #16
0
        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);
            }
        }
Exemple #18
0
        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;
        }
Exemple #19
0
        /// <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;
        }
Exemple #20
0
        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);
            }
        }
Exemple #21
0
        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();
        }
Exemple #23
0
        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;
        }
Exemple #24
0
        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);
        }
Exemple #26
0
        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();
        }
Exemple #30
0
        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);
        }