Beispiel #1
0
 /// <summary>
 /// ctor; parameter documentation see <see cref="swipViscosityBase.swipViscosityBase"/>.
 /// </summary>
 public swipViscosity_Term3(double _penalty, MultidimensionalArray PenaltyLengthScales, int iComp, int D, IncompressibleBoundaryCondMap bcmap,
                            ViscosityImplementation implMode, ViscosityOption _ViscosityMode, ViscositySolverMode ViscSolverMode = ViscositySolverMode.FullyCoupled,
                            double constantViscosityValue = double.NaN, double reynolds = double.NaN, MaterialLaw EoS = null)
     : base(_penalty, PenaltyLengthScales, iComp, D, bcmap, implMode, _ViscosityMode, constantViscosityValue, reynolds, EoS)
 {
     this.ViscSolverMode = ViscSolverMode;
 }
Beispiel #2
0
 public ViscosityInBulk_GradUTerm(double penalty, double sw, IncompressibleMultiphaseBoundaryCondMap bcMap, int d, int D, double _muA, double _muB,
                                  ViscosityImplementation _ViscosityImplementation, double _betaA = 0.0, double _betaB = 0.0)
     : base(penalty, null, d, D, bcMap, _ViscosityImplementation, NSECommon.ViscosityOption.ConstantViscosity, constantViscosityValue: double.NegativeInfinity)
 {
     muA              = _muA;
     muB              = _muB;
     betaA            = _betaA;
     betaB            = _betaB;
     base.m_alpha     = sw;
     this.m_bcMap     = bcMap;
     base.velFunction = null;
     this.m_penalty   = penalty;
 }
Beispiel #3
0
        public static void ConsistencyTest(
            [Values(Terms.T1, Terms.T2, Terms.T3)] Terms t,
            [Values(ViscosityImplementation.H, ViscosityImplementation.SWIP)] ViscosityImplementation v,
            [Values(0, 1)] int iSol
            )
        {
            ipViscosityMain p = null;

            BoSSS.Solution.Application._Main(new string[0], true, "", delegate() {
                p                  = new ipViscosityMain();
                p.mode             = TestMode.CheckResidual;
                p.solution         = solutions[iSol];
                p.PolynomialDegree = 4;
                p.grid             = new MixedBcGrid();
                p.viscOption       = v;
                p.whichTerms       = t;
                return(p);
            });

            p.L2ResidualNorm.ForEach(res => Assert.LessOrEqual(res, 1.0e-8, " Residual L2 Norm "));
        }
Beispiel #4
0
        public static void solverTest(
            [Values(Terms.T1, Terms.T1 | Terms.T2, Terms.T1 | Terms.T2 | Terms.T3)] Terms t,
            [Values(ViscosityImplementation.H, ViscosityImplementation.SWIP)] ViscosityImplementation v,
            [Values(0, 1, 2)] int iSol,
            [Values(2, 3, 4)] int deg
            )
        {
            ipViscosityMain p = null;

            BoSSS.Solution.Application._Main(new string[0], true, "", delegate() {
                p                  = new ipViscosityMain();
                p.mode             = TestMode.Solve;
                p.solution         = solutions[iSol];
                p.PolynomialDegree = deg;
                p.grid             = new MixedBcGrid();
                p.viscOption       = v;
                p.whichTerms       = t;
                return(p);
            });


            p.L2ResidualNorm.ForEach(res => Assert.LessOrEqual(res, 1.0e-8));
            p.L2ErrorNorm.ForEach(err => Assert.LessOrEqual(err, 0.5));
        }
Beispiel #5
0
 /// <summary>
 /// ctor; parameter documentation see <see cref="swipViscosityBase.swipViscosityBase"/>.
 /// </summary>
 public swipViscosity_Term1(double _penalty, MultidimensionalArray PenaltyLengthScales, int iComp, int D, IncompressibleBoundaryCondMap bcmap, ViscosityImplementation implMode,
                            ViscosityOption _ViscosityMode, double constantViscosityValue         = double.NaN, double reynolds = double.NaN, MaterialLaw EoS = null,
                            Func <double, int, int, MultidimensionalArray, double> ComputePenalty = null)
     : base(_penalty, PenaltyLengthScales, iComp, D, bcmap, implMode, _ViscosityMode, constantViscosityValue, reynolds, EoS, ComputePenalty)
 {
 }
