update mesh_io
This commit is contained in:
parent
3a22285275
commit
a927a93997
@ -46,8 +46,7 @@ void gctl::meshio_data::clear()
|
|||||||
str_tag.clear();
|
str_tag.clear();
|
||||||
real_tag.clear();
|
real_tag.clear();
|
||||||
int_tag.clear();
|
int_tag.clear();
|
||||||
vert_ptrs.clear();
|
tar_ptrs.clear();
|
||||||
elem_ptrs.clear();
|
|
||||||
val.clear();
|
val.clear();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -55,11 +54,10 @@ void gctl::meshio_data::clear()
|
|||||||
bool gctl::meshio_data::pass_check()
|
bool gctl::meshio_data::pass_check()
|
||||||
{
|
{
|
||||||
// 检查是否同时连接了顶点和单元体
|
// 检查是否同时连接了顶点和单元体
|
||||||
if (vert_ptrs.empty() && elem_ptrs.empty()) return false;
|
if (tar_ptrs.empty()) return false;
|
||||||
if (!vert_ptrs.empty() && !elem_ptrs.empty()) return false;
|
if (int_tag[2] != val.size()) return false;
|
||||||
|
if (tar_ptrs.size() != val.size()) return false;
|
||||||
if (str_tag.empty() || real_tag.empty() || int_tag.size() < 3) return false;
|
if (str_tag.empty() || real_tag.empty() || int_tag.size() < 3) return false;
|
||||||
if (!vert_ptrs.empty() && (vert_ptrs.size() != val.size() || int_tag[2] != val.size())) return false;
|
|
||||||
if (!elem_ptrs.empty() && (elem_ptrs.size() != val.size() || int_tag[2] != val.size())) return false;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,7 +317,7 @@ void gctl::mesh_io::info(std::ostream &ss)
|
|||||||
ss << "nodedata: \"";
|
ss << "nodedata: \"";
|
||||||
for (size_t l = 0; l < datas_[d].val.size(); l++)
|
for (size_t l = 0; l < datas_[d].val.size(); l++)
|
||||||
{
|
{
|
||||||
if (datas_[d].vert_ptrs[l]->id != DEFAULT_INVALID_TAG)
|
if (reinterpret_cast<vertex3dc*>(datas_[d].tar_ptrs[l])->id != DEFAULT_INVALID_TAG)
|
||||||
{
|
{
|
||||||
min = std::min(min, datas_[d].val[l]);
|
min = std::min(min, datas_[d].val[l]);
|
||||||
max = std::max(max, datas_[d].val[l]);
|
max = std::max(max, datas_[d].val[l]);
|
||||||
@ -332,7 +330,7 @@ void gctl::mesh_io::info(std::ostream &ss)
|
|||||||
ss << "elementdata: \"";
|
ss << "elementdata: \"";
|
||||||
for (size_t l = 0; l < datas_[d].val.size(); l++)
|
for (size_t l = 0; l < datas_[d].val.size(); l++)
|
||||||
{
|
{
|
||||||
if (datas_[d].elem_ptrs[l]->enabled)
|
if (reinterpret_cast<meshio_element*>(datas_[d].tar_ptrs[l])->enabled)
|
||||||
{
|
{
|
||||||
min = std::min(min, datas_[d].val[l]);
|
min = std::min(min, datas_[d].val[l]);
|
||||||
max = std::max(max, datas_[d].val[l]);
|
max = std::max(max, datas_[d].val[l]);
|
||||||
@ -558,7 +556,7 @@ void gctl::mesh_io::convert_tags_to_data(element_tag_enum tag_type)
|
|||||||
tmp_data.int_tag[2] = valid_node_size_;
|
tmp_data.int_tag[2] = valid_node_size_;
|
||||||
|
|
||||||
tmp_data.val.resize(valid_node_size_);
|
tmp_data.val.resize(valid_node_size_);
|
||||||
tmp_data.vert_ptrs.resize(valid_node_size_);
|
tmp_data.tar_ptrs.resize(valid_node_size_);
|
||||||
|
|
||||||
size_t c = 0;
|
size_t c = 0;
|
||||||
for (size_t i = 0; i < nodes_.size(); i++)
|
for (size_t i = 0; i < nodes_.size(); i++)
|
||||||
@ -566,7 +564,7 @@ void gctl::mesh_io::convert_tags_to_data(element_tag_enum tag_type)
|
|||||||
if (nodes_[i].id != DEFAULT_INVALID_TAG)
|
if (nodes_[i].id != DEFAULT_INVALID_TAG)
|
||||||
{
|
{
|
||||||
tmp_data.val[c] = (double) nodes_tag_[i];
|
tmp_data.val[c] = (double) nodes_tag_[i];
|
||||||
tmp_data.vert_ptrs[c] = nodes_.get(i);
|
tmp_data.tar_ptrs[c] = nodes_.get(i);
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -588,7 +586,7 @@ void gctl::mesh_io::convert_tags_to_data(element_tag_enum tag_type)
|
|||||||
tmp_data.int_tag[2] = valid_elem_size_;
|
tmp_data.int_tag[2] = valid_elem_size_;
|
||||||
|
|
||||||
tmp_data.val.resize(valid_elem_size_);
|
tmp_data.val.resize(valid_elem_size_);
|
||||||
tmp_data.elem_ptrs.resize(valid_elem_size_);
|
tmp_data.tar_ptrs.resize(valid_elem_size_);
|
||||||
|
|
||||||
size_t c = 0;
|
size_t c = 0;
|
||||||
for (size_t g = 0; g < groups_.size(); g++)
|
for (size_t g = 0; g < groups_.size(); g++)
|
||||||
@ -600,7 +598,7 @@ void gctl::mesh_io::convert_tags_to_data(element_tag_enum tag_type)
|
|||||||
if (tag_type == PhysicalTag) tmp_data.val[c] = (double) groups_[g].phys_group;
|
if (tag_type == PhysicalTag) tmp_data.val[c] = (double) groups_[g].phys_group;
|
||||||
if (tag_type == GeometryTag) tmp_data.val[c] = (double) groups_[g].geom_group;
|
if (tag_type == GeometryTag) tmp_data.val[c] = (double) groups_[g].geom_group;
|
||||||
if (tag_type == PartitionTag) tmp_data.val[c] = (double) groups_[g].part_group;
|
if (tag_type == PartitionTag) tmp_data.val[c] = (double) groups_[g].part_group;
|
||||||
tmp_data.elem_ptrs[c] = groups_[g].elem_ptrs[e];
|
tmp_data.tar_ptrs[c] = groups_[g].elem_ptrs[e];
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -840,12 +838,12 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data)
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = s;
|
new_data.int_tag[2] = s;
|
||||||
new_data.vert_ptrs.resize(s, nullptr);
|
new_data.tar_ptrs.resize(s, nullptr);
|
||||||
new_data.val.resize(s);
|
new_data.val.resize(s);
|
||||||
|
|
||||||
for (size_t i = 0; i < s; i++)
|
for (size_t i = 0; i < s; i++)
|
||||||
{
|
{
|
||||||
new_data.vert_ptrs[i] = nodes_.get(i);
|
new_data.tar_ptrs[i] = nodes_.get(i);
|
||||||
new_data.val[i] = data[i];
|
new_data.val[i] = data[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,7 +866,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
|||||||
if (d_id != -1)
|
if (d_id != -1)
|
||||||
{
|
{
|
||||||
datas_[d_id].val.resize(s);
|
datas_[d_id].val.resize(s);
|
||||||
datas_[d_id].vert_ptrs.resize(s, nullptr);
|
datas_[d_id].tar_ptrs.resize(s, nullptr);
|
||||||
datas_[d_id].int_tag[2] = s;
|
datas_[d_id].int_tag[2] = s;
|
||||||
|
|
||||||
s = 0;
|
s = 0;
|
||||||
@ -876,7 +874,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
|||||||
{
|
{
|
||||||
if (boolen[i])
|
if (boolen[i])
|
||||||
{
|
{
|
||||||
datas_[d_id].vert_ptrs[s] = nodes_.get(i);
|
datas_[d_id].tar_ptrs[s] = nodes_.get(i);
|
||||||
datas_[d_id].val[s] = data[i];
|
datas_[d_id].val[s] = data[i];
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
@ -892,7 +890,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = s;
|
new_data.int_tag[2] = s;
|
||||||
new_data.vert_ptrs.resize(s, nullptr);
|
new_data.tar_ptrs.resize(s, nullptr);
|
||||||
new_data.val.resize(s);
|
new_data.val.resize(s);
|
||||||
|
|
||||||
s = 0;
|
s = 0;
|
||||||
@ -900,7 +898,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
|||||||
{
|
{
|
||||||
if (boolen[i])
|
if (boolen[i])
|
||||||
{
|
{
|
||||||
new_data.vert_ptrs[s] = nodes_.get(i);
|
new_data.tar_ptrs[s] = nodes_.get(i);
|
||||||
new_data.val[s] = data[i];
|
new_data.val[s] = data[i];
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
@ -924,7 +922,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
if (d_id != -1)
|
if (d_id != -1)
|
||||||
{
|
{
|
||||||
datas_[d_id].int_tag[2] = e;
|
datas_[d_id].int_tag[2] = e;
|
||||||
datas_[d_id].elem_ptrs.resize(e, nullptr);
|
datas_[d_id].tar_ptrs.resize(e, nullptr);
|
||||||
datas_[d_id].val.resize(e, 0.0);
|
datas_[d_id].val.resize(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -934,7 +932,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
||||||
{
|
{
|
||||||
datas_[d_id].elem_ptrs[e] = groups_[i].elem_ptrs[j];
|
datas_[d_id].tar_ptrs[e] = groups_[i].elem_ptrs[j];
|
||||||
datas_[d_id].val[e] = data[e];
|
datas_[d_id].val[e] = data[e];
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
@ -951,7 +949,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = e;
|
new_data.int_tag[2] = e;
|
||||||
new_data.elem_ptrs.resize(e, nullptr);
|
new_data.tar_ptrs.resize(e, nullptr);
|
||||||
new_data.val.resize(e, 0.0);
|
new_data.val.resize(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -961,7 +959,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
||||||
{
|
{
|
||||||
new_data.elem_ptrs[e] = groups_[i].elem_ptrs[j];
|
new_data.tar_ptrs[e] = groups_[i].elem_ptrs[j];
|
||||||
new_data.val[e] = data[e];
|
new_data.val[e] = data[e];
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
@ -991,7 +989,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
int d_id = if_saved_data(name, ElemData);
|
int d_id = if_saved_data(name, ElemData);
|
||||||
if (d_id != -1)
|
if (d_id != -1)
|
||||||
{
|
{
|
||||||
array<meshio_element*> more_elem_ptrs(e, nullptr);
|
array<void*> more_elem_ptrs(e, nullptr);
|
||||||
array<double> more_val(e, 0.0);
|
array<double> more_val(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1012,7 +1010,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
}
|
}
|
||||||
|
|
||||||
datas_[d_id].int_tag[2] += e;
|
datas_[d_id].int_tag[2] += e;
|
||||||
datas_[d_id].elem_ptrs.concat(more_elem_ptrs);
|
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||||
datas_[d_id].val.concat(more_val);
|
datas_[d_id].val.concat(more_val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1025,7 +1023,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = e;
|
new_data.int_tag[2] = e;
|
||||||
new_data.elem_ptrs.resize(e, nullptr);
|
new_data.tar_ptrs.resize(e, nullptr);
|
||||||
new_data.val.resize(e, 0.0);
|
new_data.val.resize(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1038,7 +1036,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
||||||
{
|
{
|
||||||
new_data.elem_ptrs[e] = groups_[i].elem_ptrs[j];
|
new_data.tar_ptrs[e] = groups_[i].elem_ptrs[j];
|
||||||
new_data.val[e] = data[e];
|
new_data.val[e] = data[e];
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
@ -1065,7 +1063,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, co
|
|||||||
int d_id = if_saved_data(name, ElemData);
|
int d_id = if_saved_data(name, ElemData);
|
||||||
if (d_id != -1)
|
if (d_id != -1)
|
||||||
{
|
{
|
||||||
array<meshio_element*> more_elem_ptrs(e, nullptr);
|
array<void*> more_elem_ptrs(e, nullptr);
|
||||||
array<double> more_val(e, 0.0);
|
array<double> more_val(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1083,7 +1081,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, co
|
|||||||
}
|
}
|
||||||
|
|
||||||
datas_[d_id].int_tag[2] += e;
|
datas_[d_id].int_tag[2] += e;
|
||||||
datas_[d_id].elem_ptrs.concat(more_elem_ptrs);
|
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||||
datas_[d_id].val.concat(more_val);
|
datas_[d_id].val.concat(more_val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1096,7 +1094,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, co
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = e;
|
new_data.int_tag[2] = e;
|
||||||
new_data.elem_ptrs.resize(e, nullptr);
|
new_data.tar_ptrs.resize(e, nullptr);
|
||||||
new_data.val.resize(e, 0.0);
|
new_data.val.resize(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1106,7 +1104,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, co
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
||||||
{
|
{
|
||||||
new_data.elem_ptrs[e] = groups_[i].elem_ptrs[j];
|
new_data.tar_ptrs[e] = groups_[i].elem_ptrs[j];
|
||||||
new_data.val[e] = data[e];
|
new_data.val[e] = data[e];
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
@ -1131,7 +1129,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, do
|
|||||||
int d_id = if_saved_data(name, ElemData);
|
int d_id = if_saved_data(name, ElemData);
|
||||||
if (d_id != -1)
|
if (d_id != -1)
|
||||||
{
|
{
|
||||||
array<meshio_element*> more_elem_ptrs(e, nullptr);
|
array<void*> more_elem_ptrs(e, nullptr);
|
||||||
array<double> more_val(e, 0.0);
|
array<double> more_val(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1149,7 +1147,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, do
|
|||||||
}
|
}
|
||||||
|
|
||||||
datas_[d_id].int_tag[2] += e;
|
datas_[d_id].int_tag[2] += e;
|
||||||
datas_[d_id].elem_ptrs.concat(more_elem_ptrs);
|
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||||
datas_[d_id].val.concat(more_val);
|
datas_[d_id].val.concat(more_val);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1162,7 +1160,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, do
|
|||||||
new_data.int_tag.resize(3, 0);
|
new_data.int_tag.resize(3, 0);
|
||||||
new_data.int_tag[1] = 1;
|
new_data.int_tag[1] = 1;
|
||||||
new_data.int_tag[2] = e;
|
new_data.int_tag[2] = e;
|
||||||
new_data.elem_ptrs.resize(e, nullptr);
|
new_data.tar_ptrs.resize(e, nullptr);
|
||||||
new_data.val.resize(e, 0.0);
|
new_data.val.resize(e, 0.0);
|
||||||
|
|
||||||
e = 0;
|
e = 0;
|
||||||
@ -1172,7 +1170,7 @@ void gctl::mesh_io::add_element_data(std::string name, std::string phys_name, do
|
|||||||
{
|
{
|
||||||
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
for (size_t j = 0; j < groups_[i].elem_ptrs.size(); j++)
|
||||||
{
|
{
|
||||||
new_data.elem_ptrs[e] = groups_[i].elem_ptrs[j];
|
new_data.tar_ptrs[e] = groups_[i].elem_ptrs[j];
|
||||||
new_data.val[e] = phys_val;
|
new_data.val[e] = phys_val;
|
||||||
e++;
|
e++;
|
||||||
}
|
}
|
||||||
@ -1612,28 +1610,28 @@ void gctl::mesh_io::read_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
|||||||
|
|
||||||
if (tmp_data.d_type == NodeData)
|
if (tmp_data.d_type == NodeData)
|
||||||
{
|
{
|
||||||
tmp_data.vert_ptrs.resize(tmp_data.int_tag.back());
|
tmp_data.tar_ptrs.resize(tmp_data.int_tag.back());
|
||||||
tmp_data.val.resize(tmp_data.int_tag.back());
|
tmp_data.val.resize(tmp_data.int_tag.back());
|
||||||
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
||||||
{
|
{
|
||||||
getline(infile,tmp_str);
|
getline(infile,tmp_str);
|
||||||
str2ss(tmp_str, tmp_ss);
|
str2ss(tmp_str, tmp_ss);
|
||||||
tmp_ss >> vt_idx >> tmp_data.val[i];
|
tmp_ss >> vt_idx >> tmp_data.val[i];
|
||||||
if (is_packed == Packed) tmp_data.vert_ptrs[i] = nodes_.get(vt_idx);
|
if (is_packed == Packed) tmp_data.tar_ptrs[i] = nodes_.get(vt_idx);
|
||||||
else tmp_data.vert_ptrs[i] = nodes_.get(vt_idx - 1);
|
else tmp_data.tar_ptrs[i] = nodes_.get(vt_idx - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmp_data.elem_ptrs.resize(tmp_data.int_tag.back());
|
tmp_data.tar_ptrs.resize(tmp_data.int_tag.back());
|
||||||
tmp_data.val.resize(tmp_data.int_tag.back());
|
tmp_data.val.resize(tmp_data.int_tag.back());
|
||||||
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
||||||
{
|
{
|
||||||
getline(infile,tmp_str);
|
getline(infile,tmp_str);
|
||||||
str2ss(tmp_str, tmp_ss);
|
str2ss(tmp_str, tmp_ss);
|
||||||
tmp_ss >> vt_idx >> tmp_data.val[i];
|
tmp_ss >> vt_idx >> tmp_data.val[i];
|
||||||
if (is_packed == Packed) tmp_data.elem_ptrs[i] = elems_.get(vt_idx);
|
if (is_packed == Packed) tmp_data.tar_ptrs[i] = elems_.get(vt_idx);
|
||||||
else tmp_data.elem_ptrs[i] = elems_.get(vt_idx - 1);
|
else tmp_data.tar_ptrs[i] = elems_.get(vt_idx - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1791,7 +1789,7 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
|||||||
d_size = 0;
|
d_size = 0;
|
||||||
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
||||||
{
|
{
|
||||||
if (datas_[i].vert_ptrs[n]->id != DEFAULT_INVALID_TAG) d_size++;
|
if (reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[n])->id != DEFAULT_INVALID_TAG) d_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d_size)
|
if (d_size)
|
||||||
@ -1816,10 +1814,12 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
|||||||
}
|
}
|
||||||
outfile << d_size << "\n";
|
outfile << d_size << "\n";
|
||||||
|
|
||||||
|
int tmp_id;
|
||||||
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
||||||
{
|
{
|
||||||
if (datas_[i].vert_ptrs[a]->id != DEFAULT_INVALID_TAG && is_packed == Packed) outfile << datas_[i].vert_ptrs[a]->id << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
tmp_id = reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[a])->id;
|
||||||
else if (datas_[i].vert_ptrs[a]->id != DEFAULT_INVALID_TAG) outfile << datas_[i].vert_ptrs[a]->id + 1 << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
if (tmp_id != DEFAULT_INVALID_TAG && is_packed == Packed) outfile << tmp_id << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
||||||
|
else if (tmp_id != DEFAULT_INVALID_TAG) outfile << tmp_id + 1 << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
||||||
}
|
}
|
||||||
outfile << "$EndNodeData\n";
|
outfile << "$EndNodeData\n";
|
||||||
}
|
}
|
||||||
@ -1829,7 +1829,7 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
|||||||
d_size = 0;
|
d_size = 0;
|
||||||
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
||||||
{
|
{
|
||||||
if (datas_[i].elem_ptrs[n]->enabled) d_size++;
|
if (reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[n])->enabled) d_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d_size)
|
if (d_size)
|
||||||
@ -1854,10 +1854,14 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
|||||||
}
|
}
|
||||||
outfile << d_size << "\n";
|
outfile << d_size << "\n";
|
||||||
|
|
||||||
|
int tmp_id;
|
||||||
|
bool d_ok;
|
||||||
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
||||||
{
|
{
|
||||||
if (datas_[i].elem_ptrs[a]->enabled && is_packed == Packed) outfile << datas_[i].elem_ptrs[a]->id << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
tmp_id = reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[a])->id;
|
||||||
else if (datas_[i].elem_ptrs[a]->enabled) outfile << datas_[i].elem_ptrs[a]->id + 1 << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
d_ok = reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[a])->enabled;
|
||||||
|
if (d_ok && is_packed == Packed) outfile << tmp_id << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
||||||
|
else if (d_ok) outfile << tmp_id + 1 << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
||||||
}
|
}
|
||||||
outfile << "$EndElementData\n";
|
outfile << "$EndElementData\n";
|
||||||
}
|
}
|
||||||
@ -1927,7 +1931,7 @@ void gctl::mesh_io::save_vtk_legacy_ascii(std::string filename)
|
|||||||
d_size = 0;
|
d_size = 0;
|
||||||
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
||||||
{
|
{
|
||||||
if (datas_[i].vert_ptrs[n]->id != DEFAULT_INVALID_TAG) d_size++;
|
if (reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[n])->id != DEFAULT_INVALID_TAG) d_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d_size && d_size == valid_node_size_)
|
if (d_size && d_size == valid_node_size_)
|
||||||
@ -1939,7 +1943,7 @@ void gctl::mesh_io::save_vtk_legacy_ascii(std::string filename)
|
|||||||
|
|
||||||
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
||||||
{
|
{
|
||||||
if (datas_[i].vert_ptrs[a]->id != DEFAULT_INVALID_TAG) outfile << std::setprecision(16) << datas_[i].val[a] << "\n";
|
if (reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[a])->id != DEFAULT_INVALID_TAG) outfile << std::setprecision(16) << datas_[i].val[a] << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1948,7 +1952,7 @@ void gctl::mesh_io::save_vtk_legacy_ascii(std::string filename)
|
|||||||
d_size = 0;
|
d_size = 0;
|
||||||
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
for (size_t n = 0; n < datas_[i].val.size(); n++)
|
||||||
{
|
{
|
||||||
if (datas_[i].elem_ptrs[n]->enabled) d_size++;
|
if (reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[n])->enabled) d_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d_size && d_size == valid_elem_size_)
|
if (d_size && d_size == valid_elem_size_)
|
||||||
@ -1960,7 +1964,7 @@ void gctl::mesh_io::save_vtk_legacy_ascii(std::string filename)
|
|||||||
|
|
||||||
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
for (size_t a = 0; a < datas_[i].val.size(); a++)
|
||||||
{
|
{
|
||||||
if (datas_[i].elem_ptrs[a]->enabled) outfile << std::setprecision(16) << datas_[i].val[a] << "\n";
|
if (reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[a])->enabled) outfile << std::setprecision(16) << datas_[i].val[a] << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1989,13 +1993,14 @@ void gctl::mesh_io::save_data_to_xyz(std::string filename, std::string dataname,
|
|||||||
|
|
||||||
if (datas_[i].d_type == NodeData)
|
if (datas_[i].d_type == NodeData)
|
||||||
{
|
{
|
||||||
for (size_t n = 0; n < datas_[i].vert_ptrs.size(); n++)
|
for (size_t n = 0; n < datas_[i].tar_ptrs.size(); n++)
|
||||||
{
|
{
|
||||||
if (datas_[i].vert_ptrs[n]->id != DEFAULT_INVALID_TAG)
|
vertex3dc* vptr = reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[n]);
|
||||||
|
if (vptr->id != DEFAULT_INVALID_TAG)
|
||||||
{
|
{
|
||||||
if (out_coor == Spherical)
|
if (out_coor == Spherical)
|
||||||
{
|
{
|
||||||
ps = datas_[i].vert_ptrs[n]->c2s();
|
ps = vptr->c2s();
|
||||||
ps.rad -= ellipse_radius_2d(refR, refr, ps.lat*M_PI/180.0);
|
ps.rad -= ellipse_radius_2d(refR, refr, ps.lat*M_PI/180.0);
|
||||||
|
|
||||||
ofile << ps.lon << " " << ps.lat << " " << ps.rad << " " << datas_[i].val[n] << "\n";
|
ofile << ps.lon << " " << ps.lat << " " << ps.rad << " " << datas_[i].val[n] << "\n";
|
||||||
@ -2007,17 +2012,18 @@ void gctl::mesh_io::save_data_to_xyz(std::string filename, std::string dataname,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (size_t e = 0; e < datas_[i].elem_ptrs.size(); e++)
|
for (size_t e = 0; e < datas_[i].tar_ptrs.size(); e++)
|
||||||
{
|
{
|
||||||
if (datas_[i].elem_ptrs[e]->enabled)
|
meshio_element* mptr = reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[e]);
|
||||||
|
if (mptr->enabled)
|
||||||
{
|
{
|
||||||
pc = point3dc(0.0, 0.0, 0.0);
|
pc = point3dc(0.0, 0.0, 0.0);
|
||||||
tmp_size = datas_[i].elem_ptrs[e]->vert_ptrs.size();
|
tmp_size = mptr->vert_ptrs.size();
|
||||||
for (size_t v = 0; v < datas_[i].elem_ptrs[e]->vert_ptrs.size(); v++)
|
for (size_t v = 0; v < mptr->vert_ptrs.size(); v++)
|
||||||
{
|
{
|
||||||
pc.x += datas_[i].elem_ptrs[e]->vert_ptrs[v]->x;
|
pc.x += mptr->vert_ptrs[v]->x;
|
||||||
pc.y += datas_[i].elem_ptrs[e]->vert_ptrs[v]->y;
|
pc.y += mptr->vert_ptrs[v]->y;
|
||||||
pc.z += datas_[i].elem_ptrs[e]->vert_ptrs[v]->z;
|
pc.z += mptr->vert_ptrs[v]->z;
|
||||||
}
|
}
|
||||||
pc.x /= tmp_size;
|
pc.x /= tmp_size;
|
||||||
pc.y /= tmp_size;
|
pc.y /= tmp_size;
|
||||||
|
@ -125,9 +125,8 @@ namespace gctl
|
|||||||
array<std::string> str_tag; // 字符串类型的标签(默认为一个,即为数据的名称)
|
array<std::string> str_tag; // 字符串类型的标签(默认为一个,即为数据的名称)
|
||||||
array<double> real_tag; // 实数类型的标签(默认为一个,等于0.0)
|
array<double> real_tag; // 实数类型的标签(默认为一个,等于0.0)
|
||||||
array<int> int_tag; // 整数类型的标签(最少三个,最后一个为数据的长度)
|
array<int> int_tag; // 整数类型的标签(最少三个,最后一个为数据的长度)
|
||||||
array<vertex3dc*> vert_ptrs; // 两者只能存在一个
|
array<void*> tar_ptrs; // 数据连接的对象指针数组 具体类型为vertex3dc*或meshio_element*
|
||||||
array<meshio_element*> elem_ptrs; // 两者只能存在一个
|
array<double> val; // 数据值(目前仅支持标量数据,后续再添加对矢量数据的支持)
|
||||||
array<double> val; // 数据值
|
|
||||||
|
|
||||||
meshio_data();
|
meshio_data();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user