Salome HOME
updating the main trunk with the CEA debug devellopment from the branch
[modules/med.git] / src / INTERPOLATION / MEDMEM_WrapperConnectivity.hxx
1 #ifndef MEDMEM_WRAPPER_CONNECTIVITY_HXX
2 #define MEDMEM_WRAPPER_CONNECTIVITY_HXX
3
4 #include "MEDMEM_Connectivity.hxx"
5
6 #include <vector>
7
8 //////////////////////////////////////////////////////////////////
9 ///                                                            ///
10 ///                DECLARATIONS ET CODE                        ///
11 ///                                                            ///
12 //////////////////////////////////////////////////////////////////
13
14 /*********************************************************/
15 /*                                                       */
16 /*               Wrapper_Med_Connectivity                */
17 /*                                                       */
18 /*********************************************************/
19
20 // obligé de faire de la recopie car MED n'utilise pas la numérotation standart C
21
22 class Wrapper_Med_Connectivity
23 {
24 protected :
25         int * mailles;
26         int nbr_mailles;
27         vector<int> types;
28         vector< int* > premier_pointeur;
29         
30 public :        
31         ~Wrapper_Med_Connectivity() {if (mailles) delete [] mailles;}
32         Wrapper_Med_Connectivity():mailles(NULL) {}
33         Wrapper_Med_Connectivity(MEDMEM::CONNECTIVITY * maillesmed)
34                 {
35                 const int * tab_sommets_mailles=maillesmed->getConnectivity(MED_EN::MED_NODAL, MED_EN::MED_CELL, MED_EN::MED_ALL_ELEMENTS);
36                 const int * med_connectivite=maillesmed->getConnectivityIndex(MED_EN::MED_FULL_INTERLACE,MED_EN::MED_CELL);
37                 const int * med_index=maillesmed->getValueIndex(MED_EN::MED_FULL_INTERLACE);
38                 nbr_mailles=maillesmed->getNumberOf(MED_EN::MED_CELL,MED_EN::MED_ALL_ELEMENTS);
39                 int size=med_index[nbr_mailles]-med_index[0];
40                 types.resize(nbr_mailles);
41                 premier_pointeur.resize(nbr_mailles);
42                 mailles=new int[size];
43                 int i;
44                 for (i=0;i<size;i++) 
45                         {
46                         mailles[i]=tab_sommets_mailles[i]-1;
47                         }
48                 for (i=0;i<nbr_mailles;i++)
49                         {
50                         types[i]=maillesmed->getElementType(MED_EN::MED_CELL,i+1); // A VERIFIER : le +1
51                         premier_pointeur[i]=&mailles[med_index[i]-1]; // A VERIFIER : la formule
52                         }
53                 }
54         // Méthodes de la politique
55         inline int SIZE() {return nbr_mailles;}
56         inline int DONNE_TYPE_MAILLE(int i) {return types[i];}
57         inline int * DONNE_PREMIER_POINTEUR(int i) {return premier_pointeur[i];}
58 };
59
60
61 #endif