getfem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Getfem-commits] (no subject)


From: Yves Renard
Subject: [Getfem-commits] (no subject)
Date: Thu, 2 Jan 2020 11:09:04 -0500 (EST)

branch: master
commit ee9ab102b20b8d7ba92fea57cc7e12362ea9f5de
Author: Yves Renard <address@hidden>
Date:   Thu Jan 2 17:08:52 2020 +0100

    Small correction on GMSH import format 4
---
 src/getfem_import.cc | 37 +++++++++++++++++++++++++++++--------
 1 file changed, 29 insertions(+), 8 deletions(-)

diff --git a/src/getfem_import.cc b/src/getfem_import.cc
index 5b0b21b..50a5a55 100644
--- a/src/getfem_import.cc
+++ b/src/getfem_import.cc
@@ -246,7 +246,7 @@ namespace getfem {
     }
 
     /* read the version */
-    int version;
+    double version;
     std::string header;
     f >> header;
     if (bgeot::casecmp(header,"$MeshFormat")==0)
@@ -267,22 +267,37 @@ namespace getfem {
       bgeot::read_until(f, "$Nodes"); /* Format versions 2 and 4 */
 
     size_type nb_block, nb_node, dummy;
-    if (version >= 4)
+    std::string dummy2;
+    // cout << "version = " << version << endl;
+    if (version >= 4.05) {
+      f >> nb_block >> nb_node; bgeot::read_until(f, "\n");
+    } else if (version >= 4) {
       f >> nb_block >> nb_node;
-    else {
+    } else {
       nb_block = 1;
       f >> nb_node;
     }
 
-    //cerr << "reading nodes..[nb=" << nb_node << "]\n";
+    // cerr << "reading nodes..[nb=" << nb_node << "]\n";
     std::map<size_type, size_type> msh_node_2_getfem_node;
+     std::vector<size_type> inds(nb_node);
     for (size_type block=0; block < nb_block; ++block) {
       if (version >= 4)
         f >> dummy >> dummy >> dummy >> nb_node;
+      // cout << "nb_nodes = " << nb_node << endl;
+
+      inds.resize(nb_node);
+      if (version >= 4.05) {
+       for (size_type node_cnt=0; node_cnt < nb_node; ++node_cnt)
+         f >> inds[node_cnt];
+      }
+      
       for (size_type node_cnt=0; node_cnt < nb_node; ++node_cnt) {
         size_type node_id;
         base_node n{0,0,0};
-        f >> node_id >> n[0] >> n[1] >> n[2];
+       if (version < 4.05) f >> node_id; else node_id = inds[node_cnt];
+
+       f >> n[0] >> n[1] >> n[2];
         msh_node_2_getfem_node[node_id]
           = m.add_point(n, remove_duplicated_nodes ? 0. : -1.);
       }
@@ -293,25 +308,31 @@ namespace getfem {
     else
       bgeot::read_until(f, "$ENDNOD");
 
-    /* read the convexes */
+    /* read the elements */
     if (version >= 2)
       bgeot::read_until(f, "$Elements"); /* Format versions 2 and 4 */
     else
       bgeot::read_until(f, "$ELM");
 
     size_type nb_cv;
-    if (version >= 4) /* Format version 4 */
+    if (version >= 4.05) {
+      f >> nb_block >> nb_cv; bgeot::read_until(f, "\n");
+    } else if (version >= 4) { /* Format version 4 */
       f >> nb_block >> nb_cv;
-    else {
+    } else {
       nb_block = 1;
       f >> nb_cv;
     }
+    // cout << "nb_bloc = " << nb_block << " nb_cv = " << nb_cv << endl;
+     
     std::vector<gmsh_cv_info> cvlst; cvlst.reserve(nb_cv);
     for (size_type block=0; block < nb_block; ++block) {
       unsigned type, region;
       if (version >= 4) /* Format version 4 */
         f >> region >> dummy >> type >> nb_cv;
 
+      
+
       for (size_type cv=0; cv < nb_cv; ++cv) {
 
         cvlst.push_back(gmsh_cv_info());



reply via email to

[Prev in Thread] Current Thread [Next in Thread]