Exemple #1
0
        public void CalcularQMOMMCCoyTeste()
        {
            double passoDeTempo = 0.01;
            int numeroDePassosDeTempo = 1100;
            double t0 = 0.0;
            const int numeroDePontos = 8;
            const double limiteMinimo = 125.0;
            double limiteMaximo = Double.MaxValue;

            Integral.Funcao funcaoInicial = FuncaoMcCoy;

            QMoM.TermoFonteQMoM termoFonteQMoM = TermoFonteQMOMMcCoy;
            QMoM qmom = new QMoM(numeroDePassosDeTempo, passoDeTempo, t0, numeroDePontos, funcaoInicial,
                limiteMinimo, limiteMaximo, termoFonteQMoM);

            List<double[]> momentos = qmom.CalcularMomentos();

            //Loop do cálculo da concentração a partir dos momentos

            double[] alfa = new double[numeroDePassosDeTempo];
            double[] beta = new double[numeroDePassosDeTempo];
            List<double[]> concentracao = new List<double[]>();

            for (int t = 0; t < numeroDePassosDeTempo; t++)
            {
                CalcularAlfaEBeta(momentos[t], out alfa[t], out beta[t]);
                concentracao.Add(CalcularConcentracao(alfa[t], beta[t]));
            }

            CriarScripParaMatlabMomentos(@"QMoMMcCoy\momentosMcCoyQmom", qmom.Passos, momentos, 100);
            CriarScripParaMatlabConcentracao(@"QMoMMcCoy\concentracaoMcCoyQmom", qmom.Passos, concentracao);
            CriarScripParaMatlabAlfaBeta(@"QMoMMcCoy\alfaQMOM", qmom.Passos, alfa);
            CriarScripParaMatlabAlfaBeta(@"QMoMMcCoy\betaQMOM", qmom.Passos, beta);
        }
Exemple #2
0
        public void CalcularQMOMReacaoHidrogenacaoEspecieBPrimeiraOrdemTeste()
        {
            const double passoDeTempo = 0.001;
            const int numeroDePassosDeTempo = 100;
            const int numeroDePontos = numeroDePontosHidrogenacao;
            const double t0 = 0.0;
            const double limiteMinimo = 0.001;
            const double limiteMaximo = Double.MaxValue;

            Integral.Funcao funcaoInicialEspecieB = FuncaoReacaoHidrogenacaoEspecieBPrimeiraOrdem;

            var momentosAnaliticos = CalcularMomentosAnaliticosEspecieBHidrogenacao(numeroDePassosDeTempo, t0, passoDeTempo,
                limiteMaximo, limiteMinimo, numeroDePontos);

            QMoM.TermoFonteQMoM termoFonteQMoMEspecieB = TermoFonteQMOMEspecieBHidrogenacao;
            QMoM qmomEspecieB = new QMoM(numeroDePassosDeTempo, passoDeTempo, t0, numeroDePontos, funcaoInicialEspecieB,
                limiteMinimo, limiteMaximo, termoFonteQMoMEspecieB);

            Integral.Funcao funcaoInicialEspecieA = FuncaoReacaoHidrogenacaoEspecieAPrimeiraOrdem;

            QMoM.TermoFonteQMoM termoFonteQMoMEspecieA = TermoFonteQMOMEspecieAHidrogenacao;
            QMoM qmomEspecieA = new QMoM(numeroDePassosDeTempo, passoDeTempo, t0, numeroDePontos, funcaoInicialEspecieA,
                limiteMinimo, limiteMaximo, termoFonteQMoMEspecieA);

            List<double[]> momentosEspecieA = qmomEspecieA.CalcularMomentos();

            List<double[]> abscissasEspecieA = new List<double[]>(momentosEspecieA.Count);
            List<double[]> pesosEspecieA = new List<double[]>(momentosEspecieA.Count);

            for (int i = 0; i < momentosEspecieA.Count; i++)
            {
                double[] pesos;
                double[] abscissas;

                MomentosBase.CalcularPesosEAbscissas(MomentosBase.MetodoCoeficientesDosMomentos.PDA, momentosEspecieA[i],out pesos,out abscissas);

                abscissasEspecieA.Add(abscissas);
                pesosEspecieA.Add(pesos);
            }

            qmomEspecieB.DecorarAbscissas = delegate(double[] abscissas, double t)
            {
                double[] abscissasDecoradas = new double[abscissas.Length];

                //for (int i = 0; i < abscissasDecoradas.Length; i++)
                //{
                //    abscissasDecoradas[i] = abscissasEspecieA[indiceTempo][i] +
                //                            FuncaoDelta(abscissasEspecieA[indiceTempo][i]);
                //}
                throw new NotImplementedException("Não implementada a correção");

                return abscissasDecoradas;
            };

            qmomEspecieB.DecorarPesos = delegate(double[] pesos, double t)
            {
                double[] pesosDecorados = new double[pesos.Length];

                int b = 1;

                //for (int i = 0; i < pesosDecorados.Length; i++)
                //{
                //    pesosDecorados[i] = pesosEspecieA[indiceTempo][i] * Math.Pow(abscissasEspecieA[indiceTempo][i],b);
                //}

                throw new NotImplementedException("Não implementada a correção");

                return pesosDecorados;
            };

            List<double[]> momentosEspecieB = qmomEspecieB.CalcularMomentos();

            double[] tempo = new double[numeroDePassosDeTempo];

            tempo[0] = t0;

            for (int i = 0; i < numeroDePassosDeTempo; i++)
            {
                if (i > 0) tempo[i] = tempo[i - 1] + passoDeTempo;
            }

            CriarScripParaMatlabMomentos(@"QMoMHidrogenacao\momentosAnaliticosEspecieBHidrogenacao", tempo, momentosAnaliticos, 1);
            CriarScripParaMatlabMomentos(@"QMoMHidrogenacao\momentosEspecieBHidrogenacao", tempo, momentosEspecieB, 1);
        }
