annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/WQKms.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
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: 4821
diff changeset
9 package org.dive4elements.river.artifacts.model;
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
7081
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
11 import org.dive4elements.river.utils.DataUtil;
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4821
diff changeset
12 import org.dive4elements.river.utils.DoubleUtil;
4821
bcf25d8c183e Moved NaN removal code from W to DoubleUtil. Create QKms when calculating the 'Umhuellende'.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4817
diff changeset
13
365
c13ca9d632d6 Introduced GNU Trove to store WQKms values in a more performant data structure.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 361
diff changeset
14 import gnu.trove.TDoubleArrayList;
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
16 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
17 import org.apache.logging.log4j.LogManager;
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
18
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20 /**
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 * This class represents a pool of data triples that consists of 'W', 'Q' and
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 * 'KM' data.
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 *
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 */
742
c09c9e05ecfa Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 726
diff changeset
26 public class WQKms
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
27 extends WQ
4817
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
28 implements WKms, QKms
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
29 {
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8856
diff changeset
30 private static Logger log = LogManager.getLogger(WQKms.class);
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
31
1029
3f3988bb6284 Picky Cosmetics.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 925
diff changeset
32 /** The array that contains the 'KMs' values. */
365
c13ca9d632d6 Introduced GNU Trove to store WQKms values in a more performant data structure.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 361
diff changeset
33 protected TDoubleArrayList kms;
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36 public WQKms() {
447
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
37 this("");
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
38 }
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
39
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
40
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
41 public WQKms(String name) {
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
42 super(name);
365
c13ca9d632d6 Introduced GNU Trove to store WQKms values in a more performant data structure.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 361
diff changeset
43 this.kms = new TDoubleArrayList();
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 }
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45
447
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
46
380
5f55047a17e8 Moved expensive allocation of result arrays out of km loop.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 367
diff changeset
47 public WQKms(int capacity) {
447
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
48 this(capacity, "");
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
49 }
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
50
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
51
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
52 public WQKms(int capacity, String name) {
2182
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
53 super(capacity, name);
380
5f55047a17e8 Moved expensive allocation of result arrays out of km loop.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 367
diff changeset
54 this.kms = new TDoubleArrayList(capacity);
5f55047a17e8 Moved expensive allocation of result arrays out of km loop.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 367
diff changeset
55 }
5f55047a17e8 Moved expensive allocation of result arrays out of km loop.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 367
diff changeset
56
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
57 public WQKms(double [] kms, double [] qs, double [] ws) {
447
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
58 this(kms, qs, ws, "");
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
59 }
5606ba4139e0 WSTs will now have a header that contains the names of the Ws or Qs that had been defined for the computation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 402
diff changeset
60
6303
5fda7065b74a Add another constructor that takes a WQ object as parameter
Andre Heinecke <aheinecke@intevation.de>
parents: 6301
diff changeset
61 public WQKms(double []kms, WQ wq) {
8362
839032ac1523 Purge obsolete representation of reference system for discharge tables.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
62 this(kms, wq.getQs(), wq.getWs(), wq.getName());
6303
5fda7065b74a Add another constructor that takes a WQ object as parameter
Andre Heinecke <aheinecke@intevation.de>
parents: 6301
diff changeset
63 }
5fda7065b74a Add another constructor that takes a WQ object as parameter
Andre Heinecke <aheinecke@intevation.de>
parents: 6301
diff changeset
64
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
65 public WQKms(
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
66 TDoubleArrayList kms,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
67 TDoubleArrayList qs,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
68 TDoubleArrayList ws,
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
69 String name
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
70 ) {
7645
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
71 super(qs, ws, name);
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
72 this.kms = kms;
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
73 }
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
74
8362
839032ac1523 Purge obsolete representation of reference system for discharge tables.
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
75 public WQKms(double [] kms, double [] qs, double [] ws, String name) {
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
76 super(qs, ws, name);
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
77 this.kms = new TDoubleArrayList(kms);
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
78 }
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
79
7645
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
80 /** Create a WQKms from WKms, filling the Qs with given q. */
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
81 public static WQKms fromWKms(WKms wkms, double q) {
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
82 TDoubleArrayList qs = new TDoubleArrayList(wkms.allKms().size());
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
83 qs.fill(q);
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
84 WQKms wqkms =
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
85 new WQKms(wkms.allKms(), qs, wkms.allWs(), wkms.getName());
7645
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
86 return wqkms;
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
87 }
7e5d4a0d9bad issue1020: Make WQKms able to build from WKms.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 7081
diff changeset
88
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
89 @Override
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
90 public void removeNaNs() {
4821
bcf25d8c183e Moved NaN removal code from W to DoubleUtil. Create QKms when calculating the 'Umhuellende'.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4817
diff changeset
91 DoubleUtil.removeNaNs(new TDoubleArrayList [] { ws, qs, kms });
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
92 }
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
93
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
94 /**
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
95 * Adds a new row to this data pool.
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
96 *
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
97 * @param w a W.
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 * @param q a Q.
3269
b2ea89a665bc Fix issues in 'documentation'.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2182
diff changeset
99 * @param km a kms.
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100 */
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
101 public void add(double w, double q, double km) {
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
102 super.add(w, q);
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
103 kms.add(km);
366
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
104 }
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
105
2182
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
106 @Override
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
107 public double [] get(int idx) {
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
108 return get(idx, new double [3]);
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
109 }
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
110
366
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
111 /**
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
112 * This method returns a triple of W, Q and Kms in a single 3dim array.
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
113 *
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
114 * @param idx The position of the triple.
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
115 * @param dst destination array
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
116 *
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
117 * @return a triple of [W, Q, Kms] in dst.
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
118 */
726
cbaa3ca86f2f Added base class WQ for WQKms.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 719
diff changeset
119 @Override
2182
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
120 public double [] get(int idx, double [] dst) {
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
121 dst[0] = ws .getQuick(idx);
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
122 dst[1] = qs .getQuick(idx);
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
123 dst[2] = kms.getQuick(idx);
366
d64339f9f38f WQKms model: Added a get() method which takes destination array as an argument.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 365
diff changeset
124 return dst;
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
125 }
367
0960df8358ec New method WQKms.size() to retrieve the number of elements in the data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 366
diff changeset
126
925
0cb1a70b8b92 Added the math needed to calculate "W-Differenzen" in "Laengsschnitten"
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 742
diff changeset
127 @Override
0cb1a70b8b92 Added the math needed to calculate "W-Differenzen" in "Laengsschnitten"
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 742
diff changeset
128 public double getKm(int idx) {
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
129 return kms.getQuick(idx);
367
0960df8358ec New method WQKms.size() to retrieve the number of elements in the data pool.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 366
diff changeset
130 }
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
131
1678
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
132 @Override
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
133 public TDoubleArrayList allKms() {
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
134 return kms;
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
135 }
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
136
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
137 @Override
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
138 public TDoubleArrayList allWs() {
2182
5ff481ab24a1 Refactored class hierachy to integrate model for W~W.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1678
diff changeset
139 return ws;
1678
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
140 }
03fbf1b30e72 Removed code duplication of guessWaterIncreasing()
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1029
diff changeset
141
4817
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
142 @Override
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
143 public TDoubleArrayList allQs() {
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
144 return qs;
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
145 }
4d457c68b1d3 Added QKms model.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3269
diff changeset
146
8549
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
147 @Override
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
148 public WKms filteredKms(double from, double to) {
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
149 WQKms retval = new WQKms(getName());
8651
81a8e3043794 Improve coding style in KMFilter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8549
diff changeset
150 for (int i = 0, S = size(); i < S; i++) {
81a8e3043794 Improve coding style in KMFilter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8549
diff changeset
151 double km = getKm(i);
8549
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
152 if (km >= from && km <= to) {
8651
81a8e3043794 Improve coding style in KMFilter loops
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8549
diff changeset
153 retval.add(getW(i), getQ(i), km);
8549
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
154 }
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
155 }
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
156 return retval;
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
157 }
1cff4c98df76 (issue1754) Extend WKms interface for KM filtering
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8421
diff changeset
158
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
159 public double[] getKms() {
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
160 return kms.toNativeArray();
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
161 }
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
162
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
163 /**
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
164 * Returns a string that consist of the first and last kilometer.
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
165 *
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
166 * @return a string that consist of the first and last kilometer.
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
167 */
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
168 public String toString() {
925
0cb1a70b8b92 Added the math needed to calculate "W-Differenzen" in "Laengsschnitten"
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 742
diff changeset
169 double from = getKm(0);
0cb1a70b8b92 Added the math needed to calculate "W-Differenzen" in "Laengsschnitten"
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 742
diff changeset
170 double to = getKm(size()-1);
686
3dc61e00385e Merged with trunk and introduced hashing of computed values.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 447
diff changeset
171 return from + " - " + to;
402
eb22ffe4d74c Implemented methods to retrieve and compute the data used to create discharge longitudinal sections.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 380
diff changeset
172 }
6599
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
173
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
174 /**
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
175 * Returns an array of two double values the first and last kilometer.
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
176 *
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
177 * @return a double array with the first and last km
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
178 */
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
179 public double[] getFirstLastKM() {
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
180 /* Behold the first km might be larger then the last! */
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
181 return new double[] {getKm(0), getKm(size()-1)};
38ee580a30cb Add getFirstLastKM utiltity function to WQKms
Andre Heinecke <aheinecke@intevation.de>
parents: 6303
diff changeset
182 }
7081
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
183
8421
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
184 private static final double EPS = 1e-5;
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
185
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
186 public Double sameKm() {
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
187 int s = size();
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
188 if (s < 1) return null;
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
189 if (s == 1) return getKm(0);
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
190 double a = getKm(0);
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
191 double b = getKm(s-1);
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
192 double c = getKm(s/2);
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
193
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
194 return Math.abs(a-b) > EPS
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
195 || Math.abs(a-c) > EPS
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 8651
diff changeset
196 || Math.abs(b-c) > EPS
8421
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
197 ? null
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
198 : a;
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
199 }
0fa963038c61 Only draw discharge curve if on same station as navigation.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 8362
diff changeset
200
7081
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
201 @Override
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
202 public boolean guessRTLData() {
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
203 return DataUtil.guessSameDirectionData(ws, allKms());
3c4efd4b2c19 Simplyfy / unify "invert axis" logic
Andre Heinecke <aheinecke@intevation.de>
parents: 6599
diff changeset
204 }
361
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 }
3e3ec9613883 Introduced a model class to store a set of triple data objects that consist of W, Q and Kms information.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org