Last active
October 19, 2018 22:29
-
-
Save andreuinyu/84472564a1e83a3594b49a70ae6cc670 to your computer and use it in GitHub Desktop.
més informació a http://de-etseib.upc.edu/assembleaetseib/hp-prime/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma mode( separator(.,;) integer(h32) ) | |
//Perfils de temperatura θ(x) | |
EXPORT θ_AI(x, h, P, S, lambda, θ0) | |
//Aleta infinita | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(θ0*exp(-m*x)); | |
END; | |
EXPORT θ_EF(x, h, P, S, lambda, θ0, θL, L) | |
//Extrem fix | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN((θL*sinh(m*x)+θ0*sinh(m*L-m*x))/sinh(m*L)); | |
END; | |
EXPORT θ_EA(x, h, P, S, lambda, θ0, L) | |
//Extrem aïllat | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(θ0*cosh(m*L-m*x)/cosh(m*L)); | |
END; | |
EXPORT θ_CE(x, h, P, S, lambda, θ0, L) | |
//Convecció a l'extrem | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(θ0*(cosh(m*L-m*x)+(h/(m*lambda))*sinh(m*L-m*x))/(cosh(m*L)+(h/(m*lambda))*sinh(m*L))); | |
END; | |
//Potències totals q | |
EXPORT q_AI(h, P, S, lambda, θ0) | |
//Aleta infinita | |
BEGIN | |
LOCAL M := sqrt(h*P*lambda*S)*θ0; | |
RETURN(M); | |
END; | |
EXPORT q_EF(h, P, S, lambda, θ0, θL, L) | |
//Extrem fix | |
BEGIN | |
LOCAL M := sqrt(h*P*lambda*S)*θ0; | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(M*(cosh(m*L)-θL/θ0)/sinh(m*L)); | |
END; | |
EXPORT q_EA(h, P, S, lambda, θ0, L) | |
//Extrem aïllat | |
BEGIN | |
LOCAL M := sqrt(h*P*lambda*S)*θ0; | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(M*tanh(m*L)); | |
END; | |
EXPORT q_CE(h, P, S, lambda, θ0, L) | |
//Convecció a l'extrem | |
BEGIN | |
LOCAL M := sqrt(h*P*lambda*S)*θ0; | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(M*(sinh(m*L)+(h/(m*lambda))*cosh(m*L))/(cosh(m*L)+(h/(m*lambda))*sinh(m*L))); | |
END; | |
//Potències en x q(x) | |
EXPORT qx_AI(x, h, P, S, lambda, θ0) | |
//Aleta infinita | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(lambda*S*m*θ0*exp(-m*x)); | |
END; | |
EXPORT qx_EF(x, h, P, S, lambda, θ0, θL, L) | |
//Extrem fix | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN( lambda*S*m* (θ0*cosh(m*L-m*x)-θL*cosh(m*x))/sinh(m*L)); | |
END; | |
EXPORT qx_EA(x, h, P, S, lambda, θ0, L) | |
//Extrem aïllat | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(lambda*S*m*θ0*sinh(m*L-m*x)/cosh(m*L)); | |
END; | |
EXPORT qx_CE(x, h, P, S, lambda, θ0, L) | |
//Convecció a l'extrem | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(lambda*S*m*θ0*(sinh(m*L-m*x)+(h/(m*lambda))*cosh(m*L-m*x))/(cosh(m*L)+(h/(m*lambda))*sinh(m*L))); | |
END; | |
//Funcions Bessel Modificades | |
EXPORT Iax(a, x) | |
BEGIN | |
LOCAL n := 0; | |
LOCAL res := 0; | |
WHILE n <= 30 DO | |
res := res + (1/(n!*Gamma(n+a+1)))*(x/2)^(2*n+a); | |
n := n + 1; | |
END; | |
RETURN(res); | |
END; | |
EXPORT Kax(a, x) | |
BEGIN | |
LOCAL mode; | |
LOCAL res; | |
LOCAL t; | |
mode := HAngle; | |
HAngle := 0; | |
res := ∫(e^(−x*cosh(t))*cosh(a*t),t,0,30); | |
HAngle := mode; | |
RETURN(res); | |
END; | |
//Eficiències d'aletes ηf | |
EXPORT ηf_rectaAI(h, P, S, lambda, L) | |
//Aleta recta infinita | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(1/(m*L)); | |
END; | |
EXPORT ηf_rectaEA(h, P, S, lambda, L) | |
//Aleta recta extrem aïllat | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(tanh(m*L)/(m*L)); | |
END; | |
EXPORT ηf_rectaCE(h, P, S, lambda, L) | |
//Aleta recta amb convecció a l'extrem | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(((sinh(m*L)+(h/(m*lambda))*cosh(m*L))/(cosh(m*L)+(h/(m*lambda))*sinh(m*L)))/((h/(m*lambda))*(1+P*L/S))); | |
END; | |
EXPORT ηf_triang(h, P, S, lambda, L) | |
//Aleta triangular | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN((1/(m*L))*Iax(1, 2*m*L)/Iax(0,2*m*L)); | |
END; | |
EXPORT ηf_parab(h, P, S, lambda, L) | |
//Aleta parabòlica | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(2/(sqrt((2*m*L)^2+1)+1)); | |
END; | |
EXPORT ηf_conica(h, P, S, lambda, L) | |
//Aleta conica | |
BEGIN | |
LOCAL m := sqrt(h*P/(lambda*S)); | |
RETURN(2/(m*L)* Iax(2,2*m*L)/Iax(1,2*m*L)); | |
END; | |
EXPORT ηf_anu(h, lambda, d, r0, rL) | |
//Aleta anular | |
BEGIN | |
LOCAL m := sqrt(h/(lambda*d)); | |
RETURN((2*r0/(m*(rL^2-r0^2))*((Kax(1,m*r0)*Iax(1,m*rL)-Iax(1,m*r0)*Kax(1,m*rL))/(Iax(0,m*r0)*Kax(1,m*rL)+Kax(0,m*r0)*Iax(1,m*rL))))); | |
END; | |
EXPORT ηf_anuaprox(h, lambda, d, r0, rL) | |
//Aleta anular (aproximació de Schmidt) | |
BEGIN | |
LOCAL m := sqrt(h/(lambda*d)); | |
LOCAL t := 1+0.35*ln(rL/r0); | |
RETURN(tanh(m*(rL-r0)*t)/(m*(rL-r0)*t)); | |
END; | |
//Àrees d'aletes Af | |
EXPORT Af_recta(prof, L, d) | |
//Àrea d'aleta rectangular | |
BEGIN | |
RETURN(2*prof*(L+d)); | |
END; | |
EXPORT Af_cil(D, L) | |
//Àrea d'aleta cilíndrica | |
BEGIN | |
RETURN(L*D*π+π*D^2/4); | |
END; | |
EXPORT Af_triang(prof, L, d) | |
//Àrea d'aleta triangular | |
BEGIN | |
RETURN(2*prof*sqrt(L^2+d^2)); | |
END; | |
EXPORT Af_parab(prof, L, d) | |
//Àrea d'aleta parabòlica | |
BEGIN | |
LOCAL c = sqrt(1+(2*d/L)^2); | |
RETURN(prof*(c*L^2+L^2/(2*d)*ln(2*d/L+c))); | |
END; | |
EXPORT Af_conica(D, L) | |
//Àrea d'aleta parabòlica | |
BEGIN | |
RETURN(π*D/2*sqrt(L^2+(D/2)^2)); | |
END; | |
EXPORT Af_anu(r0, rL) | |
//Àrea d'aleta anular | |
BEGIN | |
RETURN(2*π*(rL^2-r0^2)); | |
END; | |
START() | |
BEGIN | |
RECT(); | |
startview(2,1); | |
LOCAL x, h, P, S, lambda; | |
LOCAL θ0, θL, L, N, N1; | |
LOCAL d, r0, rL, prof, D; | |
RECT(); | |
STARTVIEW(6); | |
choose(N,"Què vols calcular?",{"Perfil de temperatura θ(x)","Potència totals q","Potències en x q(x)","Potències per convecció fins a x qc(x)","Eficiència ηf", "Àrea de l'aleta Af"}); | |
IF N == 1 THEN | |
//Perfils de temperatura | |
choose(N1,"Tria la condició de contorn",{"Aleta infinita","Extrem a temperatura fixa","Extrem aïllat","Convecció a l'extrem"}); | |
IF N1 == 1 THEN | |
//Aleta infinita | |
input({x, h, P, S, lambda, θ0},"θ(x) Aleta infinita",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient"}); | |
MSGBOX("θ(" + x + ") = " + θ_AI(x, h, P, S, lambda, θ0)); | |
END; | |
IF N1==2 THEN | |
//Extrem a temperatura fixa | |
input({x, h, P, S, lambda, θ0, θL, L},"θ(x) Extrem a temperatura fixa",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "θL = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Gradient punta-ambient", "Longitud"}); | |
MSGBOX("θ(" + x + ") = " + θ_EF(x, h, P, S, lambda, θ0, θL, L)); | |
END; | |
IF N1==3 THEN | |
//Extrem aïllat | |
input({x, h, P, S, lambda, θ0, L},"θ(x) Extrem aïllat",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("θ(" + x + ") = " + θ_EA(x, h, P, S, lambda, θ0, L)); | |
END; | |
IF N1==4 THEN | |
//Convecció a l'extrem | |
input({x, h, P, S, lambda, θ0, L},"θ(x) Convecció a l'extrem",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("θ(" + x + ") = " + θ_CE(x, h, P, S, lambda, θ0, L)); | |
END; | |
END; | |
IF N == 2 THEN | |
//Potències totals | |
choose(N1,"Tria la condició de contorn",{"Aleta infinita","Extrem a temperatura fixa","Extrem aïllat","Convecció a l'extrem"}); | |
IF N1 == 1 THEN | |
//Aleta infinita | |
input({h, P, S, lambda, θ0},"q Aleta infinita",{"h = ","P = ","S = ","λ = ", "θ₀ = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient"}); | |
MSGBOX("q = " + q_AI(h, P, S, lambda, θ0)); | |
END; | |
IF N1==2 THEN | |
//Extrem a temperatura fixa | |
input({h, P, S, lambda, θ0, θL, L},"q Extrem a temperatura fixa",{"h = ","P = ","S = ","λ = ", "θ₀ = ", "θL = ", "L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Gradient punta-ambient", "Longitud"}); | |
MSGBOX("q = " + q_EF(h, P, S, lambda, θ0, θL, L)); | |
END; | |
IF N1==3 THEN | |
//Extrem aïllat | |
input({h, P, S, lambda, θ0, L},"q Extrem aïllat",{"h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("q = " + q_EA(h, P, S, lambda, θ0, L)); | |
END; | |
IF N1==4 THEN | |
//Convecció a l'extrem | |
input({h, P, S, lambda, θ0, L},"q Convecció a l'extrem",{"h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("q = " + q_CE(h, P, S, lambda, θ0, L)); | |
END; | |
END; | |
IF N == 3 THEN | |
//Potències en x | |
choose(N1,"Tria la condició de contorn",{"Aleta infinita","Extrem a temperatura fixa","Extrem aïllat","Convecció a l'extrem"}); | |
IF N1 == 1 THEN | |
//Aleta infinita | |
input({x, h, P, S, lambda, θ0},"q(x) Aleta infinita",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient"}); | |
MSGBOX("q(" + x + ") = " + qx_AI(x, h, P, S, lambda, θ0)); | |
END; | |
IF N1==2 THEN | |
//Extrem a temperatura fixa | |
input({x, h, P, S, lambda, θ0, θL, L},"q(x) Extrem a temperatura fixa",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "θL = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Gradient punta-ambient", "Longitud"}); | |
MSGBOX("q(" + x + ") = " + qx_EF(x, h, P, S, lambda, θ0, θL, L)); | |
END; | |
IF N1==3 THEN | |
//Extrem aïllat | |
input({x, h, P, S, lambda, θ0, L},"q(x) Extrem aïllat",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("q(" + x + ") = " + qx_EA(x, h, P, S, lambda, θ0, L)); | |
END; | |
IF N1==4 THEN | |
//Convecció a l'extrem | |
input({x, h, P, S, lambda, θ0, L},"q(x) Convecció a l'extrem",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("q(" + x + ") = " + qx_CE(x, h, P, S, lambda, θ0, L)); | |
END; | |
END; | |
IF N == 4 THEN | |
//Potències per convecció fins a x | |
choose(N1,"Tria la condició de contorn",{"Aleta infinita","Extrem a temperatura fixa","Extrem aïllat","Convecció a l'extrem"}); | |
IF N1 == 1 THEN | |
//Aleta infinita | |
input({x, h, P, S, lambda, θ0},"qc(x) Aleta infinita",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient"}); | |
MSGBOX("qc(" + x + ") = " + (q_AI(h, P, S, lambda, θ0)-qx_AI(x, h, P, S, lambda, θ0))); | |
END; | |
IF N1==2 THEN | |
//Extrem a temperatura fixa | |
input({x, h, P, S, lambda, θ0, θL, L},"qc(x) Extrem a temperatura fixa",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "θL = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Gradient punta-ambient", "Longitud"}); | |
MSGBOX("qc(" + x + ") = " + (q_EF(h, P, S, lambda, θ0, θL, L)-qx_EF(x, h, P, S, lambda, θ0, θL, L))); | |
END; | |
IF N1==3 THEN | |
//Extrem aïllat | |
input({x, h, P, S, lambda, θ0, L},"qc(x) Extrem aïllat",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("qc(" + x + ") = " + (q_EA(h, P, S, lambda, θ0, L)-qx_EA(x, h, P, S, lambda, θ0, L))); | |
END; | |
IF N1==4 THEN | |
//Convecció a l'extrem | |
input({x, h, P, S, lambda, θ0, L},"qc(x) Convecció a l'extrem",{"x = ","h = ","P = ","S = ","λ = ", "θ₀ = ", "L = "},{"Posició","Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció", "Gradient base-ambient", "Longitud"}); | |
MSGBOX("qc(" + x + ") = " + (q_CE(h, P, S, lambda, θ0, L)-qx_CE(x, h, P, S, lambda, θ0, L))); | |
END; | |
END; | |
IF N == 5 THEN | |
//Eficiències d'aletes ηf | |
choose(N1,"Tria la geometria de l'aleta",{"Rectangular infinita", "Rectangular amb extrem aïllat", "Rectangular amb convecció a l'extrem", "Triangular", "Parabòlica", "Cònica", "Anular", "Anular (aproximació Schmidt)"}); | |
IF N1 == 1 THEN | |
input({h, P, S, lambda, L},"ηf aleta recta infinita",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_rectaAI(h, P, S, lambda, L)); | |
END; | |
IF N1 == 2 THEN | |
input({h, P, S, lambda, L},"ηf aleta recta extrem aïllat",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_rectaEA(h, P, S, lambda, L)); | |
END; | |
IF N1 == 3 THEN | |
input({h, P, S, lambda, L},"ηf aleta recta convecció a l'extrem",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_rectaCE(h, P, S, lambda, L)); | |
END; | |
IF N1 == 4 THEN | |
input({h, P, S, lambda, L},"ηf aleta triangular",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_triang(h, P, S, lambda, L)); | |
END; | |
IF N1 == 5 THEN | |
input({h, P, S, lambda, L},"ηf aleta parabòlica",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_parab(h, P, S, lambda, L)); | |
END; | |
IF N1 == 6 THEN | |
input({h, P, S, lambda, L},"ηf aleta cònica",{"h = ","P = ","S = ","λ = ","L = "},{"Coeficient de convecció","Perímetre","Superfície","Coeficient de conducció","Longitud"}); | |
MSGBOX("ηf = " + ηf_conica(h, P, S, lambda, L)); | |
END; | |
IF N1 == 7 THEN | |
input({h, lambda, d, r0, rL},"ηf aleta anular",{"h = ","λ = ","δ = ","r₀ = ","rL = "},{"Coeficient de convecció","Coeficient de conducció","Semigruix", "Radi menor", "Radi major"}); | |
MSGBOX("ηf = " + ηf_anu(h, lambda, d, r0, rL)); | |
END; | |
IF N1 == 8 THEN | |
input({h, lambda, d, r0, rL},"ηf aleta anular (aprox)",{"h = ","λ = ","δ = ","r₀ = ","rL = "},{"Coeficient de convecció","Coeficient de conducció","Semigruix", "Radi menor", "Radi major"}); | |
MSGBOX("ηf = " + ηf_anuaprox(h, lambda, d, r0, rL)); | |
END; | |
END; | |
IF N == 6 THEN | |
//Àrees d'aletes Af | |
choose(N1,"Tria la geometria de l'aleta",{"Prismàtica","Cilíndrica", "Triangular", "Parabòlica", "Cònica", "Anular"}); | |
IF N1 == 1 THEN | |
//Rectangular | |
input({prof,L,d},"Af aleta recta",{"w = ", "L = ", "δ = "},{"Profunditat", "Longitud", "Semigruix"}); | |
MSGBOX("Af = " + Af_recta(prof, L, d)); | |
END; | |
IF N1 == 2 THEN | |
//Rectangular | |
input({D,L},"Af aleta cilíndrica",{"D = ", "L = "},{"Diàmetre", "Longitud"}); | |
MSGBOX("Af = " + Af_cil(D, L)); | |
END; | |
IF N1 == 3 THEN | |
//Triangular | |
input({prof,L,d},"Af aleta triangular",{"w = ", "L = ", "δ = "},{"Profunditat", "Longitud", "Semigruix de la base"}); | |
MSGBOX("Af = " + Af_triang(prof, L, d)); | |
END; | |
IF N1 == 4 THEN | |
//Parabòlica | |
input({prof,L,d},"Af aleta parabòlica",{"w = ", "L = ", "δ = "},{"Profunditat", "Longitud", "Semigruix de la base"}); | |
MSGBOX("Af = " + Af_parab(prof, L, d)); | |
END; | |
IF N1 == 5 THEN | |
//Cònica | |
input({D,L},"Af aleta cònica",{"D = ", "L = "},{"Diàmetre de la base", "Longitud"}); | |
MSGBOX("Af = " + Af_conica(D, L)); | |
END; | |
IF N1 == 6 THEN | |
//Anular | |
input({r0,rL},"Af aleta anular",{"r₀ = ", "rL = "},{"Radi menor", "Radi major"}); | |
MSGBOX("Af = " + Af_anu(r0, rL)); | |
END; | |
END; | |
END; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment