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