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

File Contents

# User Rev Content
1 5
2     #include <stdio.h>
3     #include <stdlib.h>
4     #include "p3d_cst.h"
5     #include "m3d_struct.h"
6     #include "m3d_hotes.h"
7     #include "m3d_erreur.h"
8     #include "prototype.h"
9     extern GEST_MEM *gest ;
10     extern int debug ;
11     int p3d_aut(void)
12     {
13     /* ************************************************* */
14     /* declaration des variables internes a la procedure */
15     int i, num1 ;
16     /*
17     table contenant les tetes de liste de segments
18     tab_seg[i] contient la tete de liste des segments
19     dont le premier noeud est le noeud de numero i
20     Ces segments sont crees a partir des elements
21     */
22    
23     int p3d_connec(), p3d_envel() ;
24     int nb_int ;
25     SURFACE *surf ;
26     ELEMENT *ele ;
27    
28     /* ************************************************* */
29     /* debut du code executable */
30     /* construction de la table des segments */
31     /* passage c fortran */
32    
33     /* tableau des listes de segments connectes au noeud */
34     gest->tab_seg=(SEGMENT**)calloc((gest->nb_init),sizeof(struct st_segment*)) ;
35     ERREUR_ALLOC(gest->tab_seg)
36    
37     /* initialiser tab_seg */
38     /* boucle sur le nombre de noeuds initial */
39     for (i=0 ;i<gest->nb_init;i++) gest->tab_seg[i]=NULL ;
40    
41     /* table des elements 2d */
42     gest->tab_ele = (ELEMENT *)calloc(gest->nb_2d,sizeof(ELEMENT)) ;
43     ERREUR_ALLOC(gest->tab_ele)
44     for (i=0 ;i<gest->nb_2d;i++)
45     {
46     (gest->tab_ele[i]).num = i ;
47     (gest->tab_ele[i]).mark = 0 ;
48     (gest->tab_ele[i]).suivant = NULL ;
49     }
50     gest->tab_ele2 = (ELEMENT *)calloc(gest->nb_2d,sizeof(ELEMENT)) ;
51     ERREUR_ALLOC(gest->tab_ele2)
52     for (i=0 ;i<gest->nb_2d;i++)
53     {
54     (gest->tab_ele2[i]).num = i ;
55     (gest->tab_ele2[i]).mark = 0 ;
56     (gest->tab_ele2[i]).suivant = NULL ;
57     }
58     /* verifier la connectivite : surface ouverte ... */
59     if (!p3d_connec())
60     {
61     if (debug) printf("%s\n"," erreur dans p3d_connec P3DAUT ") ;
62     return(FAUX) ;
63     }
64    
65     /* pas de probleme de connectivite */
66     /* determination du nombre de surfaces de peau */
67     if (!p3d_envel()) return(FAUX) ;
68     free(gest->tab_ele2) ;
69     gest->tab_ele2 = NULL ;
70     /* erreur systeme */
71    
72     /* le traitement s'est bien passe */
73     /* on poursuit la verif */
74     /* arborescence */
75    
76     /* nombre de surfaces interieures */
77     surf = (gest->envel)->surf_int ;
78     nb_int = 0 ;
79     while (surf!=NULL)
80     {
81     nb_int ++ ;
82     surf=surf->suivant ;
83     }
84     if (debug) printf(" nombre de surfaces interieures %d\n",nb_int) ;
85    
86     /* parcours des elements des surfaces exterieures, changer la direction de la
87     normale (il suffit d'intervertir les 2 premiers numeros de noeuds */
88    
89    
90     surf = (gest->envel)->surf_ext ;
91     while (surf!=NULL)
92     {
93     ele = surf->ele ;
94     while (ele!=NULL)
95     {
96     num1 = gest->tabele[3*(ele->num)] ;
97     gest->tabele[3*(ele->num)] = gest->tabele[3*(ele->num)+1] ;
98     gest->tabele[3*(ele->num)+1]=num1 ;
99     ele=ele->suivant ;
100     }
101     surf=surf->suivant;
102     }
103     free(gest->tab_seg) ;
104     gest->tab_seg = NULL ;
105     return(VRAI) ;
106     }
107    
108