Skip to content

Commit b45c756

Browse files
authored
Merge pull request #377 from Serrof/issue-376
fixed visibility issue in interpolators for non-stiff integrators
2 parents 6142c30 + a9018b5 commit b45c756

File tree

84 files changed

+491
-421
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+491
-421
lines changed

hipparchus-ode/src/main/java/org/hipparchus/ode/AbstractFieldIntegrator.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.hipparchus.ode.events.FieldODEStepEndHandler;
4444
import org.hipparchus.ode.events.FieldStepEndEventState;
4545
import org.hipparchus.ode.sampling.AbstractFieldODEStateInterpolator;
46+
import org.hipparchus.ode.sampling.FieldODEStateInterpolator;
4647
import org.hipparchus.ode.sampling.FieldODEStepHandler;
4748
import org.hipparchus.util.FastMath;
4849
import org.hipparchus.util.Incrementor;
@@ -221,13 +222,13 @@ protected FieldODEStateAndDerivative<T> initIntegration(final FieldExpandableODE
221222
eqn.getMapper().mapStateAndDerivative(t0, y0, y0Dot);
222223

223224
// initialize detector based event states (both and step end based)
224-
detectorBasedEventsStates.stream().forEach(s -> {
225+
detectorBasedEventsStates.forEach(s -> {
225226
s.init(s0WithDerivatives, t);
226227
s.getEventDetector().getHandler().init(s0WithDerivatives, t, s.getEventDetector());
227228
});
228229

229230
// initialize step end based event states
230-
stepEndEventsStates.stream().forEach(s -> {
231+
stepEndEventsStates.forEach(s -> {
231232
s.init(s0WithDerivatives, t);
232233
s.getHandler().init(s0WithDerivatives, t);
233234
});
@@ -310,12 +311,12 @@ protected FieldODEStateAndDerivative<T> acceptStep(final AbstractFieldODEStateIn
310311

311312
FieldODEStateAndDerivative<T> previousState = interpolator.getGlobalPreviousState();
312313
final FieldODEStateAndDerivative<T> currentState = interpolator.getGlobalCurrentState();
313-
AbstractFieldODEStateInterpolator<T> restricted = interpolator;
314+
FieldODEStateInterpolator<T> restricted = interpolator;
314315

315316
// initialize the events states if needed
316317
if (!statesInitialized) {
317318
// initialize event states
318-
detectorBasedEventsStates.stream().forEach(s -> s.reinitializeBegin(interpolator));
319+
detectorBasedEventsStates.forEach(s -> s.reinitializeBegin(interpolator));
319320
statesInitialized = true;
320321
}
321322

@@ -339,7 +340,7 @@ public int compare(FieldEventState<T> es0, FieldEventState<T> es1) {
339340

340341
// Evaluate all event detectors and end steps for events
341342
occurringEvents.clear();
342-
final AbstractFieldODEStateInterpolator<T> finalRestricted = restricted;
343+
final FieldODEStateInterpolator<T> finalRestricted = restricted;
343344
Stream.concat(detectorBasedEventsStates.stream(), stepEndEventsStates.stream()).
344345
forEach(s -> { if (s.evaluateStep(finalRestricted)) {
345346
// the event occurs during the current step

hipparchus-ode/src/main/java/org/hipparchus/ode/AbstractIntegrator.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.hipparchus.ode.events.ODEStepEndHandler;
4242
import org.hipparchus.ode.events.StepEndEventState;
4343
import org.hipparchus.ode.sampling.AbstractODEStateInterpolator;
44+
import org.hipparchus.ode.sampling.ODEStateInterpolator;
4445
import org.hipparchus.ode.sampling.ODEStepHandler;
4546
import org.hipparchus.util.FastMath;
4647
import org.hipparchus.util.Incrementor;
@@ -81,7 +82,7 @@ public abstract class AbstractIntegrator implements ODEIntegrator {
8182
private Incrementor evaluations;
8283

8384
/** Differential equations to integrate. */
84-
private transient ExpandableODE equations;
85+
private ExpandableODE equations;
8586

8687
/** Build an instance.
8788
* @param name name of the method
@@ -208,13 +209,13 @@ protected ODEStateAndDerivative initIntegration(final ExpandableODE eqn,
208209
eqn.getMapper().mapStateAndDerivative(t0, y0, y0Dot);
209210

210211
// initialize detector based event states (both and step end based)
211-
detectorBasedEventsStates.stream().forEach(s -> {
212+
detectorBasedEventsStates.forEach(s -> {
212213
s.init(s0WithDerivatives, t);
213214
s.getEventDetector().getHandler().init(s0WithDerivatives, t, s.getEventDetector());
214215
});
215216

216217
// initialize step end based event states
217-
stepEndEventsStates.stream().forEach(s -> {
218+
stepEndEventsStates.forEach(s -> {
218219
s.init(s0WithDerivatives, t);
219220
s.getHandler().init(s0WithDerivatives, t);
220221
});
@@ -292,18 +293,18 @@ protected ODEStateAndDerivative acceptStep(final AbstractODEStateInterpolator in
292293

293294
ODEStateAndDerivative previousState = interpolator.getGlobalPreviousState();
294295
final ODEStateAndDerivative currentState = interpolator.getGlobalCurrentState();
295-
AbstractODEStateInterpolator restricted = interpolator;
296+
ODEStateInterpolator restricted = interpolator;
296297

297298

298299
// initialize the events states if needed
299300
if (!statesInitialized) {
300301
// initialize event states
301-
detectorBasedEventsStates.stream().forEach(s -> s.reinitializeBegin(interpolator));
302+
detectorBasedEventsStates.forEach(s -> s.reinitializeBegin(interpolator));
302303
statesInitialized = true;
303304
}
304305

305306
// set end of step
306-
stepEndEventsStates.stream().forEach(s -> s.setStepEnd(currentState.getTime()));
307+
stepEndEventsStates.forEach(s -> s.setStepEnd(currentState.getTime()));
307308

308309
// search for next events that may occur during the step
309310
final int orderingSign = interpolator.isForward() ? +1 : -1;
@@ -322,7 +323,7 @@ public int compare(final EventState es0, final EventState es1) {
322323

323324
// Evaluate all event detectors and end steps for events
324325
occurringEvents.clear();
325-
final AbstractODEStateInterpolator finalRestricted = restricted;
326+
final ODEStateInterpolator finalRestricted = restricted;
326327
Stream.concat(detectorBasedEventsStates.stream(), stepEndEventsStates.stream()).
327328
forEach(s -> { if (s.evaluateStep(finalRestricted)) {
328329
// the event occurs during the current step

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsBashforthFieldIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.hipparchus.linear.FieldMatrix;
3030
import org.hipparchus.ode.FieldEquationsMapper;
3131
import org.hipparchus.ode.FieldODEStateAndDerivative;
32+
import org.hipparchus.ode.nonstiff.interpolators.AdamsFieldStateInterpolator;
3233
import org.hipparchus.util.FastMath;
3334

3435

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsBashforthIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hipparchus.linear.RealMatrix;
2323
import org.hipparchus.ode.EquationsMapper;
2424
import org.hipparchus.ode.ODEStateAndDerivative;
25+
import org.hipparchus.ode.nonstiff.interpolators.AdamsStateInterpolator;
2526
import org.hipparchus.util.FastMath;
2627

2728

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsFieldIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.hipparchus.ode.FieldODEStateAndDerivative;
3535
import org.hipparchus.ode.LocalizedODEFormats;
3636
import org.hipparchus.ode.MultistepFieldIntegrator;
37+
import org.hipparchus.ode.nonstiff.interpolators.AdamsFieldStateInterpolator;
3738
import org.hipparchus.util.MathArrays;
3839

3940

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hipparchus.ode.MultistepIntegrator;
2828
import org.hipparchus.ode.ODEState;
2929
import org.hipparchus.ode.ODEStateAndDerivative;
30+
import org.hipparchus.ode.nonstiff.interpolators.AdamsStateInterpolator;
3031

3132

3233
/** Base class for {@link AdamsBashforthIntegrator Adams-Bashforth} and

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsMoultonFieldIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import org.hipparchus.ode.FieldEquationsMapper;
3535
import org.hipparchus.ode.FieldODEStateAndDerivative;
3636
import org.hipparchus.ode.LocalizedODEFormats;
37+
import org.hipparchus.ode.nonstiff.interpolators.AdamsFieldStateInterpolator;
3738
import org.hipparchus.util.MathArrays;
3839
import org.hipparchus.util.MathUtils;
3940

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/AdamsMoultonIntegrator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hipparchus.ode.EquationsMapper;
2828
import org.hipparchus.ode.LocalizedODEFormats;
2929
import org.hipparchus.ode.ODEStateAndDerivative;
30+
import org.hipparchus.ode.nonstiff.interpolators.AdamsStateInterpolator;
3031
import org.hipparchus.util.FastMath;
3132

3233

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/ClassicalRungeKuttaFieldIntegrator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.hipparchus.Field;
2727
import org.hipparchus.ode.FieldEquationsMapper;
2828
import org.hipparchus.ode.FieldODEStateAndDerivative;
29+
import org.hipparchus.ode.nonstiff.interpolators.ClassicalRungeKuttaFieldStateInterpolator;
2930
import org.hipparchus.util.MathArrays;
3031

3132
/**
@@ -111,7 +112,7 @@ public T[] getB() {
111112
final FieldODEStateAndDerivative<T> globalPreviousState,
112113
final FieldODEStateAndDerivative<T> globalCurrentState,
113114
final FieldEquationsMapper<T> mapper) {
114-
return new ClassicalRungeKuttaFieldStateInterpolator<T>(getField(), forward, yDotK,
115+
return new ClassicalRungeKuttaFieldStateInterpolator<>(getField(), forward, yDotK,
115116
globalPreviousState, globalCurrentState,
116117
globalPreviousState, globalCurrentState,
117118
mapper);

hipparchus-ode/src/main/java/org/hipparchus/ode/nonstiff/ClassicalRungeKuttaIntegrator.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import org.hipparchus.ode.EquationsMapper;
2121
import org.hipparchus.ode.ODEStateAndDerivative;
22+
import org.hipparchus.ode.nonstiff.interpolators.ClassicalRungeKuttaStateInterpolator;
2223

2324
/**
2425
* This class implements the classical fourth order Runge-Kutta
@@ -85,15 +86,12 @@ public double[] getB() {
8586

8687
/** {@inheritDoc} */
8788
@Override
88-
protected ClassicalRungeKuttaStateInterpolator
89-
createInterpolator(final boolean forward, double[][] yDotK,
90-
final ODEStateAndDerivative globalPreviousState,
91-
final ODEStateAndDerivative globalCurrentState,
92-
final EquationsMapper mapper) {
93-
return new ClassicalRungeKuttaStateInterpolator(forward, yDotK,
94-
globalPreviousState, globalCurrentState,
95-
globalPreviousState, globalCurrentState,
96-
mapper);
89+
protected ClassicalRungeKuttaStateInterpolator createInterpolator(final boolean forward, final double[][] yDotK,
90+
final ODEStateAndDerivative globalPreviousState,
91+
final ODEStateAndDerivative globalCurrentState,
92+
final EquationsMapper mapper) {
93+
return new ClassicalRungeKuttaStateInterpolator(forward, yDotK, globalPreviousState, globalCurrentState,
94+
globalPreviousState, globalCurrentState, mapper);
9795
}
9896

9997
}

0 commit comments

Comments
 (0)