comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/Sieve.java @ 3992:a9c93b7c9da1

Simpify the S(Q) fraction sieving stuff.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 30 Sep 2012 21:15:23 +0200
parents 3c61d9e64ca0
children ab3a4ad82ae1
comparison
equal deleted inserted replaced
3991:3a1cac4bfe70 3992:a9c93b7c9da1
1 package de.intevation.flys.artifacts.model.sq; 1 package de.intevation.flys.artifacts.model.sq;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6 2
7 public class Sieve 3 public class Sieve
8 { 4 {
9 public double [] fractionSizes; 5 public static final double EPSILON = 1e-6;
10 6
11 protected List<List<SQ>> fractions; 7 protected double diameter;
8 protected double load;
12 9
10 /**
11 * Constructs a new instance.
12 */
13 public Sieve() { 13 public Sieve() {
14 this(Double.NaN, Double.NaN);
14 } 15 }
15 16
16 public Sieve(double [] fractionSizes) { 17 public Sieve(double diameter, double load) {
17 this.fractionSizes = fractionSizes; 18 this.diameter = diameter;
18 fractions = new ArrayList<List<SQ>>(fractionSizes.length+1); 19 this.load = load;
19 for (int i = fractionSizes.length; i >= 0; --i) {
20 fractions.add(new ArrayList<SQ>());
21 }
22 } 20 }
23 21
24 public void sieve(Iterator<SQ> sqs) { 22 /**
25 OUTER: while (sqs.hasNext()) { 23 * Gets the diameter for this instance.
26 SQ sq = sqs.next(); 24 *
27 double q = sq.getQ(); 25 * @return The diameter.
28 for (int i = 0; i < fractionSizes.length; ++i) { 26 */
29 if (q < fractionSizes[i]) { 27 public double getDiameter() {
30 fractions.get(i).add(sq); 28 return this.diameter;
31 continue OUTER;
32 }
33 }
34 fractions.get(fractions.size()-1).add(sq);
35 }
36 } 29 }
37 30
38 public int numFractions() { 31 /**
39 return fractions.size(); 32 * Sets the diameter for this instance.
33 *
34 * @param diameter The diameter.
35 */
36 public void setDiameter(double diameter) {
37 this.diameter = diameter;
40 } 38 }
41 39
42 public List<SQ> getFraction(int idx) { 40 /**
43 return fractions.get(idx); 41 * Gets the load for this instance.
42 *
43 * @return The load.
44 */
45 public double getLoad() {
46 return this.load;
44 } 47 }
45 48
46 public void reset() { 49 /**
47 for (List<SQ> fraction: fractions) { 50 * Sets the load for this instance.
48 fraction.clear(); 51 *
49 } 52 * @param load The load.
53 */
54 public void setLoad(double load) {
55 this.load = load;
56 }
57
58 public boolean matchesDiameter(double diameter) {
59 return Math.abs(diameter - this.diameter) < EPSILON;
60 }
61
62 public boolean hasDiameter() {
63 return !Double.isNaN(diameter);
50 } 64 }
51 } 65 }
52 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : 66 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org