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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
void CalculPression(char * name_file,char * name_file_out,Engine * e,Species ** TabSpecies,double m,double R,unsigned int length)
{
/* cette routine calcule la pression 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 en
Pa
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)
length est la longueur du vecteur y (donc length = nombre especes + 2)
*/
/* 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);
}
/* definition of a table of char intended to receive the line */
char line[500];
/* read of the first line of file name_file */
fgets (line, sizeof line, file);
printf("line = \n %s\n",line);
char *p = strchr(line, '\n'); /* on cherche le caractere \n */
if (p != NULL) /* s'il est trouve on l'elimine */
*p = 0;
int j=1;
while(fgets (line, sizeof line, file) != NULL)
{
printf("j = %d\n",j);
++j;
p = strchr(line, '\n'); /* on cherche le caractère \n */
if (p != NULL) /* s'il est trouvé on l'elimine*/
*p = 0;
int i;
double volume,dvolume_dt,y,t,T;
fscanf(file,"%lf",&t); /* on recupere le temps */
V_Vp(t,e,&volume,&dvolume_dt);
printf("t = %f\n",t);
/* calcul de la masse molaire du melange M en g/mol */
double M=0.0;
for(i=0;i<length-2;++i)
{
/* on recupere la fraction massique de l'espece */
fscanf(file,"%lf",&y);
M+=y/TabSpecies[i]->M;
printf("i = %d\ty = %f\tM = %f\n",i,y,M);
}
//ici j'ai mon segmentation fault donc toto ne s'affiche pas a l'ecran
printf("toto\n");
M=1.0/M;
printf("tata\n");
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(file,"%g\n",pression);
} /* fin du while */
if (feof(file)) /* end of file was detected */
{
fprintf(stderr,"Error in file %s line %d function %s \n:Exit program\n",__FILE__,__LINE__,__FUNCTION__);
exit(1);
}
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);
return;
} |
Partager