Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SieveArray.java @ 4357:11cf29eb002c
FacetTypes: New type: exreme_wq_curve_base (for the Stuetz-Q-Poits).
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Fri, 02 Nov 2012 11:58:11 +0100 |
parents | 3b79e8afca7e |
children | bf2fd9c58ac4 |
line wrap: on
line source
package de.intevation.flys.artifacts.model.sq; public class SieveArray { public static final double EPSILON = 1e-8; public static final double [] SIEVE_DIAMETERS = { 100d, 63d, 31.5d, 16d, 8d, 4d, 2d, 1d, 0.5d, 0.25d, 0.125d, 0.063d }; protected double [] loads; protected double [] normLoads; public SieveArray() { loads = new double[SIEVE_DIAMETERS.length+1]; normLoads = new double[SIEVE_DIAMETERS.length+1]; } public void doSieving(Sieve s) { double diameter = s.getDiameter(); for (int i = 0; i < SIEVE_DIAMETERS.length; ++i) { if (diameter >= SIEVE_DIAMETERS[i]) { loads[i] += s.getLoad(); return; } } loads[loads.length-1] += s.getLoad(); } public double totalLoad() { double sum = 0d; for (double load: loads) { sum += load; } return sum; } public void calculateNormLoads() { double total = totalLoad(); if (Math.abs(total) < EPSILON) { System.arraycopy(loads, 0, normLoads, 0, loads.length); return; } total = 1d/total; for (int i = 0; i < normLoads.length; ++i) { normLoads[i] = total*loads[i]; } } /** * Gets the loads for this instance. * * @return The loads. */ public double[] getLoads() { return this.loads; } /** * Gets the loads for this instance. * * @param index The index to get. * @return The loads. */ public double getLoads(int index) { return this.loads[index]; } /** * Gets the normLoads for this instance. * * @return The normLoads. */ public double[] getNormLoads() { return this.normLoads; } /** * Gets the normLoads for this instance. * * @param index The index to get. * @return The normLoads. */ public double getNormLoads(int index) { return this.normLoads[index]; } public double sandNormFraction() { double sum = 0d; for (int i = 8; i < normLoads.length; ++i) { sum += normLoads[i]; } return sum; } public double coarseNormFraction() { double sum = 0d; for (int i = 0; i < 4; ++i) { sum += normLoads[i]; } return sum; } public double gravelNormFraction() { double sum = 0d; for (int i = 4; i < 8; ++i) { sum += normLoads[i]; } return sum; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :