Salome HOME
updated copyright message
[plugins/ghs3dprlplugin.git] / src / tepal2med / tepal2med.cxx
old mode 100755 (executable)
new mode 100644 (file)
index bbbdf4f..72e2cc7
@@ -1,9 +1,9 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 //#include "MEDMEM_Exception.hxx"
 //#include "MEDMEM_define.hxx"
 
-extern "C" {
 #include <med.h>
 //#include <med_config.h>
 //#include <med_utils.h>
 //#include <med_misc.h>
-}
 
 //************************************
 med_idt ouvre_fichier_MED(char *fichier,int verbose)
@@ -85,21 +83,21 @@ med_idt ouvre_fichier_MED(char *fichier,int verbose)
   /* Quelle version de MED est utilise par mdump ? */
   MEDlibraryNumVersion(&majeur,&mineur,&release);
   if (verbose>0)fprintf(stdout,"\nReading %s with MED V%d.%d.%d",
-                        fichier,majeur,mineur,release);
+                        fichier,(int)majeur,(int)mineur,(int)release);
 
   /* Ouverture du fichier MED en lecture seule */
   fid = MEDfileOpen(fichier,MED_ACC_RDONLY);
   if (ret < 0) return fid;
 
   MEDfileNumVersionRd(fid, &majeur, &mineur, &release);
-  if (majeur < 2 || majeur == 2 && mineur < 2) {
+  if (( majeur < 2 ) || ( majeur == 2 && mineur < 2 )) {
     fprintf(stderr,"File %s from MED V%d.%d.%d not assumed\n",
-                   fichier,majeur,mineur,release);
+                   fichier,(int)majeur,(int)mineur,(int)release);
     //" version est ant�ieure �la version 2.2";
     ret = MEDfileClose(fid);
     fid=0; }
   else {
-    if (verbose>0)fprintf(stdout,", file from MED V%d.%d.%d\n",majeur,mineur,release); }
+    if (verbose>0)fprintf(stdout,", file from MED V%d.%d.%d\n",(int)majeur,(int)mineur,(int)release); }
 
   return fid;
 }
@@ -109,7 +107,7 @@ bool ReadFileMED(QString nomfilemed,ghs3dprl_mesh_wrap *mymailw)
 {
    med_err ret;
    med_idt fid=0;
-   med_int i,j,sdim,mdim,nmaa,edim,majeur_lu,mineur_lu,release_lu,nprofils,nstep;
+   med_int i,j,sdim,mdim,nmaa,/*edim,*//*majeur_lu,*//*mineur_lu,*//*release_lu,*//*nprofils,*/nstep;
    med_mesh_type type_maillage;
    char dtunit[MED_SNAME_SIZE+1];
    char axisname[MED_SNAME_SIZE+1];
@@ -147,8 +145,9 @@ bool ReadFileMED(QString nomfilemed,ghs3dprl_mesh_wrap *mymailw)
       ret = MEDfileClose(fid);
       return false;
    }
-   if (mdim != 3){
-      std::cerr<<"Problem mesh dimension should be 3: "<<mdim<<"\n";
+   //changed with version med: a triangles mesh in 3d is dim 2 now and 3 before 2014
+   if (mdim != 2 && mdim != 3){
+      std::cerr<<"Problem mesh dimension should be 2 or 3: "<<mdim<<"\n";
       ret = MEDfileClose(fid);
       return false;
    }
@@ -175,14 +174,14 @@ bool ReadFileMED(QString nomfilemed,ghs3dprl_mesh_wrap *mymailw)
    }
 
    //nombre d'objets MED : mailles, faces, aretes , ... 
-   med_int nmailles[MED_N_CELL_GEO],nbtria3;
-   med_int nfaces[MED_N_FACE_GEO];
-   med_int naretes[MED_N_EDGE_FIXED_GEO],nbseg2;
+   med_int /*nmailles[MED_N_CELL_GEO],*/nbtria3;
+   //med_int nfaces[MED_N_FACE_GEO];
+   med_int /*naretes[MED_N_EDGE_FIXED_GEO],*/nbseg2;
    //med_int nmailles[MED_NBR_GEOMETRIE_MAILLE],nbtria3;
    //med_int nfaces[MED_NBR_GEOMETRIE_FACE];
    //med_int naretes[MED_NBR_GEOMETRIE_ARETE],nbseg2;
    //polygones et polyedres familles equivalences joints
-   med_int nmpolygones,npolyedres,nfpolygones,nfam,nequ,njnt;
+   med_int nfam;
 
    //Combien de mailles, faces ou aretes pour chaque type geometrique ?
    /*for (i=0;i<MED_NBR_GEOMETRIE_MAILLE;i++){
@@ -217,7 +216,7 @@ std::vector<med_int> famdelete = std::vector<med_int>(nfam);
   char *gro;
   char nomfam[MED_NAME_SIZE+1];
   med_int numfam;
-  char str1[MED_COMMENT_SIZE+1];
+  //char str1[MED_COMMENT_SIZE+1];
   char str2[MED_LNAME_SIZE+1];
   med_err ret = 0;
   
@@ -253,7 +252,7 @@ std::vector<med_int> famdelete = std::vector<med_int>(nfam);
      if (i==nfam-1) std::cout<<std::endl;
     }
     QString sfam,sgro;
-    sfam=sfam.sprintf("%d",numfam);
+    sfam=sfam.sprintf("%d",(int)numfam);
     idelete=0;
     for (j=0;j<ngro;j++){
        strncpy(str2,gro+j*MED_LNAME_SIZE,MED_LNAME_SIZE);
@@ -328,7 +327,7 @@ if (mymailw->verbose>3){
    med_float *coo=new med_float[nnoe*sdim];
    /* table des numeros de familles des noeuds profil : (nombre de noeuds) */
    med_int *famnodesskin=new med_int[nnoe];
-   med_int *pfltab=new med_int[1]; //inutilise car on lit tout 
+   //med_int *pfltab=new med_int[1]; //inutilise car on lit tout 
    //lecture des noeuds : coordonnees
    ret=MEDmeshNodeCoordinateRd(fid,mymailw->nommaa,MED_NO_DT,MED_NO_IT,MED_FULL_INTERLACE,coo);
           //mdim,coo,mode_coo,MED_ALL,pfltab,0,&rep,mymailw->nomcoo,mymailw->unicoo);
@@ -348,7 +347,7 @@ if (mymailw->verbose>3){
      std::cout<<"\nVertices: no x y z family\n";
      for (i=0;i<nnoe*mdim;i=i+3) {
       fprintf(stdout,"%5d %13.5e %13.5e %13.5e %5d \n",
-          (i/3+1), coo[i], coo[i+1], coo[i+2], famnodesskin[i/3]);
+          (int)(i/3+1), coo[i], coo[i+1], coo[i+2], (int)famnodesskin[i/3]);
      } 
      std::cout<<std::endl;
    }
@@ -374,14 +373,14 @@ if (mymailw->verbose>3){
      std::cout<<"\nConnectivity MED_SEG2: no node1 node2 family\n";
      for (i=0;i<nbseg2*2;i=i+2) {
       fprintf(stdout,"%5d %5d %5d %5d \n",
-          (i/2+1), conn2[i], conn2[i+1], famseg2skin[i/2]);
+          (int)(i/2+1), (int)conn2[i], (int)conn2[i+1], (int)famseg2skin[i/2]);
      } 
      std::cout<<std::endl;
    }
-
+   //std::cout<<"\ncvw1 conn nbtria3 "<<nbtria3<<"dt "<<MED_NO_DT<<"it "<<MED_NO_IT<<"cell "<<MED_CELL<<"tria3 "<<MED_TRIA3<<std::endl;
    med_int *conn3=new med_int[nbtria3*3];
    ret=MEDmeshElementConnectivityRd(fid,mymailw->nommaa,MED_NO_DT,MED_NO_IT,
-           MED_CELL,MED_TRIA3,MED_NODAL,MED_FULL_INTERLACE,pfltab);
+           MED_CELL,MED_TRIA3,MED_NODAL,MED_FULL_INTERLACE,conn3);
            //MEDconnLire(fid,mymailw->nommaa,mdim,conn3,mode_coo,pfltab,0,MED_MAILLE,MED_TRIA3,MED_NOD);
    if (ret < 0){
       std::cerr<<"Problem reading MED_TRIA3\n";
@@ -400,7 +399,7 @@ if (mymailw->verbose>3){
      std::cout<<"\nConnectivity MED_TRIA3: no node1 node2 node3 family\n";
      for (i=0;i<nbtria3*3;i=i+3) {
       fprintf(stdout,"%5d %5d %5d %5d %5d \n",
-          (i/3+1), conn3[i], conn3[i+1], conn3[i+2], famtria3skin[i/3]);
+              (int)(i/3+1), (int)conn3[i], (int)conn3[i+1], (int)conn3[i+2], (int)famtria3skin[i/3]);
      } 
      std::cout<<std::endl;
    }
@@ -433,33 +432,33 @@ if (mymailw->verbose>3){
   }
    //stocks data for future use 
    CVWtab *montab;
