debug
This commit is contained in:
parent
cd2e3a3e49
commit
74f7bdd92d
@ -5,7 +5,7 @@ package eva2.tools.math.des;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.sbml.squeezer.math.DESEvent;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This Class represents an event-driven DES
|
* This Class represents an event-driven DES
|
||||||
@ -25,10 +25,10 @@ public interface EventDESystem extends DESystem {
|
|||||||
*
|
*
|
||||||
* @return Returns an array with delays for the change of concentration due to events
|
* @return Returns an array with delays for the change of concentration due to events
|
||||||
*/
|
*/
|
||||||
public ArrayList<DESEvent> processEvents(double t, double Y[]);
|
public ArrayList<DESAssignment> processEvents(double t, double Y[]);
|
||||||
|
|
||||||
public double[] processAssignmentRules(double t, double Y[], double res[]);
|
public ArrayList<DESAssignment> processAssignmentRules(double t, double Y[]);
|
||||||
|
|
||||||
public double[] processAlgebraicRules(double t, double Y[], double res[]);
|
public ArrayList<DESAssignment> processAlgebraicRules(double t, double Y[]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package eva2.tools.math.des;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import org.sbml.squeezer.math.DESEvent;
|
|
||||||
|
|
||||||
import eva2.tools.math.Mathematics;
|
import eva2.tools.math.Mathematics;
|
||||||
|
|
||||||
@ -27,10 +26,6 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static boolean useLinearCalc = true;
|
private static boolean useLinearCalc = true;
|
||||||
/*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private ArrayList<DESEvent> events;
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param args
|
* @param args
|
||||||
@ -64,6 +59,7 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public RKEventSolver() {
|
public RKEventSolver() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,7 +70,7 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
*/
|
*/
|
||||||
public RKEventSolver(boolean withLinearCalc) {
|
public RKEventSolver(boolean withLinearCalc) {
|
||||||
useLinearCalc = withLinearCalc;
|
useLinearCalc = withLinearCalc;
|
||||||
events = new ArrayList<DESEvent>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,7 +78,7 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
*/
|
*/
|
||||||
public RKEventSolver(double stepSize) {
|
public RKEventSolver(double stepSize) {
|
||||||
this.stepSize = stepSize;
|
this.stepSize = stepSize;
|
||||||
events = new ArrayList<DESEvent>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -342,27 +338,18 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
*/
|
*/
|
||||||
public double[] processEvents(double time, double[] Ytemp,
|
public double[] processEvents(double time, double[] Ytemp,
|
||||||
EventDESystem EDES, double[] change) {
|
EventDESystem EDES, double[] change) {
|
||||||
double[] YtempNew = new double[Ytemp.length];
|
double[] newYtemp = new double[Ytemp.length];
|
||||||
|
int index;
|
||||||
|
for (DESAssignment event : EDES.processEvents(time, Ytemp)) {
|
||||||
|
index = event.getIndex();
|
||||||
|
|
||||||
for (DESEvent event : EDES.processEvents(time, Ytemp)) {
|
//newYtemp[index] = event.getValue() - (Ytemp[index]);
|
||||||
if (event.hasDelay()){
|
newYtemp[index] = event.getValue() - (Ytemp[index] - change[index]);
|
||||||
this.events.add(event);
|
System.out.printf("time %s: \tYtemp[%s]_old = %s\tYtemp[%s]_new = %s\t change %s \n",
|
||||||
}
|
time,index, Ytemp[index], index, (event.getValue() - (Ytemp[index])),change[index]);
|
||||||
else{
|
|
||||||
System.out.printf("time %s: Ytemp[%s]_old = %s\tYtemp[%s]_new = %s\n",
|
|
||||||
time,j, Ytemp[j], j, res[j] - (Ytemp[j] - change[j]));
|
|
||||||
Ytemp[j] = res[j] - (Ytemp[j] - change[j]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < delays.length; j++)
|
return newYtemp;
|
||||||
if (!Double.isNaN(delays[j])) {
|
|
||||||
System.out.printf("time %s: Ytemp[%s]_old = %s\tYtemp[%s]_new = %s\n",
|
|
||||||
time,j, Ytemp[j], j, res[j] - (Ytemp[j] - change[j]));
|
|
||||||
Ytemp[j] = res[j] - (Ytemp[j] - change[j]);
|
|
||||||
} else Ytemp[j] = 0d;
|
|
||||||
|
|
||||||
return Ytemp;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -374,10 +361,13 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
* @param EDES
|
* @param EDES
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public double[] processRules(double time, double[] Ytemp,
|
public void processRules(double time, double[] Ytemp,
|
||||||
EventDESystem EDES){
|
EventDESystem EDES){
|
||||||
|
int index;
|
||||||
return null;
|
for (DESAssignment event : EDES.processAssignmentRules(time, Ytemp)) {
|
||||||
|
index = event.getIndex();
|
||||||
|
Ytemp[index] = event.getValue();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -454,8 +444,9 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
x += h;
|
x += h;
|
||||||
|
|
||||||
// process events
|
// process events
|
||||||
double[] YtempClone2 = processEvents(x, Ytemp.clone(), EDES, change);
|
double[] YtempClone2 = processEvents(x, Ytemp, EDES, change);
|
||||||
Mathematics.vvAdd(Ytemp, YtempClone2, Ytemp);
|
Mathematics.vvAdd(Ytemp, YtempClone2, Ytemp);
|
||||||
|
processRules(x, Ytemp, EDES);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -475,8 +466,9 @@ public class RKEventSolver extends AbstractDESSolver implements Serializable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// process events
|
// process events
|
||||||
double[] YtempClone = processEvents(x, Ytemp.clone(), EDES, change);
|
double[] YtempClone = processEvents(x, Ytemp, EDES, change);
|
||||||
Mathematics.vvAdd(Ytemp, YtempClone, Ytemp);
|
Mathematics.vvAdd(Ytemp, YtempClone, Ytemp);
|
||||||
|
processRules(x, Ytemp, EDES);
|
||||||
|
|
||||||
if (includeTimes) {
|
if (includeTimes) {
|
||||||
result[i][0] = timePoints[i];
|
result[i][0] = timePoints[i];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user