Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation1.java @ 726:cbaa3ca86f2f
Added base class WQ for WQKms.
flys-artifacts/trunk@2216 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 23 Jun 2011 12:19:12 +0000 |
parents | 3b7e9ddf6bb1 |
children | 5abdb2fa8eb1 |
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 boolean up; protected double refKm; public Calculation1() { } public Calculation1( double [] kms, double [] qs, double [] ws, double refKm, boolean up ) { this.kms = kms; this.qs = qs; this.ws = ws; this.refKm = refKm; this.up = up; } public CalculationResult calculate(WstValueTable wst) { ArrayList<WQKms> results = new ArrayList<WQKms>(); double ref = Double.isNaN(refKm) ? kms[up ? 0 : kms.length-1] : refKm; 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], ref, 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 :