1 |
francois |
283 |
/* 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 = (char*)".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 |
|
|
} |