33 template <
typename T>
auto operator()(std::shared_ptr<T>
const &
obj)
const {
34 if constexpr (std::is_same_v<T, Actor>) {
38 return std::visit(*
this,
obj->base_solver);
40 return std::shared_ptr<Actor>{
nullptr};
45template <
typename Actor,
typename Variant>
50template <
typename Actor,
typename Variant>
58 template <
typename T>
auto operator()(std::shared_ptr<T>
const &
obj)
const {
59 if constexpr (std::is_same_v<T, Actor>) {
63 return std::visit(*
this,
obj->base_solver);
70template <
typename Actor,
typename Variant>
75template <
typename Actor,
typename Variant>
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
Get an actor of a specific type, recursively.
auto operator()(std::shared_ptr< T > const &obj) const
Check if an actor of a specific type is active, recursively.
auto operator()(std::shared_ptr< T > const &obj) const
Whether an actor is a layer correction method.
auto has_actor_of_type(Variant const &variant)
Check if an actor of a specific type is active, recursively.
std::shared_ptr< Actor > get_actor_by_type(Variant const &variant)
Get an active actor of a specific type, recursively.