Skip to content
Snippets Groups Projects
Commit d5153c89 authored by Tor-Einar Skog's avatar Tor-Einar Skog
Browse files

New version 2021

parent 1bdf8619
Branches
Tags
No related merge requests found
...@@ -68,6 +68,7 @@ public class OatFloweringModel extends I18nImpl implements Model{ ...@@ -68,6 +68,7 @@ public class OatFloweringModel extends I18nImpl implements Model{
Double dayDegreeSum = 0.0; Double dayDegreeSum = 0.0;
List<Result> results = new ArrayList<>(); List<Result> results = new ArrayList<>();
boolean z60Set = false, z625Set = false, z69Set = false; boolean z60Set = false, z625Set = false, z69Set = false;
//int counter = 1;
for(WeatherObservation obs:this.TM) for(WeatherObservation obs:this.TM)
{ {
if(obs.getTimeMeasured().compareTo(dateOfSowing) >= 0 if(obs.getTimeMeasured().compareTo(dateOfSowing) >= 0
...@@ -75,22 +76,27 @@ public class OatFloweringModel extends I18nImpl implements Model{ ...@@ -75,22 +76,27 @@ public class OatFloweringModel extends I18nImpl implements Model{
{ {
dayDegreeSum += obs.getValue(); dayDegreeSum += obs.getValue();
} }
//System.out.println(obs.getTimeMeasured() +": " + dayDegreeSum);
if(dayDegreeSum >= 768 && ! z60Set) Double GS = this.getGS(dayDegreeSum);
//System.out.println(obs.getTimeMeasured() +" [" + counter + "]: " + dayDegreeSum + "/" + GS);
//counter++;
if(GS >= 60.0 && ! z60Set)
{ {
Result result = this.initResult(obs); Result result = this.initResult(obs);
result.setValue(this.getModelId().toString(), "ZREACHED", "60"); result.setValue(this.getModelId().toString(), "ZREACHED", "60");
result.setValue(this.getModelId().toString(), "GS", GS.toString());
results.add(result); results.add(result);
z60Set = true; z60Set = true;
} }
if(dayDegreeSum >= 808 && ! z625Set) if(GS >= 62.5 && ! z625Set)
{ {
Result result = this.initResult(obs); Result result = this.initResult(obs);
result.setValue(this.getModelId().toString(), "ZREACHED", "62.5"); result.setValue(this.getModelId().toString(), "ZREACHED", "62.5");
results.add(result); results.add(result);
z625Set = true; z625Set = true;
} }
if(dayDegreeSum >= 922 && ! z69Set) if(GS >= 69.0 && ! z69Set)
{ {
Result result = this.initResult(obs); Result result = this.initResult(obs);
result.setValue(this.getModelId().toString(), "ZREACHED", "69"); result.setValue(this.getModelId().toString(), "ZREACHED", "69");
...@@ -102,6 +108,17 @@ public class OatFloweringModel extends I18nImpl implements Model{ ...@@ -102,6 +108,17 @@ public class OatFloweringModel extends I18nImpl implements Model{
return results; return results;
} }
/**
* Calculating Growth stage from day degrees
*
* @param dayDegrees
* @return
*/
public Double getGS(Double dayDegrees)
{
return 99 * Math.exp(-4.056118159304253 * Math.exp(-0.002380012709504 * dayDegrees));
}
private Result initResult(WeatherObservation obs) private Result initResult(WeatherObservation obs)
{ {
Calendar cal = Calendar.getInstance(); Calendar cal = Calendar.getInstance();
......
...@@ -87,6 +87,20 @@ public class OatFloweringModelTest { ...@@ -87,6 +87,20 @@ public class OatFloweringModelTest {
} }
@Test
public void testGetGS()
{
System.out.println("testGetGS");
OatFloweringModel instance = new OatFloweringModel();
Double dayDegrees = 2.1;
Double expRes = 1.749313981451895;
assertEquals(expRes, instance.getGS(dayDegrees));
dayDegrees = 69.8;
expRes = 3.1893887633938527;
assertEquals(expRes, instance.getGS(dayDegrees));
}
@Test @Test
public void testGetResult() public void testGetResult()
{ {
...@@ -99,13 +113,15 @@ public class OatFloweringModelTest { ...@@ -99,13 +113,15 @@ public class OatFloweringModelTest {
List<Result> results = instance.getResult(); List<Result> results = instance.getResult();
String weekResult = results.get(0).getValue(instance.getModelId().toString(),"WEEK_IN_YEAR"); String weekResult = results.get(0).getValue(instance.getModelId().toString(),"WEEK_IN_YEAR");
String zReached = results.get(0).getValue(instance.getModelId().toString(),"ZREACHED"); String zReached = results.get(0).getValue(instance.getModelId().toString(),"ZREACHED");
assertEquals(weekResult, "25");
assertEquals(zReached, "60");
/*for(Result result:results) /*for(Result result:results)
{ {
System.out.println("Result: [" + result.getResultValidTime() + "]" + result.getAllValues()); System.out.println("Result: [" + result.getValidTimeStart() + "]" + result.getAllValues());
}*/ }*/
assertEquals("27", weekResult);
assertEquals("60", zReached);
} }
catch(ConfigValidationException | ModelExcecutionException ex) catch(ConfigValidationException | ModelExcecutionException ex)
{ {
...@@ -130,21 +146,21 @@ public class OatFloweringModelTest { ...@@ -130,21 +146,21 @@ public class OatFloweringModelTest {
if(all.isArray()) if(all.isArray())
{ {
for(JsonNode node : all){ for(JsonNode node : all){
System.out.println(node.toString()); //System.out.println(node.toString());
Date timeMeasured = (Date)mapper.convertValue(node.get("timeMeasured").asText(), new TypeReference<Date>(){}); Date timeMeasured = (Date)mapper.convertValue(node.get("timeMeasured").asText(), new TypeReference<Date>(){});
if(firstDate == null || firstDate.compareTo(timeMeasured) > 0) if(firstDate == null || firstDate.compareTo(timeMeasured) > 0)
{ {
firstDate = timeMeasured; firstDate = timeMeasured;
} }
System.out.println(node.get("elementMeasurementTypeId")); //System.out.println(node.get("elementMeasurementTypeId"));
WeatherObservation observation = new WeatherObservation(); WeatherObservation observation = new WeatherObservation();
observation.setTimeMeasured(timeMeasured); observation.setTimeMeasured(timeMeasured);
observation.setLogIntervalId(Integer.valueOf(node.get("logIntervalId").asText())); observation.setLogIntervalId(Integer.valueOf(node.get("logIntervalId").asText()));
observation.setElementMeasurementTypeId(node.get("elementMeasurementTypeId").asText()); observation.setElementMeasurementTypeId(node.get("elementMeasurementTypeId").asText());
observation.setValue(Double.valueOf(node.get("value").asText())); observation.setValue(Double.valueOf(node.get("value").asText()));
observations.add(observation); observations.add(observation);
System.out.println("logIntevalId=" + observation.getLogIntervalId()); //System.out.println("logIntevalId=" + observation.getLogIntervalId());
} }
} }
...@@ -154,7 +170,7 @@ public class OatFloweringModelTest { ...@@ -154,7 +170,7 @@ public class OatFloweringModelTest {
} }
config.setConfigParameter("observations", observations); config.setConfigParameter("observations", observations);
config.setConfigParameter("dateOfSowing", firstDate); config.setConfigParameter("dateOfSowing", firstDate);
System.out.println("dateOfSowing = " + firstDate); //System.out.println("dateOfSowing = " + firstDate);
return config; return config;
} catch (IOException ex) { } catch (IOException ex) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment