annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixDerivateFacet.java @ 9801:1d7a72a50183 3.2.x tip

Assume Compose V2, consistently
author Tom Gottfried <tom@intevation.de>
date Thu, 23 Nov 2023 10:14:13 +0100
parents 0a5239a1e46e
children
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
5994
af13ceeba52a Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5867
diff changeset
6 * documentation coming with Dive4Elements River for details.
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
9 package org.dive4elements.river.artifacts.model.fixings;
3203
1b9f791937c3 Moved FixationArtifactAccess to new access package.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3192
diff changeset
10
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
11 import org.dive4elements.artifacts.Artifact;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
12 import org.dive4elements.artifacts.CallContext;
3086
ba7df29264cd Removed superfluous import.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3081
diff changeset
13
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
14 import org.dive4elements.river.artifacts.D4EArtifact;
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
15
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
16 import org.dive4elements.river.artifacts.access.FixAnalysisAccess;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
17
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
18 import org.dive4elements.river.artifacts.math.fitting.Function;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
19 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
20
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
21 import org.dive4elements.river.artifacts.model.CalculationResult;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
22 import org.dive4elements.river.artifacts.model.FacetTypes;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
23 import org.dive4elements.river.artifacts.model.Parameters;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
24
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
25 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
26
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
27 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
28 import org.apache.logging.log4j.LogManager;
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
29
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
30
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
31 /**
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
32 * Facet to show the W|Q values.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
33 *
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
34 * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
35 */
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
36 public class FixDerivateFacet
4442
26774405c884 Introduce a new FixingsFacet to add save access to the current Km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3415
diff changeset
37 extends FixingsFacet
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
38 implements FacetTypes {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
39
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
40 /** House log. */
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
41 private static Logger log = LogManager.getLogger(FixDerivateFacet.class);
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
42
3080
dc2765e31e1f Added getData method with an additional km parameter.
Raimund Renkert <raimund.renkert@intevation.de>
parents: 3067
diff changeset
43
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
44 /** Trivial Constructor. */
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
45 public FixDerivateFacet() {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
46 }
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
47
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
48
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
49 /**
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
50 * @param name
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
51 */
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
52 public FixDerivateFacet(String name, String description) {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
53 super(0, name, description, ComputeType.ADVANCE, null, null);
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
54 }
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
55
3192
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
56 public FixDerivateFacet(int index, String name, String description) {
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
57 super(index, name, description, ComputeType.ADVANCE, null, null);
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
58 }
cd309f8597f6 Fix for 'linecolor ignored' issue
Christian Lins <christian.lins@intevation.de>
parents: 3091
diff changeset
59
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
60
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
61 /**
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
62 * Returns the data this facet requires.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
63 *
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
64 * @param artifact the owner artifact.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
65 * @param context the CallContext (ignored).
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
66 *
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
67 * @return the data.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
68 */
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
69 @Override
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
70 public Object getData(Artifact artifact, CallContext context) {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
71
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
72 log.debug("FixDerivateFacet.getData");
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
73 if (!(artifact instanceof D4EArtifact)) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
74 log.debug("Not an instance of FixationArtifact.");
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
75 return null;
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
76 }
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
77
5867
59ff03ff48f1 River artifacts: Renamed FLYSArtifact(Collection) to D4EArtifact(Collection).
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5863
diff changeset
78 D4EArtifact flys = (D4EArtifact)artifact;
6101
a0078e5e3b39 Removed unused context from RangeAccess and subclasses leading to some dead code removal.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5994
diff changeset
79 FixAnalysisAccess access = new FixAnalysisAccess(flys);
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
80
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
81 CalculationResult res =
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
82 (CalculationResult) flys.compute(context,
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
83 ComputeType.ADVANCE,
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
84 false);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
85
3415
e3c7a3228bc2 FixA: Renamed FixResult to FixAnalysisResult.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3408
diff changeset
86 FixAnalysisResult result = (FixAnalysisResult) res.getData();
4442
26774405c884 Introduce a new FixingsFacet to add save access to the current Km
Björn Ricks <bjoern.ricks@intevation.de>
parents: 3415
diff changeset
87 double currentKm = getCurrentKm(context);
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
88
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
89 String function = access.getFunction();
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
90 Function ff = FunctionFactory.getInstance().getFunction(function);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
91 Function.Derivative fd = ff.getDerivative();
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
92
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
93 Parameters params = result.getParameters();
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
94 double maxQ = FixFacetUtils.getMaxQ(params, currentKm);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
95
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
96 String[] paramNames = ff.getParameterNames();
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
97
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
98 double[] coeffs = params.interpolate("km", currentKm, paramNames);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
99 if (coeffs == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 6101
diff changeset
100 log.warn("getData: coeffs == null");
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
101 return null;
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
102 }
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
103
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4866
diff changeset
104 org.dive4elements.river.artifacts.math.Function mf =
3215
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
105 fd.instantiate(coeffs);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
106
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
107 FixFunction fix = new FixFunction(
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
108 "",
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
109 fd.getDescription(),
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
110 mf,
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
111 maxQ);
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
112
750e98fc8b76 FixA: Tweaked the derivate diagram a bit and added chart info.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3203
diff changeset
113 return fix;
3043
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
114 }
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
115
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
116
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
117 /**
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
118 * Create a deep copy of this Facet.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
119 * @return a deep copy.
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
120 */
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
121 @Override
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
122 public FixDerivateFacet deepCopy() {
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
123 FixDerivateFacet copy = new FixDerivateFacet();
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
124 copy.set(this);
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
125 return copy;
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
126 }
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
127 }
22da13d1b180 Added facet for derivate curve and fixed facet names.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff changeset
128 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org