teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.model.minfo; rrenkert@4372: rrenkert@4372: import gnu.trove.TDoubleArrayList; rrenkert@4372: rrenkert@4372: import java.io.Serializable; rrenkert@4372: import java.util.Set; rrenkert@4372: rrenkert@4518: import org.apache.log4j.Logger; rrenkert@4518: felix@5790: felix@5790: /** Result from a SedimentLoadCalculation. */ rrenkert@4372: public class SedimentLoadResult rrenkert@4372: implements Serializable rrenkert@4372: { teichmann@8202: private static final Logger log = Logger rrenkert@4518: .getLogger(SedimentLoadResult.class); rrenkert@4372: protected int startYear; rrenkert@4372: protected int endYear; teichmann@8024: protected SedimentLoadLSData load; rrenkert@4372: rrenkert@4372: public SedimentLoadResult() { rrenkert@4372: } rrenkert@4372: rrenkert@4372: public SedimentLoadResult( rrenkert@4372: int startYear, rrenkert@4372: int endYear, teichmann@8024: SedimentLoadLSData load rrenkert@4372: ) { rrenkert@4372: this.startYear = startYear; rrenkert@4372: this.endYear = endYear; rrenkert@4372: this.load = load; rrenkert@4372: } rrenkert@4372: teichmann@8024: public SedimentLoadLSData getLoad() { felix@6383: return this.load; felix@6383: } felix@6383: rrenkert@4372: public int getStartYear() { rrenkert@4372: return this.startYear; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public void setStartYear(int year) { rrenkert@4372: this.startYear = year; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public int getEndYear() { rrenkert@4372: return this.endYear; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public void setEndYear(int year) { rrenkert@4372: this.endYear = year; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getTotalData () { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList total = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { rrenkert@4372: if (load.getFraction(km).getTotal() > 0d) { rrenkert@4372: k.add(km); rrenkert@4372: total.add(load.getFraction(km).getTotal()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: total.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: felix@5790: /** Search all SedimenLoads fractions for sand and returns felix@5790: * an array [[km1, km2][sand1, sand2]]. */ rrenkert@4372: public double[][] getSandData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList sand = new TDoubleArrayList(); rrenkert@4372: for(double km : kms) { rrenkert@4372: if (load.getFraction(km).getSand() > 0d) { rrenkert@4372: k.add(km); rrenkert@4372: sand.add(load.getFraction(km).getSand()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: sand.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getFineMiddleData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList fm = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { felix@6376: if (load.getFraction(km).getFineMiddle() > 0d) { rrenkert@4372: k.add(km); felix@6376: fm.add(load.getFraction(km).getFineMiddle()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: fm.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getCoarseData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList coarse = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { rrenkert@4372: if (load.getFraction(km).getCoarse() > 0d) { rrenkert@4372: k.add(km); rrenkert@4372: coarse.add(load.getFraction(km).getCoarse()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: coarse.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getSuspSandData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList ss = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { felix@6376: if (load.getFraction(km).getSuspSand() > 0d) { rrenkert@4372: k.add(km); felix@6376: ss.add(load.getFraction(km).getSuspSand()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: ss.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getSuspSandBedData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList ss = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { felix@6376: if (load.getFraction(km).getSuspSandBed() > 0d) { rrenkert@4372: k.add(km); felix@6376: ss.add(load.getFraction(km).getSuspSandBed()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: ss.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public double[][] getSuspSedimentData() { rrenkert@4372: Set kms = this.load.getKms(); rrenkert@4372: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4372: TDoubleArrayList ss = new TDoubleArrayList(); rrenkert@4372: for (double km : kms) { felix@6376: if (load.getFraction(km).getSuspSediment() > 0d) { rrenkert@4372: k.add(km); felix@6376: ss.add(load.getFraction(km).getSuspSediment()); rrenkert@4372: } rrenkert@4372: } rrenkert@4372: return new double [][] { rrenkert@4372: k.toNativeArray(), rrenkert@4372: ss.toNativeArray() rrenkert@4372: }; rrenkert@4372: } rrenkert@4372: rrenkert@4546: public double[][] getTotalLoadData() { rrenkert@4546: Set kms = this.load.getKms(); rrenkert@4546: TDoubleArrayList k = new TDoubleArrayList(); rrenkert@4546: TDoubleArrayList ss = new TDoubleArrayList(); rrenkert@4546: for (double km : kms) { rrenkert@4546: if (load.getFraction(km).getLoadTotal() > 0d) { rrenkert@4546: k.add(km); rrenkert@4546: ss.add(load.getFraction(km).getLoadTotal()); rrenkert@4546: } rrenkert@4546: } rrenkert@4546: return new double [][] { rrenkert@4546: k.toNativeArray(), rrenkert@4546: ss.toNativeArray() rrenkert@4546: }; rrenkert@4546: } rrenkert@4546: rrenkert@4372: public boolean hasCoarseData() { rrenkert@4518: return getCoarseData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public boolean hasFineMiddleData() { rrenkert@4518: return getFineMiddleData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public boolean hasSandData() { rrenkert@4518: return getSandData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public boolean hasSuspSandData() { rrenkert@4518: return getSuspSandData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public boolean hasSuspSandBedData() { rrenkert@4518: return getSuspSandBedData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4372: public boolean hasSuspSedimentData() { rrenkert@4518: return getSuspSedimentData()[0].length > 0; rrenkert@4372: } rrenkert@4372: rrenkert@4546: public boolean hasTotalLoadData() { rrenkert@4546: return getTotalLoadData()[0].length > 0; rrenkert@4546: } rrenkert@4546: rrenkert@4372: public boolean hasTotalData() { rrenkert@4518: return getTotalData()[0].length > 0; rrenkert@4372: } rrenkert@4372: } felix@5637: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : felix@5637: