ABLATE Source Documentation  0.12.36
meshMapper.hpp
1 #ifndef ABLATELIBRARY_MESHMAPPER_HPP
2 #define ABLATELIBRARY_MESHMAPPER_HPP
3 
4 #include <memory>
5 #include <utility>
6 #include "domain/region.hpp"
7 #include "mathFunctions/mathFunction.hpp"
8 #include "modifier.hpp"
9 
10 namespace ablate::domain::modifiers {
11 
12 class MeshMapper : public Modifier {
13  private:
15  const std::shared_ptr<ablate::mathFunctions::MathFunction> mappingFunction;
16 
18  const std::shared_ptr<ablate::domain::Region> mappingRegion{};
19 
20  public:
26  explicit MeshMapper(std::shared_ptr<ablate::mathFunctions::MathFunction> mappingFunction, std::shared_ptr<ablate::domain::Region> mappingRegion = {});
27 
31  void Modify(DM&) override;
32 
38  void Modify(const std::vector<double>& in, std::vector<double>& out) const;
39 
44  [[nodiscard]] std::string ToString() const override { return "ablate::domain::modifiers::MeshMapper"; }
45 };
46 
51  public:
52  explicit MeshMapperWithRegion(std::shared_ptr<ablate::mathFunctions::MathFunction> mappingFunction, std::shared_ptr<ablate::domain::Region> mappingRegion)
53  : MeshMapper(std::move(mappingFunction), mappingRegion) {}
54 };
55 
56 } // namespace ablate::domain::modifiers
57 #endif // ABLATELIBRARY_MESHMAPPER_HPP
Definition: meshMapper.hpp:12
void Modify(DM &) override
Definition: meshMapper.cpp:10
std::string ToString() const override
Definition: meshMapper.hpp:44
MeshMapper(std::shared_ptr< ablate::mathFunctions::MathFunction > mappingFunction, std::shared_ptr< ablate::domain::Region > mappingRegion={})
Definition: meshMapper.cpp:7
Definition: modifier.hpp:8