Example #1
0
        public Variable ActivityCoefficient(ThermodynamicSystem system, Variable g, Variable T, List <Variable> x, int index)
        {
            Expression liquidPart = null;

            switch (system.EquilibriumMethod.EquilibriumApproach)
            {
            case EquilibriumApproach.GammaPhi:
                switch (system.EquilibriumMethod.Activity)
                {
                case ActivityMethod.UNIQUAC:
                {
                    var gamma = new ActivityCoefficientUNIQUAC(system, T, x, index);
                    liquidPart = gamma;
                    break;
                }

                case ActivityMethod.NRTL:
                {
                    var gamma = new ActivityCoefficientNRTL(system, T, x, index);
                    liquidPart = gamma;
                    break;
                }

                case ActivityMethod.Wilson:
                {
                    var gamma = new ActivityCoefficientWilson(system, T, x, index);
                    liquidPart = gamma;
                    break;
                }

                default:
                    liquidPart = 1.0;
                    break;
                }

                break;

            case EquilibriumApproach.PhiPhi:
            {
                switch (system.EquilibriumMethod.EquationOfState)
                {
                case EquationOfState.SoaveRedlichKwong:
                    liquidPart = 1.0;
                    break;

                default:
                    throw new NotSupportedException("Only SoaveRedlichKwong allowed");
                }
                break;
            }
            }
            g.Subscript = system.Components[index].ID;
            g.BindTo(liquidPart);
            return(g);
        }
Example #2
0
        public Variable EquilibriumCoefficientLLE(ThermodynamicSystem system, Variable K, Variable T, Variable p, List <Variable> x1, List <Variable> x2, int index)
        {
            Expression liquid1Part      = null;
            Expression liquid2Part      = null;
            var        currentComponent = system.Components[index];

            if (String.IsNullOrEmpty(K.Subscript))
            {
                K.Subscript = system.Components[index].ID;
            }

            switch (system.EquilibriumMethod.EquilibriumApproach)
            {
            case EquilibriumApproach.GammaPhi:
                switch (system.EquilibriumMethod.Activity)
                {
                case ActivityMethod.UNIQUAC:
                {
                    liquid1Part = new ActivityCoefficientUNIQUAC(system, T, x1, index);
                    liquid2Part = new ActivityCoefficientUNIQUAC(system, T, x2, index);
                    K.BindTo(liquid2Part / liquid1Part);
                    break;
                }

                case ActivityMethod.NRTL:
                {
                    liquid1Part = new ActivityCoefficientNRTL(system, T, x1, index);
                    liquid2Part = new ActivityCoefficientNRTL(system, T, x2, index);
                    K.BindTo(liquid2Part / liquid1Part);
                    break;
                }

                case ActivityMethod.Wilson:
                    throw new NotSupportedException("Cannot calculate LLE with Wilson Activity Coefficient Model");

                default:
                    throw new NotSupportedException("Cannot calculate LLE without Activity Coefficient Model");
                }

                break;

            case EquilibriumApproach.PhiPhi:
            {
                throw new NotSupportedException("Only Activity Coefficient Models allowed for LLE");
            }
            }
            return(K);
        }
Example #3
0
        public Variable EquilibriumCoefficient(ThermodynamicSystem system, Variable K, Variable T, Variable p, List <Variable> x, List <Variable> y, int index)
        {
            Expression liquidPart = null;
            Expression vaporPart  = p;

            var currentComponent = system.Components[index];

            if (String.IsNullOrEmpty(K.Subscript))
            {
                K.Subscript = system.Components[index].ID;
            }

            switch (system.EquilibriumMethod.EquilibriumApproach)
            {
            case EquilibriumApproach.GammaPhi:
                switch (system.EquilibriumMethod.Activity)
                {
                case ActivityMethod.UNIQUAC:
                {
                    var gamma = new ActivityCoefficientUNIQUAC(system, T, x, index);
                    if (currentComponent.IsInert)
                    {
                        liquidPart = new MixtureHenryCoefficient(system, T, x, index);
                    }
                    else
                    {
                        liquidPart = gamma * GetVaporPressure(system, currentComponent, T);
                    }
                    K.BindTo(liquidPart / vaporPart);
                    break;
                }

                case ActivityMethod.NRTL:
                {
                    var gamma = new ActivityCoefficientNRTL(system, T, x, index);

                    if (currentComponent.IsInert)
                    {
                        liquidPart = new MixtureHenryCoefficient(system, T, x, index);
                    }
                    else
                    {
                        liquidPart = gamma * GetVaporPressure(system, currentComponent, T);
                    }
                    K.BindTo(liquidPart / vaporPart);
                    break;
                }

                case ActivityMethod.Wilson:
                {
                    var gamma = new ActivityCoefficientWilson(system, T, x, index);
                    liquidPart = gamma * GetVaporPressure(system, currentComponent, T);
                    K.BindTo(liquidPart / vaporPart);
                    break;
                }

                default:
                    //liquidPart = GetVaporPressure(system, currentComponent, T);
                    if (currentComponent.IsInert)
                    {
                        liquidPart = new MixtureHenryCoefficient(system, T, x, index);
                    }
                    else
                    {
                        liquidPart = GetVaporPressure(system, currentComponent, T);
                    }

                    K.BindTo(liquidPart / vaporPart);
                    break;
                }

                break;

            case EquilibriumApproach.PhiPhi:
            {
                switch (system.EquilibriumMethod.EquationOfState)
                {
                case EquationOfState.SoaveRedlichKwong:
                    var eos = new K_EOS_SRK(system, T, p, x, y, index);
                    K.BindTo(eos);
                    break;

                default:
                    throw new NotSupportedException("Only SoaveRedlichKwong allowed");
                }
                break;
            }
            }



            return(K);
        }