
Resolver Iteración para Placa Orificio
Publicado por Christopher (6 intervenciones) el 20/02/2014 19:48:45
Muy buenas a todos,
necesito calcular la relación de diámetros de una placa orificio para medir el caudal de un gas (aire) según la normativa DIN EN ISO 5167.
Para ello se utiliza una ecuación que ha de ser resuelta por iteración. La ecuación es:
C*e*b^2/sqrt(1-b^4) = 4q/(pi*D^2*sqrt(2*p*r);
o escrita de otra manera:
C*e*b^2/sqrt(1-b^4)-4q/(pi*D^2*sqrt(2*p*r)=0;
Donde:
Son incógnitas:
C: Coeficiente de descarga
e: Coeficiente de expansión
b: relación de diámetros d/D
Son datos:
q: caudal
D: diámetro de la tuberia
dp: diferencia de presión entre ambos lados de la placa orificio
rho: densidad del fluido
Para las ecuaciones de coeficiente de descarga y coeficiente de expansión son datos:
p21=p2/p1: relación entre presiones a ambos lados de la placa orificio
k: coeficiente isoentrópico
En realidad solo existe una incógnita "b", ya que "C" y" e" se pueden calcular en función de "b".
Como siempre que he de realizar un cálculo algo más laborioso, he tratado de sacarle partido a las nociones básicas que poseo en MatLab. Desafortunadamente el código que he escrito, a pesar de no dar error, no me sirve. El ordenador comienza a calcular pero tras más de 10 minutos no genera ninguna solución, sigue calculando (se escucha que el ordenador continúa trabajando)..
El código es el siguiente:
>> clear
%Entrada de datos
Re=329546;
p21=137000/139000;
k=1.1378;
q=1.2;
D=0.15;
dp=2000;
rho=0.8031; %fin entrada de datos
syms b; %definicion de variable
e=1-(0.351+0.256*b^4+0.93*b^8)*(1-(p21)^(1/k)); %coef de expansion
C=0.5961+0.0261*b^2-0.216*b^8+0.000521*(10^6*b/Re)^0.7+(0.0188+0.0063*(19000*b/Re)^0.8)*b^(3.5)*(10^6/Re)^(0.3)+(0.043+0.080*exp(-10)-0.123*exp(-7))*(1-0.11*(19000*b/Re)^0.8)*(b^4/(1-b^4))-0.031*((0.94/(1-b)-0.8*(0.94/(1-b))^1.1))*b^(1.3);%coef de descarga
eq=C*e*b^2/sqrt(1-b^4)-4*q/(pi*D^2*sqrt(2*dp*rho));
b=solve(eq,b)
Tal vez esta no sea la mejor manera de solucionar este tipo de problema y exista una función más apropiada.
Estaría muy agradecido si alguien es capaz de ayudarme ya sea con el código que he escrito yo o proponiendo uno totalmente diferente que no use la función solve.
Muchas gracias.
Saludos,
C. Jaimez
necesito calcular la relación de diámetros de una placa orificio para medir el caudal de un gas (aire) según la normativa DIN EN ISO 5167.
Para ello se utiliza una ecuación que ha de ser resuelta por iteración. La ecuación es:
C*e*b^2/sqrt(1-b^4) = 4q/(pi*D^2*sqrt(2*p*r);
o escrita de otra manera:
C*e*b^2/sqrt(1-b^4)-4q/(pi*D^2*sqrt(2*p*r)=0;
Donde:
Son incógnitas:
C: Coeficiente de descarga
e: Coeficiente de expansión
b: relación de diámetros d/D
Son datos:
q: caudal
D: diámetro de la tuberia
dp: diferencia de presión entre ambos lados de la placa orificio
rho: densidad del fluido
Para las ecuaciones de coeficiente de descarga y coeficiente de expansión son datos:
p21=p2/p1: relación entre presiones a ambos lados de la placa orificio
k: coeficiente isoentrópico
En realidad solo existe una incógnita "b", ya que "C" y" e" se pueden calcular en función de "b".
Como siempre que he de realizar un cálculo algo más laborioso, he tratado de sacarle partido a las nociones básicas que poseo en MatLab. Desafortunadamente el código que he escrito, a pesar de no dar error, no me sirve. El ordenador comienza a calcular pero tras más de 10 minutos no genera ninguna solución, sigue calculando (se escucha que el ordenador continúa trabajando)..
El código es el siguiente:
>> clear
%Entrada de datos
Re=329546;
p21=137000/139000;
k=1.1378;
q=1.2;
D=0.15;
dp=2000;
rho=0.8031; %fin entrada de datos
syms b; %definicion de variable
e=1-(0.351+0.256*b^4+0.93*b^8)*(1-(p21)^(1/k)); %coef de expansion
C=0.5961+0.0261*b^2-0.216*b^8+0.000521*(10^6*b/Re)^0.7+(0.0188+0.0063*(19000*b/Re)^0.8)*b^(3.5)*(10^6/Re)^(0.3)+(0.043+0.080*exp(-10)-0.123*exp(-7))*(1-0.11*(19000*b/Re)^0.8)*(b^4/(1-b^4))-0.031*((0.94/(1-b)-0.8*(0.94/(1-b))^1.1))*b^(1.3);%coef de descarga
eq=C*e*b^2/sqrt(1-b^4)-4*q/(pi*D^2*sqrt(2*dp*rho));
b=solve(eq,b)
Tal vez esta no sea la mejor manera de solucionar este tipo de problema y exista una función más apropiada.
Estaría muy agradecido si alguien es capaz de ayudarme ya sea con el código que he escrito yo o proponiendo uno totalmente diferente que no use la función solve.
Muchas gracias.
Saludos,
C. Jaimez
Valora esta pregunta


0