Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation2.java @ 8315:d4c501d2c098
Removed obsolete imports.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Wed, 24 Sep 2014 12:16:53 +0200 |
parents | e4606eae8ea5 |
children | 0a5239a1e46e |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3265
diff
changeset
|
9 package org.dive4elements.river.artifacts.model; |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
11 import java.io.FileWriter; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
12 import java.io.IOException; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
13 import java.io.PrintWriter; |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 import java.util.Arrays; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 import org.apache.log4j.Logger; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 |
3265
c1f445b94d03
Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2166
diff
changeset
|
18 |
c1f445b94d03
Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2166
diff
changeset
|
19 /** ComputedDischargeCurve. */ |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 public class Calculation2 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 extends Calculation |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
23 private static Logger log = Logger.getLogger(Calculation2.class); |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 protected double km; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 public Calculation2() { |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 public Calculation2(double km) { |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 this.km = km; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
34 private void dump(double [][] wqs) { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
35 double [] ws = wqs[0]; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
36 double [] qs = wqs[1]; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
37 |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
38 String filename = "/tmp/computed-discharge-curve-" + km + "-" + |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
39 System.currentTimeMillis() + ".txt"; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
40 |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
41 PrintWriter pw = null; |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
42 try { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
43 pw = |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
44 new PrintWriter( |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
45 new FileWriter(filename)); |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
46 |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
47 for (int i = 0; i < ws.length; ++i) { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
48 pw.println(ws[i] + " " + qs[i]); |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
49 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
50 |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
51 pw.flush(); |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
52 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
53 catch (IOException ioe) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
54 log.error(ioe); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
55 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
56 finally { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
57 if (pw != null) { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
58 pw.close(); |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
59 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
60 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
61 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
62 |
709
3b7e9ddf6bb1
New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
677
diff
changeset
|
63 public CalculationResult calculate(WstValueTable wst) { |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
65 boolean debug = log.isDebugEnabled(); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
66 |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
67 if (debug) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
68 log.debug("Calculation2.calculate: km " + km); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
69 } |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 double [][] wqs = wst.interpolateWQ(km, this); |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
73 if (debug) { |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
74 if (hasProblems()) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
75 log.debug("problems: " + problemsToString()); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
76 } |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
77 log.debug("wqs: " + wqs); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
78 if (wqs != null && wqs[0] != null) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
79 log.debug("wqs length: " + wqs[0].length); |
6434
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
80 // TODO: Uncomment to see the data externally. |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
81 //dump(wqs); |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
82 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
83 } |
898afcce1d0a
Partial fix for flys/1303
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5994
diff
changeset
|
84 |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 if (wqs == null || wqs[0].length == 0) { |
2166
2898b1ff6013
I18N for WINFO calculation result messages.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
709
diff
changeset
|
86 addProblem("cannot.compute.discharge.curve"); |
709
3b7e9ddf6bb1
New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
677
diff
changeset
|
87 return new CalculationResult(new WQKms[0], this); |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 double [] ws = wqs[0]; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 double [] qs = wqs[1]; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 double [] kms = new double[ws.length]; |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 Arrays.fill(kms, km); |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 WQKms wqkms = new WQKms(kms, qs, ws, String.valueOf(km)); |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 if (hasProblems()) { |
8202
e4606eae8ea5
sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents:
6434
diff
changeset
|
99 log.debug("found " + numProblems() + " problems."); |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 wqkms.removeNaNs(); |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 |
709
3b7e9ddf6bb1
New model to transport data and error reports of calculations.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
677
diff
changeset
|
103 return new CalculationResult(new WQKms[] { wqkms }, this); |
677
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 } |
a95f34f1f39a
Added error reporting to 'Abflusskurve' calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |