[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());