Class AdamsIntegrator

    • Constructor Detail

      • AdamsIntegrator

        public AdamsIntegrator​(String name,
                               int nSteps,
                               int order,
                               double minStep,
                               double maxStep,
                               double scalAbsoluteTolerance,
                               double scalRelativeTolerance)
                        throws NumberIsTooSmallException
        Build an Adams integrator with the given order and step control parameters.
        Parameters:
        name - name of the method
        nSteps - number of steps of the method excluding the one being computed
        order - order of the method
        minStep - minimal step (sign is irrelevant, regardless of integration direction, forward or backward), the last step can be smaller than this
        maxStep - maximal step (sign is irrelevant, regardless of integration direction, forward or backward), the last step can be smaller than this
        scalAbsoluteTolerance - allowed absolute error
        scalRelativeTolerance - allowed relative error
        Throws:
        NumberIsTooSmallException - if order is 1 or less
      • AdamsIntegrator

        public AdamsIntegrator​(String name,
                               int nSteps,
                               int order,
                               double minStep,
                               double maxStep,
                               double[] vecAbsoluteTolerance,
                               double[] vecRelativeTolerance)
                        throws IllegalArgumentException
        Build an Adams integrator with the given order and step control parameters.
        Parameters:
        name - name of the method
        nSteps - number of steps of the method excluding the one being computed
        order - order of the method
        minStep - minimal step (sign is irrelevant, regardless of integration direction, forward or backward), the last step can be smaller than this
        maxStep - maximal step (sign is irrelevant, regardless of integration direction, forward or backward), the last step can be smaller than this
        vecAbsoluteTolerance - allowed absolute error
        vecRelativeTolerance - allowed relative error
        Throws:
        IllegalArgumentException - if order is 1 or less
    • Method Detail

      • initializeHighOrderDerivatives

        protected Array2DRowRealMatrix initializeHighOrderDerivatives​(double h,
                                                                      double[] t,
                                                                      double[][] y,
                                                                      double[][] yDot)
        Initialize the high order scaled derivatives at step start.
        Specified by:
        initializeHighOrderDerivatives in class MultistepIntegrator
        Parameters:
        h - step size to use for scaling
        t - first steps times
        y - first steps states
        yDot - first steps derivatives
        Returns:
        Nordieck vector at first step (h2/2 y''n, h3/6 y'''n ... hk/k! y(k)n)
      • updateHighOrderDerivativesPhase2

        public void updateHighOrderDerivativesPhase2​(double[] start,
                                                     double[] end,
                                                     Array2DRowRealMatrix highOrder)
        Update the high order scaled derivatives Adams integrators (phase 2).

        The complete update of high order derivatives has a form similar to:

         rn+1 = (s1(n) - s1(n+1)) P-1 u + P-1 A P rn
         
        this method computes the (s1(n) - s1(n+1)) P-1 u part.

        Phase 1 of the update must already have been performed.

        Parameters:
        start - first order scaled derivatives at step start
        end - first order scaled derivatives at step end
        highOrder - high order scaled derivatives, will be modified (h2/2 y'', ... hk/k! y(k))
        See Also:
        updateHighOrderDerivativesPhase1(Array2DRowRealMatrix)