update mesh_io
This commit is contained in:
parent
3a22285275
commit
a927a93997
@ -46,8 +46,7 @@ void gctl::meshio_data::clear()
|
||||
str_tag.clear();
|
||||
real_tag.clear();
|
||||
int_tag.clear();
|
||||
vert_ptrs.clear();
|
||||
elem_ptrs.clear();
|
||||
tar_ptrs.clear();
|
||||
val.clear();
|
||||
return;
|
||||
}
|
||||
@ -55,11 +54,10 @@ void gctl::meshio_data::clear()
|
||||
bool gctl::meshio_data::pass_check()
|
||||
{
|
||||
// 检查是否同时连接了顶点和单元体
|
||||
if (vert_ptrs.empty() && elem_ptrs.empty()) return false;
|
||||
if (!vert_ptrs.empty() && !elem_ptrs.empty()) return false;
|
||||
if (tar_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 (!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;
|
||||
}
|
||||
|
||||
@ -319,7 +317,7 @@ void gctl::mesh_io::info(std::ostream &ss)
|
||||
ss << "nodedata: \"";
|
||||
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]);
|
||||
max = std::max(max, datas_[d].val[l]);
|
||||
@ -332,7 +330,7 @@ void gctl::mesh_io::info(std::ostream &ss)
|
||||
ss << "elementdata: \"";
|
||||
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]);
|
||||
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.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;
|
||||
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)
|
||||
{
|
||||
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++;
|
||||
}
|
||||
}
|
||||
@ -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.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;
|
||||
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 == GeometryTag) tmp_data.val[c] = (double) groups_[g].geom_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++;
|
||||
}
|
||||
}
|
||||
@ -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[1] = 1;
|
||||
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);
|
||||
|
||||
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];
|
||||
}
|
||||
|
||||
@ -868,7 +866,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
||||
if (d_id != -1)
|
||||
{
|
||||
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;
|
||||
|
||||
s = 0;
|
||||
@ -876,7 +874,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
||||
{
|
||||
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];
|
||||
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[1] = 1;
|
||||
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);
|
||||
|
||||
s = 0;
|
||||
@ -900,7 +898,7 @@ void gctl::mesh_io::add_node_data(std::string name, const array<double> &data, c
|
||||
{
|
||||
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];
|
||||
s++;
|
||||
}
|
||||
@ -924,7 +922,7 @@ void gctl::mesh_io::add_element_data(std::string name, const array<double> &data
|
||||
if (d_id != -1)
|
||||
{
|
||||
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);
|
||||
|
||||
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++)
|
||||
{
|
||||
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];
|
||||
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[1] = 1;
|
||||
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);
|
||||
|
||||
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++)
|
||||
{
|
||||
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];
|
||||
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);
|
||||
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);
|
||||
|
||||
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].elem_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].val.concat(more_val);
|
||||
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[1] = 1;
|
||||
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);
|
||||
|
||||
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++)
|
||||
{
|
||||
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];
|
||||
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);
|
||||
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);
|
||||
|
||||
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].elem_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].val.concat(more_val);
|
||||
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[1] = 1;
|
||||
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);
|
||||
|
||||
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++)
|
||||
{
|
||||
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];
|
||||
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);
|
||||
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);
|
||||
|
||||
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].elem_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].tar_ptrs.concat(more_elem_ptrs);
|
||||
datas_[d_id].val.concat(more_val);
|
||||
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[1] = 1;
|
||||
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);
|
||||
|
||||
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++)
|
||||
{
|
||||
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;
|
||||
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)
|
||||
{
|
||||
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());
|
||||
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
||||
{
|
||||
getline(infile,tmp_str);
|
||||
str2ss(tmp_str, tmp_ss);
|
||||
tmp_ss >> vt_idx >> tmp_data.val[i];
|
||||
if (is_packed == Packed) tmp_data.vert_ptrs[i] = nodes_.get(vt_idx);
|
||||
else tmp_data.vert_ptrs[i] = nodes_.get(vt_idx - 1);
|
||||
if (is_packed == Packed) tmp_data.tar_ptrs[i] = nodes_.get(vt_idx);
|
||||
else tmp_data.tar_ptrs[i] = nodes_.get(vt_idx - 1);
|
||||
}
|
||||
}
|
||||
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());
|
||||
for (size_t i = 0; i < tmp_data.val.size(); i++)
|
||||
{
|
||||
getline(infile,tmp_str);
|
||||
str2ss(tmp_str, tmp_ss);
|
||||
tmp_ss >> vt_idx >> tmp_data.val[i];
|
||||
if (is_packed == Packed) tmp_data.elem_ptrs[i] = elems_.get(vt_idx);
|
||||
else tmp_data.elem_ptrs[i] = elems_.get(vt_idx - 1);
|
||||
if (is_packed == Packed) tmp_data.tar_ptrs[i] = elems_.get(vt_idx);
|
||||
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;
|
||||
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)
|
||||
@ -1816,10 +1814,12 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
||||
}
|
||||
outfile << d_size << "\n";
|
||||
|
||||
int tmp_id;
|
||||
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";
|
||||
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";
|
||||
tmp_id = reinterpret_cast<vertex3dc*>(datas_[i].tar_ptrs[a])->id;
|
||||
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";
|
||||
}
|
||||
@ -1829,7 +1829,7 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
||||
d_size = 0;
|
||||
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)
|
||||
@ -1854,10 +1854,14 @@ void gctl::mesh_io::save_gmsh_v2_ascii(std::string filename, index_packed_e is_p
|
||||
}
|
||||
outfile << d_size << "\n";
|
||||
|
||||
int tmp_id;
|
||||
bool d_ok;
|
||||
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";
|
||||
else if (datas_[i].elem_ptrs[a]->enabled) outfile << datas_[i].elem_ptrs[a]->id + 1 << " " << std::setprecision(12) << datas_[i].val[a] << "\n";
|
||||
tmp_id = reinterpret_cast<meshio_element*>(datas_[i].tar_ptrs[a])->id;
|
||||
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";
|
||||
}
|
||||
@ -1927,7 +1931,7 @@ void gctl::mesh_io::save_vtk_legacy_ascii(std::string filename)
|
||||
d_size = 0;
|
||||
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_)
|
||||
@ -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++)
|
||||
{
|
||||
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;
|
||||
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_)
|
||||
@ -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++)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
ps = datas_[i].vert_ptrs[n]->c2s();
|
||||
ps = vptr->c2s();
|
||||
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";
|
||||
@ -2007,17 +2012,18 @@ void gctl::mesh_io::save_data_to_xyz(std::string filename, std::string dataname,
|
||||
}
|
||||
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);
|
||||
tmp_size = datas_[i].elem_ptrs[e]->vert_ptrs.size();
|
||||
for (size_t v = 0; v < datas_[i].elem_ptrs[e]->vert_ptrs.size(); v++)
|
||||
tmp_size = mptr->vert_ptrs.size();
|
||||
for (size_t v = 0; v < mptr->vert_ptrs.size(); v++)
|
||||
{
|
||||
pc.x += datas_[i].elem_ptrs[e]->vert_ptrs[v]->x;
|
||||
pc.y += datas_[i].elem_ptrs[e]->vert_ptrs[v]->y;
|
||||
pc.z += datas_[i].elem_ptrs[e]->vert_ptrs[v]->z;
|
||||
pc.x += mptr->vert_ptrs[v]->x;
|
||||
pc.y += mptr->vert_ptrs[v]->y;
|
||||
pc.z += mptr->vert_ptrs[v]->z;
|
||||
}
|
||||
pc.x /= tmp_size;
|
||||
pc.y /= tmp_size;
|
||||
|
@ -125,9 +125,8 @@ namespace gctl
|
||||
array<std::string> str_tag; // 字符串类型的标签(默认为一个,即为数据的名称)
|
||||
array<double> real_tag; // 实数类型的标签(默认为一个,等于0.0)
|
||||
array<int> int_tag; // 整数类型的标签(最少三个,最后一个为数据的长度)
|
||||
array<vertex3dc*> vert_ptrs; // 两者只能存在一个
|
||||
array<meshio_element*> elem_ptrs; // 两者只能存在一个
|
||||
array<double> val; // 数据值
|
||||
array<void*> tar_ptrs; // 数据连接的对象指针数组 具体类型为vertex3dc*或meshio_element*
|
||||
array<double> val; // 数据值(目前仅支持标量数据,后续再添加对矢量数据的支持)
|
||||
|
||||
meshio_data();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user