Mercurial > dive4elements > river
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 : |