Mercurial > dive4elements > river
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 : |