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