ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/diamesh/src/m3d_wresult.cpp
Revision: 253
Committed: Tue Jul 13 19:40:46 2010 UTC (14 years, 10 months ago) by francois
File size: 6900 byte(s)
Log Message:
changement de hiearchie et utilisation de ccmake + mise a jour

File Contents

# User Rev Content
1 5 /* ecriture du fichier resultat */
2     #include <stdio.h>
3     #include <string.h>
4     #include <math.h>
5     #include "m3d_struct.h"
6     #include "m3d_const.h"
7     #include "m3d_hotes.h"
8     #include "m3d_erreur.h"
9     #include "m3d_message.h"
10     #include "prototype.h"
11    
12     extern GEST_MEM *gest ;
13     extern int debug ;
14     extern int nb_tetra_cree;
15     extern float crit_min_calc;
16     extern float crit_moy_calc;
17     extern float crit_max_calc;
18     extern float crit_e_mini;
19     extern float crit_e_moyen;
20     extern float crit_e_maxi;
21    
22     int m3d_wresult(void)
23     {
24     FILE *output ;
25     float *coord ;
26     char mess[255];
27     int *numele ;
28     float crit, som1, som2, som3;
29     int nb_ok,nb_pass,nb_bad,nb_cree,nb_moyen ;
30     int i ;
31     char temp[MAX_LINE], *ext_res ;
32     char str[256];
33    
34     coord = gest->coord ;
35     numele = gest->numele ;
36    
37     /* ecriture des resultats */
38     ext_res = ".RES" ;
39     temp[0] = 0 ;
40     strcpy(temp,gest->name) ;
41     strncat(temp,ext_res,4) ;
42     /* ouverture du fichier resultat */
43     if ( (output = fopen(temp,"w")) == NULL)
44     {
45     m3d_erreur(ERR_OPEN_RESU) ;
46     return(FAUX) ;
47     }
48    
49     /* statistique */
50    
51     nb_ok = 0 ;
52     nb_moyen = 0 ;
53     nb_pass = 0 ;
54     nb_bad = 0 ;
55     crit_max_calc = 0. ;
56     crit_moy_calc = 0. ;
57     crit_min_calc = 1. ;
58     nb_cree = 0 ;
59    
60     for (i=0;i<gest->nb_tetra;i++)
61     {
62     if (numele[4*i]!=123456789)
63     {
64     nb_cree++ ;
65     crit = m3d_e_qual(coord,numele[4*i],numele[4*i+1],numele[4*i+2],numele[4*i+3]) ;
66     crit_moy_calc = crit_moy_calc + crit ;
67     if (crit>=0.5) nb_ok ++ ;
68     else if (crit>=0.2) nb_moyen ++ ;
69     else if (crit>=0.1) nb_pass ++ ;
70     else nb_bad++ ;
71     if (crit>crit_max_calc) crit_max_calc = crit ;
72     if (crit<crit_min_calc) crit_min_calc = crit ;
73     }
74     }
75     gest->nb_good = nb_ok ;
76     gest->nb_medium = nb_moyen ;
77     gest->nb_low = nb_pass ;
78     gest->nb_bad = nb_bad ;
79    
80     nb_tetra_cree = nb_cree;
81    
82     crit_moy_calc = crit_moy_calc/nb_cree ;
83    
84     som1 = 0. ;
85     som2 = 0. ;
86     som3 = 0. ;
87    
88     for (i=0;i<gest->nb_tetra;i++)
89     {
90     if (numele[4*i]!=123456789)
91     {
92     crit = m3d_e_qual(coord,numele[4*i],numele[4*i+1],numele[4*i+2],numele[4*i+3]) ;
93     crit_e_moyen = (crit - crit_moy_calc) * (crit - crit_moy_calc) ;
94     crit_e_mini = (crit - crit_min_calc) * (crit - crit_min_calc) ;
95     crit_e_maxi = (crit - crit_max_calc) * (crit - crit_max_calc) ;
96     som1 = som1 + crit_e_moyen ;
97     som2 = som2 + crit_e_mini ;
98     som3 = som3 + crit_e_maxi ;
99     }
100     }
101     som1 = som1/nb_cree ;
102     som2 = som2/nb_cree ;
103     som3 = som3/nb_cree ;
104    
105     crit_e_moyen = (float)sqrt((double)som1) ;
106     crit_e_mini = (float)sqrt((double)som2) ;
107     crit_e_maxi = (float)sqrt((double)som3);
108     m3d_cpu();
109     gest->end[0]=0;
110    
111     /* ECRITURE DES INFORMATIONS DANS LE .RES */
112    
113     fprintf(output,"===========================================================\n" ) ;
114     fprintf(output," %s %s\n","VERSION :", gest->release) ;
115     fprintf(output,"===========================================================\n" ) ;
116     fprintf(output," %s %s\n", "INPUT FILE :", gest->name) ;
117     fprintf(output,"===========================================================\n" ) ;
118    
119     fprintf( output, "%s\n\n",MESS_MAILLAGE_DE_PEAU) ;
120    
121     fprintf( output, "%s %d\n",MESS_NB_NOEUDS_2D, gest->nb_init) ;
122     fprintf( output, "%s %d\n",MESS_NB_ELE_2D, gest->nb_2d) ;
123     fprintf( output, "%s %f\n",MESS_RAPPORT_TAILLE, gest->rap) ;
124     fprintf( output, "%s %f\n",MESS_CRIT_2D_MIN,gest->crit_2d_min) ;
125    
126     fprintf( output, "\n%s\n\n",MESS_MAILLAGE_VOLUMIQUE) ;
127    
128     fprintf( output, "%s %d\n",MESS_NB_NOEUDS_3D, gest->nb_noeud) ;
129     fprintf( output, "%s %d\n",MESS_NB_ELE_3D, nb_cree) ;
130     fprintf( output, "%s %g\n", "cpu :", gest->cpu) ;
131    
132     fprintf( output, "\n%s\n\n",MESS_STAT_QUALITE) ;
133    
134     fprintf( output, "%s %f\n",MESS_CRIT_3D_MIN, crit_min_calc) ;
135     fprintf( output, "%s %f\n",MESS_CRIT_3D_MAX, crit_max_calc) ;
136     fprintf( output, "%s %f\n\n",MESS_CRIT_3D_MOYEN, crit_moy_calc) ;
137     fprintf( output, "%s %d\n",MESS_NB_BON, nb_ok) ;
138     fprintf( output, "%s %d\n",MESS_NB_MOYEN, nb_moyen) ;
139     fprintf( output, "%s %d\n",MESS_NB_PAS, nb_pass) ;
140     fprintf( output, "%s %d\n",MESS_NB_BAD, nb_bad) ;
141     fclose(output) ;
142    
143     /* aff_text("\n");
144     aff_text("\n");
145     sprintf(mess,"===========================================================\n" ) ;
146     aff_text(mess);
147     sprintf(mess,"===========================================================\n" ) ;
148     aff_text(mess);
149     sprintf(mess," VERSION :%s\n", gest->release) ;
150     aff_text(mess);
151     sprintf(mess,"===========================================================\n" ) ;
152     aff_text(mess);
153     sprintf(mess," INPUT FILE :%s\n", gest->name) ;
154     aff_text(mess);
155     sprintf(mess,"===========================================================\n" ) ;
156     aff_text(mess);
157     sprintf(mess,"===========================================================\n" ) ;
158     aff_text(mess);
159     aff_text("\n");
160    
161     sprintf(mess,"%s\n",MESS_MAILLAGE_DE_PEAU) ;
162     aff_text(mess);
163     aff_text("\n");
164     sprintf(mess,"%s %d\n",MESS_NB_NOEUDS_2D, gest->nb_init) ;
165     aff_text(mess);
166     sprintf(mess,"%s %d\n",MESS_NB_ELE_2D, gest->nb_2d) ;
167     aff_text(mess);
168     sprintf(mess, "%s %f\n",MESS_RAPPORT_TAILLE, gest->rap) ;
169     aff_text(mess);
170     aff_text("\n");
171     sprintf(mess, "%s\n",MESS_MAILLAGE_VOLUMIQUE) ;
172     aff_text(mess);
173     aff_text("\n");
174     sprintf(mess, "%s %d\n",MESS_NB_NOEUDS_3D, gest->nb_noeud) ;
175     aff_text(mess);
176     sprintf(mess, "%s %d\n",MESS_NB_ELE_3D, nb_cree) ;
177     aff_text(mess);
178     sprintf( mess,"%s %g\n", "cpu :", gest->cpu) ;
179     aff_text(mess);
180     aff_text("\n");
181     sprintf(mess, "%s\n",MESS_STAT_QUALITE) ;
182     aff_text(mess);
183     aff_text("\n");
184     sprintf(mess, "%s %f\n",MESS_CRIT_3D_MIN, crit_min_calc) ;
185     aff_text(mess);
186     sprintf(mess, "%s %f\n",MESS_CRIT_3D_MAX, crit_max_calc) ;
187     aff_text(mess);
188     sprintf(mess, "%s %f\n",MESS_CRIT_3D_MOYEN, crit_moy_calc) ;
189     aff_text(mess);
190     aff_text("\n");
191     sprintf(mess, "%s %d\n",MESS_NB_BON, nb_ok) ;
192     aff_text(mess);
193     sprintf(mess, "%s %d\n",MESS_NB_MOYEN, nb_moyen) ;
194     aff_text(mess);
195     sprintf(mess, "%s %d\n",MESS_NB_PAS, nb_pass) ;
196     aff_text(mess);
197     sprintf(mess, "%s %d\n",MESS_NB_BAD, nb_bad) ;
198     aff_text(mess); */
199     return(VRAI) ;
200     }