Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/sq/SieveArray.java @ 4845:88f5ab736448
MainValuesArtifact: Use RangeAccess.getLocations instead of FLYSUtils.getLocations.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 23 Jan 2013 10:39:44 +0100 |
parents | 9e25c7523485 |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model.sq; import java.util.Arrays; import org.apache.log4j.Logger; public class SieveArray { private static final Logger log = Logger.getLogger(SieveArray.class); 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]; } log.debug("calculated norm loads: " + Arrays.toString(normLoads)); } public void adjust(double eight, double four) { this.normLoads[4] = eight; this.normLoads[5] = four; } /** * 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 = 7; 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 < 7; ++i) { sum += normLoads[i]; } return sum; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :