Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation1.java @ 4837:9e25c7523485
Fixed calculation of effective width in MINFO SQ relation.
* Get all (including empty datasets) from db.
* Filter empty datasets when processing data of the same date.
* Added debug outputs.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Wed, 23 Jan 2013 11:14:41 +0100 |
parents | c09c9e05ecfa |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import java.util.ArrayList; import org.apache.log4j.Logger; public class Calculation1 extends Calculation { private static Logger logger = Logger.getLogger(Calculation1.class); protected double [] kms; protected double [] qs; protected double [] ws; protected double refKm; public Calculation1() { } public Calculation1( double [] kms, double [] qs, double [] ws, double refKm ) { this.kms = kms; this.qs = qs; this.ws = ws; this.refKm = refKm; } public CalculationResult calculate(WstValueTable wst) { ArrayList<WQKms> results = new ArrayList<WQKms>(); String prefix; double [] origData; if (ws != null) { prefix = "W="; origData = ws; } else { prefix = "Q="; origData = qs; } int oldNumProblems = numProblems(); for (int i = 0; i < qs.length; i++) { double [] oqs = new double[kms.length]; double [] ows = new double[kms.length]; boolean success = wst.interpolate(qs[i], refKm, kms, ows, oqs, this) != null; int newNumProblems = numProblems(); if (success) { WQKms result = new WQKms(kms, oqs, ows, prefix + origData[i]); if (oldNumProblems != newNumProblems) { logger.debug( qs[i] + " caused " + (newNumProblems-oldNumProblems) + " new problem(s)."); result.removeNaNs(); } results.add(result); } oldNumProblems = newNumProblems; } return new CalculationResult( results.toArray(new WQKms[results.size()]), this); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :