Ejemplo n.º 1
0
        //private double[] conversion = new double[6];

        private void getConversionParameters(IComponent component, out DefectParameters dfA, out DefectParameters dfB, out DefectParameters dfC, out DefectParameters free)
        {
            double lambdaA;
            double lambdaB;
            double lambdaC;
            double lambdaBulk;
            double kappaA, kappaB, kappaC;

            //tauA
            dfA.t = Math.Abs(component[1].Value);
            if (dfA.t > 1e-30) //taua
            {
                lambdaA = 1 / dfA.t;
            }
            else
            {
                lambdaA = 0;
            }

            //tauB
            dfB.t = Math.Abs(component[2].Value);
            if (dfB.t > 1e-30) //taua
            {
                lambdaB = 1 / dfB.t;
            }
            else
            {
                lambdaB = 0;
            }

            //tauC
            dfC.t = Math.Abs(component[3].Value);
            if (dfC.t > 1e-30) //taua
            {
                lambdaC = 1 / dfC.t;
            }
            else
            {
                lambdaC = 0;
            }

            //tauFree
            free.t = Math.Abs(component[7].Value);
            if (free.t > 1e-30) //taua
            {
                lambdaBulk = 1 / free.t;
            }
            else
            {
                lambdaBulk = 0;
            }

            //kappaA
            if (Math.Abs(component[4].Value) > 1e+10)
            {
                kappaA = 1e+10;
            }
            else
            {
                kappaA = Math.Abs(component[4].Value);
            }
            //kappaB
            if (Math.Abs(component[5].Value) > 1e+10)
            {
                kappaB = 1e+10;
            }
            else
            {
                kappaB = Math.Abs(component[5].Value);
            }
            //kappaC
            if (Math.Abs(component[6].Value) > 1e+10)
            {
                kappaC = 1e+10;
            }
            else
            {
                kappaC = Math.Abs(component[6].Value);
            }
            //lambdaEf = lambdaBulk + kappaA + kappaB
            double lambdaEf = lambdaBulk + kappaA + kappaB + kappaC;

            //intA
            if (Math.Abs(lambdaEf - lambdaA) > 1e-30)
            {
                dfA.i = kappaA / (lambdaEf - lambdaA);
            }
            else
            {
                dfA.i = 1;
            }
            //intB
            if (Math.Abs(lambdaEf - lambdaB) > 1e-30)
            {
                dfB.i = kappaB / (lambdaEf - lambdaB);
            }
            else
            {
                dfB.i = 1;
            }
            //intC
            if (Math.Abs(lambdaEf - lambdaC) > 1e-30)
            {
                dfC.i = kappaC / (lambdaEf - lambdaC);
            }
            else
            {
                dfC.i = 1;
            }

            //intFree = 1 - intA - intB
            //conversion[4] = 1 - conversion[0] - conversion[2];
            if (lambdaEf > 1e-30)
            {
                free.t = 1 / lambdaEf;
            }
            else
            {
                free.t = 0;
            }
            free.i = 1 - dfA.i - dfB.i - dfC.i;
        }
Ejemplo n.º 2
0
        //private double[] conversion = new double[6];

        private void getConversionParameters(IComponent component, out DefectParameters trapp, out DefectParameters oPs, out DefectParameters pPs, out DefectParameters free)
        {
            double lambdaT;
            double lambdaPick;
            double lambdaFree;
            double lambdaoPs, lambdapPs;
            double kappa, mu;
            double tauPick;

            //tauT
            trapp.t = Math.Abs(component["tauT"].Value);
            if (trapp.t > 1e-30) //taua
            {
                lambdaT = 1 / trapp.t;
            }
            else
            {
                lambdaT = 0;
            }

            tauPick = Math.Abs(component["tauPick"].Value);
            if (tauPick > 1e-30)
            {
                lambdaPick = 1 / tauPick;
            }
            else
            {
                lambdaPick = 0;
            }
            //tau ortho-Ps
            lambdaoPs = lambdaPick + 1 / 142;
            oPs.t     = 1 / lambdaoPs;

            //tau para-Ps
            lambdapPs = lambdaPick + 1 / 0.124;
            pPs.t     = 1 / lambdapPs;

            //tauFree
            free.t = Math.Abs(component["taufree"].Value);
            if (free.t > 1e-30) //taua
            {
                lambdaFree = 1 / free.t;
            }
            else
            {
                lambdaFree = 0;
            }

            //kappa
            if (Math.Abs(component["kappa"].Value) > 1e+10)
            {
                kappa = 1e+10;
            }
            else
            {
                kappa = Math.Abs(component["kappa"].Value);
            }
            //mu
            if (Math.Abs(component["mu"].Value) > 1e+10)
            {
                mu = 1e+10;
            }
            else
            {
                mu = Math.Abs(component["mu"].Value);
            }

            //lambdaEf = lambdaBulk + kappaA + kappaB
            double lambdaEf = lambdaFree + kappa + mu;

            //intTrapp
            if (Math.Abs(lambdaEf - lambdaT) > 1e-30)
            {
                trapp.i = mu / (lambdaEf - lambdaT);
            }
            else
            {
                trapp.i = 1; //todo : inna intensywność (?)
            }
            //ortho-Ps
            if (Math.Abs(lambdaEf - lambdaoPs) > 1e-30)
            {
                oPs.i = 0.75 * kappa / (lambdaEf - lambdaoPs);
            }
            else
            {
                oPs.i = 1;
            }

            //para-Ps
            if (Math.Abs(lambdaEf - lambdapPs) > 1e-30)
            {
                pPs.i = 0.25 * kappa / (lambdaEf - lambdapPs);
            }
            else
            {
                pPs.i = 1;
            }

            //intFree = 1 - intA - intB
            //conversion[4] = 1 - conversion[0] - conversion[2];
            if (lambdaEf > 1e-30)
            {
                free.t = 1 / lambdaEf;
            }
            else
            {
                free.t = 0;
            }

            free.i = (lambdaFree - pPs.i * lambdapPs - oPs.i * lambdaoPs - trapp.i * lambdaT) / lambdaEf;
        }