Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SieveArray.java @ 4813:bf2fd9c58ac4
Fixed MINFO SQ calculation.
* Fixed calculation of sieve 8.
* Fixed calculation of 'Geschiebetransport'.
* Fixed calculation of fractions (Sand, gravel, coarse).
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Sun, 20 Jan 2013 15:02:19 +0100 |
parents | 3b79e8afca7e |
children | 9e25c7523485 |
rev | line source |
---|---|
3992
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.model.sq; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
2 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
3 public class SieveArray |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
4 { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
5 public static final double EPSILON = 1e-8; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
6 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
7 public static final double [] SIEVE_DIAMETERS = { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
8 100d, 63d, 31.5d, 16d, |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
9 8d, 4d, 2d, 1d, |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
10 0.5d, 0.25d, 0.125d, 0.063d |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
11 }; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
12 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
13 protected double [] loads; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
14 protected double [] normLoads; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
15 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
16 public SieveArray() { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
17 loads = new double[SIEVE_DIAMETERS.length+1]; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
18 normLoads = new double[SIEVE_DIAMETERS.length+1]; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
19 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
20 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
21 public void doSieving(Sieve s) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
22 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
23 double diameter = s.getDiameter(); |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
24 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
25 for (int i = 0; i < SIEVE_DIAMETERS.length; ++i) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
26 if (diameter >= SIEVE_DIAMETERS[i]) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
27 loads[i] += s.getLoad(); |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
28 return; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
29 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
30 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
31 loads[loads.length-1] += s.getLoad(); |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
32 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
33 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
34 public double totalLoad() { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
35 double sum = 0d; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
36 for (double load: loads) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
37 sum += load; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
38 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
39 return sum; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
40 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
41 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
42 public void calculateNormLoads() { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
43 double total = totalLoad(); |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
44 if (Math.abs(total) < EPSILON) { |
4001
ab3a4ad82ae1
S(Q) accumulated same diameter meassurements per bank distance.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3992
diff
changeset
|
45 System.arraycopy(loads, 0, normLoads, 0, loads.length); |
3992
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
46 return; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
47 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
48 total = 1d/total; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
49 for (int i = 0; i < normLoads.length; ++i) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
50 normLoads[i] = total*loads[i]; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
51 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
52 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
53 |
4813
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
54 public void adjust(double eight, double four) { |
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
55 this.normLoads[4] = eight; |
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
56 this.normLoads[5] = four; |
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
57 } |
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
58 |
3992
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
59 /** |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
60 * Gets the loads for this instance. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
61 * |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
62 * @return The loads. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
63 */ |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
64 public double[] getLoads() { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
65 return this.loads; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
66 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
67 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
68 /** |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
69 * Gets the loads for this instance. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
70 * |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
71 * @param index The index to get. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
72 * @return The loads. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
73 */ |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
74 public double getLoads(int index) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
75 return this.loads[index]; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
76 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
77 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
78 /** |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
79 * Gets the normLoads for this instance. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
80 * |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
81 * @return The normLoads. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
82 */ |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
83 public double[] getNormLoads() { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
84 return this.normLoads; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
85 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
86 |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
87 /** |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
88 * Gets the normLoads for this instance. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
89 * |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
90 * @param index The index to get. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
91 * @return The normLoads. |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
92 */ |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
93 public double getNormLoads(int index) { |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
94 return this.normLoads[index]; |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
95 } |
4004
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
96 |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
97 public double sandNormFraction() { |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
98 double sum = 0d; |
4813
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
99 for (int i = 7; i < normLoads.length; ++i) { |
4004
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
100 sum += normLoads[i]; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
101 } |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
102 return sum; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
103 } |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
104 |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
105 public double coarseNormFraction() { |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
106 double sum = 0d; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
107 for (int i = 0; i < 4; ++i) { |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
108 sum += normLoads[i]; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
109 } |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
110 return sum; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
111 } |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
112 |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
113 public double gravelNormFraction() { |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
114 double sum = 0d; |
4813
bf2fd9c58ac4
Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4004
diff
changeset
|
115 for (int i = 4; i < 7; ++i) { |
4004
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
116 sum += normLoads[i]; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
117 } |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
118 return sum; |
3b79e8afca7e
S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4001
diff
changeset
|
119 } |
3992
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
120 } |
a9c93b7c9da1
Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff
changeset
|
121 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |