comparison artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixATWriter.java @ 7687:f4b3861712a4

(issue1666) Calculate wRow after rounding the first value. This also fixes negative waterlevels in the export.
author Andre Heinecke <aheinecke@intevation.de>
date Thu, 12 Dec 2013 16:01:40 +0100
parents 65a5deaee769
children e4606eae8ea5
comparison
equal deleted inserted replaced
7686:7484132b2fbb 7687:f4b3861712a4
24 import java.io.IOException; 24 import java.io.IOException;
25 import java.io.PrintWriter; 25 import java.io.PrintWriter;
26 import java.io.Writer; 26 import java.io.Writer;
27 27
28 import java.util.Locale; 28 import java.util.Locale;
29 import java.util.Arrays;
29 30
30 import org.apache.log4j.Logger; 31 import org.apache.log4j.Logger;
31 32
32 /** Export Fixation Analysis Results to AT. */ 33 /** Export Fixation Analysis Results to AT. */
33 public class FixATWriter 34 public class FixATWriter
116 double wMin = minW(invInst, wMax, qMax[0]); 117 double wMin = minW(invInst, wMax, qMax[0]);
117 118
118 double wMinCM = wMin * 100d - subtractPNP; 119 double wMinCM = wMin * 100d - subtractPNP;
119 double wMaxCM = wMax * 100d; 120 double wMaxCM = wMax * 100d;
120 121
121 int wRow = ((int)wMinCM / 10) * 10;
122
123 if ((wMinCM - (int)wMinCM) > 0d) { 122 if ((wMinCM - (int)wMinCM) > 0d) {
124 wMinCM = (int)wMinCM + 1d; 123 wMinCM = (int)wMinCM + 1d;
125 } 124 }
126 125
126 int wRow = ((int)wMinCM / 10) * 10;
127
127 double w = (wMinCM + subtractPNP) / 100.0; 128 double w = (wMinCM + subtractPNP) / 100.0;
128 129
129 int wcm = ((int)wMinCM) % 10; 130 int wcm = ((int)wMinCM) % 10;
130 131
131 if (log.isDebugEnabled()) { 132 if (log.isDebugEnabled()) {
133 log.debug("km: " + km);
132 log.debug("wMinCM: " + wMinCM); 134 log.debug("wMinCM: " + wMinCM);
133 log.debug("wMaxCM: " + wMaxCM); 135 log.debug("wMaxCM: " + wMaxCM);
134 log.debug("wcm: " + wcm); 136 log.debug("wcm: " + wcm);
135 log.debug("subtractPNP: " + subtractPNP); 137 log.debug("subtractPNP: " + subtractPNP);
138 log.debug("coeffs: " + Arrays.toString(coeffs));
139 log.debug("function description: " + inverse.getDescription());
136 } 140 }
137 141
138 out.printf(Locale.US, "%8d", wRow); 142 out.printf(Locale.US, "%8d", wRow);
139 143
140 for (int i = 0; i < wcm; i++) { 144 for (int i = 0; i < wcm; i++) {
203 double lastW = maxW; 207 double lastW = maxW;
204 double lastQ = maxQ; 208 double lastQ = maxQ;
205 209
206 for (int i = 0; i < MAX_ITERATIONS; ++i) { 210 for (int i = 0; i < MAX_ITERATIONS; ++i) {
207 double w = lastW - stepWidth; 211 double w = lastW - stepWidth;
212
213 if (w <= 0) {
214 return 0;
215 }
216
208 double q = function.value(w); 217 double q = function.value(w);
209 218
210 if (Double.isNaN(q) || q > lastQ || q < MIN_Q) { 219 if (Double.isNaN(q) || q > lastQ || q < MIN_Q) {
211 if (stepWidth < EPSILON) { 220 if (stepWidth < EPSILON) {
212 break; 221 break;

http://dive4elements.wald.intevation.org