ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/diamesh/src/m3d_mai.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Original Path: magic/lib/diamesh/diamesh/src/m3d_mai.cpp
File size: 1847 byte(s)
Log Message:

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