1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math4.legacy.ode.nonstiff;
19
20 import org.apache.commons.math4.legacy.ode.FirstOrderDifferentialEquations;
21 import org.apache.commons.math4.legacy.ode.events.EventHandler;
22
23
24 public class StepProblem
25 implements FirstOrderDifferentialEquations, EventHandler {
26
27 public StepProblem(double rateBefore, double rateAfter,
28 double switchTime) {
29 this.rateAfter = rateAfter;
30 this.switchTime = switchTime;
31 setRate(rateBefore);
32 }
33
34 @Override
35 public void computeDerivatives(double t, double[] y, double[] yDot) {
36 yDot[0] = rate;
37 }
38
39 @Override
40 public int getDimension() {
41 return 1;
42 }
43
44 public void setRate(double rate) {
45 this.rate = rate;
46 }
47
48 @Override
49 public void init(double t0, double[] y0, double t) {
50 }
51
52 @Override
53 public Action eventOccurred(double t, double[] y, boolean increasing) {
54 setRate(rateAfter);
55 return Action.RESET_DERIVATIVES;
56 }
57
58 @Override
59 public double g(double t, double[] y) {
60 return t - switchTime;
61 }
62
63 @Override
64 public void resetState(double t, double[] y) {
65 }
66
67 private double rate;
68 private double rateAfter;
69 private double switchTime;
70 }