Removed unused orifice class

This commit is contained in:
max
2026-05-02 21:27:30 +02:00
parent ab50b808fb
commit 2c338ad7d9

View File

@@ -1,73 +0,0 @@
using System;
using FluidSim.Interfaces;
namespace FluidSim.Components
{
public class Orifice
{
public Port PortA { get; }
public Port PortB { get; }
public double Area { get; set; }
public double DischargeCoeff { get; set; } = 0.62;
public double Gamma { get; set; } = 1.4;
public Orifice(double area)
{
Area = area;
PortA = new Port();
PortB = new Port();
}
public void Simulate()
{
double pA = PortA.Pressure, pB = PortB.Pressure;
double dp = pA - pB;
double rho = dp >= 0 ? PortA.Density : PortB.Density;
if (rho <= 0) rho = 1.225;
double massFlow;
double absDp = Math.Abs(dp);
double critical = 1e-3 * pA; // blend threshold
if (absDp < critical)
{
// Linearised region for numerical stability
massFlow = Area * DischargeCoeff * Math.Sqrt(2 * rho * critical) * dp / critical;
}
else
{
double sign = Math.Sign(dp);
double pratio = Math.Min(pA, pB) / Math.Max(pA, pB);
double choked = Math.Pow(2.0 / (Gamma + 1.0), Gamma / (Gamma - 1.0));
if (pratio < choked)
{
double term = Math.Sqrt(Gamma * Math.Pow(2.0 / (Gamma + 1.0), (Gamma + 1.0) / (Gamma - 1.0)));
massFlow = DischargeCoeff * Area * Math.Sqrt(rho * Math.Max(pA, pB)) * term;
}
else
{
double exp = 1.0 - Math.Pow(pratio, (Gamma - 1.0) / Gamma);
massFlow = DischargeCoeff * Area *
Math.Sqrt(2.0 * rho * Math.Max(pA, pB) * (Gamma / (Gamma - 1.0)) * pratio * pratio * exp);
}
massFlow *= sign;
}
PortA.MassFlowRate = -massFlow; // outflow from A
PortB.MassFlowRate = massFlow; // inflow to B
if (massFlow > 0) // A->B
{
PortA.SpecificEnthalpy = PortA.SpecificEnthalpy;
PortB.SpecificEnthalpy = PortA.SpecificEnthalpy;
}
else
{
PortA.SpecificEnthalpy = PortB.SpecificEnthalpy;
PortB.SpecificEnthalpy = PortB.SpecificEnthalpy;
}
}
}
}