public void AddConstraints(params Equation[] constr) { foreach (var constraint in constr) { Equations.Add(constraint); } }
public void Handle(WizardEvent <BudgetEquationWizardVM> message) { if (EquationToEdit != null && message.Status == WizardStatus.OK) { SuppressEvent = true; SaveEquation(message.Model.Equation); var equation = Equations.FirstOrDefault(x => x.Id == message.Model.Equation.Id); if (equation != null) { equation.Name = message.Model.Equation.Name; equation.IsVisible = message.Model.Equation.IsVisible; equation.Items.Clear(); equation.Items.AddRange(message.Model.Equation.Items); BudgetCalculatorEvaluator.Refresh(equation); equation.Refresh(); } else { Equations.Add(message.Model.Equation); } BudgetCalculatorEvaluator.Refresh(message.Model.Equation); SuppressEvent = false; } }
public void AppendFromFile(string patch) { var result = Load(patch); foreach (var equation in result) { Equations.Add(equation); } }
private void TestInit() { Equations.Add(new Equation() { Name = "First Test Equation", LateX = @" \left(x^2 + 2 \cdot x + 2\right) = 0" }); Equations.Add(new Equation() { Name = "Second Test Equation", LateX = @"F(x) = \int^a_b \frac{1}{3}x^3" }); }
private void initializePopulation() { for (int i = 0; i < populationSize; i++) { EF_Equation equation = EquationMaker.Instance.MakeEquation(inputs, type, maxValue, minValue); Equations.Add(equation); //Console.Out.WriteLine(equation.PrettyName); } this.PopulationCount = 1; }
private void AddNewEquation() { if (Equations.Count > 0) { Equations[Equations.Count - 1].IsLastItemInList = false; } // Cap equations at 14 if (Equations.Count >= maxEquationSize) { return; } int colorIndex; if (m_accessibilitySettings.HighContrast) { m_lastLineColorIndex = (m_lastLineColorIndex + 1) % AvailableColors.Count; colorIndex = m_lastLineColorIndex; } else { bool[] colorAssignmentUsed = new bool[colorCount]; foreach (var equation in Equations) { colorAssignmentUsed[equation.LineColorIndex] = true; } colorIndex = 0; // If for some reason all of the values in colorAssignmentUsed are true, the check for colorIndex < colorCount - 1 will // set it to the last color in the list while (colorIndex < colorCount - 1 && colorAssignmentUsed[colorAssignmentMapping[colorIndex]]) { colorIndex++; } colorIndex = colorAssignmentMapping[colorIndex]; } var eq = new EquationViewModel(new Equation(), ++m_lastFunctionLabelIndex, AvailableColors[colorIndex].Color, colorIndex); eq.IsLastItemInList = true; m_equationToFocus = eq; Equations.Add(eq); }
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 void LoadFromFile(string patch) { if (Equations.Any()) { Equations.Clear(); } if (Series.Any()) { Series.Clear(); } var result = Load(patch); foreach (var equation in result) { Equations.Add(equation); } }
public Snapshot(string name, EquationSystem problem) : this() { Name = name; if (problem != null) { foreach (var variable in problem.Variables) { Variables.Add(variable.Copy() as Variable); } foreach (var variable in problem.DefinedVariables) { Expressions.Add(variable.Copy() as Variable); } foreach (var eq in problem.Equations) { Equations.Add(eq.Copy() as Equation); } } }
public void CreateNormalFromPoint(double x, double y) { var equation = FindByPoint(x, y); var derStr = "der(" + equation.StrExpression + "," + equation.VariableName + ")"; var derivativeExpression = new Expression(derStr); var argument = new Argument(equation.VariableName, x); derivativeExpression.addArguments(argument); var derivativeResult = derivativeExpression.calculate(); var tangentumEqStr = y.ToString(CultureInfo.InvariantCulture) + "+(-1/" + derivativeResult.ToString(CultureInfo.InvariantCulture) + ")*(x-(" + x.ToString(CultureInfo.InvariantCulture) + "))"; var tangentumEqModel = CreateEquation(tangentumEqStr); Equations.Add(tangentumEqModel); }
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 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 void AddEquation(long equation) { Equations.Add(equation); }
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 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 }
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 void AddEquation(string equation) { var eqn = new LinearEquation(equation); Equations.Add(eqn); }