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; sascha@676: sascha@676: import org.apache.log4j.Logger; sascha@676: sascha@676: public class Calculation3 sascha@676: extends Calculation sascha@676: { teichmann@8202: private static Logger log = Logger.getLogger(Calculation3.class); sascha@676: sascha@676: protected double km; sascha@676: protected int [] days; sascha@676: protected double [] qs; sascha@676: sascha@676: public Calculation3() { sascha@676: } sascha@676: sascha@676: public Calculation3(double km, int [] days, double [] qs) { sascha@676: this.km = km; sascha@676: this.days = days; sascha@676: this.qs = qs; sascha@676: } sascha@676: sascha@709: public CalculationResult calculate(WstValueTable wst) { sascha@676: sascha@676: double [] ws = wst.interpolateW(km, qs, new double[qs.length], this); sascha@676: ingo@1669: if (days == null || days.length == 0) { sascha@2166: addProblem(km, "cannot.find.ds"); ingo@1669: } ingo@1669: teichmann@8202: if (log.isDebugEnabled()) { teichmann@8202: log.debug("Calculate duration curve data:"); teichmann@8202: log.debug(" km : " + km); teichmann@8202: log.debug(" num Days : " + (days != null ? days.length : 0)); teichmann@8202: log.debug(" num Qs : " + (qs != null ? qs.length : 0)); teichmann@8202: log.debug(" result Ws: " + (ws != null ? ws.length : 0)); ingo@1669: } ingo@1669: sascha@676: WQDay wqday = new WQDay(days, ws, qs); sascha@676: sascha@676: if (hasProblems()) { teichmann@8202: log.debug("calculation caused "+numProblems()+" problem(s)."); sascha@676: wqday.removeNaNs(); sascha@676: } sascha@676: sascha@709: return new CalculationResult(wqday, this); sascha@676: } sascha@676: } sascha@676: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :