ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/diamesh/src/m3d_mai.cpp
Revision: 15
Committed: Fri Jun 15 19:21:49 2007 UTC (17 years, 11 months ago) by francois
Original Path: magic/lib/diamesh/diamesh/src/m3d_mai.cpp
File size: 1849 byte(s)
Log Message:
test svn

File Contents

# User Rev Content
1 5 #include <stdio.h>
2     #include <string.h>
3     #include <stdlib.h>
4     #include "m3d_struct.h"
5     #include "m3d_const.h"
6     #include "m3d_hotes.h"
7     #include "m3d_erreur.h"
8     #include "prototype.h"
9     extern GEST_MEM *gest ;
10     extern int format ;
11     extern int debug ;
12     extern int nb_max_noe ;
13     extern int nb_max_ele ;
14 francois 15
15 5 void m3d_mai(void)
16     {
17     /* tetraedres */
18     float *coord ;/* tableau des coordonnees */
19     float *vcorg ;
20    
21     /* declaration des fonctions */
22     int i ;
23     int *new_tabele ;
24     vcorg = gest->vcorg ;
25     /* Preparation automatique au maillage */
26    
27     /* Initialiser le temps cpu */
28     m3d_cpu();
29    
30     if (!p3d_aut())
31     {
32     return ;
33     }
34    
35     gest->coord = (float*)calloc(3*nb_max_noe,sizeof(float)) ;
36     if (gest->coord==NULL)
37     {
38     m3d_erreur(ERR_ALLOC);
39     return ;
40     }
41     gest->size = gest->size + 3*nb_max_noe * sizeof(float) ;
42     coord = gest->coord ;
43     /* transfert des coordonnees des noeuds */
44     for (i=0;i<3 * gest->nb_init;i++) coord[i] = gest->vcorg[i] ;
45     free(gest->vcorg) ;
46     gest->vcorg = NULL ;
47    
48     new_tabele = (int*)calloc(3*gest->nb_2d,sizeof(int)) ;
49     if (new_tabele==NULL)
50     {
51     m3d_erreur( ERR_ALLOC);
52     return ;
53     }
54     /* transfert pour economiser */
55     for (i=0;i<3*gest->nb_2d;i++) new_tabele[i] = gest->tabele[i] ;
56     free(gest->tabele) ;
57     gest->tabele = new_tabele ;
58    
59     gest->numele = (int*)calloc(4*nb_max_ele,sizeof(int)) ;
60     if (gest->numele==NULL)
61     {
62     m3d_erreur( ERR_ALLOC);
63     return ;
64     }
65    
66     gest->size = gest->size + 4*nb_max_noe * sizeof(int) ;
67    
68     if (!m3d_maidft())
69     {
70     return ;
71     }
72    
73     for (i=0;i<gest->nb_noeud;i++)
74     {
75     coord[x(i)] = coord[x(i)]/gest->coeff + gest->xmin ;
76     coord[y(i)] = coord[y(i)]/gest->coeff + gest->ymin ;
77     coord[z(i)] = coord[z(i)]/gest->coeff + gest->zmin ;
78     }
79     /* Ecriture des resultats .RES */
80    
81     if (!m3d_wresult())
82     {
83     return ;
84     }
85     return ;
86     }