ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/eval_dens_reel.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 3939 byte(s)
Log Message:

File Contents

# Content
1 /*****************************************************************
2
3 eval_dens_reel.cpp Type:Func
4
5 Evaluation de la densite reelle d un noeud
6
7 Date de creation : 5-11-1997 11 :29 :42
8 Derniere version : 5-11-1997 11 :29 :42
9
10 Vincent FRANCOIS
11
12 *****************************************************************/
13
14
15
16
17
18 /**************************/
19 /* include */
20 #include <stdio.h>
21 #include <string.h>
22 #include <stdlib.h>
23 #include <math.h>
24 #include "const.h"
25 #include "memoire.h"
26 #include "struct.h"
27 #include "prototype.h"
28
29 /**************************/
30 /* variables globales */
31 extern struct s_maillage *maillage;
32 extern struct environnement env;
33
34
35 /**************************/
36 /* programme principal */
37
38 void eval_dens_reel(struct s_mnoeud *mnoe)
39 {
40 int *test_noeud;
41 int nb_connec,i;
42 float vec[4];
43 struct s_mnoeud *mnoe1;
44 struct s_mtriangle *mtri;
45 struct s_mtetra *mtet;
46
47 if (mnoe->dens>0.0001) return;
48 test_noeud=(int *)calloc(maillage->nb_mnoeud,sizeof(int));
49 ERREUR_ALLOC(test_noeud);
50 test_noeud[mnoe->num]=1;
51 nb_connec=0;
52 if (mnoe->nb_mtetra!=0)
53 for (i=0;i<mnoe->nb_mtetra;i++)
54 {
55 mtet=mnoe->mtetra[i];
56 if (test_noeud[mtet->n1]==0)
57 {
58 test_noeud[mtet->n1]=1;
59 nb_connec++;
60 mnoe1=ADRESSE(mtet->n1,mnoeud,maillage->);
61 VEC(vec,mnoe1,mnoe);
62 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
63 }
64 if (test_noeud[mtet->n2]==0)
65 {
66 test_noeud[mtet->n2]=1;
67 nb_connec++;
68 mnoe1=ADRESSE(mtet->n2,mnoeud,maillage->);
69 VEC(vec,mnoe1,mnoe);
70 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
71 }
72 if (test_noeud[mtet->n3]==0)
73 {
74 test_noeud[mtet->n3]=1;
75 nb_connec++;
76 mnoe1=ADRESSE(mtet->n3,mnoeud,maillage->);
77 VEC(vec,mnoe1,mnoe);
78 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
79 }
80 if (test_noeud[mtet->n4]==0)
81 {
82 test_noeud[mtet->n4]=1;
83 nb_connec++;
84 mnoe1=ADRESSE(mtet->n4,mnoeud,maillage->);
85 VEC(vec,mnoe1,mnoe);
86 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
87 }
88 }
89 else
90 for (i=0;i<mnoe->nb_mtriangle;i++)
91 {
92 mtri=mnoe->mtriangle[i];
93 if (test_noeud[mtri->n1]==0)
94 {
95 test_noeud[mtri->n1]=1;
96 nb_connec++;
97 mnoe1=ADRESSE(mtri->n1,mnoeud,maillage->);
98 VEC(vec,mnoe1,mnoe);
99 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
100 }
101 if (test_noeud[mtri->n2]==0)
102 {
103 test_noeud[mtri->n2]=1;
104 nb_connec++;
105 mnoe1=ADRESSE(mtri->n2,mnoeud,maillage->);
106 VEC(vec,mnoe1,mnoe);
107 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
108 }
109 if (test_noeud[mtri->n3]==0)
110 {
111 test_noeud[mtri->n3]=1;
112 nb_connec++;
113 mnoe1=ADRESSE(mtri->n3,mnoeud,maillage->);
114 VEC(vec,mnoe1,mnoe);
115 mnoe->dens=(float)(mnoe->dens+sqrt((double)PSCA(vec,vec)));
116 }
117 }
118 mnoe->dens=mnoe->dens/nb_connec;
119 free(test_noeud);
120 }