comparison 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
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.model.sq;
2
3 import java.util.Arrays;
4
5 import org.apache.log4j.Logger;
6
7 public class SieveArray
8 {
9 private static final Logger log =
10 Logger.getLogger(SieveArray.class);
11
12 public static final double EPSILON = 1e-8;
13
14 public static final double [] SIEVE_DIAMETERS = {
15 100d, 63d, 31.5d, 16d,
16 8d, 4d, 2d, 1d,
17 0.5d, 0.25d, 0.125d, 0.063d
18 };
19
20 protected double [] loads;
21 protected double [] normLoads;
22
23 public SieveArray() {
24 loads = new double[SIEVE_DIAMETERS.length+1];
25 normLoads = new double[SIEVE_DIAMETERS.length+1];
26 }
27
28 public void doSieving(Sieve s) {
29
30 double diameter = s.getDiameter();
31
32 for (int i = 0; i < SIEVE_DIAMETERS.length; ++i) {
33 if (diameter >= SIEVE_DIAMETERS[i]) {
34 loads[i] += s.getLoad();
35 return;
36 }
37 }
38 loads[loads.length-1] += s.getLoad();
39 }
40
41 public double totalLoad() {
42 double sum = 0d;
43 for (double load: loads) {
44 sum += load;
45 }
46 return sum;
47 }
48
49 public void calculateNormLoads() {
50 double total = totalLoad();
51 if (Math.abs(total) < EPSILON) {
52 System.arraycopy(loads, 0, normLoads, 0, loads.length);
53 return;
54 }
55 total = 1d/total;
56 for (int i = 0; i < normLoads.length; ++i) {
57 normLoads[i] = total*loads[i];
58 }
59 log.debug("calculated norm loads: " + Arrays.toString(normLoads));
60 }
61
62 public void adjust(double eight, double four) {
63 this.normLoads[4] = eight;
64 this.normLoads[5] = four;
65 }
66
67 /**
68 * Gets the loads for this instance.
69 *
70 * @return The loads.
71 */
72 public double[] getLoads() {
73 return this.loads;
74 }
75
76 /**
77 * Gets the loads for this instance.
78 *
79 * @param index The index to get.
80 * @return The loads.
81 */
82 public double getLoads(int index) {
83 return this.loads[index];
84 }
85
86 /**
87 * Gets the normLoads for this instance.
88 *
89 * @return The normLoads.
90 */
91 public double[] getNormLoads() {
92 return this.normLoads;
93 }
94
95 /**
96 * Gets the normLoads for this instance.
97 *
98 * @param index The index to get.
99 * @return The normLoads.
100 */
101 public double getNormLoads(int index) {
102 return this.normLoads[index];
103 }
104
105 public double sandNormFraction() {
106 double sum = 0d;
107 for (int i = 7; i < normLoads.length; ++i) {
108 sum += normLoads[i];
109 }
110 return sum;
111 }
112
113 public double coarseNormFraction() {
114 double sum = 0d;
115 for (int i = 0; i < 4; ++i) {
116 sum += normLoads[i];
117 }
118 return sum;
119 }
120
121 public double gravelNormFraction() {
122 double sum = 0d;
123 for (int i = 4; i < 7; ++i) {
124 sum += normLoads[i];
125 }
126 return sum;
127 }
128 }
129 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org