view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQ.java @ 731:5ddb1b568f38

Added generation and configuration of AT facets. flys-artifacts/trunk@2222 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 23 Jun 2011 17:22:17 +0000
parents cbaa3ca86f2f
children b385577bcaca
line wrap: on
line source
package de.intevation.flys.artifacts.model;

import gnu.trove.TDoubleArrayList;

public class WQ
extends      NamedObject
{
    protected TDoubleArrayList w;

    protected TDoubleArrayList q;

    public WQ() {
        this("");
    }

    public WQ(String name) {
        w = new TDoubleArrayList();
        q = new TDoubleArrayList();
    }

    public WQ(int capacity) {
        this(capacity, "");
    }


    public WQ(int capacity, String name) {
        super(name);
        w = new TDoubleArrayList(capacity);
        q = new TDoubleArrayList(capacity);
    }

    public WQ(double [] qs, double [] ws) {
        this(qs, ws, "");
    }

    public WQ(double [] qs, double [] ws, String name) {
        super(name);
        w = new TDoubleArrayList(ws);
        q = new TDoubleArrayList(qs);
    }

    public void add(double w, double q) {
        this.w.add(w);
        this.q.add(q);
    }

    public int size() {
        return w.size();
    }

    public double getW(int idx) {
        return w.getQuick(idx);
    }

    public double getQ(int idx) {
        return q.getQuick(idx);
    }

    public double [] get(int idx) {
        return get(idx, new double [2]);
    }

    public double [] get(int idx, double [] dst) {
        dst[0] = w.getQuick(idx);
        dst[1] = q.getQuick(idx);
        return dst;
    }

    public double [] getWs() {
        return w.toNativeArray();
    }

    public double [] getQs() {
        return q.toNativeArray();
    }

    public static void removeNaNs(TDoubleArrayList [] arrays) {

        int dest = 0;

        int A = arrays.length;
        int N = arrays[0].size();

        OUTER: for (int i = 0; i < N; ++i) {
            for (int j = 0; j < A; ++j) {
                TDoubleArrayList a = arrays[j];
                double v = a.getQuick(i);
                if (Double.isNaN(v)) {
                    continue OUTER;
                }
                a.setQuick(dest, v);
            }
            ++dest;
        }

        if (dest < N) {
            for (int i = 0; i < A; ++i) {
                arrays[i].remove(dest, N-dest);
            }
        }
    }

    public void removeNaNs() {
        removeNaNs(new TDoubleArrayList [] { w, q });
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org