public fsPermeabilityCalculator() { #region Parameters Initialization fsCalculatorConstant rhoS = AddConstant(fsParameterIdentifier.SolidsDensity); fsCalculatorConstant eps0 = AddConstant(fsParameterIdentifier.CakePorosity0); fsCalculatorConstant eps = AddConstant(fsParameterIdentifier.CakePorosity); fsCalculatorConstant hc = AddConstant(fsParameterIdentifier.CakeHeight); fsCalculatorConstant eta = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); fsCalculatorConstant hce0 = AddConstant(fsParameterIdentifier.FilterMediumResistanceHce0); fsCalculatorVariable nc = AddVariable(fsParameterIdentifier.CakeCompressibility); fsCalculatorVariable pressure = AddVariable(fsParameterIdentifier.PressureDifference); fsCalculatorVariable pc0 = AddVariable(fsParameterIdentifier.CakePermeability0); fsCalculatorVariable rc0 = AddVariable(fsParameterIdentifier.CakeResistance0); fsCalculatorVariable alpha0 = AddVariable(fsParameterIdentifier.CakeResistanceAlpha0); fsCalculatorVariable pc = AddVariable(fsParameterIdentifier.CakePermeability); fsCalculatorVariable rc = AddVariable(fsParameterIdentifier.CakeResistance); fsCalculatorVariable alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); #endregion #region Equations Initialization AddEquation(new fsDivisionInverseEquation(pc0, rc0)); AddEquation(new fsAlphaPcEquation(alpha0, pc0, eps0, rhoS)); AddEquation(new fsFrom0AndDpEquation(pc, pc0, pressure, nc)); AddEquation(new fsDivisionInverseEquation(pc, rc)); AddEquation(new fsAlphaPcEquation(alpha, pc, eps, rhoS)); #endregion }
public void RebuildEquationsList() { Equations = new List <fsCalculatorEquation>(); var zero = new fsCalculatorConstant(new fsParameterIdentifier("zero")) { IsInput = true, Value = fsValue.Zero }; AddEquation(new fsMoistureContentEquation(m_cakeMoistureContent, m_dryMass, m_wetMass, zero)); if (FromCalculationOption == fsCalculationOptions.fsFromCalculationOption.WashOutContent) { if (WashOutContentOption == fsCalculationOptions.fsWashOutContentOption.AsMassFraction) { AddEquation(new fsCakeWashOutContentEquation(m_cakeWashOutContent, m_dryMass, m_wetMass, m_liquidMassForResuspension, m_solidsMassFraction)); } else { m_internalC.IsInput = false; AddEquation(new fsProductEquation(m_solidsConcentration, m_internalC, m_liquidDensity)); AddEquation(new fsCakeWashOutContentEquation(m_cakeWashOutContent, m_dryMass, m_wetMass, m_liquidMassForResuspension, m_internalC)); } } else { m_internalC.IsInput = false; AddEquation(new fsPhCakeEquation(m_pHcake, m_pH, m_wetMass, m_dryMass, m_liquidMassForResuspension)); AddEquation(new fsConcentrationFromPhEquation(m_internalC, m_pH, m_liquidDensity)); AddEquation(new fsCakeWashOutContentEquation(m_cakeWashOutContent, m_dryMass, m_wetMass, m_liquidMassForResuspension, m_internalC)); } }
public fsCakeFormationDpConstCalculator() { #region Parameters Initialization m_suspensionDensity = AddConstant(fsParameterIdentifier.SuspensionDensity); m_solidsDensity = AddConstant(fsParameterIdentifier.SolidsDensity); m_etaf = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); m_hce0 = AddConstant(fsParameterIdentifier.FilterMediumResistanceHce0); m_porosity0 = AddConstant(fsParameterIdentifier.CakePorosity0); AddConstant(fsParameterIdentifier.Kappa0); m_pc0 = AddConstant(fsParameterIdentifier.CakePermeability0); m_ne = AddConstant(fsParameterIdentifier.Ne); m_nc = AddConstant(fsParameterIdentifier.CakeCompressibility); m_volumeConcentration = AddConstant(fsParameterIdentifier.SuspensionSolidsVolumeFraction); m_filterArea = AddVariable(fsParameterIdentifier.FilterArea); m_pressure = AddVariable(fsParameterIdentifier.PressureDifference); m_cycleTime = AddVariable(fsParameterIdentifier.CycleTime); m_rotationalSpeed = AddVariable(fsParameterIdentifier.RotationalSpeed); m_formationRelativeTime = AddVariable(fsParameterIdentifier.SpecificFiltrationTime); m_formationTime = AddVariable(fsParameterIdentifier.FiltrationTime); m_cakeHeight = AddVariable(fsParameterIdentifier.CakeHeight); m_suspensionMass = AddVariable(fsParameterIdentifier.SuspensionMass); m_suspensionVolume = AddVariable(fsParameterIdentifier.SuspensionVolume); m_suspensionMassFlowrate = AddVariable(fsParameterIdentifier.SuspensionMassFlowrate); m_porosity = AddVariable(fsParameterIdentifier.CakePorosity); m_pc = AddVariable(fsParameterIdentifier.CakePermeability); m_rc = AddVariable(fsParameterIdentifier.CakeResistance); m_alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); m_kappa = AddVariable(fsParameterIdentifier.Kappa); #endregion #region Equations Initialization AddEquation(new fsDivisionInverseEquation(m_cycleTime, m_rotationalSpeed)); AddEquation(new fsDivisionInverseEquation(m_rotationalSpeed, m_cycleTime)); AddEquation(new fsProductEquation(m_formationTime, m_formationRelativeTime, m_cycleTime)); AddEquation(new fsCakeHeightFromDpTf(m_cakeHeight, m_hce0, m_pc, m_kappa, m_pressure, m_formationTime, m_etaf)); AddEquation(new fsVsusFromAreaAndCakeHeightEquation(m_suspensionVolume, m_filterArea, m_cakeHeight, m_kappa)); AddEquation(new fsProductEquation(m_suspensionMass, m_suspensionDensity, m_suspensionVolume)); AddEquation(new fsFrom0AndDpEquation(m_porosity, m_porosity0, m_pressure, m_ne)); AddEquation(new fsFrom0AndDpEquation(m_pc, m_pc0, m_pressure, m_nc)); AddEquation(new fsEpsKappaCvEquation(m_porosity, m_kappa, m_volumeConcentration)); AddEquation(new fsAlphaPcEquation(m_alpha, m_pc, m_porosity, m_solidsDensity)); AddEquation(new fsDivisionInverseEquation(m_rc, m_pc)); AddEquation(new fsProductEquation(m_suspensionMass, m_suspensionMassFlowrate, m_cycleTime)); #endregion }
protected fsCalculatorConstant AddConstant(fsParameterIdentifier identifier) { var c = new fsCalculatorConstant(identifier); if (m_constants.ContainsKey(identifier)) { throw new Exception("Parameter " + identifier.ToString() + " already exists in constants."); } m_constants[identifier] = c; return(c); }
public fsRfFromWetDryCakeCalculator() { #region Parameters Initialization m_wetMass = AddConstant(fsParameterIdentifier.WetCakeMass); m_dryMass = AddConstant(fsParameterIdentifier.DryCakeMass); m_solidsMassFraction = AddConstant(fsParameterIdentifier.SolutesMassFractionInLiquid); m_solidsConcentration = AddConstant(fsParameterIdentifier.SolutesConcentrationInCakeLiquid); m_liquidDensity = AddConstant(fsParameterIdentifier.LiquidDensity); m_cakeMoistureContent = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); m_internalC = AddVariable(new fsParameterIdentifier("internalC")); #endregion Equations = null; }
public fsSuspensionSolidsMassFractionCalculator() { #region Parameters Initialization m_suspensionMass = AddConstant(fsParameterIdentifier.SuspensionMass); m_dryMass = AddConstant(fsParameterIdentifier.DryCakeMass); m_Cfm = AddConstant(fsParameterIdentifier.SolutesMassFractionInMotherLiquid); m_Cf = AddConstant(fsParameterIdentifier.SolutesConcentrationInMotherLiquid); m_motherLiquidDensity = AddConstant(fsParameterIdentifier.MotherLiquidDensity); m_Cm = AddVariable(fsParameterIdentifier.SuspensionSolidsMassFraction); m_internalC = AddVariable(new fsParameterIdentifier("internalC")); #endregion Equations = null; }
public fsRm0Hce0Calculator() { #region Parameters Initialization m_hce0 = AddVariable(fsParameterIdentifier.FilterMediumResistanceHce0); m_rm0 = AddVariable(fsParameterIdentifier.FilterMediumResistanceRm0); m_pc0 = AddConstant(fsParameterIdentifier.CakePermeability0); #endregion #region Equations Initialization AddEquation(new fsProductEquation(m_hce0, m_pc0, m_rm0)); #endregion }
public fsRfFromCakeSaturationCalculator() { #region Parameters Initialization m_liquidDensity = AddConstant(fsParameterIdentifier.LiquidDensity); m_solidsDensity = AddConstant(fsParameterIdentifier.SolidsDensity); m_cakePorosity = AddVariable(fsParameterIdentifier.CakePorosity); m_cakeSaturation = AddVariable(fsParameterIdentifier.CakeSaturation); m_cakeMoistureContent = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); #endregion #region Equations Initialization Equations.Add(new fsMoistureContentFromCakeSaturationEquation(m_liquidDensity, m_solidsDensity, m_cakePorosity, m_cakeMoistureContent, m_cakeSaturation)); #endregion }
public fsCakeWashOutContentCalculator() { #region Parameters Initialization m_wetMass = AddConstant(fsParameterIdentifier.WetCakeMass); m_dryMass = AddConstant(fsParameterIdentifier.DryCakeMass); m_liquidMassForResuspension = AddConstant(fsParameterIdentifier.LiquidMassForResuspension); m_solidsMassFraction = AddConstant(fsParameterIdentifier.LiquidWashOutMassFraction); m_solidsConcentration = AddConstant(fsParameterIdentifier.LiquidWashOutConcentration); m_internalC = AddVariable(new fsParameterIdentifier("internalC")); m_liquidDensity = AddConstant(fsParameterIdentifier.LiquidDensity); m_cakeMoistureContent = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); m_pH = AddConstant(fsParameterIdentifier.Ph); m_pHcake = AddVariable(fsParameterIdentifier.PHcake); m_cakeWashOutContent = AddVariable(fsParameterIdentifier.CakeWashOutContent); #endregion Equations = null; }
public fsPkeFromPcRcCalculator() { #region Parameters Initialization m_pc = AddVariable(fsParameterIdentifier.CakePermeability); m_rc = AddVariable(fsParameterIdentifier.CakeResistance); m_alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); m_rhos = AddConstant(fsParameterIdentifier.SolidsDensity); m_eps = AddConstant(fsParameterIdentifier.CakePorosity); m_rhosBulk = AddConstant(fsParameterIdentifier.DryCakeDensity); m_sigma = AddConstant(fsParameterIdentifier.SurfaceTensionLiquidInCake); m_pkeSt = AddConstant(fsParameterIdentifier.StandardCapillaryPressure); m_pke = AddVariable(fsParameterIdentifier.CapillaryPressure); m_localPc = AddVariable(new fsParameterIdentifier("local Pc")); m_localBulk = AddVariable(new fsParameterIdentifier("local Bulk")); m_localOneMinusEps = AddVariable(new fsParameterIdentifier("1 - eps")); #endregion Equations = null; }
public fsCakePorosityCalculator() { #region Parameters Initialization m_machineArea = AddVariable(fsParameterIdentifier.FilterArea); m_machineDiameter = AddVariable(fsParameterIdentifier.MachineDiameter); m_filterElementDiameter = AddVariable(fsParameterIdentifier.FilterElementDiameter); m_cakeArea = AddVariable(new fsParameterIdentifier("cakeArea")); m_b = AddVariable(fsParameterIdentifier.MachineWidth); m_bOverD = AddVariable(fsParameterIdentifier.WidthOverDiameterRatio); m_rhoL = AddConstant(fsParameterIdentifier.LiquidDensity); m_rhoS = AddConstant(fsParameterIdentifier.SolidsDensity); m_cakeHeight = AddConstant(fsParameterIdentifier.CakeHeight); m_wetCakeMass = AddConstant(fsParameterIdentifier.WetCakeMass); m_dryCakeMass = AddConstant(fsParameterIdentifier.DryCakeMass); m_c = AddConstant(fsParameterIdentifier.SolutesConcentrationInCakeLiquid); m_eps = AddVariable(fsParameterIdentifier.CakePorosity); #endregion Equations = null; }
public fsBeltFiltersWithReversibleTraysCalculator() { #region Parameters Initialization IEquationParameter etaf = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); IEquationParameter rhoS = AddConstant(fsParameterIdentifier.SolidsDensity); IEquationParameter rhoF = AddConstant(fsParameterIdentifier.MotherLiquidDensity); IEquationParameter rhoSus = AddConstant(fsParameterIdentifier.SuspensionDensity); IEquationParameter cv = AddConstant(fsParameterIdentifier.SuspensionSolidsVolumeFraction); IEquationParameter cm = AddConstant(fsParameterIdentifier.SuspensionSolidsMassFraction); IEquationParameter pc0 = AddConstant(fsParameterIdentifier.CakePermeability0); IEquationParameter nc = AddConstant(fsParameterIdentifier.CakeCompressibility); IEquationParameter hce0 = AddConstant(fsParameterIdentifier.FilterMediumResistanceHce0); IEquationParameter lambda = AddConstant(fsParameterIdentifier.lambda); IEquationParameter rhoCd = AddConstant(fsParameterIdentifier.DryCakeDensity); IEquationParameter eps = AddConstant(fsParameterIdentifier.CakePorosity); IEquationParameter kappa = AddConstant(fsParameterIdentifier.Kappa); IEquationParameter ns = AddVariable(fsParameterIdentifier.ns); IEquationParameter Qms = AddVariable(fsParameterIdentifier.Qms); IEquationParameter Qs = AddVariable(fsParameterIdentifier.Qs); IEquationParameter Qmsus = AddVariable(fsParameterIdentifier.SuspensionMassFlowrate); IEquationParameter Qsus = AddVariable(fsParameterIdentifier.Qsus); IEquationParameter ls = AddVariable(fsParameterIdentifier.ls); IEquationParameter lOverB = AddVariable(fsParameterIdentifier.l_over_b); IEquationParameter lsOverB = AddVariable(fsParameterIdentifier.ls_over_b); IEquationParameter u = AddVariable(fsParameterIdentifier.u); IEquationParameter n = AddVariable(fsParameterIdentifier.RotationalSpeed); IEquationParameter tc = AddVariable(fsParameterIdentifier.CycleTime); IEquationParameter nsf = AddVariable(fsParameterIdentifier.nsf); IEquationParameter nsr = AddVariable(fsParameterIdentifier.nsr); IEquationParameter sf = AddVariable(fsParameterIdentifier.SpecificFiltrationTime); IEquationParameter sr = AddVariable(fsParameterIdentifier.SpecificResidualTime); IEquationParameter tr = AddVariable(fsParameterIdentifier.ResidualTime); IEquationParameter cakeHeigth = AddVariable(fsParameterIdentifier.CakeHeight); IEquationParameter filtrationTime = AddVariable(fsParameterIdentifier.FiltrationTime); IEquationParameter pressureDifference = AddVariable(fsParameterIdentifier.PressureDifference); IEquationParameter pc = AddVariable(fsParameterIdentifier.CakePermeability); IEquationParameter ttech0 = AddVariable(fsParameterIdentifier.StandardTechnicalTime); IEquationParameter ttech = AddVariable(fsParameterIdentifier.TechnicalTime); IEquationParameter filterArea = AddVariable(fsParameterIdentifier.FilterArea); IEquationParameter filterAreaAs = AddVariable(fsParameterIdentifier.As); IEquationParameter machineWidth = AddVariable(fsParameterIdentifier.MachineWidth); IEquationParameter filterLength = AddVariable(fsParameterIdentifier.FilterLength); IEquationParameter qft = AddVariable(fsParameterIdentifier.qft); IEquationParameter qmft = AddVariable(fsParameterIdentifier.qmft); #region Help Parameters and Constants var constantOne = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = fsValue.One }; var constantTwo = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = new fsValue(2) }; IEquationParameter hcAddHce = AddVariable(new fsParameterIdentifier("hc + hce")); Equations.Add(new fsSumEquation(hcAddHce, cakeHeigth, hce0)); IEquationParameter hcAdd2Hce = AddVariable(new fsParameterIdentifier("hc + 2 hce")); Equations.Add(new fsSumEquation(hcAdd2Hce, hcAddHce, hce0)); IEquationParameter oneMinusEps = AddVariable(new fsParameterIdentifier("1 - eps")); Equations.Add(new fsSumEquation(constantOne, eps, oneMinusEps)); #endregion #endregion #region Equations Initialization Equations.Add(new fsAreaOfBeltWithReversibleTraysEquation(filterArea, lsOverB, ns, Qms, rhoCd, u, cakeHeigth)); Equations.Add(new fsProductEquation(Qms, rhoS, Qs)); Equations.Add(new fsProductEquation(Qmsus, rhoSus, Qsus)); Equations.Add(new fsProductEquation(Qs, Qsus, cv)); Equations.Add(new fsProductsEquation( new[] { ls, rhoCd, u, cakeHeigth }, new[] { lsOverB, Qms })); Equations.Add(new fsProductsEquation( new[] { Qms, tc }, new[] { rhoCd, filterArea, cakeHeigth })); Equations.Add(new fsProductEquation(lOverB, ns, lsOverB)); Equations.Add(new fsProductEquation(nsf, ns, sf)); Equations.Add(new fsFrom0AndDpEquation(pc, pc0, pressureDifference, nc)); Equations.Add(new fsTechnicalTimeFrom0Equation(ttech, ttech0, filterAreaAs, lambda)); Equations.Add(new fsProductEquation(filterArea, filterLength, machineWidth)); Equations.Add(new fsProductsEquation( new[] { filterAreaAs, lsOverB }, new[] { ls, ls })); Equations.Add(new fsProductsEquation( new[] { filterArea }, new[] { lOverB, machineWidth, machineWidth })); Equations.Add(new fsProductEquation(filterLength, ns, ls)); Equations.Add(new fsProductEquation(filterLength, tc, u)); Equations.Add(new fsDivisionInverseEquation(tc, n)); Equations.Add(new fsCakeHeightFromDpTf(cakeHeigth, hce0, pc, kappa, pressureDifference, filtrationTime, etaf)); Equations.Add(new fsSumEquation(ns, nsf, nsr)); Equations.Add(new fsSumEquation(tc, tr, filtrationTime)); Equations.Add(new fsSumEquation(constantOne, sr, sf)); Equations.Add(new fsTrSrTtechNsTcEquation(sr, tr, tc, ns, ttech)); Equations.Add(new fsTfSfTtechNsTcEquation(sf, filtrationTime, tc, ns, ttech)); Equations.Add(new fsProductEquation(ls, lsOverB, machineWidth)); Equations.Add(new fsSfFromEtafHcHceKappaPcDpNsLsUTtechEquation( sf, etaf, cakeHeigth, hce0, kappa, pc, pressureDifference, ns, ls, u, ttech)); Equations.Add(new fsUFromLsOverBQmsHcDpTtech0LambdaNsfMaterialEquation( u, lambda, nsf, lsOverB, Qms, rhoCd, cakeHeigth, etaf, hce0, kappa, pc, pressureDifference, ttech0)); Equations.Add(new fsProductsEquation( new[] { qft, etaf, hcAdd2Hce }, new[] { constantTwo, pc, pressureDifference })); Equations.Add(new fsProductEquation(qmft, qft, rhoF)); Equations.Add(new fsHcQmsEquation(cakeHeigth, Qms, filterArea, rhoCd, hce0, ns, ttech, kappa, pc, pressureDifference, sf, etaf)); #region Only Calculated Parameters IEquationParameter meanHeightRate = AddVariable(fsParameterIdentifier.MeanHeightRate); IEquationParameter hcOverTc = AddVariable(fsParameterIdentifier.HcOverTc); IEquationParameter diffHeightrate = AddVariable(fsParameterIdentifier.DiffHeightRate); Equations.Add(new fsProductEquation(cakeHeigth, filtrationTime, meanHeightRate)); Equations.Add(new fsProductEquation(cakeHeigth, tc, hcOverTc)); Equations.Add(new fsProductsEquation( new[] { diffHeightrate, etaf, hcAddHce }, new[] { kappa, pressureDifference, pc })); IEquationParameter Ms = AddVariable(fsParameterIdentifier.SolidsMass); IEquationParameter Vs = AddVariable(fsParameterIdentifier.SolidsVolume); IEquationParameter Msus = AddVariable(fsParameterIdentifier.SuspensionMass); IEquationParameter Vsus = AddVariable(fsParameterIdentifier.SuspensionVolume); Equations.Add(new fsProductsEquation( new[] { Ms }, new[] { rhoCd, filterArea, cakeHeigth })); Equations.Add(new fsProductEquation(Ms, Msus, cm)); Equations.Add(new fsProductEquation(Ms, Vs, rhoS)); Equations.Add(new fsProductEquation(Vs, Vsus, cv)); IEquationParameter msus = AddVariable(fsParameterIdentifier.SpecificSuspensionMass); IEquationParameter vsus = AddVariable(fsParameterIdentifier.SpecificSuspensionVolume); Equations.Add(new fsProductEquation(Msus, msus, filterArea)); Equations.Add(new fsProductEquation(Vsus, vsus, filterArea)); IEquationParameter qmsusd = AddVariable(fsParameterIdentifier.qmsusd); IEquationParameter qsusd = AddVariable(fsParameterIdentifier.qsusd); IEquationParameter Qmsusd = AddVariable(fsParameterIdentifier.Qmsusd); IEquationParameter Qsusd = AddVariable(fsParameterIdentifier.Qsusd); Equations.Add(new fsProductsEquation( new[] { qsusd, cv }, new[] { oneMinusEps, diffHeightrate })); Equations.Add(new fsProductsEquation( new[] { qmsusd, cv }, new[] { rhoCd, diffHeightrate })); Equations.Add(new fsProductEquation(Qmsusd, qmsusd, filterArea)); Equations.Add(new fsProductEquation(Qsusd, qsusd, filterArea)); IEquationParameter qmsust = AddVariable(fsParameterIdentifier.qmsust); IEquationParameter qsust = AddVariable(fsParameterIdentifier.qsust); IEquationParameter Qmsust = AddVariable(fsParameterIdentifier.Qmsust); IEquationParameter Qsust = AddVariable(fsParameterIdentifier.Qsust); Equations.Add(new fsProductsEquation( new[] { qmsust, cv }, new[] { oneMinusEps, meanHeightRate })); Equations.Add(new fsProductEquation(qmsust, rhoSus, qsust)); Equations.Add(new fsProductEquation(Qmsust, qmsust, filterArea)); Equations.Add(new fsProductEquation(Qsust, qsust, filterArea)); #endregion #endregion }
public fsPorosityCalculator() { #region Parameters Initialization fsCalculatorConstant ne = AddConstant(fsParameterIdentifier.Ne); fsCalculatorConstant pressureDifference = AddConstant(fsParameterIdentifier.PressureDifference); fsCalculatorConstant volumeConcentration = AddConstant(fsParameterIdentifier.SuspensionSolidsVolumeFraction); fsCalculatorConstant solidsDensity = AddConstant(fsParameterIdentifier.SolidsDensity); fsCalculatorConstant filtrateDensity = AddConstant(fsParameterIdentifier.MotherLiquidDensity); fsCalculatorConstant solidsMass = AddConstant(fsParameterIdentifier.SolidsMass); fsCalculatorConstant filtrationArea = AddConstant(fsParameterIdentifier.FilterArea); fsCalculatorConstant cakeHight = AddConstant(fsParameterIdentifier.CakeHeight); fsCalculatorConstant fitrationTime = AddConstant(fsParameterIdentifier.FiltrationTime); fsCalculatorConstant qf = AddConstant(fsParameterIdentifier.qf); fsCalculatorConstant mf = AddConstant(fsParameterIdentifier.FiltrateMass); fsCalculatorConstant cakeMass = AddConstant(fsParameterIdentifier.CakeMass); fsCalculatorVariable porosity0 = AddVariable(fsParameterIdentifier.CakePorosity0); fsCalculatorVariable kappa0 = AddVariable(fsParameterIdentifier.Kappa0); fsCalculatorVariable cakeDrySolidsDensity0 = AddVariable(fsParameterIdentifier.DryCakeDensity0); fsCalculatorVariable porosity = AddVariable(fsParameterIdentifier.CakePorosity); fsCalculatorVariable kappa = AddVariable(fsParameterIdentifier.Kappa); fsCalculatorVariable cakeDrySolidsDensity = AddVariable(fsParameterIdentifier.DryCakeDensity); fsCalculatorVariable cakeWetDensity0 = AddVariable(fsParameterIdentifier.CakeWetDensity0); fsCalculatorVariable cakeMoistureContentRf0 = AddVariable(fsParameterIdentifier.CakeMoistureContentRf0); fsCalculatorVariable cakeWetMassSolidsFractionRs0 = AddVariable(fsParameterIdentifier.CakeWetMassSolidsFractionRs0); fsCalculatorVariable cakeWetDensity = AddVariable(fsParameterIdentifier.CakeWetDensity); fsCalculatorVariable cakeMoistureContentRf = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); fsCalculatorVariable cakeWetMassSolidsFractionRs = AddVariable(fsParameterIdentifier.CakeWetMassSolidsFractionRs); #endregion #region Equations Initialization var one = new fsCalculatorConstant(new fsParameterIdentifier("one")) { Value = fsValue.One }; AddEquation(new fsEpsKappaCvEquation(porosity0, kappa0, volumeConcentration)); AddEquation(new fsCakeDrySolidsDensityEquation(cakeDrySolidsDensity0, porosity0, solidsDensity)); AddEquation(new fsEpsKappaCvEquation(porosity, kappa, volumeConcentration)); AddEquation(new fsCakeDrySolidsDensityEquation(cakeDrySolidsDensity, porosity, solidsDensity)); AddEquation(new fsFrom0AndDpEquation(porosity, porosity0, pressureDifference, ne)); AddEquation(new fsMoistureContentFromDensitiesAndPorosityEquation(cakeMoistureContentRf0, porosity0, filtrateDensity, solidsDensity)); AddEquation(new fsSumEquation(one, cakeMoistureContentRf0, cakeWetMassSolidsFractionRs0)); AddEquation(new fsCakeWetDensityFromRhofRhosPorosityEquation(cakeWetDensity0, filtrateDensity, solidsDensity, porosity0)); AddEquation(new fsMoistureContentFromDensitiesAndPorosityEquation(cakeMoistureContentRf, porosity, filtrateDensity, solidsDensity)); AddEquation(new fsSumEquation(one, cakeMoistureContentRf, cakeWetMassSolidsFractionRs)); AddEquation(new fsCakeWetDensityFromRhofRhosPorosityEquation(cakeWetDensity, filtrateDensity, solidsDensity, porosity)); AddEquation(new fsEpsFromMsAndHcEquation(porosity, solidsMass, filtrationArea, solidsDensity, cakeHight)); AddEquation(new fsEpsFromMsAndQfEquation(porosity, volumeConcentration, solidsMass, filtrationArea, solidsDensity, fitrationTime, qf)); AddEquation(new fsEpsFromMsAndMfEquation(porosity, volumeConcentration, solidsMass, filtrateDensity, solidsDensity, mf)); AddEquation(new fsEpsFromMcAndQfEquation(porosity, volumeConcentration, cakeMass, filtrationArea, filtrateDensity, solidsDensity, fitrationTime, qf)); #endregion }
public fsAnalysisFiltrationCalculator() { #region Parameters Initialization IEquationParameter cv = AddConstant(fsParameterIdentifier.SuspensionSolidsVolumeFraction); IEquationParameter c = AddConstant(fsParameterIdentifier.SuspensionSolidsConcentration); IEquationParameter tc = AddVariable(fsParameterIdentifier.CycleTime); IEquationParameter rho = AddConstant(fsParameterIdentifier.MotherLiquidDensity); IEquationParameter viscosity = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); IEquationParameter area = AddConstant(fsParameterIdentifier.FilterArea); IEquationParameter rhosus = AddConstant(fsParameterIdentifier.SuspensionDensity); IEquationParameter solidsDensity = AddConstant(fsParameterIdentifier.SolidsDensity); IEquationParameter cm = AddConstant(fsParameterIdentifier.SuspensionSolidsMassFraction); IEquationParameter pc = AddVariable(fsParameterIdentifier.CakePermeability); IEquationParameter hc = AddVariable(fsParameterIdentifier.CakeHeight); IEquationParameter formationTime = AddVariable(fsParameterIdentifier.FiltrationTime); IEquationParameter solidsMass = AddVariable(fsParameterIdentifier.SolidsMassInSuspension); IEquationParameter liquidMass = AddVariable(fsParameterIdentifier.LiquidMassInSuspension); IEquationParameter suspensionMass = AddVariable(fsParameterIdentifier.SuspensionMass); IEquationParameter Rm = AddVariable(fsParameterIdentifier.FilterMediumResistanceRm); IEquationParameter mf = AddVariable(fsParameterIdentifier.FiltrateMass); IEquationParameter mc = AddVariable(fsParameterIdentifier.CakeMass); IEquationParameter ms = AddVariable(fsParameterIdentifier.SolidsMass); IEquationParameter qmf = AddVariable(fsParameterIdentifier.qmf); IEquationParameter vsus = AddVariable(fsParameterIdentifier.SuspensionVolume); IEquationParameter vf = AddVariable(fsParameterIdentifier.FiltrateVolume); IEquationParameter vc = AddVariable(fsParameterIdentifier.CakeVolume); IEquationParameter vs = AddVariable(fsParameterIdentifier.SolidsVolume); IEquationParameter qf = AddVariable(fsParameterIdentifier.qf); IEquationParameter hce = AddVariable(fsParameterIdentifier.FilterMediumResistanceHce); IEquationParameter K = AddVariable(fsParameterIdentifier.PracticalCakePermeability); IEquationParameter rc0 = AddVariable(fsParameterIdentifier.CakeResistance0); IEquationParameter pc0 = AddVariable(fsParameterIdentifier.CakePermeability0); IEquationParameter alpha0 = AddVariable(fsParameterIdentifier.CakeResistanceAlpha0); IEquationParameter rc = AddVariable(fsParameterIdentifier.CakeResistance); IEquationParameter alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); IEquationParameter nc = AddVariable(fsParameterIdentifier.CakeCompressibility); IEquationParameter Dp = AddVariable(fsParameterIdentifier.PressureDifference); IEquationParameter Qms = AddVariable(fsParameterIdentifier.Qms); IEquationParameter Qsus = AddVariable(fsParameterIdentifier.Qsus); IEquationParameter Qmsus = AddVariable(fsParameterIdentifier.SuspensionMassFlowrate); IEquationParameter pcstar = AddVariable(fsParameterIdentifier.CakePlusMediumPermeability); IEquationParameter rcstar = AddVariable(fsParameterIdentifier.CakePlusMediumResistance); IEquationParameter alphastar = AddVariable(fsParameterIdentifier.CakePlusMediumResistanceAlpha); IEquationParameter ne = AddConstant(fsParameterIdentifier.Ne); IEquationParameter eps = AddVariable(fsParameterIdentifier.CakePorosity); IEquationParameter eps0 = AddVariable(fsParameterIdentifier.CakePorosity0); IEquationParameter kappa = AddVariable(fsParameterIdentifier.Kappa); IEquationParameter kappa0 = AddVariable(fsParameterIdentifier.Kappa0); IEquationParameter rho_cd = AddVariable(fsParameterIdentifier.DryCakeDensity); IEquationParameter rho_cd0 = AddVariable(fsParameterIdentifier.DryCakeDensity0); IEquationParameter Rf = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); IEquationParameter Rf0 = AddVariable(fsParameterIdentifier.CakeMoistureContentRf0); IEquationParameter n = AddVariable(fsParameterIdentifier.RotationalSpeed); IEquationParameter tr = AddVariable(fsParameterIdentifier.ResidualTime); IEquationParameter sf = AddVariable(fsParameterIdentifier.SpecificFiltrationTime); #endregion #region Help Parameters var constantOne = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = fsValue.One }; var constantTwo = new fsCalculatorConstant(new fsParameterIdentifier("2")) { Value = new fsValue(2) }; IEquationParameter onePlusKappa = AddVariable(new fsParameterIdentifier("1 + kappa")); Equations.Add(new fsSumEquation(onePlusKappa, constantOne, kappa)); IEquationParameter oneMinusEps = AddVariable(new fsParameterIdentifier("1 - eps")); Equations.Add(new fsSumEquation(constantOne, oneMinusEps, eps)); IEquationParameter hcPlusTwoTimesHce = AddVariable(new fsParameterIdentifier("hc+ 2*hce")); Equations.Add(new fsSumsEquation( new[] { hcPlusTwoTimesHce }, new[] { hc, hce, hce })); #endregion #region Equations Initialization #region Porosity Equations AddEquation(new fsEpsKappaCvEquation(eps0, kappa0, cv)); AddEquation(new fsCakeDrySolidsDensityEquation(rho_cd0, eps0, solidsDensity)); AddEquation(new fsEpsKappaCvEquation(eps, kappa, cv)); AddEquation(new fsCakeDrySolidsDensityEquation(rho_cd, eps, solidsDensity)); AddEquation(new fsFrom0AndDpEquation(eps, eps0, Dp, ne)); AddEquation(new fsMoistureContentFromDensitiesAndPorosityEquation(Rf0, eps0, rho, solidsDensity)); AddEquation(new fsMoistureContentFromDensitiesAndPorosityEquation(Rf, eps, rho, solidsDensity)); AddEquation(new fsEpsFromMsAndHcEquation(eps, solidsMass, area, solidsDensity, hc)); AddEquation(new fsEpsFromMsAndQfEquation(eps, cv, solidsMass, area, solidsDensity, formationTime, qf)); AddEquation(new fsEpsFromMsAndMfEquation(eps, cv, solidsMass, formationTime, solidsDensity, mf)); AddEquation(new fsEpsFromMcAndQfEquation(eps, cv, mc, area, rho, solidsDensity, formationTime, qf)); #endregion #region Cake Hight Equations AddEquation(new fsFrom0AndDpEquation(pc, pc0, Dp, nc)); AddEquation(new fsCakeHeightFromDpTf(hc, hce, pc, kappa0, Dp, formationTime, viscosity)); AddEquation(new fsHcFromMsAndPcstarEquation(hc, ms, area, solidsDensity, cv, Dp, formationTime, pcstar, viscosity)); AddEquation(new fsHcFromMcAndPcstarEquation(hc, mc, area, solidsDensity, cv, Dp, formationTime, pcstar, rho, viscosity)); AddEquation(new fsHcFromMsAndAlphastarEquation(hc, ms, area, solidsDensity, cv, Dp, formationTime, alphastar, viscosity)); AddEquation(new fsHcFromMcAndAlphastarEquations(hc, mc, area, solidsDensity, cv, Dp, formationTime, alphastar, viscosity, rho)); Equations.Add(new fsProductsEquation( new[] { oneMinusEps, solidsDensity, area, hc }, new[] { cm, suspensionMass })); AddEquation(new fsProductEquation(solidsMass, suspensionMass, cm)); AddEquation(new fsSumEquation(suspensionMass, solidsMass, liquidMass)); AddEquation(new fsMcFromHcEquation(mc, area, hc, solidsDensity, eps, rho)); Equations.Add(new fsProductsEquation( new[] { qmf, viscosity, hcPlusTwoTimesHce }, new[] { rho, constantTwo, pc, Dp })); Equations.Add(new fsProductsEquation( new[] { qf, viscosity, hcPlusTwoTimesHce }, new[] { constantTwo, pc, Dp })); Equations.Add(new fsProductsEquation( new[] { area, hc, onePlusKappa }, new[] { vsus, kappa })); Equations.Add(new fsProductEquation(hce, pc, Rm)); Equations.Add(new fsProductsEquation( new[] { suspensionMass, kappa }, new[] { rhosus, area, hc, onePlusKappa })); Equations.Add(new fsProductsEquation( new[] { mf, kappa }, new[] { rho, area, hc })); Equations.Add(new fsProductsEquation( new[] { ms }, new[] { area, hc, solidsDensity, oneMinusEps })); Equations.Add(new fsProductsEquation( new[] { vf, kappa }, new[] { area, hc })); Equations.Add(new fsProductEquation(vc, area, hc)); Equations.Add(new fsProductsEquation( new[] { vs }, new[] { area, hc, oneMinusEps })); AddEquation(new fsDivisionInverseEquation(pc0, rc0)); AddEquation(new fsAlphaPcEquation(alpha0, pc0, eps0, solidsDensity)); AddEquation(new fsFrom0AndDpEquation(pc, pc0, Dp, nc)); AddEquation(new fsDivisionInverseEquation(pc, rc)); AddEquation(new fsAlphaPcEquation(alpha, pc, eps, solidsDensity)); AddEquation(new fsProductEquation(ms, c, vsus)); AddEquation(new fsProductEquation(ms, cm, suspensionMass)); AddEquation(new fsProductEquation(ms, solidsDensity, vs)); AddEquation(new fsProductEquation(ms, tc, Qms)); Equations.Add(new fsProductsEquation( new[] { ms }, new[] { tc, c, Qsus })); Equations.Add(new fsProductsEquation( new[] { ms }, new[] { tc, cm, Qmsus })); Equations.Add(new fsProductsEquation( new[] { qf, kappa, formationTime }, new[] { hc })); Equations.Add(new fsProductEquation(qmf, rho, qf)); Equations.Add(new fsProductsEquation( new[] { qf, area, rho, formationTime }, new[] { mf })); Equations.Add(new fsProductsEquation( new[] { qmf, area, formationTime }, new[] { mf })); Equations.Add(new fsProductsEquation( new[] { qf, area, formationTime }, new[] { vf })); Equations.Add(new fsProductsEquation( new[] { qmf, area, formationTime }, new[] { vf, rho })); Equations.Add(new fsProductsEquation( new[] { pcstar, constantTwo, Dp }, new[] { viscosity, kappa, formationTime, qf, qf })); Equations.Add(new fsProductsEquation( new[] { pcstar, constantTwo, Dp, kappa, formationTime }, new[] { viscosity, hc, hc })); Equations.Add(new fsProductEquation(constantOne, rcstar, pcstar)); Equations.Add(new fsProductsEquation( new[] { alphastar, rho_cd, pcstar }, new[] { constantOne })); AddEquation(new fsPcFromPcstarEquation(pc, hc, hce, pcstar)); Equations.Add(new fsProductEquation(pcstar, K, viscosity)); #endregion #region Time Equations Equations.Add(new fsDivisionInverseEquation(n, tc)); Equations.Add(new fsSumEquation(tc, tr, formationTime)); Equations.Add(new fsProductEquation(formationTime, tc, sf)); #endregion #endregion }
public fsLaboratoryFiltrationCalculator() { #region Parameters Initialization IEquationParameter rho = AddConstant(fsParameterIdentifier.MotherLiquidDensity); IEquationParameter eps = AddConstant(fsParameterIdentifier.CakePorosity); IEquationParameter viscosity = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); IEquationParameter kappa0 = AddConstant(fsParameterIdentifier.Kappa0); IEquationParameter area = AddConstant(fsParameterIdentifier.FilterArea); IEquationParameter rhosus = AddConstant(fsParameterIdentifier.SuspensionDensity); IEquationParameter eps0 = AddConstant(fsParameterIdentifier.CakePorosity0); IEquationParameter solidsDensity = AddConstant(fsParameterIdentifier.SolidsDensity); IEquationParameter cm = AddConstant(fsParameterIdentifier.SuspensionSolidsMassFraction); IEquationParameter kappa = AddConstant(fsParameterIdentifier.Kappa); IEquationParameter pc0 = AddVariable(fsParameterIdentifier.CakePermeability0); IEquationParameter rc0 = AddVariable(fsParameterIdentifier.CakeResistance0); IEquationParameter alpha0 = AddVariable(fsParameterIdentifier.CakeResistanceAlpha0); IEquationParameter pc = AddVariable(fsParameterIdentifier.CakePermeability); IEquationParameter rc = AddVariable(fsParameterIdentifier.CakeResistance); IEquationParameter alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); IEquationParameter nc = AddVariable(fsParameterIdentifier.CakeCompressibility); IEquationParameter Dp = AddVariable(fsParameterIdentifier.PressureDifference); IEquationParameter hc = AddVariable(fsParameterIdentifier.CakeHeight); IEquationParameter formationTime = AddVariable(fsParameterIdentifier.FiltrationTime); IEquationParameter solidsMass = AddVariable(fsParameterIdentifier.SolidsMassInSuspension); IEquationParameter liquidMass = AddVariable(fsParameterIdentifier.LiquidMassInSuspension); IEquationParameter suspensionMass = AddVariable(fsParameterIdentifier.SuspensionMass); IEquationParameter Rm = AddVariable(fsParameterIdentifier.FilterMediumResistanceRm); IEquationParameter Mf = AddVariable(fsParameterIdentifier.FiltrateMass); IEquationParameter mc = AddVariable(fsParameterIdentifier.CakeMass); IEquationParameter ms = AddVariable(fsParameterIdentifier.SolidsMass); IEquationParameter qmf = AddVariable(fsParameterIdentifier.qmf); IEquationParameter vsus = AddVariable(fsParameterIdentifier.SuspensionVolume); IEquationParameter vf = AddVariable(fsParameterIdentifier.FiltrateVolume); IEquationParameter vc = AddVariable(fsParameterIdentifier.CakeVolume); IEquationParameter vs = AddVariable(fsParameterIdentifier.SolidsVolume); IEquationParameter qf = AddVariable(fsParameterIdentifier.qf); IEquationParameter hce = AddVariable(fsParameterIdentifier.FilterMediumResistanceHce); IEquationParameter K = AddVariable(fsParameterIdentifier.PracticalCakePermeability); #endregion #region Help Parameters var constantOne = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = fsValue.One }; var constantTwo = new fsCalculatorConstant(new fsParameterIdentifier("2")) { Value = new fsValue(2) }; IEquationParameter onePlusKappa = AddVariable(new fsParameterIdentifier("1 + kappa")); Equations.Add(new fsSumEquation(onePlusKappa, constantOne, kappa)); IEquationParameter oneMinusEps = AddVariable(new fsParameterIdentifier("1 - eps")); Equations.Add(new fsSumEquation(constantOne, oneMinusEps, eps)); IEquationParameter oneMinusEps0 = AddVariable(new fsParameterIdentifier("1 - eps0")); Equations.Add(new fsSumEquation(constantOne, oneMinusEps0, eps0)); IEquationParameter hcPlusTwoTimesHce = AddVariable(new fsParameterIdentifier("hc+ 2*hce")); Equations.Add(new fsSumsEquation( new[] { hcPlusTwoTimesHce }, new[] { hc, hce, hce })); #endregion #region Equations Initialization AddEquation(new fsFrom0AndDpEquation(pc, pc0, Dp, nc)); AddEquation(new fsCakeHeightFromDpTf(hc, hce, pc, kappa0, Dp, formationTime, viscosity)); Equations.Add(new fsProductsEquation( new[] { oneMinusEps0, solidsDensity, area, hc }, new[] { cm, suspensionMass })); AddEquation(new fsProductEquation(solidsMass, suspensionMass, cm)); AddEquation(new fsSumEquation(suspensionMass, solidsMass, liquidMass)); AddEquation(new fsMcFromHcEquation(mc, area, hc, solidsDensity, eps, rho)); Equations.Add(new fsProductsEquation( new[] { qmf, viscosity, hcPlusTwoTimesHce }, new[] { rho, constantTwo, pc, Dp })); Equations.Add(new fsProductsEquation( new[] { qf, viscosity, hcPlusTwoTimesHce }, new[] { constantTwo, pc, Dp })); Equations.Add(new fsProductsEquation( new[] { hc, hc }, new[] { constantTwo, kappa, Dp, formationTime, K })); Equations.Add(new fsProductsEquation( new[] { K, viscosity, hcPlusTwoTimesHce }, new[] { hc, pc })); AddEquation(new fsKfromPcAndRmEquation(K, hc, pc, viscosity, Rm)); Equations.Add(new fsProductsEquation( new[] { area, hc, onePlusKappa }, new[] { vsus, kappa })); Equations.Add(new fsProductEquation(hce, pc, Rm)); Equations.Add(new fsProductsEquation( new[] { suspensionMass, kappa }, new[] { rhosus, area, hc, onePlusKappa })); Equations.Add(new fsProductsEquation( new[] { Mf, kappa }, new[] { rho, area, hc })); Equations.Add(new fsProductsEquation( new[] { ms }, new[] { area, hc, solidsDensity, oneMinusEps })); Equations.Add(new fsProductsEquation( new[] { vf, kappa }, new[] { area, hc })); Equations.Add(new fsProductEquation(vc, area, hc)); Equations.Add(new fsProductsEquation( new[] { vs }, new[] { area, hc, oneMinusEps })); Equations.Add(new fsProductsEquation( new[] { hc, qf }, new[] { constantTwo, Dp, K })); Equations.Add(new fsProductsEquation( new[] { hc, qmf }, new[] { constantTwo, Dp, K, rho })); AddEquation(new fsDivisionInverseEquation(pc0, rc0)); AddEquation(new fsAlphaPcEquation(alpha0, pc0, eps0, solidsDensity)); AddEquation(new fsFrom0AndDpEquation(pc, pc0, Dp, nc)); AddEquation(new fsDivisionInverseEquation(pc, rc)); AddEquation(new fsAlphaPcEquation(alpha, pc, eps, solidsDensity)); #endregion }
public fsCakeWashingCalculator() { #region Parameters Initialization #region Material Parameters IEquationParameter eta = AddVariable(fsParameterIdentifier.MotherLiquidViscosity); IEquationParameter rho = AddVariable(fsParameterIdentifier.MotherLiquidDensity); IEquationParameter rhos = AddVariable(fsParameterIdentifier.SolidsDensity); IEquationParameter eps0 = AddVariable(fsParameterIdentifier.CakePorosity0); IEquationParameter rhocd0 = AddVariable(fsParameterIdentifier.DryCakeDensity0); IEquationParameter Rf0 = AddVariable(fsParameterIdentifier.CakeMoistureContentRf0); IEquationParameter eps = AddVariable(fsParameterIdentifier.CakePorosity); IEquationParameter rhocd = AddVariable(fsParameterIdentifier.DryCakeDensity); IEquationParameter Rf = AddVariable(fsParameterIdentifier.CakeMoistureContentRf); IEquationParameter ne = AddVariable(fsParameterIdentifier.Ne); IEquationParameter pc0 = AddVariable(fsParameterIdentifier.CakePermeability0); IEquationParameter rc0 = AddVariable(fsParameterIdentifier.CakeResistance0); IEquationParameter alpha0 = AddVariable(fsParameterIdentifier.CakeResistanceAlpha0); IEquationParameter pc = AddVariable(fsParameterIdentifier.CakePermeability); IEquationParameter rc = AddVariable(fsParameterIdentifier.CakeResistance); IEquationParameter alpha = AddVariable(fsParameterIdentifier.CakeResistanceAlpha); IEquationParameter K = AddVariable(fsParameterIdentifier.PracticalCakePermeability); IEquationParameter nc = AddVariable(fsParameterIdentifier.CakeCompressibility); IEquationParameter hce = AddVariable(fsParameterIdentifier.FilterMediumResistanceHce); IEquationParameter Rm = AddVariable(fsParameterIdentifier.FilterMediumResistanceRm); IEquationParameter Sw0 = AddVariable(fsParameterIdentifier.CakeSaturationSw0); IEquationParameter Rfw0 = AddVariable(fsParameterIdentifier.CakeMoistureContentRfw0); IEquationParameter fq = AddVariable(fsParameterIdentifier.PredeliquorFlowRate); IEquationParameter C0p = AddVariable(fsParameterIdentifier.CakeWashOutConcentration); IEquationParameter X0p = AddVariable(fsParameterIdentifier.CakeWashOutContentX0p); IEquationParameter xr = AddVariable(fsParameterIdentifier.RemanentWashOutContent); IEquationParameter rhow = AddVariable(fsParameterIdentifier.WashLiquidDensity); IEquationParameter etaw = AddVariable(fsParameterIdentifier.WashLiquidViscosity); IEquationParameter cw = AddVariable(fsParameterIdentifier.LiquidWashOutConcentration); IEquationParameter Dn0 = AddVariable(fsParameterIdentifier.WashIndexFor0); IEquationParameter Dn = AddVariable(fsParameterIdentifier.WashIndexFor); IEquationParameter aw1 = AddVariable(fsParameterIdentifier.AdaptationPar1); IEquationParameter aw2 = AddVariable(fsParameterIdentifier.AdaptationPar2); #endregion #region Machine Setting Parameters IEquationParameter A = AddVariable(fsParameterIdentifier.FilterArea); IEquationParameter b = AddVariable(fsParameterIdentifier.MachineWidth); IEquationParameter ns = AddVariable(fsParameterIdentifier.ns); IEquationParameter ls = AddVariable(fsParameterIdentifier.ls); IEquationParameter lsb = AddVariable(fsParameterIdentifier.ls_over_b); IEquationParameter l = AddVariable(fsParameterIdentifier.FilterLength); IEquationParameter lb = AddVariable(fsParameterIdentifier.l_over_b); IEquationParameter As = AddVariable(fsParameterIdentifier.As); IEquationParameter ttech0 = AddVariable(fsParameterIdentifier.StandardTechnicalTime); IEquationParameter ttech = AddVariable(fsParameterIdentifier.TechnicalTime); IEquationParameter lambda = AddVariable(fsParameterIdentifier.lambda); IEquationParameter u = AddVariable(fsParameterIdentifier.u); IEquationParameter n = AddVariable(fsParameterIdentifier.RotationalSpeed); IEquationParameter tc = AddVariable(fsParameterIdentifier.CycleTime); IEquationParameter hc = AddVariable(fsParameterIdentifier.CakeHeight); IEquationParameter Ms = AddVariable(fsParameterIdentifier.SolidsMass); IEquationParameter Qms = AddVariable(fsParameterIdentifier.Qms); IEquationParameter Dp = AddVariable(fsParameterIdentifier.PressureDifference); IEquationParameter w = AddVariable(fsParameterIdentifier.WashingRatioW); IEquationParameter wv = AddVariable(fsParameterIdentifier.WashingRatioWv); IEquationParameter wm = AddVariable(fsParameterIdentifier.WashingRatioWm); IEquationParameter Vw = AddVariable(fsParameterIdentifier.WashLiquidVolume); IEquationParameter Mw = AddVariable(fsParameterIdentifier.WashLiquidMass); IEquationParameter nsw = AddVariable(fsParameterIdentifier.NumberOfWashingSegments); IEquationParameter sw = AddVariable(fsParameterIdentifier.SpecificWashArea); IEquationParameter tw = AddVariable(fsParameterIdentifier.WashTime); IEquationParameter Qw = AddVariable(fsParameterIdentifier.WashLiquidVolFlowRate); IEquationParameter Qmw = AddVariable(fsParameterIdentifier.WashLiquidMassFlowRate); IEquationParameter cStar = AddVariable(fsParameterIdentifier.SpecificWashOutConcentration); IEquationParameter caStar = AddVariable(fsParameterIdentifier.SpecificAverageWashOut); IEquationParameter ccStar = AddVariable(fsParameterIdentifier.SpecificWashOutConcentrationInCake); IEquationParameter c = AddVariable(fsParameterIdentifier.WashOutConcentrationInWashfiltrate); IEquationParameter ca = AddVariable(fsParameterIdentifier.AverageWashOutConcentration); IEquationParameter cc = AddVariable(fsParameterIdentifier.WashOutConcentrationInCake); IEquationParameter xStar = AddVariable(fsParameterIdentifier.SpecificWashOutXStar); IEquationParameter x = AddVariable(fsParameterIdentifier.SpecificWashOutX); IEquationParameter X = AddVariable(fsParameterIdentifier.CakeWashOutContent); IEquationParameter wf = AddVariable(fsParameterIdentifier.SpecificWashfiltrate); IEquationParameter Vwf = AddVariable(fsParameterIdentifier.VolumeOfWashfiltrate); IEquationParameter Mwf = AddVariable(fsParameterIdentifier.MassOfWashfiltrate); IEquationParameter Vc = AddVariable(fsParameterIdentifier.CakeVolume); IEquationParameter Mc = AddVariable(fsParameterIdentifier.CakeMass); IEquationParameter Vlc = AddVariable(fsParameterIdentifier.LiquidVolumeInCake); IEquationParameter Mlc = AddVariable(fsParameterIdentifier.LiquidMassInCake); IEquationParameter Rfw = AddVariable(fsParameterIdentifier.CakeMoistureContentRfw); IEquationParameter Q = AddVariable(fsParameterIdentifier.FeedVolumeFlowRate); IEquationParameter Qm = AddVariable(fsParameterIdentifier.FeedSolidsMassFlowRate); IEquationParameter Qa = AddVariable(fsParameterIdentifier.AverageVolumeFlowRate); IEquationParameter Qma = AddVariable(fsParameterIdentifier.AverageMassFlowRate); IEquationParameter q = AddVariable(fsParameterIdentifier.SpecificVolumeFlowRate); IEquationParameter qm = AddVariable(fsParameterIdentifier.SpecificMassFlowRate); IEquationParameter qa = AddVariable(fsParameterIdentifier.SpecificAverageVolumeFlowRate); IEquationParameter qma = AddVariable(fsParameterIdentifier.SpecificAverageMassFlowRate); #endregion #region Auxiliary Parameters and Constants var constantZero = new fsCalculatorConstant(new fsParameterIdentifier("0")) { Value = fsValue.Zero }; var constantOne = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = fsValue.One }; IEquationParameter hcAddHce = AddVariable(new fsParameterIdentifier("hc + hce")); Equations.Add(new fsSumEquation(hcAddHce, hc, hce)); IEquationParameter oneMinusEps0 = AddVariable(new fsParameterIdentifier("1 - eps0")); Equations.Add(new fsSumEquation(constantOne, eps0, oneMinusEps0)); IEquationParameter oneMinusEps = AddVariable(new fsParameterIdentifier("1 - eps")); Equations.Add(new fsSumEquation(constantOne, eps, oneMinusEps)); IEquationParameter eps0Rho = AddVariable(new fsParameterIdentifier("eps0*rho")); Equations.Add(new fsProductEquation(eps0Rho, eps0, rho)); IEquationParameter epsRho = AddVariable(new fsParameterIdentifier("eps*rho")); Equations.Add(new fsProductEquation(epsRho, eps, rho)); IEquationParameter rhocd0AddEps0Rho = AddVariable(new fsParameterIdentifier("rhocd0 + eps0*rho")); Equations.Add(new fsSumEquation(rhocd0AddEps0Rho, rhocd0, eps0Rho)); IEquationParameter rhocdAddEpsRho = AddVariable(new fsParameterIdentifier("rhocd + eps*rho")); Equations.Add(new fsSumEquation(rhocdAddEpsRho, rhocd, epsRho)); IEquationParameter oneMinusXr = AddVariable(new fsParameterIdentifier("1 - xr")); Equations.Add(new fsSumEquation(constantOne, xr, oneMinusXr)); IEquationParameter oneMinusXrSw0 = AddVariable(new fsParameterIdentifier("(1 - xr)*Sw0")); Equations.Add(new fsProductEquation(oneMinusXrSw0, oneMinusXr, Sw0)); IEquationParameter xrAddoneMinusXrSw0 = AddVariable(new fsParameterIdentifier("xr + (1 - xr)*Sw0")); Equations.Add(new fsSumEquation(xrAddoneMinusXrSw0, xr, oneMinusXrSw0)); IEquationParameter invRfw0 = AddVariable(new fsParameterIdentifier("1/Rfw0")); Equations.Add(new fsDivisionInverseEquation(invRfw0, Rfw0)); IEquationParameter fractRfw0 = AddVariable(new fsParameterIdentifier("(1 - Rfw0)/Rfw0")); Equations.Add(new fsSumEquation(invRfw0, fractRfw0, constantOne)); IEquationParameter epsVc = AddVariable(new fsParameterIdentifier("eps*Vc")); Equations.Add(new fsProductEquation(epsVc, eps, Vc)); IEquationParameter nsTtech = AddVariable(new fsParameterIdentifier("ns*ttech")); Equations.Add(new fsProductEquation(nsTtech, ns, ttech)); IEquationParameter tcMinusNsTtech = AddVariable(new fsParameterIdentifier("tc - ns*ttech")); Equations.Add(new fsSumEquation(tc, nsTtech, tcMinusNsTtech)); IEquationParameter c0 = AddVariable(new fsParameterIdentifier("c0")); Equations.Add(new fsProductEquation(c0, Sw0, C0p)); IEquationParameter c0MinusCw = AddVariable(new fsParameterIdentifier("c0 - cw")); Equations.Add(new fsSumEquation(c0, c0MinusCw, cw)); IEquationParameter cStarC0MinusCw = AddVariable(new fsParameterIdentifier("(c0 - cw) * c* ")); Equations.Add(new fsProductEquation(cStarC0MinusCw, cStar, c0MinusCw)); IEquationParameter xStarOneMinusXr = AddVariable(new fsParameterIdentifier("(1 - xr) * x* ")); Equations.Add(new fsProductEquation(xStarOneMinusXr, xStar, oneMinusXr)); IEquationParameter xrX0p = AddVariable(new fsParameterIdentifier("xr*X0p")); Equations.Add(new fsProductEquation(xrX0p, xr, X0p)); IEquationParameter XMinusXrX0p = AddVariable(new fsParameterIdentifier("X - xr*X0p")); Equations.Add(new fsSumEquation(X, xrX0p, XMinusXrX0p)); IEquationParameter ccStarC0MinusCw = AddVariable(new fsParameterIdentifier("(c0 - cw) * cc*")); Equations.Add(new fsProductEquation(ccStarC0MinusCw, ccStar, c0MinusCw)); IEquationParameter caStarC0MinusCw = AddVariable(new fsParameterIdentifier("(c0 - cw) * c*")); Equations.Add(new fsProductEquation(caStarC0MinusCw, caStar, c0MinusCw)); IEquationParameter rhowf = AddVariable(new fsParameterIdentifier("rhowf")); Equations.Add(new fsIfMoreOrLessThenOneEquation(rhowf, wf, rhow, rho, rho, constantZero, rhow)); IEquationParameter etawf = AddVariable(new fsParameterIdentifier("etawf")); Equations.Add(new fsIfMoreOrLessThenOneEquation(etawf, wf, etaw, eta, eta, constantZero, etaw)); IEquationParameter sw0PowFq = AddVariable(new fsParameterIdentifier("Sw0^fq")); Equations.Add(new fsTechnicalTimeFrom0Equation(sw0PowFq, constantOne, Sw0, fq)); // It's a dirty trick, of course! IEquationParameter c3 = AddVariable(new fsParameterIdentifier("c3")); Equations.Add(new fsProductsEquation( new[] { c3, eps, hc, hcAddHce }, new[] { sw0PowFq, pc, Dp })); IEquationParameter rhowfEps = AddVariable(new fsParameterIdentifier("rhowf*eps")); Equations.Add(new fsProductEquation(rhowfEps, rhowf, eps)); IEquationParameter rhocdAddRhowfEps = AddVariable(new fsParameterIdentifier("rhocd + rhowf*eps")); Equations.Add(new fsSumEquation(rhocdAddRhowfEps, rhocd, rhowfEps)); #endregion #endregion #region Equations Initialization #region Material Parameters Equations Equations.Add(new fsProductsEquation( new[] { rhocd0 }, new[] { oneMinusEps0, rhos })); Equations.Add(new fsProductsEquation( new[] { rhocd }, new[] { oneMinusEps, rhos })); Equations.Add(new fsProductEquation(eps0Rho, Rf0, rhocd0AddEps0Rho)); Equations.Add(new fsProductEquation(epsRho, Rf, rhocdAddEpsRho)); Equations.Add(new fsFrom0AndDpEquation(eps, eps0, Dp, ne)); Equations.Add(new fsDivisionInverseEquation(rc0, pc0)); Equations.Add(new fsDivisionInverseEquation(rc, pc)); Equations.Add(new fsFrom0AndDpEquation(pc, pc0, Dp, nc)); Equations.Add(new fsProductsEquation( new[] { alpha0, rhos, oneMinusEps0, pc0 }, new[] { constantOne })); Equations.Add(new fsProductsEquation( new[] { alpha, rhos, oneMinusEps, pc }, new[] { constantOne })); Equations.Add(new fsProductsEquation( new[] { K, eta, hcAddHce }, new[] { hc, pc })); Equations.Add(new fsProductEquation(hce, Rm, pc)); Equations.Add(new fsProductsEquation( new[] { oneMinusEps, rhos }, new[] { Sw0, eps, rho, fractRfw0 })); Equations.Add(new fsProductsEquation( new[] { X0p, rhocd, oneMinusXr }, new[] { eps, xrAddoneMinusXrSw0, C0p })); /** * Modelling of the equation Dn = Dn0 * (u/u0)^(-aw1) * (hc/hc0)^aw2, * where u0 = 0.0001 m/s and hc0 = 0.01 m/s, * by means of the equation x = x0 * (p/10^5)^(-degree) settled in the class fsFrom0AndDpEquation **/ var const1e7 = new fsCalculatorConstant(new fsParameterIdentifier("1e7")) { Value = new fsValue(1e7) }; var const1e9 = new fsCalculatorConstant(new fsParameterIdentifier("1e9")) { Value = new fsValue(1e9) }; IEquationParameter v1 = AddVariable(new fsParameterIdentifier("u*10^9")); Equations.Add(new fsProductEquation(v1, u, const1e9)); IEquationParameter v2 = AddVariable(new fsParameterIdentifier("Dn0*(u/u0)^(-aw1)")); Equations.Add(new fsFrom0AndDpEquation(v2, Dn0, v1, aw1)); IEquationParameter v3 = AddVariable(new fsParameterIdentifier("hc*10^7")); Equations.Add(new fsProductEquation(v3, hc, const1e7)); IEquationParameter v4 = AddVariable(new fsParameterIdentifier("-aw2")); Equations.Add(new fsSumEquation(constantZero, v4, aw2)); Equations.Add(new fsFrom0AndDpEquation(Dn, v2, v3, v4)); Equations.Add(new fsProductsEquation( // This equation needs to be discussed as to the possible status "calculated" for u and Dp (only input parameter!) new[] { u, eps, etaw, hcAddHce }, new[] { pc, Dp })); #endregion #region Machine Setting Parameters Equations Equations.Add(new fsProductsEquation( new[] { b, ns, ls }, new[] { A })); Equations.Add(new fsProductEquation(ls, lsb, b)); Equations.Add(new fsProductEquation(l, lb, b)); Equations.Add(new fsProductEquation(l, ns, ls)); Equations.Add(new fsProductEquation(As, ls, b)); Equations.Add(new fsTechnicalTimeFrom0Equation(ttech, ttech0, As, lambda)); Equations.Add(new fsProductEquation(u, l, n)); Equations.Add(new fsDivisionInverseEquation(tc, n)); Equations.Add(new fsProductsEquation( new[] { A, rhos, oneMinusEps, hc }, new[] { Ms })); Equations.Add(new fsProductEquation(Ms, Qms, tc)); Equations.Add(new fsProductsEquation( new[] { w, eps }, new[] { oneMinusEps, rhos, wv })); Equations.Add(new fsProductsEquation( new[] { w, rhow, eps }, new[] { rhos, oneMinusEps, wm })); Equations.Add(new fsProductsEquation( new[] { eps, A, hc, w }, new[] { Vw })); Equations.Add(new fsProductEquation(Mw, rhow, Vw)); Equations.Add(new fsProductEquation(nsw, ns, sw)); Equations.Add(new fsProductEquation(tw, sw, tcMinusNsTtech)); Equations.Add(new fsSumsEquation( new[] { wf, constantOne }, new[] { w, Sw0 })); Equations.Add(new fsProductEquation(Vw, Qw, tc)); Equations.Add(new fsProductEquation(Qmw, rhow, Qw)); Equations.Add(new fsSumEquation(c, cStarC0MinusCw, cw)); Equations.Add(new fsSumEquation(x, xr, xStarOneMinusXr)); Equations.Add(new fsProductEquation(X, X0p, x)); Equations.Add(new fsProductsEquation( new[] { eps, cc }, new[] { rhocd, XMinusXrX0p })); Equations.Add(new fsSumEquation(cc, ccStarC0MinusCw, cw)); Equations.Add(new fsSumEquation(ca, caStarC0MinusCw, cw)); Equations.Add(new fsCstarDnWfEquation(cStar, Dn, wf)); Equations.Add(new fsXstarDnWfEquation(xStar, Dn, wf)); Equations.Add(new fsCaDnCwWfEquation(ca, cw, c0, Dn, wf)); Equations.Add(new fsWfTwEquation(wf, tw, c3, etaw, eta)); Equations.Add(new fsCaWfXstarEquation(ca, xStar, cw, c0, wf)); Equations.Add(new fsIfMoreOrLessThenOneEquation(Vwf, wf, epsVc, constantZero, constantZero, epsVc, constantZero)); Equations.Add(new fsProductsEquation( new[] { eps, c3, Vc }, new[] { Q, etawf })); Equations.Add(new fsProductsEquation( new[] { rhowf, eps, Vc }, new[] { Mlc })); Equations.Add(new fsMwfVcWfEquation(Mwf, eps, Vc, rhow, rho, wf)); Equations.Add(new fsProductEquation(Qm, rhowf, Q)); Equations.Add(new fsProductEquation(Mc, rhocdAddRhowfEps, Vc)); Equations.Add(new fsProductEquation(Vc, A, hc)); Equations.Add(new fsProductEquation(Vlc, eps, Vc)); Equations.Add(new fsProductEquation(Mlc, Rfw, Mc)); Equations.Add(new fsProductEquation(Vwf, Qa, tc)); Equations.Add(new fsProductEquation(Mwf, Qma, tc)); Equations.Add(new fsProductEquation(Q, q, A)); Equations.Add(new fsProductEquation(Qm, qm, A)); Equations.Add(new fsProductEquation(Qa, qa, A)); Equations.Add(new fsProductEquation(Qma, qma, A)); #endregion #endregion }
public fsHydrocycloneCalculator() { #region Parameters Initialization IEquationParameter etaf = AddConstant(fsParameterIdentifier.MotherLiquidViscosity); IEquationParameter rhoS = AddConstant(fsParameterIdentifier.SolidsDensity); IEquationParameter rhoF = AddConstant(fsParameterIdentifier.MotherLiquidDensity); IEquationParameter rhoSus = AddConstant(fsParameterIdentifier.SuspensionDensity); IEquationParameter cv = AddConstant(fsParameterIdentifier.SuspensionSolidsVolumeFraction); IEquationParameter cm = AddConstant(fsParameterIdentifier.SuspensionSolidsMassFraction); IEquationParameter xG = AddVariable(fsParameterIdentifier.xg); IEquationParameter sigmaG = AddVariable(fsParameterIdentifier.sigma_g); IEquationParameter sigmaS = AddVariable(fsParameterIdentifier.sigma_s); IEquationParameter rf = AddVariable(fsParameterIdentifier.rf); IEquationParameter DuOverD = AddVariable(fsParameterIdentifier.DuOverD); IEquationParameter xRed50 = AddVariable(fsParameterIdentifier.ReducedCutSize); IEquationParameter D = AddVariable(fsParameterIdentifier.MachineDiameter); IEquationParameter numberOfCyclones = AddVariable(fsParameterIdentifier.NumberOfCyclones); IEquationParameter Dp = AddVariable(fsParameterIdentifier.PressureDifference); IEquationParameter Q = AddVariable(fsParameterIdentifier.FeedVolumeFlowRate); IEquationParameter Qm = AddVariable(fsParameterIdentifier.FeedSolidsMassFlowRate); IEquationParameter Qms = AddVariable(fsParameterIdentifier.Qms); IEquationParameter Cu = AddVariable(fsParameterIdentifier.UnderflowSolidsConcentration); IEquationParameter Co = AddVariable(fsParameterIdentifier.OverflowSolidsConcentration); IEquationParameter C = AddConstant(fsParameterIdentifier.SuspensionSolidsConcentration); IEquationParameter ReducedTotalEfficiency = AddVariable(fsParameterIdentifier.ReducedTotalEfficiency); IEquationParameter TotalEfficiency = AddVariable(fsParameterIdentifier.TotalEfficiency); IEquationParameter StokesNumber = AddVariable(fsParameterIdentifier.StokesNumber); IEquationParameter EulerNumber = AddVariable(fsParameterIdentifier.EulerNumber); IEquationParameter ReynoldsNumber = AddVariable(fsParameterIdentifier.ReynoldsNumber); IEquationParameter v = AddVariable(fsParameterIdentifier.AverageVelocity); IEquationParameter alpha1 = AddVariable(fsParameterIdentifier.Alpha1); IEquationParameter alpha2 = AddVariable(fsParameterIdentifier.Alpha2); IEquationParameter alpha3 = AddVariable(fsParameterIdentifier.Alpha3); IEquationParameter beta1 = AddVariable(fsParameterIdentifier.Beta1); IEquationParameter beta2 = AddVariable(fsParameterIdentifier.Beta2); IEquationParameter beta3 = AddVariable(fsParameterIdentifier.Beta3); IEquationParameter gamma1 = AddVariable(fsParameterIdentifier.Gamma1); IEquationParameter gamma2 = AddVariable(fsParameterIdentifier.Gamma2); IEquationParameter gamma3 = AddVariable(fsParameterIdentifier.Gamma3); IEquationParameter LOverD = AddVariable(fsParameterIdentifier.bigLOverD); IEquationParameter lOverD = AddVariable(fsParameterIdentifier.smallLOverD); IEquationParameter DiOverD = AddVariable(fsParameterIdentifier.DiOverD); IEquationParameter DoOverD = AddVariable(fsParameterIdentifier.DoOverD); IEquationParameter L = AddVariable(fsParameterIdentifier.CycloneLength); IEquationParameter l = AddVariable(fsParameterIdentifier.LengthOfCylindricalPart); IEquationParameter Di = AddVariable(fsParameterIdentifier.InletDiameter); IEquationParameter Do = AddVariable(fsParameterIdentifier.OutletDiameter); IEquationParameter Du = AddVariable(fsParameterIdentifier.UnderflowDiameter); IEquationParameter Qo = AddVariable(fsParameterIdentifier.OverflowVolumeFlowRate); IEquationParameter Qu = AddVariable(fsParameterIdentifier.UnderflowVolumeFlowRate); IEquationParameter Qmo = AddVariable(fsParameterIdentifier.OverflowMassFlowRate); IEquationParameter Qmu = AddVariable(fsParameterIdentifier.UnderflowMassFlowRate); IEquationParameter Qso = AddVariable(fsParameterIdentifier.OverflowSolidsMassFlowRate); IEquationParameter Qsu = AddVariable(fsParameterIdentifier.UnderflowSolidsMassFlowRate); IEquationParameter cmo = AddVariable(fsParameterIdentifier.OverflowSolidsMassFraction); IEquationParameter cmu = AddVariable(fsParameterIdentifier.UnderflowSolidsMassFraction); IEquationParameter cvo = AddVariable(fsParameterIdentifier.OverflowSolidsVolumeFraction); IEquationParameter cvu = AddVariable(fsParameterIdentifier.UnderflowSolidsVolumeFraction); #region Help Parameters and Constants var constantOne = new fsCalculatorConstant(new fsParameterIdentifier("1")) { Value = fsValue.One }; var constantTwo = new fsCalculatorConstant(new fsParameterIdentifier("2")) { Value = new fsValue(2) }; var constantFour = new fsCalculatorConstant(new fsParameterIdentifier("4")) { Value = new fsValue(4) }; var constantEighteen = new fsCalculatorConstant(new fsParameterIdentifier("18")) { Value = new fsValue(18) }; var constantPi = new fsCalculatorConstant(new fsParameterIdentifier("Pi")) { Value = new fsValue(Math.PI) }; IEquationParameter rhoSMinusRhoF = AddVariable(new fsParameterIdentifier("rho_s - rho_f")); Equations.Add(new fsSumEquation(rhoS, rhoF, rhoSMinusRhoF)); IEquationParameter rhoSusOverflow = AddVariable(new fsParameterIdentifier("rho_sus_overflow")); IEquationParameter rhoSusUnderflow = AddVariable(new fsParameterIdentifier("rho_sus_underflow")); #endregion #endregion #region Equations Initialization Equations.Add(new fsProductEquation(Qm, Q, rhoSus)); Equations.Add(new fsProductEquation(Qms, Qm, cm)); Equations.Add(new fsReducedTotalEfficiencyEquation(ReducedTotalEfficiency, xG, xRed50, sigmaG, sigmaS)); Equations.Add(new fsTotalEfficiencyEquation(TotalEfficiency, rf, ReducedTotalEfficiency)); Equations.Add(new fsProductEquation(Qu, rf, Q)); Equations.Add(new fsCUnderflowEquation(Cu, C, rf, ReducedTotalEfficiency)); Equations.Add(new fsCOverflowEquation(Co, C, ReducedTotalEfficiency)); Equations.Add(new fsDFromxRed50QnDuOverDEquation(D, xRed50, Q, numberOfCyclones, DuOverD, rhoS, rhoF, etaf, cv, alpha1, alpha2, alpha3, beta1, beta2, beta3, gamma1, gamma2, gamma3)); Equations.Add(new fsProductsEquation( new[] { v, constantPi, D, D, numberOfCyclones }, new[] { constantFour, Q })); Equations.Add(new fsProductsEquation( new[] { StokesNumber, constantEighteen, etaf, D }, new[] { xRed50, xRed50, rhoSMinusRhoF, v })); Equations.Add(new fsProductsEquation( new[] { EulerNumber, rhoF, v, v }, new[] { constantTwo, Dp })); Equations.Add(new fsProductsEquation( new[] { ReynoldsNumber, etaf }, new[] { rhoF, D, v })); Equations.Add(new fsDFromxRed50QnRfEquation(D, xRed50, rhoS, rhoF, Q, etaf, numberOfCyclones, cv, rf, alpha1, alpha2, alpha3, beta1, beta2, beta3)); Equations.Add(new fsDuOverDrfEuEquation(DuOverD, rf, EulerNumber, gamma1, gamma2, gamma3)); Equations.Add(new fsEulerReynoldsConnectionEquation(EulerNumber, ReynoldsNumber, cv, beta1, beta2, beta3)); Equations.Add(new fsReynoldsFromXRed50Equation(ReynoldsNumber, xRed50, rhoS, rhoF, etaf, Dp, rf, cv, alpha1, alpha2, alpha3)); Equations.Add(new fsvDuOverDxRed50Equation(v, DuOverD, xRed50, rhoS, rhoF, etaf, Dp, cv, alpha1, alpha2, alpha3, beta1, beta2, beta3, gamma1, gamma2, gamma3)); Equations.Add(new fsQnDpDEquation(Q, Dp, numberOfCyclones, D, rhoF, etaf, cv, beta1, beta2, beta3)); Equations.Add(new fsProductEquation(L, LOverD, D)); Equations.Add(new fsProductEquation(l, lOverD, D)); Equations.Add(new fsProductEquation(Di, DiOverD, D)); Equations.Add(new fsProductEquation(Do, DoOverD, D)); Equations.Add(new fsProductEquation(Du, DuOverD, D)); Equations.Add(new fsProductEquation(Qu, rf, Q)); Equations.Add(new fsSumEquation(Q, Qo, Qu)); Equations.Add(new fsQmFromQCEquation(Qmo, Qo, Co, rhoF, rhoS)); Equations.Add(new fsQmFromQCEquation(Qmu, Qu, Cu, rhoF, rhoS)); Equations.Add(new fsProductEquation(Qsu, Qu, Cu)); Equations.Add(new fsProductEquation(Qso, Qo, Co)); Equations.Add(new fsConcentrationEquation(Co, rhoF, rhoS, rhoSusOverflow)); Equations.Add(new fsConcentrationEquation(Cu, rhoF, rhoS, rhoSusUnderflow)); Equations.Add(new fsMassConcentrationEquation(cmu, rhoF, rhoS, rhoSusUnderflow)); Equations.Add(new fsMassConcentrationEquation(cmo, rhoF, rhoS, rhoSusOverflow)); Equations.Add(new fsVolumeConcentrationEquation(cvu, rhoF, rhoS, rhoSusUnderflow)); Equations.Add(new fsVolumeConcentrationEquation(cvo, rhoF, rhoS, rhoSusOverflow)); #endregion }