Skip to content

Commit

Permalink
use input fluid temperature for boilers
Browse files Browse the repository at this point in the history
  • Loading branch information
SWeini authored and shpaass committed Jan 23, 2024
1 parent 33d9197 commit d7c675f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion YAFCmodel/Model/ProductionTable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ public override async Task<string> Solve(ProjectPage page)
for (var i = 0; i < allRecipes.Count; i++)
{
var recipe = allRecipes[i];
recipe.parameters.CalculateParameters(recipe.recipe, recipe.entity, recipe.fuel, recipe);
recipe.parameters.CalculateParameters(recipe.recipe, recipe.entity, recipe.fuel, recipe.variants, recipe);
var variable = solver.MakeNumVar(0f, double.PositiveInfinity, recipe.recipe.name);
if (recipe.fixedBuildings > 0f)
{
Expand Down
11 changes: 10 additions & 1 deletion YAFCmodel/Model/RecipeParameters.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;

namespace YAFC.Model
{
Expand Down Expand Up @@ -56,7 +57,7 @@ public void Clear()
modules = default;
}

public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel, IModuleFiller moduleFiller)
public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel, HashSet<FactorioObject> variants, IModuleFiller moduleFiller)
{
warningFlags = 0;
if (entity == null)
Expand Down Expand Up @@ -135,6 +136,14 @@ public void CalculateParameters(Recipe recipe, EntityCrafter entity, Goods fuel,
if (fluid != null)
{
float inputTemperature = fluid.temperature;
foreach (var variant in variants)
{
if (variant is Fluid fluidVariant && fluidVariant.originalName == fluid.originalName)
{
inputTemperature = fluidVariant.temperature;
}
}

var outputTemp = recipe.products[0].goods.fluid.temperature;
var deltaTemp = (outputTemp - inputTemperature);
var energyPerUnitOfFluid = deltaTemp * fluid.heatCapacity;
Expand Down

0 comments on commit d7c675f

Please sign in to comment.