annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/Calculation2.java @ 8202:e4606eae8ea5

sed src/**/*.java 's/logger/log/g'
author Sascha L. Teichmann <teichmann@intevation.de>
date Fri, 05 Sep 2014 12:58:17 +0200
parents 898afcce1d0a
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 :

http://dive4elements.wald.intevation.org