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); }
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); }
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); }
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); }