Skip to content

Commit

Permalink
Update fertilizer requirement calculation, add resource strings
Browse files Browse the repository at this point in the history
  • Loading branch information
holos-aafc committed Aug 7, 2024
1 parent 026c114 commit 57fe1f3
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,17 @@ public void CalculateSyntheticFertilizerApplied()
{
var firstRate = _nitrogenInputCalculator.CalculateSyntheticFertilizerApplied(
nitrogenContentOfGrainReturnedToSoil: 100,
nitrogenContentOfStrawReturnedToSoil: 200,
nitrogenContentOfRootReturnedToSoil: 300,
nitrogenContentOfExtrarootReturnedToSoil: 200,
fertilizerEfficiencyFraction: 0.5,
soilTestN: 10,
isNitrogenFixingCrop: false,
nitrogenFixationAmount: 0,
atmosphericNitrogenDeposition: 0);

Assert.AreEqual(1580, firstRate);
Assert.AreEqual(180, firstRate);

// Increasing efficiency should reduce the required amount of fertilizer
var secondRate = _nitrogenInputCalculator.CalculateSyntheticFertilizerApplied(
nitrogenContentOfGrainReturnedToSoil: 100,
nitrogenContentOfStrawReturnedToSoil: 200,
nitrogenContentOfRootReturnedToSoil: 300,
nitrogenContentOfExtrarootReturnedToSoil: 200,
fertilizerEfficiencyFraction: 0.75,
soilTestN: 10,
isNitrogenFixingCrop: false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ public void InitializeAmountOfBlendedProductTest()

_cropsInitializationService.InitializeAmountOfBlendedProduct(_farm, viewItem, fertilizerApplication);

Assert.AreEqual(139, fertilizerApplication.AmountOfBlendedProductApplied, 1);
Assert.AreEqual(53.4, fertilizerApplication.AmountOfBlendedProductApplied, 1);
}

#endregion
Expand Down
8 changes: 1 addition & 7 deletions H.Core/Calculators/Nitrogen/ICBMNitrogenInputCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,26 +77,20 @@ public double CalculateNitrogenContentExaduatesReturnedToSoil(
/// Equation 2.5.5-6
/// </summary>
/// <param name="nitrogenContentOfGrainReturnedToSoil">Nitrogen content of the grain returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfStrawReturnedToSoil">Nitrogen content of the straw returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfRootReturnedToSoil">Nitrogen content of the root returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfExtrarootReturnedToSoil">Nitrogen content of the extraroot returned to the soil (kg N ha^-1)</param>
/// <param name="fertilizerEfficiencyFraction">Fertilizer use efficiency (fraction)</param>
/// <param name="soilTestN">User defined value for existing Soil N supply for which fertilization rate was adapted</param>
/// <param name="isNitrogenFixingCrop">Indicates if the type of crop is nitrogen fixing.</param>
/// <param name="nitrogenFixationAmount">The amount of nitrogen fixation by the crop (fraction)</param>
/// <param name="atmosphericNitrogenDeposition">N deposition on a specific field n (kg ha^-1) </param>
/// <returns>N fertilizer applied (kg ha^-1)</returns>
public double CalculateSyntheticFertilizerApplied(double nitrogenContentOfGrainReturnedToSoil,
double nitrogenContentOfStrawReturnedToSoil,
double nitrogenContentOfRootReturnedToSoil,
double nitrogenContentOfExtrarootReturnedToSoil,
double fertilizerEfficiencyFraction,
double soilTestN,
bool isNitrogenFixingCrop,
double nitrogenFixationAmount,
double atmosphericNitrogenDeposition)
{
var totalNitrogenContent = (nitrogenContentOfGrainReturnedToSoil + nitrogenContentOfStrawReturnedToSoil + nitrogenContentOfRootReturnedToSoil + nitrogenContentOfExtrarootReturnedToSoil);
var totalNitrogenContent = (nitrogenContentOfGrainReturnedToSoil);

var result = 0d;
if (isNitrogenFixingCrop)
Expand Down
6 changes: 0 additions & 6 deletions H.Core/Calculators/Nitrogen/IICBMNitrogenInputCalculator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,13 @@ double CalculateNitrogenContentExaduatesReturnedToSoil(
/// Equation 2.5.5-6
/// </summary>
/// <param name="nitrogenContentOfGrainReturnedToSoil">Nitrogen content of the grain returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfStrawReturnedToSoil">Nitrogen content of the straw returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfRootReturnedToSoil">Nitrogen content of the root returned to the soil (kg N ha^-1)</param>
/// <param name="nitrogenContentOfExtrarootReturnedToSoil">Nitrogen content of the extraroot returned to the soil (kg N ha^-1)</param>
/// <param name="fertilizerEfficiencyFraction">Fertilizer use efficiency (fraction)</param>
/// <param name="soilTestN">User defined value for existing Soil N supply for which fertilization rate was adapted</param>
/// <param name="isNitrogenFixingCrop">Indicates if the type of crop is nitrogen fixing.</param>
/// <param name="nitrogenFixationAmount">The amount of nitrogen fixation by the crop (fraction)</param>
/// <param name="atmosphericNitrogenDeposition">N deposition on a specific field n (kg ha^-1) </param>
/// <returns>N fertilizer applied (kg ha^-1)</returns>
double CalculateSyntheticFertilizerApplied(double nitrogenContentOfGrainReturnedToSoil,
double nitrogenContentOfStrawReturnedToSoil,
double nitrogenContentOfRootReturnedToSoil,
double nitrogenContentOfExtrarootReturnedToSoil,
double fertilizerEfficiencyFraction,
double soilTestN,
bool isNitrogenFixingCrop,
Expand Down
2 changes: 1 addition & 1 deletion H.Core/Models/Defaults.cs
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ public Defaults()

this.MicrobeDeath = 0.2;
this.Denitrification = 0.5;
this.FertilizerEfficiency = 0.75;
this.FertilizerEfficiency = 0.5;
this.FTopo = 14.03;
this.DefaultNitrogenFixation = 0.7;

Expand Down
9 changes: 9 additions & 0 deletions H.Core/Properties/Resources.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions H.Core/Properties/Resources.fr-CA.resx
Original file line number Diff line number Diff line change
Expand Up @@ -5772,4 +5772,7 @@ Please note: emissions related to the deposition or application of livestock man
<data name="LabelFugitiveMethaneLoss" xml:space="preserve">
<value>Fugitive CH₄ loss</value>
</data>
<data name="ToolTipAdvancedDietMethaneConversionFactorForDietInfo" xml:space="preserve">
<value>Defines the portion of methane-producing potential achieved for each diet type</value>
</data>
</root>
3 changes: 3 additions & 0 deletions H.Core/Properties/Resources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -5834,4 +5834,7 @@ Please note: emissions related to the deposition or application of livestock man
<data name="LabelFugitiveMethaneLoss" xml:space="preserve">
<value>Fugitive CH₄ loss</value>
</data>
<data name="ToolTipAdvancedDietMethaneConversionFactorForDietInfo" xml:space="preserve">
<value>Defines the portion of methane-producing potential achieved for each diet type</value>
</data>
</root>
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,10 @@ public double CalculateRequiredNitrogenFertilizer(
carbonInputFromAgriculturalProduct: viewItem.PlantCarbonInAgriculturalProduct,
nitrogenConcentrationInProduct: viewItem.NitrogenContentInProduct);

var nitrogenContentOfStrawReturnedToSoil = _icbmNitrogenInputCalculator.CalculateNitrogenContentStrawReturnedToSoil(
carbonInputFromStraw: viewItem.CarbonInputFromStraw,
nitrogenConcentrationInStraw: viewItem.NitrogenContentInStraw);

var nitrogenContentOfRootReturnedToSoil = _icbmNitrogenInputCalculator.CalculateNitrogenContentRootReturnedToSoil(
carbonInputFromRoots: viewItem.CarbonInputFromRoots,
nitrogenConcentrationInRoots: viewItem.NitrogenContentInRoots);

var nitrogenContentOfExtrarootReturnedToSoil = _icbmNitrogenInputCalculator.CalculateNitrogenContentExaduatesReturnedToSoil(
carbonInputFromExtraroots: viewItem.CarbonInputFromExtraroots,
nitrogenConcentrationInExtraroots: viewItem.NitrogenContentInExtraroot);

var isLeguminousCrop = viewItem.CropType.IsLeguminousCoverCrop() || viewItem.CropType.IsPulseCrop();

var syntheticFertilizerApplied = _icbmNitrogenInputCalculator.CalculateSyntheticFertilizerApplied(
nitrogenContentOfGrainReturnedToSoil: nitrogenContentOfGrainReturnedToSoil,
nitrogenContentOfStrawReturnedToSoil: nitrogenContentOfStrawReturnedToSoil,
nitrogenContentOfRootReturnedToSoil: nitrogenContentOfRootReturnedToSoil,
nitrogenContentOfExtrarootReturnedToSoil: nitrogenContentOfExtrarootReturnedToSoil,
fertilizerEfficiencyFraction: fertilizerApplicationViewItem.FertilizerEfficiencyFraction,
soilTestN: viewItem.SoilTestNitrogen,
isNitrogenFixingCrop: isLeguminousCrop,
Expand Down

0 comments on commit 57fe1f3

Please sign in to comment.