-   bool ok;
+   //bool ok;
 
    montab=new CVWtab(nnoe*mdim,coo);
    tmp="SKIN_VERTICES_COORDINATES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
 
    montab=new CVWtab(nnoe,famnodesskin);
    tmp="SKIN_VERTICES_FAMILIES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
    
    montab=new CVWtab(nbseg2*2,conn2);
    tmp="SKIN_SEG2_CONNECTIVITIES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
 
    montab=new CVWtab(nbtria3,famseg2skin);
    tmp="SKIN_SEG2_FAMILIES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
 
    montab=new CVWtab(nbtria3*3,conn3);
    tmp="SKIN_TRIA3_CONNECTIVITIES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
 
    montab=new CVWtab(nbtria3,famtria3skin);
    tmp="SKIN_TRIA3_FAMILIES";
-   ok=mymailw->insert_key(tmp,montab);
+   /*ok=*/mymailw->insert_key(tmp,montab);
 
-   //if (mymailw->verbose>6) ok=mymailw->list_keys_mesh_wrap();
+   //if (mymailw->verbose>6) /*ok=*/mymailw->list_keys_mesh_wrap();
 
    ret = MEDfileClose(fid);
    if (ret < 0){
@@ -469,8 +468,8 @@ if (mymailw->verbose>3){
    return true;
 }
 
-/*
 //************************************
+/*
 string char2string(char *d, int lg)
 {
    string fin;
@@ -479,8 +478,10 @@ string char2string(char *d, int lg)
    }
    return fin;
 }
+*/
 
 //************************************
+/*
 bool string2int(const string &s, int *v)
 //string s=argv[1] ; int ii;
 //ok=string2int(s,&ii);
@@ -491,8 +492,10 @@ bool string2int(const string &s, int *v)
    int v2;
    if (ss >> *v >> v2) return true; else {*v=0 ;return false;}
 }
+*/
 
 //************************************
+/*
 bool string2float(const string &s, float *v)
 //float ff;
 //ok=string2float(s,&ff);
@@ -503,16 +506,20 @@ bool string2float(const string &s, float *v)
    float v2;
    if (ss >> *v >> v2) return true; else {*v=0. ;return false;}
 }
+*/
 
 //************************************
+/*
 string int2string(const int &v)
 {
    ostringstream ss;
    ss<<v;
    return ss.str();
 }
+*/
 
 //************************************
+/*
 string float2string(const float &v)
 {
    ostringstream ss;
@@ -529,7 +536,7 @@ int main(int argc, char *argv[])
    QString path,pathini,casename,casenamemed,fileskinmed,
            tmp,cmd,format,
            test,menu,launchtepal,background,deletegroups,
-           version="V2.0 (MED3)";
+           version="V3.0 (MED3+tepalv1)";
    
    char *chelp=NULL,
         *ccasename=NULL,
@@ -667,7 +674,7 @@ int main(int argc, char *argv[])
    if (menu=="yes") {
     QApplication a(argc,argv);
     dlg_ghs3dmain *m = new dlg_ghs3dmain();
-    m->setWindowTitle("tepal2med 2.1");
+    m->setWindowTitle("tepal2med 3.0");
     m->show();
     a.exec();
     if ( m->result() == QDialog::Accepted ) {
@@ -685,7 +692,7 @@ int main(int argc, char *argv[])
       path=casenamemed.section('/',-n-1,-2)+"/";
    else
       path="./";
-      casenamemed=casenamemed.section('/',-1);
+   casenamemed=casenamemed.section('/',-1);
    if (casenamemed.length()>20){
       std::cerr<<"--medname truncated (no more 20 characters)"<<std::endl;
       casenamemed.truncate(20);
@@ -696,7 +703,7 @@ int main(int argc, char *argv[])
       pathini=casename.section('/',-n-1,-2)+"/";
    else
       pathini="./";
-      casename=casename.section('/',-1);
+   casename=casename.section('/',-1);
    if (casename.length()>20){
       std::cerr<<"--casename truncated (no more 20 characters)"<<std::endl;
       casename.truncate(20);
@@ -776,6 +783,8 @@ int main(int argc, char *argv[])
    int nbf=format.length();
    format=format.sprintf(".%%.%dd.%%.%dd",nbf,nbf);
    mymailw->format=format;
+   mymailw->format_tetra=format; //here is tepal: not used
+   mymailw->for_tetrahpc=false; //to know what files to read: .noboite or .mesh
    
    //something like "/home/wambeke/tmp/GHS3DPRL_skin.med"
    fileskinmed=pathini+casename+"_skin.med";