From 6bd9f5e18852c2e089cbe924152c725f0e34b443 Mon Sep 17 00:00:00 2001 From: Tor-Einar Skog <tor-einar.skog@nibio.no> Date: Tue, 7 Dec 2021 11:55:05 +0100 Subject: [PATCH] Bugfix in single sine wave function alpha * cos, not acos.... --- .../java/no/nibio/vips/model/maths/NonLinearCurves.java | 4 ++-- .../no/nibio/vips/model/maths/NonLinearCurvesTest.java | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/no/nibio/vips/model/maths/NonLinearCurves.java b/src/main/java/no/nibio/vips/model/maths/NonLinearCurves.java index 9a8f17e..a6c7b11 100755 --- a/src/main/java/no/nibio/vips/model/maths/NonLinearCurves.java +++ b/src/main/java/no/nibio/vips/model/maths/NonLinearCurves.java @@ -87,7 +87,7 @@ public class NonLinearCurves { * <p>Based on Baskerville et al (1969): Rapid estimation of heat accumulation * from maximum and minimum temperatures. Ref Figure 1</p> * <p>Formulas from Zalom et al 1983: Degree-days: The calculation and use - * of heat units in pest managemeng. Division of Agriculture and Natural resources, + * of heat units in pest management. Division of Agriculture and Natural resources, * University of California. Leaflet 21373</p> * @param Tmin minimum value of sine wave * @param Tmax maximum value of sine wave @@ -137,7 +137,7 @@ public class NonLinearCurves { return (1/Math.PI) * ( (m-Tl)*(theta_2 + Math.PI/2) + (Tu-Tl)*(Math.PI/2-theta_2) - - Math.acos(theta_2) + - (alpha * Math.cos(theta_2)) ); } diff --git a/src/test/java/no/nibio/vips/model/maths/NonLinearCurvesTest.java b/src/test/java/no/nibio/vips/model/maths/NonLinearCurvesTest.java index b5a8557..0d10e74 100755 --- a/src/test/java/no/nibio/vips/model/maths/NonLinearCurvesTest.java +++ b/src/test/java/no/nibio/vips/model/maths/NonLinearCurvesTest.java @@ -198,6 +198,15 @@ public class NonLinearCurvesTest extends TestCase { result = instance.calculateSingleSineWaveWithCutoff(tMin, tMax, thresholdLower, thresholdUpper); assertEquals(expectedResult, result,0.1); + // tMax is above Tu, tMin is above Tl + tMax = 31.8; + tMin = 16.6; + thresholdUpper = 31.1; + thresholdLower = 15.0; + expectedResult = 9.135946967874313; + result = instance.calculateSingleSineWaveWithCutoff(tMin, tMax, thresholdLower, thresholdUpper); + assertEquals(expectedResult, result,0.1); + } } -- GitLab