1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math.ode.nonstiff;
19
20 import org.apache.commons.math.ode.FirstOrderDifferentialEquations;
21 import org.apache.commons.math.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 public void computeDerivatives(double t, double[] y, double[] yDot) {
35 yDot[0] = rate;
36 }
37
38 public int getDimension() {
39 return 1;
40 }
41
42 public void setRate(double rate) {
43 this.rate = rate;
44 }
45
46 public int eventOccurred(double t, double[] y, boolean increasing) {
47 setRate(rateAfter);
48 return RESET_DERIVATIVES;
49 }
50
51 public double g(double t, double[] y) {
52 return t - switchTime;
53 }
54
55 public void resetState(double t, double[] y) {
56 }
57
58 private double rate;
59 private double rateAfter;
60 private double switchTime;
61
62 private static final long serialVersionUID = 7590601995477504318L;
63
64 }