/// <summary> /// Calculate the duct pressure drop with the input data. /// </summary> /// <param name="data"> /// The input for the pressure drop calculation. The output are also returned through the data to the caller. /// </param> public void Calculate(DuctPressureDropData data) { ConnectorProfileType eShape = data.Shape; SystemCalculationLevel eLevel = data.Level; double dWidthOrDiameter = data.WidthOrDiameter; double dHeight = data.Height; double dHydraulicDiameter = 0.0; double dEquivalentDiameter = 0.0; double dVelocity = 0.0; double dVelocityPressure = 0.0; double dReynoldsNumber = 0.0; double dPressureDrop = 0.0; double dFriction = 0.0; double dCoefficient = 0.0; dHydraulicDiameter = HydraulicDiameter(eShape, dWidthOrDiameter, dHeight); dEquivalentDiameter = EquivalentDiameter(eShape, dWidthOrDiameter, dHeight); if (eLevel != SystemCalculationLevel.None) { double dDensity = data.Density; double dViscosity = data.Viscosity; dVelocity = Velocity(eShape, dWidthOrDiameter, dHeight, data.Flow); dVelocityPressure = VelocityPressure(dVelocity, dDensity); dReynoldsNumber = ReynoldsNumber(dHydraulicDiameter, dVelocity, dViscosity); if (eLevel == SystemCalculationLevel.All) { double dLength = data.Length; double dFrictionFactor = AltshulTsalFrictionFactor(dHydraulicDiameter, data.Roughness, dReynoldsNumber); dPressureDrop = PressureDrop(dHydraulicDiameter, dFrictionFactor, dDensity, dVelocity, dLength); if (!AlmostZero(dLength)) { dFriction = dPressureDrop / dLength; // Friction is the pressure drop at the unit length. } if (!AlmostZero(dVelocityPressure)) { dCoefficient = dPressureDrop / dVelocityPressure; } } } data.HydraulicDiameter = dHydraulicDiameter; data.EquivalentDiameter = dEquivalentDiameter; data.Velocity = dVelocity; data.VelocityPressure = dVelocityPressure; data.ReynoldsNumber = dReynoldsNumber; data.Friction = dFriction; data.PressureDrop = dPressureDrop; data.Coefficient = dCoefficient; }
/// <summary> /// Calculate the duct pressure drop with the input data. /// </summary> /// <param name="data"> /// The input for the pressure drop calculation. The output are also returned through the data to the caller. /// </param> public void Calculate( DuctPressureDropData data ) { ConnectorProfileType eShape = data.Shape; SystemCalculationLevel eLevel = data.Level; double dWidthOrDiameter = data.WidthOrDiameter; double dHeight = data.Height; double dHydraulicDiameter = 0.0; double dEquivalentDiameter = 0.0; double dVelocity = 0.0; double dVelocityPressure = 0.0; double dReynoldsNumber = 0.0; double dPressureDrop = 0.0; double dFriction = 0.0; double dCoefficient = 0.0; dHydraulicDiameter = HydraulicDiameter( eShape, dWidthOrDiameter, dHeight ); dEquivalentDiameter = EquivalentDiameter( eShape, dWidthOrDiameter, dHeight ); if( eLevel != SystemCalculationLevel.None ) { double dDensity = data.Density; double dViscosity = data.Viscosity; dVelocity = Velocity( eShape, dWidthOrDiameter, dHeight, data.Flow ); dVelocityPressure = VelocityPressure( dVelocity, dDensity ); dReynoldsNumber = ReynoldsNumber( dHydraulicDiameter, dVelocity, dViscosity ); if( eLevel == SystemCalculationLevel.All ) { double dLength = data.Length; double dFrictionFactor = AltshulTsalFrictionFactor( dHydraulicDiameter, data.Roughness, dReynoldsNumber ); dPressureDrop = PressureDrop( dHydraulicDiameter, dFrictionFactor, dDensity, dVelocity, dLength ); if( !AlmostZero( dLength ) ) dFriction = dPressureDrop / dLength; // Friction is the pressure drop at the unit length. if( !AlmostZero( dVelocityPressure ) ) dCoefficient = dPressureDrop / dVelocityPressure; } } data.HydraulicDiameter = dHydraulicDiameter; data.EquivalentDiameter = dEquivalentDiameter; data.Velocity = dVelocity; data.VelocityPressure = dVelocityPressure; data.ReynoldsNumber = dReynoldsNumber; data.Friction = dFriction; data.PressureDrop = dPressureDrop; data.Coefficient = dCoefficient; }