From dbe7667929dee3f2cafbe2a1de7323ad17963ca5 Mon Sep 17 00:00:00 2001
From: holos-aafc <95769272+holos-aafc@users.noreply.github.com>
Date: Fri, 15 Nov 2024 13:17:33 -0700
Subject: [PATCH] Fix #203
---
H.Core/Enumerations/HousingTypeExtensions.cs | 3 +++
.../Services/Animals/AnimalResultsServiceBase.cs | 14 ++++++++++++--
.../Animals/BeefAndDairyResultsServiceBase.cs | 4 +++-
3 files changed, 18 insertions(+), 3 deletions(-)
diff --git a/H.Core/Enumerations/HousingTypeExtensions.cs b/H.Core/Enumerations/HousingTypeExtensions.cs
index 5afba38e..68da5867 100644
--- a/H.Core/Enumerations/HousingTypeExtensions.cs
+++ b/H.Core/Enumerations/HousingTypeExtensions.cs
@@ -71,6 +71,9 @@ public static bool IsIndoorHousing(this HousingType housingType)
case HousingType.FreeStallBarnSolidLitter:
case HousingType.FreeStallBarnSlurryScraping:
case HousingType.FreeStallBarnMilkParlourSlurryFlushing:
+ case HousingType.TieStall:
+ case HousingType.TieStallSlurry:
+ case HousingType.TieStallSolidLitter:
return true;
default:
diff --git a/H.Core/Services/Animals/AnimalResultsServiceBase.cs b/H.Core/Services/Animals/AnimalResultsServiceBase.cs
index d68c3cfb..4e7f28d4 100644
--- a/H.Core/Services/Animals/AnimalResultsServiceBase.cs
+++ b/H.Core/Services/Animals/AnimalResultsServiceBase.cs
@@ -1388,12 +1388,22 @@ public double CalculateAmbientTemperatureAdjustmentNoBarn(double averageMonthlyT
///
/// Equation 4.3.1-12
+ ///
+ /// Indoor dairy housing systems do not get an additional +2 degrees - just beef housing systems
///
/// Temperature (°C)
+ ///
/// Temperature-based adjustments used to correct default NH3 emission factors for indoor housing
- public double CalculateAmbientTemperatureAdjustmentForIndoorHousing(double dailyTemperature)
+ public double CalculateAmbientTemperatureAdjustmentForIndoorHousing(double dailyTemperature,
+ bool isDairyIndoorHousing = false)
{
- return Math.Pow(1.041, dailyTemperature + 2) / Math.Pow(1.041, 15);
+ var temperatureAdjustment = dailyTemperature;
+ if (isDairyIndoorHousing == false)
+ {
+ temperatureAdjustment += 2;
+ }
+
+ return Math.Pow(1.041, temperatureAdjustment) / Math.Pow(1.041, 15);
}
///
diff --git a/H.Core/Services/Animals/BeefAndDairyResultsServiceBase.cs b/H.Core/Services/Animals/BeefAndDairyResultsServiceBase.cs
index 97886e20..beac10e3 100644
--- a/H.Core/Services/Animals/BeefAndDairyResultsServiceBase.cs
+++ b/H.Core/Services/Animals/BeefAndDairyResultsServiceBase.cs
@@ -68,8 +68,10 @@ protected void CalculateIndirectManureNitrousOxide(GroupEmissionsByDay dailyEmis
}
}
+ var isIndoorDairyHousing = managementPeriod.HousingDetails.HousingType.IsIndoorHousing() && managementPeriod.AnimalType.IsDairyCattleType();
dailyEmissions.AmbientAirTemperatureAdjustmentForHousing = CalculateAmbientTemperatureAdjustmentForIndoorHousing(
- dailyTemperature: temperature);
+ dailyTemperature: temperature,
+ isDairyIndoorHousing: isIndoorDairyHousing);
}
else
{