1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
void CalculPression(char * name_file,char * name_file_out,Engine * e,Species ** TabSpecies,double m,double R,unsigned int ne)
{
/* cette routine calcule la pression (en Pa) du systeme a l'instant t.
name_file est un fichier qui contient les sorties a chaque instant.
Chaque ligne de name_file est constitue du temps t, des fractions
massiques de chaque espece et de la temperature
name_file_out est le fichier de sortie dans lequel sera ecrite la pression
e contient les caracteristiques du moteur
TabSpecies contient toutes les donnees de chaque espece
m est la masse du melange en g
R est la constante des gaz parfaits en erg/(mol K)
ne est le nombres d'especes du systeme
*/
/* ouverture du fichier d'ecriture de la pression */
FILE * fileOutput = fopen(name_file_out, "w+");
/* ouverture du fichier de sorties */
FILE * file=fopen(name_file,"r");
if (file==NULL)
{
fprintf(stderr,"Error in file %s line %d in function %s : file %s wasn't found\nExit program\n",__FILE__,__LINE__,__FUNCTION__,name_file);
exit(1);
}
char line[550];
while( (!feof(file)) & (fgets (line, sizeof line, file) != NULL) )
{
char *p = strchr(line, '\n');
if(p==NULL)
{
fprintf(stderr,"Error in file %s line %d in function %s : tabular line is too short. Increase size of tabular line.\nExit program\n",__FILE__,__LINE__,__FUNCTION__);
exit(1);
}
if (p != NULL)
*p = 0;
unsigned int i;
double volume,dvolume_dt,y,t,T;
fscanf(file,"%lf",&t); /* on recupere le temps */
V_Vp(t,e,&volume,&dvolume_dt);
/* calcul de la masse molaire du melange M en g/mol */
double M=0.0;
for(i=0;i<ne;++i)
{
/* on recupere la fraction massique de l'espece */
fscanf(file,"%lf",&y);
M+=y/TabSpecies[i]->M;
}
M=1.0/M;
fscanf(file,"%lf",&T); /* on recupere la temperature */
/* calcul de la pression en Pa (d'ou le coefficient 0.1) */
const double pression=m/volume*R/M*T*0.1;
/* on ecrit dans le fichier name_file_out la pression */
fprintf(fileOutput,"%g\n",pression);
} /* fin du while */
if (ferror(file)) /* an error occurred */
fprintf(stderr,"Error in file %s line %d function %s : a misreading occurred\nExit program\n",__FILE__,__LINE__,__FUNCTION__);
/* on ferme les fichiers */
fclose(fileOutput);
fclose(file);
//free(line);
return;
} |
Partager