Mercurial > dive4elements > river
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; |