tuff
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
|
||||
namespace FluidSim.Components
|
||||
{
|
||||
@@ -15,10 +15,10 @@ namespace FluidSim.Components
|
||||
|
||||
private double _dt;
|
||||
|
||||
public double Density => Mass / Volume;
|
||||
public double Pressure => (Gamma - 1.0) * InternalEnergy / Volume;
|
||||
public double Temperature => Pressure / (Density * GasConstant);
|
||||
public double SpecificEnthalpy => Gamma / (Gamma - 1.0) * Pressure / Density;
|
||||
public double Density => Mass / Math.Max(Volume, 1e-12);
|
||||
public double Pressure => (Gamma - 1.0) * InternalEnergy / Math.Max(Volume, 1e-12);
|
||||
public double Temperature => Pressure / Math.Max(Density * GasConstant, 1e-12);
|
||||
public double SpecificEnthalpy => Gamma / (Gamma - 1.0) * Pressure / Math.Max(Density, 1e-12);
|
||||
|
||||
public double MassFlowRateIn { get; set; }
|
||||
public double SpecificEnthalpyIn { get; set; }
|
||||
@@ -46,18 +46,20 @@ namespace FluidSim.Components
|
||||
Mass += dm;
|
||||
InternalEnergy += dE;
|
||||
|
||||
// Safety: if mass becomes extremely small, reset internal energy to zero
|
||||
if (Mass < 1e-12)
|
||||
// ---- ABSOLUTE SAFEGUARD: keep at least 1 µg of gas at ambient pressure ----
|
||||
double minMass = 1e-9;
|
||||
double V = Math.Max(Volume, 1e-12);
|
||||
if (Mass < minMass)
|
||||
{
|
||||
Mass = 0.0;
|
||||
InternalEnergy = 0.0;
|
||||
Mass = minMass;
|
||||
InternalEnergy = 5000.0 * V / (Gamma - 1.0); // 0.05 bar, not ambient
|
||||
}
|
||||
else if (InternalEnergy < 1e-12)
|
||||
else if (InternalEnergy < 0.0)
|
||||
{
|
||||
InternalEnergy = 0.0;
|
||||
InternalEnergy = 101325.0 * V / (Gamma - 1.0);
|
||||
}
|
||||
|
||||
// Avoid negative mass/energy
|
||||
// Final non‑negative clamp
|
||||
if (Mass < 0.0) Mass = 0.0;
|
||||
if (InternalEnergy < 0.0) InternalEnergy = 0.0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user