Exemple #3
0
        public void Hidrogenacao_EspecieA_PDA()
        {
            const double passoDeTempo = 0.01;
            const int numeroDePassosDeTempo = 2;
            int numeroDePontos = numeroDePontosHidrogenacao;
            const double t0 = 0.0;
            const double limiteMinimo = 0.0001;
            const double limiteMaximo = Double.MaxValue;

            Integral.Funcao funcaoInicial = FuncaoReacaoHidrogenacaoEspecieAPrimeiraOrdem;

            QMoM.TermoFonteQMoM termoFonteQMoM = TermoFonteQMOMEspecieAHidrogenacao;
            QMoM qmom = new QMoM(numeroDePassosDeTempo, passoDeTempo, t0, numeroDePontos, funcaoInicial,
                limiteMinimo, limiteMaximo, termoFonteQMoM);

            qmom.MomentosIniciais = ObterMomentosIniciaisEspecieANaoNormalizadosHidrogenacao(numeroDePontos);

            var momentosAnaliticos = CalcularMomentosAnaliticosEspecieAHidrogenacao(qmom.MetodoDeCoeficientes, numeroDePassosDeTempo, t0, passoDeTempo,
                limiteMaximo, limiteMinimo, numeroDePontos);

            List<double[]> momentos = qmom.CalcularMomentos();

            List<double[]> listaPesosAnaliticos = new List<double[]>(momentosAnaliticos.Count);
            List<double[]> listaAbscissasAnaliticas = new List<double[]>(momentosAnaliticos.Count);

            for (int i = 0; i < momentosAnaliticos.Count; i++)
            {
                double[] pesosAnaliticos;
                double[] abscissasAnaliticas;
                MomentosBase.CalcularPesosEAbscissas(MomentosBase.MetodoCoeficientesDosMomentos.PDA, momentosAnaliticos[i], out pesosAnaliticos, out abscissasAnaliticas);
                listaPesosAnaliticos.Add(pesosAnaliticos);
                listaAbscissasAnaliticas.Add(abscissasAnaliticas);
            }

            double[] tempo = new double[numeroDePassosDeTempo];

            tempo[0] = t0;

            for (int i = 0; i < numeroDePassosDeTempo; i++)
            {
                if (i > 0) tempo[i] = tempo[i - 1] + passoDeTempo;
            }

            string caso = "CasoAlfa" + alfa + "a" + a + "b" + b;
            caso = caso.Replace('.', 'p');

            CriarScripParaMatlabMomentos(@"QMoMHidrogenacao\momentosEspecieA" + caso, "A", tempo, momentosAnaliticos, momentos, 1);
            CriarScripParaMatlabPesos(@"QMoMHidrogenacao\pesosEspecieA" + caso, "A", tempo, qmom.Pesos, listaPesosAnaliticos, 1);
            CriarScripParaMatlabAbscissas(@"QMoMHidrogenacao\abscissasEspecieA" + caso, "A", tempo, qmom.Abscissas, listaAbscissasAnaliticas, 1);
        }
Exemple #4
0
        public void CalcularQMOMTeseMukhtarTeste()
        {
            double passoDeTempo = 0.001;
            int numeroDePassosDeTempo = 50000;
            int numeroDePontos = 6;
            double t0 = 0.0;
            const double limiteMinimo = 0.001;
            const double limiteMaximo = Double.MaxValue;

            Integral.Funcao funcaoInicial = FuncaoMukhtar;

            QMoM.TermoFonteQMoM termoFonteQMoM = MomentosMukhtar;
            QMoM qmom = new QMoM(numeroDePassosDeTempo, passoDeTempo, t0, numeroDePontos, funcaoInicial,
                limiteMinimo, limiteMaximo, termoFonteQMoM);
            qmom.MomentosIniciais = null;
            qmom.MomentosIniciais = CalcularMomentosIniciaisMukkhatar(numeroDePontos);
            List<double[]> momentos = qmom.CalcularMomentos();

            CriarScripParaMatlabMomentosNormalizados(@"DQMoMMukhtar\momentosMukhatar", qmom.Passos, momentos);
        }