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); }
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(); }
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; }
public SolverBuilderIncrementalLoad(NonLinearSolver solver, Vector <double> referenceLoad) { Solver = solver; Solver.Info.ReferenceLoad = referenceLoad; }