rwl / JPOWER

Java port of PYPOWER
http://rwl.github.com/PYPOWER
Apache License 2.0
5 stars 8 forks source link

Djp_printpf throws NullpointerException #2

Open vogt31337 opened 9 years ago

vogt31337 commented 9 years ago

Machine: Core i7 Windows 7 64bit

java -version java version "1.8.0_51" Java(TM) SE Runtime Environment (build 1.8.0_51-b16) Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

Running, Djp_t_pf.java and setting "OUT_ALL" to "1.0"

Produces:

1..25

JPOWER Version 0.3.2, 21-May-2012 -- AC Power Flow (Newton)

Newton's method power flow converged in 4 iterations. Exception in thread "main" java.lang.NullPointerException at edu.cornell.pserc.jpower.Djp_printpf.printpf(Djp_printpf.java:322) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:370) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:409) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:405) at edu.cornell.pserc.jpower.test.Djp_t_pf.t_pf(Djp_t_pf.java:86) at edu.cornell.pserc.jpower.test.Djp_t_pf.main(Djp_t_pf.java:185)

vogt31337 commented 9 years ago

Has something todo with your check on opf data, but you messed around with javas double declaration. in jpc.java (line 53):

public double f;

which will always be initialized to 0.0, by object instantiation. so in Djp_printpf.java (line 129):

isOPF = (f != null);    /* FALSE -> only simple PF data, TRUE -> OPF data */

will always be true, because the object was created and isn't null. You should check if it's non zero.

isOPF = Double.compare(f, 0.0) != 0;

should do the trick. But unfortunately it doesn't solve the issue:

New Exception:

JPOWER Version 0.3.2, 21-May-2012 -- AC Power Flow (Newton)

Newton's method power flow converged in 4 iterations.

java.lang.IndexOutOfBoundsException: Attempted to access 1 matrix at index=1 at cern.colt.matrix.AbstractMatrix1D.checkIndex(AbstractMatrix1D.java:76) at cern.colt.matrix.AbstractMatrix1D.checkIndexes(AbstractMatrix1D.java:90) at cern.colt.matrix.tdouble.DoubleMatrix1D.viewSelection(DoubleMatrix1D.java:1488) at edu.cornell.pserc.jpower.Djp_printpf.printpf(Djp_printpf.java:556) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:370) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:409) at edu.cornell.pserc.jpower.pf.Djp_runpf.runpf(Djp_runpf.java:405)