[PATCH 2 of 2] issue1436: Repair sedimentload epoch calculation,
Wald Commits
scm-commit at wald.intevation.org
Thu Sep 19 12:40:52 CEST 2013
# HG changeset patch
# User Felix Wolfsteller <felix.wolfsteller at intevation.de>
# Date 1379587890 -7200
# Node ID f4d6ef50665a3fd196848db63d7a0eee05df4a88
# Parent 3a55f49be15552bba2663cd3b25a834c45863331
issue1436: Repair sedimentload epoch calculation,
get initial NaNs out of the way, they give a bad taste when building sums over them.
diff -r 3a55f49be155 -r f4d6ef50665a artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadCalculation.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadCalculation.java Thu Sep 19 10:39:15 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/SedimentLoadCalculation.java Thu Sep 19 12:51:30 2013 +0200
@@ -127,6 +127,14 @@
return null;
}
+
+ /** Returns val if not NaN, 0d otherwise. */
+ private static double makeNaN0(double val) {
+ return Double.isNaN(val)
+ ? 0d
+ : val;
+ }
+
/**
* Take Loads and build average of all fractions at given km.
* The average fractions value is set in resLoad.
@@ -149,32 +157,32 @@
for (SedimentLoad load : epochLoads) {
SedimentLoadFraction f = load.getFraction(km);
if (f.getCoarse() > 0d) {
- double c = resLoad.getFraction(km).getCoarse();
+ double c = makeNaN0(resLoad.getFraction(km).getCoarse());
resLoad.setCoarse(km, c + f.getCoarse(), f.getCoarseRange());
cSum++;
}
if (f.getFineMiddle() > 0d) {
- double fm = resLoad.getFraction(km).getFineMiddle();
+ double fm = makeNaN0(resLoad.getFraction(km).getFineMiddle());
resLoad.setFineMiddle(km, fm + f.getFineMiddle(), f.getFineMiddleRange());
fmSum++;
}
if (f.getSand() > 0d) {
- double s = resLoad.getFraction(km).getSand();
+ double s = makeNaN0(resLoad.getFraction(km).getSand());
resLoad.setSand(km, s + f.getSand(), f.getSandRange());
sSum++;
}
if (f.getSuspSand() > 0d) {
- double s = resLoad.getFraction(km).getSuspSand();
+ double s = makeNaN0(resLoad.getFraction(km).getSuspSand());
resLoad.setSuspSand(km, s + f.getSuspSand(), f.getSuspSandRange());
ssSum++;
}
if (f.getSuspSandBed() > 0d) {
- double s = resLoad.getFraction(km).getSuspSandBed();
+ double s = makeNaN0(resLoad.getFraction(km).getSuspSandBed());
resLoad.setSuspSandBed(km, s + f.getSuspSandBed(), f.getSuspSandBedRange());
ssbSum++;
}
if (f.getSuspSediment() > 0d) {
- double s = resLoad.getFraction(km).getSuspSediment();
+ double s = makeNaN0(resLoad.getFraction(km).getSuspSediment());
resLoad.setSuspSediment(km, s + f.getSuspSediment(), f.getSuspSedimentRange());
sseSum++;
}
More information about the Dive4elements-commits
mailing list