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

File Contents

# User Rev Content
1 1 /*****************************************************************
2    
3     r3d_gene_tetra.c Type:Func
4    
5     Generation des mailles 3D
6    
7     Date de creation : Fri Aug 1 10:31:13 1997
8    
9     Derniere version : Fri Aug 1 10:31:13 1997
10    
11    
12     Vincent FRANCOIS
13    
14     *****************************************************************/
15    
16    
17    
18    
19    
20     /**************************/
21     /* include */
22     #include <stdio.h>
23     #include <string.h>
24     #include <stdlib.h>
25     #include "const.h"
26     #include "memoire.h"
27     #include "struct.h"
28     #include "prototype.h"
29    
30     /**************************/
31     /* variables globales */
32     extern struct environnement env;
33     extern struct s_mesh *mesh;
34     extern struct s_maillage *maillage;
35     extern struct s_acis *acis;
36    
37    
38    
39     /**************************/
40     /* programme principal */
41    
42     void r3d_gene_tetra(void)
43     {
44     int i,j,k,l,num,nb_place;
45     struct s_mnoeud *mno1,*mno2,*mno3,*mno4,*mno;
46     struct s_mtetra *mtet,*mtet2;
47     struct s_mbodyette *mbodyette,mbody,*mbo;
48    
49     mbodyette=(&mbody);
50     mbodyette->mtetra=NULL;
51     mbodyette->nb_mtetra=0;
52     mbodyette->num=0;
53     mbodyette->etat=0;
54     for (i=0;i<maillage->nb_mtetra;i++)
55     {
56     mtet=ADRESSE(i,mtetra,maillage->);
57     mno1=ADRESSE(mtet->n1,mnoeud,maillage->);
58     mno2=ADRESSE(mtet->n2,mnoeud,maillage->);
59     mno3=ADRESSE(mtet->n3,mnoeud,maillage->);
60     mno4=ADRESSE(mtet->n4,mnoeud,maillage->);
61     if ((mno1->etat==GARDE)&&(mno2->etat==GARDE)&&(mno3->etat==GARDE)&&(mno4->etat==GARDE))
62     {
63     NEW_POINTEUR(num,mtetra,mbodyette->);
64     mbodyette->mtetra[num]=mtet;
65     mtet->mbodyette=mbodyette;
66     }
67     }
68     /* separation des bodyette */
69     nb_place=0;
70     while (nb_place!=mbodyette->nb_mtetra)
71     {
72     j=0;
73     while (mbodyette->mtetra[j]->mbodyette!=mbodyette) j++;
74     mtet=mbodyette->mtetra[j];
75     NEW_ENTITE(mbo,mbodyette,maillage->);
76     mbo->num=maillage->nb_mbodyette-1;
77     NEW_POINTEUR(num,mtetra,mbo->);
78     mbo->mtetra[num]=mtet;
79     mtet->mbodyette=mbo;
80     nb_place++;
81     for (k=0;k<mbo->nb_mtetra;k++)
82     {
83     mtet=mbo->mtetra[k];
84     mno=ADRESSE(mtet->n1,mnoeud,maillage->);
85     for (l=0;l<mno->nb_mtetra;l++)
86     {
87     mtet2=mno->mtetra[l];
88     if (mtet2->mbodyette==mbodyette)
89     {
90     NEW_POINTEUR(num,mtetra,mbo->);
91     mbo->mtetra[num]=mtet2;
92     mtet2->mbodyette=mbo;
93     nb_place++;
94     }
95     }
96     mno=ADRESSE(mtet->n2,mnoeud,maillage->);
97     for (l=0;l<mno->nb_mtetra;l++)
98     {
99     mtet2=mno->mtetra[l];
100     if (mtet2->mbodyette==mbodyette)
101     {
102     NEW_POINTEUR(num,mtetra,mbo->);
103     mbo->mtetra[num]=mtet2;
104     mtet2->mbodyette=mbo;
105     nb_place++;
106     }
107     }
108     mno=ADRESSE(mtet->n3,mnoeud,maillage->);
109     for (l=0;l<mno->nb_mtetra;l++)
110     {
111     mtet2=mno->mtetra[l];
112     if (mtet2->mbodyette==mbodyette)
113     {
114     NEW_POINTEUR(num,mtetra,mbo->);
115     mbo->mtetra[num]=mtet2;
116     mtet2->mbodyette=mbo;
117     nb_place++;
118     }
119     }
120     mno=ADRESSE(mtet->n4,mnoeud,maillage->);
121     for (l=0;l<mno->nb_mtetra;l++)
122     {
123     mtet2=mno->mtetra[l];
124     if (mtet2->mbodyette==mbodyette)
125     {
126     NEW_POINTEUR(num,mtetra,mbo->);
127     mbo->mtetra[num]=mtet2;
128     mtet2->mbodyette=mbo;
129     nb_place++;
130     }
131     }
132    
133     }
134    
135    
136     }
137    
138     }