public SolverBuilderSchemeArcLength(NonLinearSolver solver, double radius)
            {
                if (radius <= 0)
                {
                    throw new InvalidOperationException(Strings.ArcLengthRadiusLargerThanZero);
                }

                Solver = solver;
                Solver.Predictor.Scheme = new PredictionSchemeArcLength(radius);
                Solver.Corrector.Scheme = new CorrectionSchemeArcLength(radius);
            }
Exemple #2
0
            public SolverBuilderSchemeStandardNewtonRaphson(NonLinearSolver solver, double dlambda)
            {
                if (dlambda <= 0)
                {
                    throw new InvalidOperationException(Strings.LoadIncrementLargerThanZero);
                }

                Solver = solver;
                Solver.Predictor.Scheme = new PredictionSchemeStandard(dlambda);
                Solver.Corrector.Scheme = new CorrectionSchemeStandard();
            }
Exemple #3
0
            public SolverBuilderStopCondition(NonLinearSolver solver, double displacementTolerance, double equilibriumTolerance, double energyTolerance)
            {
                if (displacementTolerance <= 0 || equilibriumTolerance <= 0 || energyTolerance <= 0)
                {
                    throw new InvalidOperationException(Strings.TolerancesLargerThanZero);
                }

                Solver = solver;
                Solver.Corrector.Tolerances = new[]
                { displacementTolerance, equilibriumTolerance, energyTolerance };
            }
            public SolverBuilderStructure(
                int degreesOfFreedom
                , NonLinearSolver solver
                , Func <Vector <double>, Vector <double> > reaction
                , Func <Vector <double>, ILinearSolver> stiffness)
            {
                CheckDregreesOfFreedom(degreesOfFreedom);
                CheckReaction(reaction);
                CheckStiffness(stiffness);

                Solver       = solver;
                Solver.State = new LoadState(0, new DenseVector(degreesOfFreedom));
                Solver.Info  = new StructureInfo
                {
                    InitialLoad   = new DenseVector(degreesOfFreedom),
                    Reaction      = reaction,
                    ReferenceLoad = new DenseVector(degreesOfFreedom),
                    Stiffness     = stiffness,
                };
                Solver.Info.Reaction = reaction;
            }
Exemple #5
0
 public SolverBuilderIncrementalLoad(NonLinearSolver solver, Vector <double> referenceLoad)
 {
     Solver = solver;
     Solver.Info.ReferenceLoad = referenceLoad;
 }