33 using Tscal = shambase::VecComponent<Tvec>;
35 using Kernel = SPHKernel<Tscal>;
45 : context(context), solver_config(solver_config), storage(storage) {}
50 std::optional<u32> insert_step = std::nullopt);
55 std::optional<u32> gen_count_per_step = std::nullopt,
56 std::optional<u32> insert_count_per_step = std::nullopt,
57 std::optional<u64> max_msg_count_per_rank_per_step = std::nullopt,
58 std::optional<u64> max_data_count_per_rank_per_step = std::nullopt,
59 std::optional<u64> max_msg_size = std::nullopt,
60 bool do_setup_log =
false,
61 bool speculative_balancing =
false);
63 std::shared_ptr<ISPHSetupNode> make_generator_lattice_hcp(
64 Tscal dr, std::pair<Tvec, Tvec> box,
bool discontinuous =
true);
66 std::shared_ptr<ISPHSetupNode> make_generator_lattice_cubic(
67 Tscal dr, std::pair<Tvec, Tvec> box);
69 std::shared_ptr<ISPHSetupNode> make_generator_disc_mc(
74 std::function<Tscal(Tscal)> sigma_profile,
75 std::function<Tscal(Tscal)> H_profile,
76 std::function<Tscal(Tscal)> rot_profile,
77 std::function<Tscal(Tscal)> cs_profile,
81 std::shared_ptr<ISPHSetupNode> make_generator_from_context(
ShamrockCtx &context_other);
83 std::shared_ptr<ISPHSetupNode> make_combiner_add(
86 std::shared_ptr<ISPHSetupNode> make_modifier_warp_disc(
87 SetupNodePtr parent, Tscal Rwarp, Tscal Hwarp, Tscal inclination, Tscal posangle);
89 std::shared_ptr<ISPHSetupNode> make_modifier_custom_warp(
91 std::function<Tscal(Tscal)> inc_profile,
92 std::function<Tscal(Tscal)> psi_profile,
93 std::function<Tvec(Tscal)> k_profile);
95 std::shared_ptr<ISPHSetupNode> make_modifier_add_offset(
96 SetupNodePtr parent, Tvec offset_postion, Tvec offset_velocity);
98 std::shared_ptr<ISPHSetupNode> make_modifier_filter(
101 std::shared_ptr<ISPHSetupNode> make_modifier_split_part(
107 u64 injected_parts = 0;
T & get_check_ref(const std::unique_ptr< T > &ptr, SourceLocation loc=SourceLocation())
Takes a std::unique_ptr and returns a reference to the object it holds. It throws a std::runtime_erro...