Example usage for org.apache.commons.math3.ode ExpandableStatefulODE setSecondaryState

List of usage examples for org.apache.commons.math3.ode ExpandableStatefulODE setSecondaryState

Introduction

In this page you can find the example usage for org.apache.commons.math3.ode ExpandableStatefulODE setSecondaryState.

Prototype

public void setSecondaryState(final int index, final double[] secondaryState)
        throws DimensionMismatchException 

Source Link

Document

Set secondary part of the current state.

Usage

From source file:org.orekit.propagation.integration.AbstractIntegratedPropagator.java

/** Create an ODE with all equations.
 * @param integ numerical integrator to use for propagation.
 * @return a new ode//ww w. jav  a  2  s .  com
 * @exception OrekitException if initial state cannot be mapped
 */
private ExpandableStatefulODE createODE(final AbstractIntegrator integ) throws OrekitException {

    // retrieve initial state
    final double[] initialStateVector = new double[getBasicDimension()];
    stateMapper.mapStateToArray(getInitialState(), initialStateVector);

    // main part of the ODE
    final ExpandableStatefulODE ode = new ExpandableStatefulODE(
            new ConvertedMainStateEquations(getMainStateEquations(integ)));
    ode.setTime(0.0);
    ode.setPrimaryState(initialStateVector);

    // secondary part of the ODE
    for (int i = 0; i < additionalEquations.size(); ++i) {
        final AdditionalEquations additional = additionalEquations.get(i);
        final double[] data = getInitialState().getAdditionalState(additional.getName());
        final SecondaryEquations secondary = new ConvertedSecondaryStateEquations(additional, data.length);
        ode.addSecondaryEquations(secondary);
        ode.setSecondaryState(i, data);
    }

    return ode;

}