Skip to content
Snippets Groups Projects
Commit e0bbdec2 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Change basic mesh info output

Cell and node numbers are now added into the VTKWriter and not for all writers
parent 85c6bc98
No related branches found
No related tags found
1 merge request!75Feature/language discretization
...@@ -192,14 +192,14 @@ WriterModule::WriterModule() ...@@ -192,14 +192,14 @@ WriterModule::WriterModule()
)); ));
this->_addBuiltinFunction( this->_addBuiltinFunction("write",
"write", std::make_shared<BuiltinFunctionEmbedder<
std::make_shared< void(std::shared_ptr<const IWriter>,
BuiltinFunctionEmbedder<void(std::shared_ptr<const IWriter>,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&, const double&)>>( const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&, const double&)>>(
[](std::shared_ptr<const IWriter> writer, [](std::shared_ptr<const IWriter> writer,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>& named_discrete_function_list, const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&
named_discrete_function_list,
const double& time) -> void { const double& time) -> void {
Assert(named_discrete_function_list.size() > 0); Assert(named_discrete_function_list.size() > 0);
...@@ -208,9 +208,11 @@ WriterModule::WriterModule() ...@@ -208,9 +208,11 @@ WriterModule::WriterModule()
if (p_mesh != named_discrete_function_list[i]->discreteFunction()->mesh()) { if (p_mesh != named_discrete_function_list[i]->discreteFunction()->mesh()) {
std::ostringstream error_msg; std::ostringstream error_msg;
error_msg << "discrete functions must be defined on the same mesh!\n" error_msg << "discrete functions must be defined on the same mesh!\n"
<< rang::fgB::yellow << "note:" << rang::style::reset << " cannot write " << rang::fgB::blue << rang::fgB::yellow << "note:" << rang::style::reset << " cannot write "
<< named_discrete_function_list[0]->name() << rang::style::reset << " and " << rang::fgB::blue << rang::fgB::blue << named_discrete_function_list[0]->name()
<< named_discrete_function_list[i]->name() << rang::style::reset << " in the same file."; << rang::style::reset << " and " << rang::fgB::blue
<< named_discrete_function_list[i]->name() << rang::style::reset
<< " in the same file.";
throw NormalError(error_msg.str()); throw NormalError(error_msg.str());
} }
} }
...@@ -218,17 +220,20 @@ WriterModule::WriterModule() ...@@ -218,17 +220,20 @@ WriterModule::WriterModule()
OutputNamedItemValueSet named_item_value_set; OutputNamedItemValueSet named_item_value_set;
for (auto& named_discrete_function : named_discrete_function_list) { for (auto& named_discrete_function : named_discrete_function_list) {
const IDiscreteFunction& i_discrete_function = *named_discrete_function->discreteFunction(); const IDiscreteFunction& i_discrete_function =
*named_discrete_function->discreteFunction();
switch (i_discrete_function.descriptor().type()) { switch (i_discrete_function.descriptor().type()) {
case DiscreteFunctionType::P0: { case DiscreteFunctionType::P0: {
WriterModule::registerDiscreteFunctionP0(*named_discrete_function, named_item_value_set); WriterModule::registerDiscreteFunctionP0(*named_discrete_function,
named_item_value_set);
break; break;
} }
default: { default: {
std::ostringstream error_msg; std::ostringstream error_msg;
error_msg << "the type of discrete function of " << rang::fgB::blue << named_discrete_function->name() error_msg << "the type of discrete function of " << rang::fgB::blue
<< rang::style::reset << " is not supported"; << named_discrete_function->name() << rang::style::reset
<< " is not supported";
throw NormalError(error_msg.str()); throw NormalError(error_msg.str());
} }
} }
...@@ -237,30 +242,24 @@ WriterModule::WriterModule() ...@@ -237,30 +242,24 @@ WriterModule::WriterModule()
switch (p_mesh->dimension()) { switch (p_mesh->dimension()) {
case 1: { case 1: {
using MeshType = Mesh<Connectivity<1>>; using MeshType = Mesh<Connectivity<1>>;
const std::shared_ptr<const MeshType> mesh = std::dynamic_pointer_cast<const MeshType>(p_mesh); const std::shared_ptr<const MeshType> mesh =
std::dynamic_pointer_cast<const MeshType>(p_mesh);
named_item_value_set.add(NamedItemValue{"cell_number", mesh->connectivity().cellNumber()});
named_item_value_set.add(NamedItemValue{"node_number", mesh->connectivity().nodeNumber()});
writer->write(mesh, named_item_value_set, time, true); writer->write(mesh, named_item_value_set, time, true);
break; break;
} }
case 2: { case 2: {
using MeshType = Mesh<Connectivity<2>>; using MeshType = Mesh<Connectivity<2>>;
const std::shared_ptr<const MeshType> mesh = std::dynamic_pointer_cast<const MeshType>(p_mesh); const std::shared_ptr<const MeshType> mesh =
std::dynamic_pointer_cast<const MeshType>(p_mesh);
named_item_value_set.add(NamedItemValue{"cell_number", mesh->connectivity().cellNumber()});
named_item_value_set.add(NamedItemValue{"node_number", mesh->connectivity().nodeNumber()});
writer->write(mesh, named_item_value_set, time, true); writer->write(mesh, named_item_value_set, time, true);
break; break;
} }
case 3: { case 3: {
using MeshType = Mesh<Connectivity<3>>; using MeshType = Mesh<Connectivity<3>>;
const std::shared_ptr<const MeshType> mesh = std::dynamic_pointer_cast<const MeshType>(p_mesh); const std::shared_ptr<const MeshType> mesh =
std::dynamic_pointer_cast<const MeshType>(p_mesh);
named_item_value_set.add(NamedItemValue{"cell_number", mesh->connectivity().cellNumber()});
named_item_value_set.add(NamedItemValue{"node_number", mesh->connectivity().nodeNumber()});
writer->write(mesh, named_item_value_set, time, true); writer->write(mesh, named_item_value_set, time, true);
break; break;
......
...@@ -272,10 +272,15 @@ VTKWriter::_write_cell_value(std::ofstream&, const std::string&, const NodeValue ...@@ -272,10 +272,15 @@ VTKWriter::_write_cell_value(std::ofstream&, const std::string&, const NodeValue
template <typename MeshType> template <typename MeshType>
void void
VTKWriter::_write(const std::shared_ptr<const MeshType>& mesh, VTKWriter::_write(const std::shared_ptr<const MeshType>& mesh,
const OutputNamedItemValueSet& output_named_item_value_set, const OutputNamedItemValueSet& given_output_named_item_value_set,
double time, double time,
bool forced_output) const bool forced_output) const
{ {
OutputNamedItemValueSet output_named_item_value_set{given_output_named_item_value_set};
// Adding basic mesh information
output_named_item_value_set.add(NamedItemValue{"cell_number", mesh->connectivity().cellNumber()});
output_named_item_value_set.add(NamedItemValue{"node_number", mesh->connectivity().nodeNumber()});
if (time == m_last_time) if (time == m_last_time)
return; // output already performed return; // output already performed
if ((time - m_last_time >= m_time_period) or forced_output) { if ((time - m_last_time >= m_time_period) or forced_output) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment