Package org.apache.commons.math3.ode.nonstiff

# Class LutherFieldIntegrator<T extends RealFieldElement<T>>

java.lang.Object
org.apache.commons.math3.ode.AbstractFieldIntegrator<T>
org.apache.commons.math3.ode.nonstiff.RungeKuttaFieldIntegrator<T>
org.apache.commons.math3.ode.nonstiff.LutherFieldIntegrator<T>

Type Parameters:
  `T` - the type of the field elements

All Implemented Interfaces:
  `FirstOrderFieldIntegrator<T>`, `FieldButcherArrayProvider<T>`

public class LutherFieldIntegrator<T extends RealFieldElement<T>> extends RungeKuttaFieldIntegrator<T>
This class implements the Luther sixth order Runge-Kutta integrator for Ordinary Differential Equations.

This method is described in H. A. Luther 1968 paper An explicit Sixth-Order Runge-Kutta Formula.

This method is an explicit Runge-Kutta method, its Butcher-array is the following one :

            0   |               0                     0                     0                     0                     0                     0
            1   |               1                     0                     0                     0                     0                     0
           1/2  |              3/8                   1/8                    0                     0                     0                     0
           2/3  |              8/27                  2/27                  8/27                   0                     0                     0
       (7-q)/14 | (  -21 +   9q)/392    (  -56 +   8q)/392    (  336 -  48q)/392    (  -63 +   3q)/392                  0                     0
       (7+q)/14 | (-1155 - 255q)/1960   ( -280 -  40q)/1960   (    0 - 320q)/1960   (   63 + 363q)/1960   ( 2352 + 392q)/1960                 0
            1   | (  330 + 105q)/180    (  120 +   0q)/180    ( -200 + 280q)/180    (  126 - 189q)/180    ( -686 - 126q)/180     ( 490 -  70q)/180
                |--------------------------------------------------------------------------------------------------------------------------------------------------
                |              1/20                   0                   16/45                  0                   49/180                 49/180         1/20

where q = √21

Since:
  3.6
See Also:
  - `EulerFieldIntegrator`
  - `ClassicalRungeKuttaFieldIntegrator`
  - `GillFieldIntegrator`
  - `MidpointFieldIntegrator`
  - `ThreeEighthesFieldIntegrator`

## Constructor Summary

Constructors
Constructor
Description
`LutherFieldIntegrator(Field<T> field, T step)`
Simple constructor.

## Method Summary

Modifier and Type
Method
Description
`protected org.apache.commons.math3.ode.nonstiff.LutherFieldStepInterpolator<T>`
`createInterpolator(boolean forward, T[][] yDotK, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldEquationsMapper<T> mapper)`
Create an interpolator.
`T[][]`
`getA()`
Get the internal weights from Butcher array (without the first empty row).
`T[]`
`getB()`
Get the external weights for the high order method from Butcher array.
`T[]`
`getC()`
Get the time steps from Butcher array (without the first zero).

### Methods inherited from class org.apache.commons.math3.ode.nonstiff.RungeKuttaFieldIntegrator

`fraction, integrate, singleStep`

### Methods inherited from class org.apache.commons.math3.ode.AbstractFieldIntegrator

`acceptStep, addEventHandler, addEventHandler, addStepHandler, clearEventHandlers, clearStepHandlers, computeDerivatives, getCurrentSignedStepsize, getCurrentStepStart, getEquations, getEvaluations, getEvaluationsCounter, getEventHandlers, getField, getMaxEvaluations, getName, getStepHandlers, getStepSize, getStepStart, initIntegration, isLastStep, resetOccurred, sanityChecks, setIsLastStep, setMaxEvaluations, setStateInitialized, setStepSize, setStepStart`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### LutherFieldIntegrator

public LutherFieldIntegrator(Field<T> field, T step)
Simple constructor. Build a fourth-order Luther integrator with the given step.

Parameters:
  `field` - field to which the time and state vector elements belong
  `step` - integration step

## Method Details

### getC

public T[] getC()
Get the time steps from Butcher array (without the first zero).

Returns:
  time steps from Butcher array (without the first zero

### getA

public T[][] getA()
Get the internal weights from Butcher array (without the first empty row).

Returns:
  internal weights from Butcher array (without the first empty row)

### getB

public T[] getB()
Get the external weights for the high order method from Butcher array.

Returns:
  external weights for the high order method from Butcher array

### createInterpolator

protected org.apache.commons.math3.ode.nonstiff.LutherFieldStepInterpolator<T> createInterpolator(boolean forward, T[][] yDotK, FieldODEStateAndDerivative<T> globalPreviousState, FieldODEStateAndDerivative<T> globalCurrentState, FieldEquationsMapper<T> mapper)
Create an interpolator.

Specified by:
  `createInterpolator` in class `RungeKuttaFieldIntegrator<T extends RealFieldElement<T>>`
Parameters:
  `forward` - integration direction indicator
  `yDotK` - slopes at the intermediate points
  `globalPreviousState` - start of the global step
  `globalCurrentState` - end of the global step
  `mapper` - equations mapper for the all equations
Returns:
  external weights for the high order method from Butcher array