Beispiel #1
0
        public override IEnumerable <INumericalResult> Solve(int resultsCount)
        {
            List <INumericalResult> results = new List <INumericalResult>();

            if (_mesh.IsMeshGenerated)
            {
                List <int> indeciesToDelete;
                Matrix     GeneralMatrix = GetGeneralMatrix(out indeciesToDelete);


                Vector init = InitValue();

                CauchyProblemResult cauchyProblemResult = CauchyProblemSolver.HeunMethodSolve((t, v) => GeneralMatrix * v, init, _maxTime, _intervalsTime);
                //CauchyProblemResult cauchyProblemResult = CauchyProblemSolver.AdamsBashforthMethodsSolve((t, v) => GeneralMatrix*v, init, _maxTime, _intervalsTime);
                //CauchyProblemResult cauchyProblemResult = CauchyProblemSolver.GirMethodsSolve((t, v) => GeneralMatrix*v, init, _maxTime, _intervalsTime);

                SemidiscreteVibrationsNumericalResult result = new SemidiscreteVibrationsNumericalResult(_mesh.Elements, cauchyProblemResult.DeltaTime, _maxTime);
                foreach (Vector v in cauchyProblemResult.Results)
                {
                    AddToResult(result, v, indeciesToDelete);
                }

                results.Add(result);
            }
            return(results);
        }
Beispiel #2
0
        public override IEnumerable <INumericalResult> Solve(int resultsCount)
        {
            List <INumericalResult> results = new List <INumericalResult>();

            if (_mesh.IsMeshGenerated)
            {
                GetConstantMatrix();
                _indeciesToDelete = getIndeciesWithStaticBoundaryConditions();
                Matrix StiffnessMatrix = AsumeStaticBoundaryConditions(GetStiffnessMatrix(), _indeciesToDelete);
                Matrix MassMatrix      = AsumeStaticBoundaryConditions(GetMassMatrix(), _indeciesToDelete);

                _init = AsumeStaticBoundaryConditionsToVector(_init, _indeciesToDelete);

                CauchyProblemResult newmarkResult = NewmarkSolver(MassMatrix, StiffnessMatrix, _init, 0.5, 0.5, _maxTime, _intervalsTime);

                SemidiscreteVibrationsNumericalResult result = new SemidiscreteVibrationsNumericalResult(_mesh.Elements, newmarkResult.DeltaTime, _maxTime);
                foreach (Vector v in newmarkResult.Results)
                {
                    Vector resultWithStaticPoints = addStaticPoints(v, _indeciesToDelete);
                    result.AddResult(resultWithStaticPoints);
                }

                results.Add(result);
            }
            return(results);
        }
Beispiel #3
0
        private void AddToResult(SemidiscreteVibrationsNumericalResult result, Vector V, List <int> indeciesToDelete)
        {
            Vector u = GetU(V);

            addStaticPoints(u, indeciesToDelete);
            result.AddResult(u);
        }