Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/Calculation1.java @ 700:94f0f91be11c facets-slt
call computeAdvance() if we want to advance.
flys-artifacts/branches/facets-slt@2150 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 17 Jun 2011 13:10:20 +0000 |
parents | 3dc61e00385e |
children | 757ff56b43b3 |
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; public Calculation1() { } public Calculation1( double [] kms, double [] qs, double [] ws, boolean up ) { this.kms = kms; this.qs = qs; this.ws = ws; this.up = up; } public WQKms [] calculate(WstValueTable wst) { ArrayList<WQKms> results = new ArrayList<WQKms>(); double ref = kms[up ? 0 : kms.length-1]; 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 results.toArray(new WQKms[results.size()]); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :