diff --git a/src/language/modules/MeshModule.cpp b/src/language/modules/MeshModule.cpp index 153c1be1154ac1a5432ae00ba66b56e7b44937c2..d93927e177c6724bc26dd8f48d54318753b1118d 100644 --- a/src/language/modules/MeshModule.cpp +++ b/src/language/modules/MeshModule.cpp @@ -10,9 +10,12 @@ #include <mesh/Connectivity.hpp> #include <mesh/DualMeshManager.hpp> #include <mesh/GmshReader.hpp> +#include <mesh/IBoundaryDescriptor.hpp> #include <mesh/Mesh.hpp> #include <mesh/MeshRelaxer.hpp> #include <mesh/MeshTransformer.hpp> +#include <mesh/NamedBoundaryDescriptor.hpp> +#include <mesh/NumberedBoundaryDescriptor.hpp> #include <utils/Exceptions.hpp> #include <Kokkos_Core.hpp> @@ -31,6 +34,26 @@ MeshModule::MeshModule() )); + this->_addBuiltinFunction("boundaryName", + std::make_shared< + BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(const std::string&)>>( + + [](const std::string& boundary_name) -> std::shared_ptr<const IBoundaryDescriptor> { + return std::make_shared<NamedBoundaryDescriptor>(boundary_name); + } + + )); + + this->_addBuiltinFunction("boundaryTag", + std::make_shared< + BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(int64_t)>>( + + [](int64_t boundary_tag) -> std::shared_ptr<const IBoundaryDescriptor> { + return std::make_shared<NumberedBoundaryDescriptor>(boundary_tag); + } + + )); + this->_addBuiltinFunction("transform", std::make_shared<BuiltinFunctionEmbedder< std::shared_ptr<const IMesh>(std::shared_ptr<const IMesh>, const FunctionSymbolId&)>>( diff --git a/src/language/modules/MeshModule.hpp b/src/language/modules/MeshModule.hpp index 3ef6f2856d052e7b7c5ab63393843145eec6f230..f6ab9c8509b59f264800883e2bbe149d4d060a41 100644 --- a/src/language/modules/MeshModule.hpp +++ b/src/language/modules/MeshModule.hpp @@ -6,11 +6,15 @@ #include <utils/PugsMacros.hpp> class IMesh; - template <> inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IMesh>> = ASTNodeDataType::build<ASTNodeDataType::type_id_t>("mesh"); +class IBoundaryDescriptor; +template <> +inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryDescriptor>> = + ASTNodeDataType::build<ASTNodeDataType::type_id_t>("boundary"); + class MeshModule : public BuiltinModule { public: diff --git a/src/language/modules/SchemeModule.cpp b/src/language/modules/SchemeModule.cpp index f80201c7e424728db5663045e5b663c5e306e4d4..ec5329bc9682125005826d4fbfafe07febebed9d 100644 --- a/src/language/modules/SchemeModule.cpp +++ b/src/language/modules/SchemeModule.cpp @@ -33,9 +33,7 @@ #include <scheme/IBoundaryConditionDescriptor.hpp> #include <scheme/IDiscreteFunction.hpp> #include <scheme/IDiscreteFunctionDescriptor.hpp> -#include <scheme/NamedBoundaryDescriptor.hpp> #include <scheme/NeumannBoundaryConditionDescriptor.hpp> -#include <scheme/NumberedBoundaryDescriptor.hpp> #include <scheme/SymmetryBoundaryConditionDescriptor.hpp> #include <utils/Socket.hpp> @@ -191,26 +189,6 @@ SchemeModule::SchemeModule() )); - this->_addBuiltinFunction("boundaryName", - std::make_shared< - BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(const std::string&)>>( - - [](const std::string& boundary_name) -> std::shared_ptr<const IBoundaryDescriptor> { - return std::make_shared<NamedBoundaryDescriptor>(boundary_name); - } - - )); - - this->_addBuiltinFunction("boundaryTag", - std::make_shared< - BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryDescriptor>(int64_t)>>( - - [](int64_t boundary_tag) -> std::shared_ptr<const IBoundaryDescriptor> { - return std::make_shared<NumberedBoundaryDescriptor>(boundary_tag); - } - - )); - this ->_addBuiltinFunction("fixed", std::make_shared<BuiltinFunctionEmbedder<std::shared_ptr<const IBoundaryConditionDescriptor>( diff --git a/src/language/modules/SchemeModule.hpp b/src/language/modules/SchemeModule.hpp index 52fc163ee5b6bfcec2cbeceb6d618e9ce3d9c213..6c1f0324aa2858437ec8d7f49434c2d8ac718a45 100644 --- a/src/language/modules/SchemeModule.hpp +++ b/src/language/modules/SchemeModule.hpp @@ -5,11 +5,6 @@ #include <language/utils/ASTNodeDataTypeTraits.hpp> #include <utils/PugsMacros.hpp> -class IBoundaryDescriptor; -template <> -inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryDescriptor>> = - ASTNodeDataType::build<ASTNodeDataType::type_id_t>("boundary"); - class IBoundaryConditionDescriptor; template <> inline ASTNodeDataType ast_node_data_type_from<std::shared_ptr<const IBoundaryConditionDescriptor>> = diff --git a/src/scheme/NamedBoundaryDescriptor.hpp b/src/mesh/NamedBoundaryDescriptor.hpp similarity index 100% rename from src/scheme/NamedBoundaryDescriptor.hpp rename to src/mesh/NamedBoundaryDescriptor.hpp diff --git a/src/scheme/NumberedBoundaryDescriptor.hpp b/src/mesh/NumberedBoundaryDescriptor.hpp similarity index 100% rename from src/scheme/NumberedBoundaryDescriptor.hpp rename to src/mesh/NumberedBoundaryDescriptor.hpp