#include <stdio.h>
#include <math.h>
int main()
{
double L=0.025, k=0.0293;
double e_p=0.95, e_c=0.88, beta=0.785, hw=10;
double g=9.807, Pr=0.7;
double Ta=10, Tp=100;
double sigma=0.00000005670373, ni=0.0000196;
double Tc, Tc_c;
double coeff_top, deltaT;
double h_cpc, h_rpc, h_rca;
double Ra, Nu;
double alpha, eps;
printf("insert the starting value Tc:");
scanf("%lf",&Tc);
eps=1;
do
{
Tc_c=Tc;
deltaT=((Tc+Tp)/2+273);
printf("'%lf'\n",deltaT);
alpha=ni/Pr;
Ra=((Tp-Tc)*(g*pow(L,3))/(ni*alpha*deltaT));
printf("Raileght number is Ra:'%lf'\n",Ra);
Nu=(1+1.44*(1-(1708*pow(sin(1.8*beta),1.6))/(Ra*cos(beta)))*(1-(1708/(Ra*cos(beta))))+(pow(((Ra*cos(beta))/5830),0.333)-1));
printf("Nusselt number is Nu:'%lf'\n",Nu);
h_cpc=((Nu)*((k)/L));
printf("The convection heat coefficient between plate and cover is '%lf'\n",h_cpc);
h_rca=((e_c)*sigma*(pow((Tc+273),2)+pow((Ta+273),2))*(Tc+Ta+2*273));
printf("The radiant heat coefficient between cover and air is '%lf'\n",h_rca);
h_rpc=(sigma*(pow((Tp+273.15),2)+pow((Tc+273.15),2))* (Tp+Tc+2*273.15)*e_p*e_c)/(e_c+e_p-e_p*e_c);
printf("The readiant heat coefficient between plate and cover is '%lf'\n",h_rpc);
coeff_top=(pow((1/(h_cpc+h_rpc)+1/(+hw+h_rca)),-1));
printf("The top loss coefficient is '%lf'\n",coeff_top);
Tc_c=(Tp-coeff_top*(Tp-Ta)/(h_cpc+h_rpc));
printf("The cover temperature is:'%lf'\n",Tc_c);
eps=(Tc_c-Tc);
}while (eps>0.01);
printf("The top loss coefficient is:'%lf'\n",coeff_top);
printf("The real value of the cover temperature is:'%lf'\n",Tc);
getchar();
getchar();
return 0;
}
Allora questo è tutto il codice e il primo valore che mi calcola per ogni variabile (deltaT, Ra, Nu...ecc) è corretto solo che me lo stampa sempre uguale all'infinito. Inserendo un valore di 35 per Tc si ottiene: deltaT=340.5, Ra=53301, Nu=3.17, h_cpc=3.72, ecc Praticamente non aggiorna il valore di Tc e quindi i risultati non cambiano, il while è sempre vero e il ciclo va all'infinito.