Beispiel #6
0
        /// <summary>
        /// ctor.
        /// </summary>
        /// <param name="_penalty"></param>
        /// <param name="iComp">
        /// component index
        /// </param>
        /// <param name="D">
        /// spatial dimension.
        /// </param>
        /// <param name="bcmap"></param>
        /// <param name="implMode"></param>
        /// <param name="_ViscosityMode">
        /// see <see cref="ViscosityOption"/>
        /// </param>
        /// <param name="constantViscosityValue">
        /// Constant value for viscosity.
        /// Needs to be given for <see cref="ViscosityOption.ConstantViscosity"/>.
        /// </param>
        /// <param name="reynolds">
        /// Reynolds number for dimensionless formulation.
        /// Needs to be given for <see cref="ViscosityOption.ConstantViscosityDimensionless"/> and <see cref="ViscosityOption.VariableViscosityDimensionless"/>.
        /// </param>
        /// <param name="EoS">
        /// Optional material law for calculating the viscosity
        /// as a function of the level-set.
        /// Only available for <see cref="ViscosityOption.VariableViscosity"/> and <see cref="ViscosityOption.VariableViscosityDimensionless"/>.
        /// </param>
        protected swipViscosityBase(double _penalty, MultidimensionalArray PenaltyLengthScales, int iComp, int D, IncompressibleBoundaryCondMap bcmap, ViscosityImplementation implMode,
                                    ViscosityOption _ViscosityMode, double constantViscosityValue         = double.NaN, double reynolds = double.NaN, MaterialLaw EoS = null,
                                    Func <double, int, int, MultidimensionalArray, double> ComputePenalty = null)
        {
            this.m_penalty        = _penalty;
            this.m_ComputePenalty = ComputePenalty;
            this.m_iComp          = iComp;
            this.m_D           = D;
            this.cj            = PenaltyLengthScales;
            velFunction        = D.ForLoop(d => bcmap.bndFunction[VariableNames.Velocity_d(d)]);
            EdgeTag2Type       = bcmap.EdgeTag2Type;
            this.m_implMode    = implMode;
            this.m_PhysicsMode = bcmap.PhysMode;

            this.m_ViscosityMode = _ViscosityMode;
            switch (_ViscosityMode)
            {
            case ViscosityOption.ConstantViscosity:
                if (double.IsNaN(constantViscosityValue))
                {
                    throw new ArgumentException("constantViscosityValue is missing!");
                }
                this.m_constantViscosityValue = constantViscosityValue;
                break;

            case ViscosityOption.ConstantViscosityDimensionless:
                if (double.IsNaN(reynolds))
                {
                    throw new ArgumentException("reynolds number is missing!");
                }
                this.m_reynolds = reynolds;
                break;

            case ViscosityOption.VariableViscosity:
                this.m_EoS = EoS;
                break;

            case ViscosityOption.VariableViscosityDimensionless:
                if (double.IsNaN(reynolds))
                {
                    throw new ArgumentException("reynolds number is missing!");
                }
                this.m_reynolds = reynolds;
                this.m_EoS      = EoS;
                break;

            default:
                throw new NotImplementedException();
            }
        }
 public ViscosityAtLevelSet_Standard(LevelSetTracker lstrk, double _muA, double _muB, double _penalty, int _component, bool _includeTransposeTerm, ViscosityImplementation _ViscosityImplementation)
 {
     this.m_LsTrk                   = lstrk;
     this.muA                       = _muA;
     this.muB                       = _muB;
     this.penalty                   = _penalty;
     this.component                 = _component;
     this.m_D                       = lstrk.GridDat.SpatialDimension;
     this.includeTransposeTerm      = _includeTransposeTerm;
     this.m_ViscosityImplementation = _ViscosityImplementation;
 }
 public ViscosityAtLevelSet_FullySymmetric(LevelSetTracker lstrk, double _muA, double _muB, double _penalty, int _component, ViscosityImplementation _ViscosityImplementation)
 {
     this.m_LsTrk   = lstrk;
     this.muA       = _muA;
     this.muB       = _muB;
     this.penalty   = _penalty;
     this.component = _component;
     this.m_D       = lstrk.GridDat.SpatialDimension;
     this.m_ViscosityImplementation = _ViscosityImplementation;
 }
Beispiel #9
0
 public ViscosityInBulk_divTerm_Localized(double penalty, double sw, IncompressibleMultiphaseBoundaryCondMap bcMap, int d, int D, double _muA, double _muB, ViscosityImplementation _ViscosityImplementation) : base(penalty, sw, bcMap, d, D, _muA, _muB, _ViscosityImplementation)
 {
 }