Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/artifacts/model/extreme/Curve.java @ 8148:eb48b244921d
The rest is silence.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Wed, 27 Aug 2014 19:52:51 +0200 |
parents | af13ceeba52a |
children | 0a5239a1e46e |
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:
5863
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:
5863
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:
4354
diff
changeset
|
9 package org.dive4elements.river.artifacts.model.extreme; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4354
diff
changeset
|
11 import org.dive4elements.river.artifacts.math.Function; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4354
diff
changeset
|
12 import org.dive4elements.river.artifacts.math.NaNFunction; |
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4354
diff
changeset
|
13 import org.dive4elements.river.artifacts.math.UnivariateRealFunctionFunction; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4354
diff
changeset
|
15 import org.dive4elements.river.artifacts.math.fitting.FunctionFactory; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 import java.io.Serializable; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 import java.lang.ref.SoftReference; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 import org.apache.commons.math.analysis.interpolation.SplineInterpolator; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 import org.apache.commons.math.exception.MathIllegalArgumentException; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 import org.apache.log4j.Logger; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 |
4311
5a28312aee99
Doc for WQFacet and Curve.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4307
diff
changeset
|
27 /** An extrapolating W/Q function/curve. */ |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 public class Curve |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 implements Serializable, Function |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 private static Logger log = Logger.getLogger(Curve.class); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 |
3737
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
33 protected double [] qs; |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
34 protected double [] ws; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 protected String function; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 protected double [] coeffs; |
4259
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
37 protected double chiSqr; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 |
4335
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
39 /** Suggested maximum value for q to input. */ |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
40 protected double suggestedMaxQ; |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
41 |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 // The spline is pretty heavy weight so cache it with a soft ref only. |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 protected transient SoftReference<Function> spline; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 protected transient Function extrapolation; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 public Curve() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 |
3737
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
49 public Curve( |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
50 double [] qs, |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
51 double [] ws, |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
52 String function, |
4259
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
53 double [] coeffs, |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
54 double chiSqr |
3737
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
55 ) { |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
56 this.qs = qs; |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
57 this.ws = ws; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 this.function = function; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 this.coeffs = coeffs; |
4335
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
60 this.suggestedMaxQ = Double.MAX_VALUE; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
61 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 |
3737
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
63 public double [] getQs() { |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
64 return qs; |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
65 } |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
66 |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
67 public double [] getWs() { |
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
68 return ws; |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 public String getFunction() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 return function; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
74 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
75 public double [] getCoeffs() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 return coeffs; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
77 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 |
4307
2e8e00026059
Curve: Tiny javadoc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4259
diff
changeset
|
79 |
4335
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
80 public void setSuggestedMaxQ(double newMaxQ) { |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
81 this.suggestedMaxQ = newMaxQ; |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
82 } |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
83 |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
84 |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
85 public double getSuggestedMaxQ() { |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
86 return this.suggestedMaxQ; |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
87 } |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
88 |
5948de9788d5
Curve: Added field, getter and setter for suggestedMaxQ .
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4311
diff
changeset
|
89 |
4307
2e8e00026059
Curve: Tiny javadoc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
4259
diff
changeset
|
90 /** Calculate value at given x. */ |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 @Override |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 public double value(double x) { |
4354
e0add97c432b
Circumvent NPE in Curve. issue flys/1019
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4335
diff
changeset
|
93 if (qs == null || x < qs[0]) return Double.NaN; |
3737
976be312a84c
Simplified code for extreme curves.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3733
diff
changeset
|
94 return (x <= qs[qs.length-1] |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 ? getSpline() |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 : getExtrapolation()).value(x); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 protected synchronized Function getExtrapolation() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 if (extrapolation == null) { |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4354
diff
changeset
|
101 org.dive4elements.river.artifacts.math.fitting.Function |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 f = FunctionFactory.getInstance().getFunction(function); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 extrapolation = f != null |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 ? f.instantiate(coeffs) |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 : NaNFunction.INSTANCE; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 return extrapolation; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 |
4259
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
111 /** |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
112 * Gets the chiSqr for this instance. |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
113 * |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
114 * @return The chiSqr. |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
115 */ |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
116 public double getChiSqr() { |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
117 return this.chiSqr; |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
118 } |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
119 |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
120 /** |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
121 * Sets the chiSqr for this instance. |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
122 * |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
123 * @param chiSqr The chiSqr. |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
124 */ |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
125 public void setChiSqr(double chiSqr) { |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
126 this.chiSqr = chiSqr; |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
127 } |
5cc9453456a7
First complete but untested version of the 'Auslagerung extremer Wasserspiegellagen' calculation.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3742
diff
changeset
|
128 |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 protected synchronized Function getSpline() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 Function sp; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 if (spline != null) { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 if ((sp = spline.get()) != null) { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 return sp; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 } |
3742
467efea19d15
Added type safety.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
3737
diff
changeset
|
136 spline = new SoftReference<Function>(sp = createSpline()); |
3733
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 return sp; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 protected Function createSpline() { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 SplineInterpolator interpolator = new SplineInterpolator(); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 try { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 return new UnivariateRealFunctionFunction( |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 interpolator.interpolate(qs, ws)); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 catch (MathIllegalArgumentException miae) { |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 log.debug("creation on spline failed", miae); |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 return NaNFunction.INSTANCE; |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 } |
893b2477208f
Some first models needed for the extreme waterlevels.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |