1#ifndef TATOOINE_FLOWEXPLORER_SAMPLE_TO_GRID_H
2#define TATOOINE_FLOWEXPLORER_SAMPLE_TO_GRID_H
13 std::variant<std::monostate,
17 std::variant<std::monostate,
31 nonuniform_rectilinear_grid<real_type, 2>,
34 polymorphic::scalarfield<real_type, 2>,
44 template <
typename... Ts>
48 if (other_pin.
type() ==
typeid(Ts)) {
58 set_field<polymorphic::scalarfield<real_type, 2>,
67 }
else if (other_pin.type() ==
81 using field_t = std::decay_t<
decltype(
field)>;
82 using domain_t = std::decay_t<
decltype(domain)>;
83 if constexpr (field_t::num_dimensions() == domain_t::num_dimensions()) {
84 if (domain.vertices().size() > 0) {
101 if constexpr (!
is_same<std::monostate,
102 std::decay_t<
decltype(domain)>>) {
109 template <
typename F>
113 if constexpr (!
is_same<std::monostate,
114 std::decay_t<
decltype(
field)>>) {
121 template <
typename F>
124 [&](
auto field,
auto domain) {
125 if constexpr (!
is_same<std::monostate,
decltype(
field)> &&
126 !
is_same<std::monostate,
decltype(domain)>) {
136 domain.rename_vertex_property(old_title, this->
title());
143 domain.remove_vertex_property(this->
title());
157 TATOOINE_REFLECTION_INSERT_METHOD(time, time()));
auto discretize(polymorphic::field< VReal, NumDimensions, Tensor > const &f, rectilinear_grid< SpatialDimensions... > const &discretized_domain, arithmetic auto const t, execution_policy_tag auto const pol) -> auto
Definition: discretize_field.h:92
detail::rectilinear_grid::creator_t< std::vector< Real >, N > nonuniform_rectilinear_grid
Definition: rectilinear_grid.h:1922
static constexpr auto is_same
Definition: type_traits.h:42
constexpr auto visit(Visitor &&visitor, Variant0 &&variant0, Variant1 &&variant1, Variants &&... variants) -> void
Definition: visit.h:14
TATOOINE_FLOWEXPLORER_REGISTER_NODE(tatooine::flowexplorer::nodes::sample_to_grid, TATOOINE_REFLECTION_INSERT_METHOD(time, time()))
Definition: sample_to_grid.h:11
sample_to_grid(flowexplorer::scene &s)
Definition: sample_to_grid.h:28
auto time() -> auto &
Definition: sample_to_grid.h:42
auto sample() -> void
Definition: sample_to_grid.h:79
ui::input_pin * m_field_pin
Definition: sample_to_grid.h:25
std::variant< std::monostate, polymorphic::scalarfield< real_type, 2 > *, polymorphic::scalarfield< real_type, 3 > *, polymorphic::vectorfield< real_type, 2 > *, polymorphic::vectorfield< real_type, 3 > * > m_field
Definition: sample_to_grid.h:22
auto on_pin_connected(ui::input_pin &this_pin, ui::output_pin &other_pin) -> void
Definition: sample_to_grid.h:55
auto field_do(F &&f)
Definition: sample_to_grid.h:110
auto field_domain_do(F &&f) -> void
Definition: sample_to_grid.h:122
std::variant< std::monostate, nonuniform_rectilinear_grid< real_type, 2 > *, nonuniform_rectilinear_grid< real_type, 3 > * > m_discretized_domain
Definition: sample_to_grid.h:16
auto domain_do(F &&f)
Definition: sample_to_grid.h:98
auto on_property_changed() -> void
Definition: sample_to_grid.h:91
auto on_title_changed(std::string const &old_title) -> void override
Definition: sample_to_grid.h:133
real_type m_time
Definition: sample_to_grid.h:23
auto time() const -> auto const &
Definition: sample_to_grid.h:41
auto on_pin_disconnected(ui::input_pin &pin) -> void
Definition: sample_to_grid.h:141
auto set_field(ui::output_pin &other_pin)
Definition: sample_to_grid.h:45
ui::input_pin * m_discretized_domain_pin
Definition: sample_to_grid.h:24
virtual ~sample_to_grid()=default
auto title() const -> auto const &
Definition: node.h:69
auto insert_input_pin(std::string const &title, icon_type const t=icon_type::flow) -> auto &
Definition: node.h:49
node(flowexplorer::scene &s)
virtual auto type() const -> std::type_info const &=0
auto get_as() -> T &
Definition: pin.h:142