var efficiency = mixture.Temperature / Atmospherics.FrezonProductionMaxEfficiencyTemperature;
var loss = 1 - efficiency;
+ // How much the catalyst (N2) will allow us to produce
// Less N2 is required the more efficient it is.
- var minimumN2 = (initialOxy + initialTrit) / (Atmospherics.FrezonProductionNitrogenRatio * efficiency);
+ var catalystLimit = initialN2 * (Atmospherics.FrezonProductionNitrogenRatio / efficiency);
+ var oxyLimit = Math.Min(initialOxy, catalystLimit) / Atmospherics.FrezonProductionTritRatio;
- if (initialN2 < minimumN2)
- return ReactionResult.NoReaction;
+ // Amount of tritium & oxygen that are reacting
+ var tritBurned = Math.Min(oxyLimit, initialTrit);
+ var oxyBurned = tritBurned * Atmospherics.FrezonProductionTritRatio;
+ var burnRatio = tritBurned / initialTrit;
- var oxyConversion = initialOxy / Atmospherics.FrezonProductionConversionRate;
- var tritConversion = initialTrit / Atmospherics.FrezonProductionConversionRate;
+ var oxyConversion = oxyBurned / Atmospherics.FrezonProductionConversionRate;
+ var tritConversion = tritBurned / Atmospherics.FrezonProductionConversionRate;
var total = oxyConversion + tritConversion;
mixture.AdjustMoles(Gas.Oxygen, -oxyConversion);
/// </summary>
public const float FrezonProductionNitrogenRatio = 10f;
+ /// <summary>
+ /// 1 mol of Tritium is required per X mol of oxygen.
+ /// </summary>
+ public const float FrezonProductionTritRatio = 50.0f;
+
+ /// <summary>
+ /// 1 / X of the tritium is converted into Frezon each tick
+ /// </summary>
public const float FrezonProductionConversionRate = 50f;
/// <summary>