annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SieveArray.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/model/sq/SieveArray.java@bd047b71ab37
children 4897a58c8746
rev   line source
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4837
diff changeset
1 package org.dive4elements.river.artifacts.model.sq;
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
2
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
3 import java.util.Arrays;
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
4
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
5 import org.apache.log4j.Logger;
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
6
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
7 public class SieveArray
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
8 {
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
9 private static final Logger log =
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
10 Logger.getLogger(SieveArray.class);
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
11
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
12 public static final double EPSILON = 1e-8;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
13
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
14 public static final double [] SIEVE_DIAMETERS = {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
15 100d, 63d, 31.5d, 16d,
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
16 8d, 4d, 2d, 1d,
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
17 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
18 };
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 protected double [] loads;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
21 protected double [] normLoads;
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 public SieveArray() {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
24 loads = new double[SIEVE_DIAMETERS.length+1];
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
25 normLoads = new double[SIEVE_DIAMETERS.length+1];
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
26 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
27
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
28 public void doSieving(Sieve s) {
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 double diameter = s.getDiameter();
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
31
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
32 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
33 if (diameter >= SIEVE_DIAMETERS[i]) {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
34 loads[i] += s.getLoad();
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
35 return;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
36 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
37 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
38 loads[loads.length-1] += s.getLoad();
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
39 }
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 public double totalLoad() {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
42 double sum = 0d;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
43 for (double load: loads) {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
44 sum += load;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
45 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
46 return sum;
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
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
49 public void calculateNormLoads() {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
50 double total = totalLoad();
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
51 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
52 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
53 return;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
54 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
55 total = 1d/total;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
56 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
57 normLoads[i] = total*loads[i];
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
58 }
4837
9e25c7523485 Fixed calculation of effective width in MINFO SQ relation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4813
diff changeset
59 log.debug("calculated norm loads: " + Arrays.toString(normLoads));
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
60 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
61
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
62 public void adjust(double eight, double four) {
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
63 this.normLoads[4] = eight;
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
64 this.normLoads[5] = four;
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
65 }
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
66
3992
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 * Gets the loads for this instance.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
69 *
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
70 * @return The loads.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
71 */
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
72 public double[] getLoads() {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
73 return this.loads;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
74 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
75
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 * Gets the loads for this instance.
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 * @param index The index to get.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
80 * @return The loads.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
81 */
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
82 public double getLoads(int index) {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
83 return this.loads[index];
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
84 }
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 * Gets the normLoads for this instance.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
88 *
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
89 * @return The normLoads.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
90 */
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
91 public double[] getNormLoads() {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
92 return this.normLoads;
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
93 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
94
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
95 /**
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
96 * Gets the normLoads for this instance.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
97 *
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
98 * @param index The index to get.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
99 * @return The normLoads.
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
100 */
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
101 public double getNormLoads(int index) {
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
102 return this.normLoads[index];
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
103 }
4004
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 sandNormFraction() {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
106 double sum = 0d;
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
107 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
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 coarseNormFraction() {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
114 double sum = 0d;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
115 for (int i = 0; i < 4; ++i) {
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 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
120
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
121 public double gravelNormFraction() {
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
122 double sum = 0d;
4813
bf2fd9c58ac4 Fixed MINFO SQ calculation.
Raimund Renkert <rrenkert@intevation.de>
parents: 4004
diff changeset
123 for (int i = 4; i < 7; ++i) {
4004
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
124 sum += normLoads[i];
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
125 }
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
126 return sum;
3b79e8afca7e S(Q) calculate effective width
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4001
diff changeset
127 }
3992
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
128 }
a9c93b7c9da1 Simpify the S(Q) fraction sieving stuff.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
diff changeset
129 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org