00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 #define _a 0.446948490915965
00018 #define _b 0.091576213509771
00019 #define _p1 0.11169079483905
00020 #define _p2 0.0549758718227661
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #include <med.h>
00030 #define MESGERR 1
00031 #include "med_utils.h"
00032 #include <string.h>
00033 
00034 #ifdef DEF_LECT_ECR
00035 #define MODE_ACCES MED_LECTURE_ECRITURE
00036 #elif DEF_LECT_AJOUT
00037 #define MODE_ACCES MED_LECTURE_AJOUT
00038 #else
00039 #define MODE_ACCES MED_CREATION
00040 #endif
00041 
00042 #ifndef USER_INTERLACE
00043 #define USER_INTERLACE MED_FULL_INTERLACE
00044 #endif
00045 
00046 #define USER_MODE MED_COMPACT
00047  
00048 int main (int argc, char **argv)
00049 
00050 
00051 {
00052   med_err ret=0;
00053   med_idt fid;
00054   
00055 
00056 
00057   
00058   
00059   char maa1[MED_TAILLE_NOM+1]= "maa1";
00060   char maa2[MED_TAILLE_NOM+1]= "maa2";
00061   char * lien_maa2 = "./testfoo.med";
00062   char maa3[MED_TAILLE_NOM+1]= "maa3";
00063 
00064 
00065   
00066   char nomcha1[MED_TAILLE_NOM+1]  = "champ reel";
00067   char comp1[2*MED_TAILLE_PNOM+1] = "comp1           comp2           ";
00068                                    
00069   char unit1[2*MED_TAILLE_PNOM+1] = "unit1           unit2           ";
00070   med_int ncomp1  = 2; 
00071   
00072   med_int ngauss1_1 = 6;
00073   char gauss1_1[MED_TAILLE_NOM+1]  = "Model n1";
00074   med_float refcoo1[12] = { -1.0,1.0, -1.0,-1.0, 1.0,-1.0, -1.0,0.0, 0.0,-1.0, 0.0,0.0 }; 
00075 
00076   
00077 
00078   med_float gscoo1_1[12] = { 2*_b-1, 1-4*_b, 2*_b-1, 2*_b-1, 1-4*_b, 
00079                              2*_b-1, 1-4*_a, 2*_a-1, 2*_a-1, 1-4*_a, 2*_a-1, 2*_a-1 }; 
00080   med_float wg1_1[6] = { 4*_p2, 4*_p2, 4*_p2, 4*_p1, 4*_p1, 4*_p1 }; 
00081 
00082   med_int   nval1_1= 1*6; 
00083   med_float valr1_1[1*6*2]  = {0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0};  
00084   
00085   med_int ngauss1_2 = 3;
00086   char gauss1_2[MED_TAILLE_NOM+1]  = "Model n2";
00087   med_float gscoo1_2[6] = { -2.0/3,1.0/3, -2.0/3,-2.0/3, 1.0/3,-2.0/3  }; 
00088   med_float wg1_2[3] = { 2.0/3, 2.0/3, 2.0/3 }; 
00089   med_int   nval1_2= 2*3; 
00090   med_float valr1_2[2*3*2]  = {0.0,1.0, 2.0,3.0, 10.0,11.0,   12.0,13.0, 20.0,21.0, 22.0,23.0};  
00091   med_float valr1_2p[2*3*2]  = {                              12.0,13.0, 20.0,21.0, 22.0,23.0};  
00092  
00093   med_int   nval1_3= 6; 
00094   med_float valr1_3[2*3*2]  = {0.0,1.0, 2.0,3.0, 10.0,11.0, 12.0,13.0, 20.0,21.0, 22.0,23.0};  
00095   med_float valr1_3p[2*2*2] = {         2.0,3.0, 10.0,11.0                                 };  
00096   
00097   
00098   char nomcha2[MED_TAILLE_NOM+1]  = "champ entier";
00099   char comp2[3*MED_TAILLE_PNOM+1] = "comp1           comp2           comp3           ";
00100                                    
00101   char unit2[3*MED_TAILLE_PNOM+1] = "unit1           unit2           unit3           ";
00102   med_int ncomp2  = 3; 
00103   med_int nval2 = 5;   
00104   med_int   valr2[5*3  ]  = {0,1,2, 10,11,12, 20,21,22, 30,31,32, 40,41,42};              
00105   med_int   valr2p[3*3  ] = {0,1,2,           20,21,22,           40,41,42};              
00106 
00107   
00108   char nomprofil1[MED_TAILLE_NOM+1]  = "PROFIL(champ(1))";
00109   char nomprofil2[MED_TAILLE_NOM+1]  = "PROFIL(champ2)";
00110   med_int profil1[2] = { 2, 3 };
00111   med_int profil2[3] = { 1, 3, 5 };
00112 
00113 
00114   
00115   char nomcha3[MED_TAILLE_NOM+1]  = "champ entier 3";
00116   char comp3[3*MED_TAILLE_PNOM+1] = "comp1           comp2           ";
00117                                    
00118   char unit3[3*MED_TAILLE_PNOM+1] = "unit1           unit2           ";
00119   med_int ncomp3  = 2;
00120   med_int nval3 = 5*4;     
00121   med_int valr3[5*4*2]   = {0,1, 10,11, 20,21, 30,31,
00122                             40,41, 50,51, 60,61, 70,71,
00123                             80,81, 90,91, 100,101, 110,111,
00124                             120,121, 130,131, 140,141, 150,151,
00125                             160,161, 170,171, 180,181, 190,191};    
00126   med_int valr3p[3*4*2]  = {0,1, 10,11, 20,21, 30,31,
00127                             80,81, 90,91, 100,101, 110,111,
00128                             160,161, 170,171, 180,181, 190,191};    
00129 
00130 
00131 
00132 
00133 
00134 
00135   
00136   if ((fid = MEDouvrir("test10.med",MODE_ACCES)) < 0){
00137     MESSAGE("Erreur à l'ouverture du fichier : ");
00138     return -1;
00139   }
00140   
00141   
00142   if ( MEDmaaCr(fid,maa1,3,MED_NON_STRUCTURE,"Maillage vide") < 0) {
00143     MESSAGE("Erreur à la création du maillage : ");SSCRUTE(maa1);
00144     ret = -1;
00145   };
00146 
00147   
00148   if ( MEDmaaCr(fid,maa3,3,MED_NON_STRUCTURE,"Maillage vide") < 0) {
00149     MESSAGE("Erreur à la création du maillage : ");SSCRUTE(maa3);
00150     ret = -1;
00151   };
00152     
00153   
00154   if ( MEDchampCr(fid,nomcha1,MED_FLOAT64,comp1,unit1,ncomp1) < 0) {
00155     MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha1);
00156     ret = -1;
00157   };
00158   
00159   
00160   if ( MEDchampCr(fid,nomcha2,MED_INT32,comp2,unit2,ncomp2) < 0) {
00161     MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha2);
00162     ret = -1;
00163   };
00164   
00165   
00166   if (MEDlienEcr(fid,lien_maa2,maa2) < 0) {
00167     MESSAGE("Erreur à la création du lien : ");SSCRUTE(lien_maa2);
00168     ret = -1;
00169   };
00170 
00171   
00172   if (MEDgaussEcr(fid, MED_TRIA6, refcoo1, USER_INTERLACE,
00173                   ngauss1_1, gscoo1_1, wg1_1, gauss1_1) < 0) {
00174     MESSAGE("Erreur à la création du modèle n°1 : ");SSCRUTE(gauss1_1);
00175     ret = -1;
00176   };
00177 
00178    
00179   if (MEDgaussEcr(fid, MED_TRIA6, refcoo1, USER_INTERLACE,
00180                   ngauss1_2, gscoo1_2, wg1_2, gauss1_2) < 0) {
00181     MESSAGE("Erreur à la création du modèle n°1 : ");SSCRUTE(gauss1_2);
00182     ret = -1;
00183   };
00184  
00185   
00186   
00187   if ( MEDchampEcr(fid,maa1,nomcha1,(unsigned char*)valr1_1,USER_INTERLACE,nval1_1,gauss1_1,
00188                    2,MED_NOPFL,MED_NO_PFLMOD,MED_MAILLE,MED_TRIA6,MED_NOPDT,"",0.0,MED_NONOR ) < 0) {
00189     MESSAGE("Erreur à l'écriture du champ : ");
00190     SSCRUTE(nomcha1);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00191     SSCRUTE(maa1);
00192     ret = -1;
00193   };
00194   
00195 
00196   
00197   if ( MEDchampEcr(fid,maa1,nomcha1,(unsigned char*)valr1_1,USER_INTERLACE,nval1_1,gauss1_1,
00198                       1,MED_NOPFL,MED_NO_PFLMOD,MED_MAILLE,MED_TRIA6,MED_NOPDT,"",0.0,MED_NONOR) < 0) {
00199     MESSAGE("Erreur à l'écriture du champ : ");
00200     SSCRUTE(nomcha1);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00201     SSCRUTE(maa1);
00202     ret = -1;
00203   };
00204 
00205 
00206   
00207   
00208   if ( MEDchampEcr(fid,maa2,nomcha1,(unsigned char*)valr1_2,USER_INTERLACE,nval1_2,gauss1_2,
00209                       1,MED_NOPFL,MED_NO_PFLMOD,MED_MAILLE,MED_TRIA6,1,"ms",5.5,MED_NONOR) < 0) {
00210     MESSAGE("Erreur à l'écriture du champ : ");
00211     SSCRUTE(nomcha1);ISCRUTE_int(1);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00212     SSCRUTE(maa2);
00213     ret = -1;
00214   };
00215 
00216   
00217   
00218   if ( MEDchampEcr(fid,maa1,nomcha1,(unsigned char*)valr1_1,USER_INTERLACE,nval1_1,gauss1_1,
00219                       2,MED_NOPFL,MED_NO_PFLMOD,MED_MAILLE,MED_TRIA6,1,"ms",5.5,MED_NONOR) < 0) {
00220     MESSAGE("Erreur à l'écriture du champ : ");
00221     SSCRUTE(nomcha1);ISCRUTE_int(1);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00222     SSCRUTE(maa1);
00223     ret = -1;
00224   };
00225 
00226     
00227     
00228   if ( MEDchampEcr(fid,maa3,nomcha1,(unsigned char*)valr1_2,USER_INTERLACE,nval1_2,gauss1_2,
00229                    1,MED_NOPFL,MED_NO_PFLMOD,MED_MAILLE,MED_TRIA6,1,"ms",5.5,2) < 0) {
00230     MESSAGE("Erreur à l'écriture du champ : ");
00231     SSCRUTE(nomcha1);ISCRUTE_int(1);ISCRUTE_int(2);SSCRUTE(MED_NOPFL);
00232     SSCRUTE(maa3);
00233     ret = -1;
00234   };
00235   
00236   
00237   
00238   if ( MEDprofilEcr(fid,profil1,1,nomprofil1) < 0) {
00239     MESSAGE("Erreur à l'écriture du profil : ");
00240     SSCRUTE(nomprofil1);
00241     ret = -1;
00242   };
00243 
00244 
00245   
00246 
00247   if ( MEDchampEcr(fid,maa1, nomcha1,(unsigned char*)valr1_3p,USER_INTERLACE,nval1_3,MED_NOGAUSS,
00248                    MED_ALL,nomprofil1,USER_MODE,MED_MAILLE,MED_TRIA6,2,"ms",5.6,2) < 0) {
00249     MESSAGE("Erreur à l'écriture du champ : ");
00250     SSCRUTE(nomcha1);ISCRUTE_int(2);ISCRUTE_int(2);SSCRUTE(nomprofil1);
00251     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00252     ret = -1;
00253   };
00254 
00255   
00256 
00257   if ( MEDchampEcr(fid,maa2, nomcha1,(unsigned char*)valr1_2p,USER_INTERLACE,nval1_2,gauss1_2,
00258                    MED_ALL,nomprofil1,USER_MODE,MED_MAILLE,MED_TRIA6,2,"ms",5.6,2) < 0) {
00259     MESSAGE("Erreur à l'écriture du champ : ");
00260     SSCRUTE(nomcha1);ISCRUTE_int(2);ISCRUTE_int(2);SSCRUTE(nomprofil1);
00261     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00262     ret = -1;
00263   }; 
00264 
00265 
00266   
00267   if ( MEDchampEcr(fid,maa1,nomcha1,(unsigned char*)valr1_3p,USER_INTERLACE,nval1_3,MED_NOGAUSS,
00268                    2,nomprofil1,USER_MODE,MED_MAILLE,MED_TRIA6,3,"ms",5.7,2) < 0)  {
00269     MESSAGE("Erreur à l'écriture du champ : ");
00270     SSCRUTE(nomcha1);ISCRUTE_int(2);ISCRUTE_int(2);SSCRUTE(nomprofil1);
00271     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00272     ret = -1;
00273   };
00274     
00275     
00276     
00277   
00278   
00279     
00280   
00281   if (MEDchampEcr(fid,maa1,nomcha2,(unsigned char*)valr2,USER_INTERLACE,nval2,MED_NOGAUSS,
00282                   1,MED_NOPFL,MED_NO_PFLMOD,MED_ARETE,MED_SEG2,MED_NOPDT,"",0.0,MED_NONOR) < 0)  {
00283     MESSAGE("Erreur à l'écriture du champ : ");
00284     SSCRUTE(nomcha2);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00285     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00286     ret = -1;
00287   };
00288 
00289 
00290   
00291   
00292   if (MEDchampEcr(fid,maa1,nomcha2,(unsigned char*)valr2,USER_INTERLACE,nval2,MED_NOGAUSS,
00293                       2,MED_NOPFL,MED_NO_PFLMOD,MED_NOEUD,0,MED_NOPDT,"",0.0,MED_NONOR) < 0)  {
00294     MESSAGE("Erreur à l'écriture du champ : ");
00295     SSCRUTE(nomcha2);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00296     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00297     ret = -1;
00298   };
00299 
00300   
00301   
00302   if ( MEDchampEcr(fid,maa1,nomcha2,(unsigned char*)valr2,USER_INTERLACE,nval2,MED_NOGAUSS,
00303                    3,MED_NOPFL,MED_NO_PFLMOD,MED_FACE,MED_TRIA6,MED_NOPDT,"",0.0,MED_NONOR) < 0 ) {
00304     MESSAGE("Erreur à l'écriture du champ : ");
00305     SSCRUTE(nomcha2);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00306     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00307     ret = -1;
00308   };
00309 
00310   
00311   
00312   if ( MEDprofilEcr(fid,profil2,3,nomprofil2) < 0) {
00313     MESSAGE("Erreur à l'écriture du profil : ");
00314     SSCRUTE(nomprofil2);
00315     ret = -1;
00316   };
00317 
00318   
00319   if ( MEDchampEcr(fid,maa1,nomcha2,(unsigned char*)valr2p,USER_INTERLACE,nval2,MED_NOGAUSS,
00320                       3,nomprofil2,USER_MODE,MED_MAILLE,MED_TRIA6,MED_NOPDT,"",0.0,MED_NONOR) < 0 ) {
00321     MESSAGE("Erreur à l'écriture du champ : ");
00322     SSCRUTE(nomcha2);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00323     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00324     ret = -1;
00325   };
00326 
00327   
00328   if ( MEDchampCr(fid,nomcha3,MED_INT32,comp3,unit3,ncomp3) < 0) {
00329     MESSAGE("Erreur à la création du champ : ");SSCRUTE(nomcha3);
00330     ret = -1;
00331   };
00332   
00333   
00334 
00335   
00336   if (MEDchampEcr(fid,maa1,nomcha3,(unsigned char*)valr3,USER_INTERLACE,nval3,MED_NOGAUSS,
00337                   1,MED_NOPFL,MED_NO_PFLMOD,MED_NOEUD_MAILLE,MED_QUAD4,MED_NOPDT,"",0.0,MED_NONOR) < 0)  {
00338     MESSAGE("Erreur à l'écriture du champ : ");
00339     SSCRUTE(nomcha3);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00340     SSCRUTE(maa1);SSCRUTE(MED_NOLIEN);
00341     ret = -1;
00342   };
00343 
00344   
00345   if (MEDchampEcr(fid,maa2,nomcha3,(unsigned char*)valr3,USER_INTERLACE,nval3,MED_NOGAUSS,
00346                   MED_ALL,MED_NOPFL,MED_NO_PFLMOD,MED_NOEUD_MAILLE,MED_QUAD4,MED_NOPDT,"",0.0,MED_NONOR) < 0)  {
00347     MESSAGE("Erreur à l'écriture du champ : ");
00348     SSCRUTE(nomcha3);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(MED_NOPFL);
00349     SSCRUTE(maa2);SSCRUTE(MED_NOLIEN);
00350     ret = -1;
00351   };
00352 
00353   
00354   if (MEDchampEcr(fid,maa3,nomcha3,(unsigned char*)valr3p,USER_INTERLACE,nval3,MED_NOGAUSS,
00355                   MED_ALL,nomprofil2,USER_MODE,MED_NOEUD_MAILLE,MED_QUAD4,MED_NOPDT,"",0.0,MED_NONOR) < 0)  {
00356     MESSAGE("Erreur à l'écriture du champ : ");
00357     SSCRUTE(nomcha3);ISCRUTE_int(MED_NOPDT);ISCRUTE_int(MED_NONOR);SSCRUTE(nomprofil2);
00358     SSCRUTE(maa3);SSCRUTE(MED_NOLIEN);
00359     ret = -1;
00360   };
00361 
00362 
00363   
00364   if ( MEDfermer(fid) < 0 ) ret=-1;
00365   
00366   return ret;
00367 }
00368 
00369 
00370 
00371