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

# Content
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 }