Select Git revision
MeshModule.cpp
-
Stéphane Del Pino authored
The mesh is defined by two opposite corners and the number of cells in each direction.
Stéphane Del Pino authoredThe mesh is defined by two opposite corners and the number of cells in each direction.
WriterModule.cpp 4.95 KiB
#include <language/modules/WriterModule.hpp>
#include <language/utils/BuiltinFunctionEmbedder.hpp>
#include <language/utils/TypeDescriptor.hpp>
#include <mesh/Connectivity.hpp>
#include <mesh/GmshReader.hpp>
#include <mesh/Mesh.hpp>
#include <output/GnuplotWriter.hpp>
#include <output/GnuplotWriter1D.hpp>
#include <output/IWriter.hpp>
#include <output/NamedDiscreteFunction.hpp>
#include <output/VTKWriter.hpp>
#include <scheme/DiscreteFunctionP0.hpp>
#include <scheme/IDiscreteFunction.hpp>
#include <scheme/IDiscreteFunctionDescriptor.hpp>
WriterModule::WriterModule()
{
this->_addTypeDescriptor(ast_node_data_type_from<std::shared_ptr<const NamedDiscreteFunction>>);
this->_addTypeDescriptor(ast_node_data_type_from<std::shared_ptr<const IWriter>>);
this->_addBuiltinFunction("vtk_writer",
std::make_shared<BuiltinFunctionEmbedder<std::shared_ptr<const IWriter>(const std::string&,
const double&)>>(
[](const std::string& filename, const double& period) {
return std::make_shared<VTKWriter>(filename, period);
}
));
this->_addBuiltinFunction("gnuplot_writer",
std::make_shared<BuiltinFunctionEmbedder<std::shared_ptr<const IWriter>(const std::string&,
const double&)>>(
[](const std::string& filename, const double& period) {
return std::make_shared<GnuplotWriter>(filename, period);
}
));
this->_addBuiltinFunction("gnuplot_1d_writer",
std::make_shared<BuiltinFunctionEmbedder<std::shared_ptr<const IWriter>(const std::string&,
const double&)>>(
[](const std::string& filename, const double& period) {
return std::make_shared<GnuplotWriter1D>(filename, period);
}
));
this->_addBuiltinFunction("name_output",
std::make_shared<BuiltinFunctionEmbedder<
std::shared_ptr<const NamedDiscreteFunction>(std::shared_ptr<const IDiscreteFunction>,
const std::string&)>>(
[](std::shared_ptr<const IDiscreteFunction> discrete_function,
const std::string& name) -> std::shared_ptr<const NamedDiscreteFunction> {
return std::make_shared<const NamedDiscreteFunction>(discrete_function, name);
}
));
this->_addBuiltinFunction("write_mesh",
std::make_shared<BuiltinFunctionEmbedder<void(std::shared_ptr<const IWriter>,
std::shared_ptr<const IMesh>)>>(
[](std::shared_ptr<const IWriter> writer, std::shared_ptr<const IMesh> p_mesh) -> void {
writer->writeMesh(p_mesh);
}
));
this->_addBuiltinFunction("write",
std::make_shared<BuiltinFunctionEmbedder<
void(std::shared_ptr<const IWriter>,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&, const double&)>>(
[](std::shared_ptr<const IWriter> writer,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&
named_discrete_function_list,
const double& time) -> void {
writer->writeIfNeeded(named_discrete_function_list, time);
}
));
this->_addBuiltinFunction("force_write",
std::make_shared<BuiltinFunctionEmbedder<
void(std::shared_ptr<const IWriter>,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&, const double&)>>(
[](std::shared_ptr<const IWriter> writer,
const std::vector<std::shared_ptr<const NamedDiscreteFunction>>&
named_discrete_function_list,
const double& time) -> void {
writer->writeForced(named_discrete_function_list, time);
}
));
}