Mercurial > dive4elements > river
annotate flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/minfo/SedimentLoadCalculation.java @ 4535:b838d16c629e
Refactor BedHeightArtifacts to provide bed height single values of a range
The range of bed height single values is necessary to generate a chart for
sounding widths.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Thu, 15 Nov 2012 16:20:02 +0100 |
parents | a9753f717b3d |
children | e357716cf346 |
rev | line source |
---|---|
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
1 package de.intevation.flys.artifacts.model.minfo; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
2 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
3 import gnu.trove.TDoubleArrayList; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
4 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
5 import java.util.ArrayList; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
6 import java.util.List; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
7 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
8 import org.apache.log4j.Logger; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
9 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
10 import de.intevation.flys.artifacts.access.SedimentLoadAccess; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
11 import de.intevation.flys.artifacts.model.Calculation; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
12 import de.intevation.flys.artifacts.model.CalculationResult; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
13 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
14 |
4483
cc6323401643
Cosmetics: Removed some WSP, obsolete imports. Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4373
diff
changeset
|
15 /** Calculate sediment load. */ |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
16 public class SedimentLoadCalculation |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
17 extends Calculation |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
18 { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
19 |
4483
cc6323401643
Cosmetics: Removed some WSP, obsolete imports. Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4373
diff
changeset
|
20 /** Private logger. */ |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
21 private static final Logger logger = Logger |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
22 .getLogger(SedimentLoadCalculation.class); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
23 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
24 protected String river; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
25 protected String yearEpoch; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
26 protected double kmUp; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
27 protected double kmLow; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
28 protected int[] period; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
29 protected int[][] epoch; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
30 protected String unit; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
31 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
32 public SedimentLoadCalculation() { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
33 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
34 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
35 public CalculationResult calculate(SedimentLoadAccess access) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
36 logger.info("SedimentLoadCalculation.calculate"); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
37 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
38 String river = access.getRiver(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
39 String yearEpoch = access.getYearEpoch(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
40 String unit = access.getUnit(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
41 int[] period = null; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
42 int[][] epoch = null; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
43 double kmUp = access.getUpperKM(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
44 double kmLow = access.getLowerKM(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
45 if (yearEpoch.equals("year")) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
46 period = access.getPeriod(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
47 epoch = null; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
48 } |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
49 else if (yearEpoch.equals("epoch") || yearEpoch.equals("off_epoch")) { |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
50 epoch = access.getEpochs(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
51 period = null; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
52 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
53 else { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
54 addProblem("minfo.missing.year_epoch"); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
55 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
56 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
57 if (river == null) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
58 // TODO: i18n |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
59 addProblem("minfo.missing.river"); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
60 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
61 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
62 if (period == null && epoch == null) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
63 addProblem("minfo.missing.time"); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
64 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
65 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
66 if (!hasProblems()) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
67 this.river = river; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
68 this.yearEpoch = yearEpoch; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
69 this.unit = unit; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
70 this.period = period; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
71 this.epoch = epoch; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
72 this.kmUp = kmUp; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
73 this.kmLow = kmLow; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
74 return internalCalculate(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
75 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
76 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
77 return new CalculationResult(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
78 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
79 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
80 private CalculationResult internalCalculate() { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
81 logger.debug("internalCalulate; mode:" + yearEpoch); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
82 if (yearEpoch.equals("year")) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
83 List<SedimentLoadResult> results = |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
84 new ArrayList<SedimentLoadResult>(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
85 for (int i = period[0]; i <= period[1]; i++) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
86 logger.debug("calculating for year: " + i); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
87 SedimentLoadResult res = calculateYear(i); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
88 results.add(res); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
89 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
90 return new CalculationResult( |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
91 results.toArray(new SedimentLoadResult[results.size()]), this); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
92 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
93 else if (yearEpoch.equals("epoch")) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
94 List<SedimentLoadResult> results = |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
95 new ArrayList<SedimentLoadResult>(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
96 for (int i = 0; i < epoch.length; i++) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
97 SedimentLoadResult res = calculateEpoch(i); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
98 results.add(res); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
99 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
100 return new CalculationResult( |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
101 results.toArray(new SedimentLoadResult[results.size()]), this); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
102 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
103 else if (yearEpoch.equals("off_epoch")) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
104 List<SedimentLoadResult> results = |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
105 new ArrayList<SedimentLoadResult>(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
106 for (int i = 0; i < epoch.length; i++) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
107 SedimentLoadResult res = calculateOffEpoch(i); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
108 results.add(res); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
109 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
110 return new CalculationResult( |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
111 results.toArray(new SedimentLoadResult[results.size()]), this); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
112 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
113 return null; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
114 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
115 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
116 private SedimentLoadResult calculateEpoch(int i) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
117 List<SedimentLoad> epochLoads = new ArrayList<SedimentLoad>(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
118 for (int j = epoch[i][0]; j < epoch[i][1]; j++) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
119 epochLoads.add(SedimentLoadFactory.getLoadwithData( |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
120 this.river, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
121 this.yearEpoch, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
122 this.kmLow, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
123 this.kmUp, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
124 j, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
125 j)); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
126 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
127 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
128 SedimentLoad resLoad = new SedimentLoad(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
129 TDoubleArrayList kms = new TDoubleArrayList(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
130 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
131 for (SedimentLoad load : epochLoads) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
132 for (double km : load.getKms()) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
133 if (!kms.contains(km)) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
134 kms.add(km); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
135 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
136 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
137 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
138 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
139 for (int j = 0; j < kms.size(); j++) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
140 int cSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
141 int fmSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
142 int sSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
143 int ssSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
144 int ssbSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
145 int sseSum = 0; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
146 double km = kms.get(j); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
147 for (SedimentLoad load : epochLoads) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
148 SedimentLoadFraction f = load.getFraction(km); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
149 if (f.getCoarse() > 0d) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
150 double c = resLoad.getFraction(km).getCoarse(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
151 resLoad.setCoarse(km, c + f.getCoarse()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
152 cSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
153 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
154 if (f.getFine_middle() > 0d) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
155 double fm = resLoad.getFraction(km).getFine_middle(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
156 resLoad.setFineMiddle(km, fm + f.getFine_middle()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
157 fmSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
158 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
159 if (f.getSand() > 0d) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
160 double s = resLoad.getFraction(km).getSand(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
161 resLoad.setSand(km, s + f.getSand()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
162 sSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
163 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
164 if (f.getSusp_sand() > 0d) { |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
165 double s = resLoad.getFraction(km).getSusp_sand(); |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
166 resLoad.setSuspSand(km, s + f.getSusp_sand()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
167 ssSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
168 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
169 if (f.getSusp_sand_bed() > 0d) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
170 double s = resLoad.getFraction(km).getSusp_sand_bed(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
171 resLoad.setSuspSandBed(km, s + f.getSusp_sand_bed()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
172 ssbSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
173 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
174 if (f.getSusp_sediment() > 0d) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
175 double s = resLoad.getFraction(km).getSusp_sediment(); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
176 resLoad.setSuspSediment(km, s + f.getSusp_sediment()); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
177 sseSum++; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
178 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
179 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
180 SedimentLoadFraction fr = resLoad.getFraction(km); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
181 resLoad.setCoarse(km, fr.getCoarse()/cSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
182 resLoad.setFineMiddle(km, fr.getFine_middle()/fmSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
183 resLoad.setSand(km, fr.getSand()/sSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
184 resLoad.setSuspSand(km, fr.getSusp_sand()/ssSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
185 resLoad.setSuspSandBed(km, fr.getSusp_sand_bed()/ssbSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
186 resLoad.setSuspSediment(km, fr.getSusp_sediment()/sseSum); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
187 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
188 resLoad.setDescription(""); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
189 resLoad.setEpoch(true); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
190 |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
191 SedimentLoadResult result; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
192 SedimentLoad sl = calculateTotalLoad(resLoad, this.epoch[i][0]); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
193 if (this.unit.equals("m3_per_a")) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
194 SedimentLoad slu = calculateUnit(sl, this.epoch[i][0]); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
195 result = new SedimentLoadResult( |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
196 this.epoch[i][0], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
197 this.epoch[i][1], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
198 slu); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
199 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
200 else { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
201 result = new SedimentLoadResult( |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
202 this.epoch[i][0], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
203 this.epoch[i][1], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
204 sl); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
205 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
206 |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
207 return result; |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
208 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
209 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
210 private SedimentLoadResult calculateOffEpoch(int i) { |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
211 SedimentLoad load = SedimentLoadFactory.getLoadwithData( |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
212 this.river, |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
213 this.yearEpoch, |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
214 kmLow, |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
215 kmUp, |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
216 this.epoch[i][0], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
217 this.epoch[i][1]); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
218 SedimentLoadResult result; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
219 SedimentLoad sl = calculateTotalLoad(load, this.epoch[i][0]); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
220 if (unit.equals("m3_per_a")) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
221 SedimentLoad slu = calculateUnit(sl, epoch[i][0]); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
222 result = new SedimentLoadResult( |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
223 this.epoch[i][0], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
224 this.epoch[i][1], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
225 slu); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
226 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
227 else { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
228 result = new SedimentLoadResult( |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
229 this.epoch[i][0], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
230 this.epoch[i][1], |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
231 sl); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
232 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
233 |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
234 return result; |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
235 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
236 |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
237 private SedimentLoadResult calculateYear(int y) { |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
238 SedimentLoad load = SedimentLoadFactory.getLoadwithData( |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
239 this.river, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
240 this.yearEpoch, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
241 this.kmLow, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
242 this.kmUp, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
243 y, |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
244 y); |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
245 |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
246 SedimentLoadResult result; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
247 SedimentLoad sl = calculateTotalLoad(load, y); |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
248 if (unit.equals("m3_per_a")) { |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
249 SedimentLoad slu = calculateUnit(sl, y); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
250 result = new SedimentLoadResult(y, 0, slu); |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
251 } |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
252 else { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
253 result = new SedimentLoadResult(y, 0, sl); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
254 } |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
255 return result; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
256 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
257 |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
258 private SedimentLoad calculateTotalLoad(SedimentLoad load, int year) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
259 logger.debug("calculateTotalLoad"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
260 if (!load.hasCoarse()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
261 addProblem("missing.fraction.coarse" + " " + year); |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
262 } |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
263 if (!load.hasFineMiddle()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
264 addProblem("missing.fraction.fine_middle" + " " + year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
265 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
266 if (!load.hasSand()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
267 addProblem("missing.fraction.sand" + " " + year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
268 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
269 if (!load.hasSuspSand()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
270 addProblem("missing.fraction.susp_sand" + " " + year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
271 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
272 if (!load.hasSuspSediment()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
273 addProblem("missing.fraction.susp_sediment" + " " + year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
274 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
275 if (hasProblems()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
276 return load; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
277 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
278 for(double km : load.getKms()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
279 logger.debug("total at km " + km); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
280 SedimentLoadFraction fraction = load.getFraction(km); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
281 double total = 0d; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
282 if ((fraction.getCoarse() <= 0d && load.hasCoarse())){ |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
283 addProblem(km, "missing.data.coarse"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
284 continue; |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
285 } |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
286 if (fraction.getFine_middle() <= 0d && load.hasFineMiddle()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
287 addProblem(km, "missing.data.fine_middle"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
288 continue; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
289 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
290 if (fraction.getSand() <= 0d && load.hasSand()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
291 addProblem(km, "missing data.sand"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
292 continue; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
293 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
294 if (fraction.getSusp_sand() <= 0d && load.hasSuspSand()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
295 addProblem(km, "missing.data.susp_sand"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
296 continue; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
297 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
298 if (fraction.getSusp_sediment() <= 0d && load.hasSuspSediment()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
299 addProblem(km, "missing.data.susp_sediment"); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
300 continue; |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
301 } |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
302 total += fraction.getCoarse() + |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
303 fraction.getFine_middle() + |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
304 fraction.getSand() + |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
305 fraction.getSusp_sand() + |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
306 fraction.getSusp_sediment(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
307 load.setTotal(km, total); |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
308 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
309 return load; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
310 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
311 |
4522
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
312 private SedimentLoad calculateUnit(SedimentLoad load, int year) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
313 SedimentDensity density = |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
314 SedimentDensityFactory.getSedimentDensity(river, kmLow, kmUp, year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
315 for (double km: load.getKms()) { |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
316 double dens = density.getDensity(km, year); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
317 logger.debug("factor: " + dens); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
318 SedimentLoadFraction fraction = load.getFraction(km); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
319 double coarse = fraction.getCoarse(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
320 double fineMiddle = fraction.getFine_middle(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
321 double sand = fraction.getSand(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
322 double suspSand = fraction.getSusp_sand(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
323 double bedSand = fraction.getSusp_sand_bed(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
324 double sediment = fraction.getSusp_sediment(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
325 double total = fraction.getTotal(); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
326 logger.debug("orig: " + coarse); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
327 load.setCoarse(km, (coarse * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
328 load.setFineMiddle(km, (fineMiddle * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
329 load.setSand(km, (sand * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
330 load.setSuspSand(km, (suspSand * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
331 load.setSuspSandBed(km, (bedSand * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
332 load.setSuspSediment(km, (sediment * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
333 load.setTotal(km, (total * dens)); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
334 logger.debug("m3/a: " + load.getFraction(km).getCoarse()); |
a9753f717b3d
Completed and fixed sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
4483
diff
changeset
|
335 } |
4373
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
336 return load; |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
337 } |
1fb224bb2c6b
Added sediment load calculation.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff
changeset
|
338 } |
4483
cc6323401643
Cosmetics: Removed some WSP, obsolete imports. Documentation added.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4373
diff
changeset
|
339 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |