comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation1.java @ 678:19a3185822a4

Added error reporting to 'Wasserspiegellage' calculation. flys-artifacts/trunk@2102 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 10 Jun 2011 15:59:47 +0000
parents
children 757ff56b43b3
comparison
equal deleted inserted replaced
677:a95f34f1f39a 678:19a3185822a4
1 package de.intevation.flys.artifacts.model;
2
3 import java.util.ArrayList;
4
5 import org.apache.log4j.Logger;
6
7 public class Calculation1
8 extends Calculation
9 {
10 private static Logger logger = Logger.getLogger(Calculation1.class);
11
12 protected double [] kms;
13 protected double [] qs;
14 protected double [] ws;
15 protected boolean up;
16
17 public Calculation1() {
18 }
19
20 public Calculation1(
21 double [] kms,
22 double [] qs,
23 double [] ws,
24 boolean up
25 ) {
26 this.kms = kms;
27 this.qs = qs;
28 this.ws = ws;
29 this.up = up;
30 }
31
32 public WQKms [] calculate(WstValueTable wst) {
33
34 ArrayList<WQKms> results = new ArrayList<WQKms>();
35
36 double ref = kms[up ? 0 : kms.length-1];
37
38 String prefix;
39 double [] origData;
40
41 if (ws != null) { prefix = "W="; origData = ws; }
42 else { prefix = "Q="; origData = qs; }
43
44 int oldNumProblems = numProblems();
45
46 for (int i = 0; i < qs.length; i++) {
47
48 double [] oqs = new double[kms.length];
49 double [] ows = new double[kms.length];
50
51 boolean success =
52 wst.interpolate(qs[i], ref, kms, ows, oqs, this) != null;
53
54 int newNumProblems = numProblems();
55
56 if (success) {
57 WQKms result = new WQKms(kms, oqs, ows, prefix + origData[i]);
58 if (oldNumProblems != newNumProblems) {
59 logger.debug(
60 qs[i] + " caused " + (newNumProblems-oldNumProblems) +
61 " new problem(s).");
62 result.removeNaNs();
63 }
64 results.add(result);
65 }
66
67 oldNumProblems = newNumProblems;
68 }
69
70 return results.toArray(new WQKms[results.size()]);
71 }
72 }
73 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org