diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java @ 2993:70469e3d34b9

FixA: Made Delta W/t calculation finally work flys-artifacts/trunk@4545 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 28 May 2012 20:59:27 +0000
parents 0abdede5a0b8
children a2b265b9b2f7
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java	Mon May 28 18:35:01 2012 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/FixCalculation.java	Mon May 28 20:59:27 2012 +0000
@@ -251,6 +251,8 @@
         FixingsOverview overview,
         Parameters      results
     ) {
+        boolean debug = log.isDebugEnabled();
+
         DeltaWTsKM deltaWTsKM = new DeltaWTsKM(results.size());
 
         Column [][] analysisColumns = getAnalysisColumns(overview);
@@ -263,8 +265,10 @@
 
         double [] ow = new double[1];
 
+        int kmIdx = results.columnIndex("km");
+
         for (int i = 0, N = results.size(); i < N; ++i) {
-            double km = results.get(i, "km");
+            double km = results.get(i, kmIdx);
             results.get(i, parameterIndices, parameterValues);
 
             DeltaWTsKM.KM dwtkm = new DeltaWTsKM.KM(km);
@@ -278,18 +282,24 @@
             for (int j = 0; j < analysisColumns.length; ++j) {
                 Column [] periodColumns = analysisColumns[j];
 
+                int failedQ = 0;
+                int failedW = 0;
+                int failedC = 0;
+
                 for (int k = 0; k < periodColumns.length; ++k) {
                     Column pc = periodColumns[k];
 
                     // Q from real data.
                     double q = pc.data.getQ(km);
                     if (Double.isNaN(q)) {
+                        ++failedQ;
                         continue;
                     }
 
                     // Calculate W from function.
                     double nw = instance.value(q);
                     if (Double.isNaN(nw)) {
+                        ++failedC;
                         continue;
                     }
 
@@ -297,6 +307,7 @@
                     pc.data.getW(km, ow);
 
                     if (Double.isNaN(ow[0])) {
+                        ++failedW;
                         continue;
                     }
 
@@ -309,6 +320,13 @@
 
                     dwtkm.add(deltaWT);
                 }
+                if (debug) {
+                    log.debug("failed W: " + failedW);
+                    log.debug("failed Q: " + failedQ);
+                    log.debug("failed C: " + failedC);
+                    log.debug("input size: " + periodColumns.length);
+                    log.debug("outpt size: " + dwtkm.size());
+                }
             }
         }
 
@@ -335,6 +353,11 @@
     /** Fetch meta and data columns for analysis periods. */
     protected Column [][] getAnalysisColumns(FixingsOverview overview) {
 
+        boolean debug = log.isDebugEnabled();
+        if (debug) {
+            log.debug("number analysis periods: " + analysisPeriods.length);
+        }
+
         Column columns [][] = new Column[analysisPeriods.length][];
 
         Range range = new Range(from, to);
@@ -360,6 +383,10 @@
 
             List<Fixing.Column> metaCols = overview.filter(range, filter);
 
+            if (debug) {
+                log.debug("number of filtered columns: " + metaCols.size());
+            }
+
             ArrayList<Column> cols = new ArrayList<Column>(metaCols.size());
 
             // Only use columns which have data.
@@ -369,6 +396,10 @@
                     cols.add(new Column(meta, data));
                 }
             }
+
+            if (debug) {
+                log.debug("failed loading: " + (metaCols.size()-cols.size()));
+            }
             columns[i] = cols.toArray(new Column[cols.size()]);
         }
 

http://dive4elements.wald.intevation.org