Removed unused orifice class
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user