Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/common/GaugeDischargeValuesFinder.java @ 9533:d9fda7af24ca
No discharge zone calculation and output for gauges unknown in flys for sinfo collision (Meilenstein 2, 2.2.1)
author | mschaefer |
---|---|
date | Thu, 04 Oct 2018 12:48:57 +0200 |
parents | b4402594213b |
children | f2473dc34535 |
comparison
equal
deleted
inserted
replaced
9532:8e6b9cb9486a | 9533:d9fda7af24ca |
---|---|
15 import org.apache.commons.math.analysis.interpolation.LinearInterpolator; | 15 import org.apache.commons.math.analysis.interpolation.LinearInterpolator; |
16 import org.dive4elements.river.artifacts.model.Calculation; | 16 import org.dive4elements.river.artifacts.model.Calculation; |
17 import org.dive4elements.river.model.DischargeTable; | 17 import org.dive4elements.river.model.DischargeTable; |
18 import org.dive4elements.river.model.DischargeTableValue; | 18 import org.dive4elements.river.model.DischargeTableValue; |
19 import org.dive4elements.river.model.Gauge; | 19 import org.dive4elements.river.model.Gauge; |
20 import org.dive4elements.river.model.River; | |
20 | 21 |
21 import gnu.trove.TDoubleArrayList; | 22 import gnu.trove.TDoubleArrayList; |
22 | 23 |
23 /** | 24 /** |
24 * Loading and search/interpolation of a gauge's discharge table (.at) | 25 * Loading and search/interpolation of a gauge's discharge table (.at) |
76 * Loads the the main discharge table of a gauge ({gauge}.at) | 77 * Loads the the main discharge table of a gauge ({gauge}.at) |
77 * | 78 * |
78 * @return The discharge table values finder of the gauge, or null | 79 * @return The discharge table values finder of the gauge, or null |
79 */ | 80 */ |
80 public static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final Calculation problems) { | 81 public static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final Calculation problems) { |
81 final DischargeTable table = gauge.fetchMasterDischargeTable(); | 82 return loadValues(gauge, gauge.getName(), problems); |
83 } | |
84 | |
85 /** | |
86 * Loads the the main discharge table of a river's gauge ({gauge}.at) | |
87 * | |
88 * @return The discharge table values finder of the gauge, or null | |
89 */ | |
90 public static GaugeDischargeValuesFinder loadValues(final River river, final String gaugeName, final Calculation problems) { | |
91 final Gauge gauge = river.determineGaugeByName(gaugeName); | |
92 return loadValues(gauge, gaugeName, problems); | |
93 } | |
94 | |
95 private static GaugeDischargeValuesFinder loadValues(final Gauge gauge, final String gaugeName, final Calculation problems) { | |
96 final DischargeTable table = (gauge != null) ? gauge.fetchMasterDischargeTable() : null; | |
82 if ((table == null) || (table.getDischargeTableValues().size() == 0)) { | 97 if ((table == null) || (table.getDischargeTableValues().size() == 0)) { |
83 problems.addProblem("gauge_discharge_table.missing", gauge.getName()); | 98 problems.addProblem("gauge_discharge_table.missing", gaugeName); |
84 return null; | 99 return null; |
85 } | 100 } |
86 else | 101 else |
87 return new GaugeDischargeValuesFinder(gauge, problems, table); | 102 return new GaugeDischargeValuesFinder(gauge, problems, table); |
88 } | 103 } |
101 * W in cm above gauge datum | 116 * W in cm above gauge datum |
102 * @return Q, or NegInf for w less than all, or PosInf for w greater then all, or NaN in case of exception | 117 * @return Q, or NegInf for w less than all, or PosInf for w greater then all, or NaN in case of exception |
103 */ | 118 */ |
104 public double getDischarge(final double w) { | 119 public double getDischarge(final double w) { |
105 try { | 120 try { |
106 if (this.wInterpolator == null) | 121 if (!this.isValid()) |
107 return Double.NaN; | 122 return Double.NaN; |
108 else if (w < this.wRange.getMinimumDouble()) | 123 else if (w < this.wRange.getMinimumDouble()) |
109 return Double.NEGATIVE_INFINITY; | 124 return Double.NEGATIVE_INFINITY; |
110 else if (w > this.wRange.getMaximumDouble()) | 125 else if (w > this.wRange.getMaximumDouble()) |
111 return Double.POSITIVE_INFINITY; | 126 return Double.POSITIVE_INFINITY; |