SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
actions.hpp File Reference
#include <functional>
#include <span>
#include <vector>
#include "serif/backend/mfem/operators/linearized_block.hpp"
Include dependency graph for actions.hpp:
This graph shows which files directly or indirectly include this file:

Namespaces

namespace  serif
 
namespace  serif::operators
 
namespace  serif::operators::backend
 
namespace  serif::operators::backend::mfem
 

Typedefs

using serif::operators::backend::mfem::MatrixAction = std::function<void(const ::mfem::Vector&, ::mfem::Vector&)>
 
using serif::operators::backend::mfem::MatrixArrayAction = std::function<void(std::span<const ::mfem::Vector* const>, std::span<::mfem::Vector* const>)>
 Apply the forward action to several directions at once (zeroed outputs, as MatrixAction receives).
 

Functions

LinearizedBlock serif::operators::backend::mfem::linearized_action (int rows, int columns, MatrixAction action, MatrixAction transpose)
 Wrap owned callbacks with checked dimensions, finite results, and overlap-safe application.
 
LinearizedBlock serif::operators::backend::mfem::linearized_action (int rows, int columns, MatrixAction action, MatrixAction transpose, MatrixArrayAction batch)
 As above, with a batched forward action used by the operator's ArrayMult.
 
void serif::operators::backend::mfem::apply_many (const ::mfem::Operator &action, std::span< const ::mfem::Vector *const > inputs, std::span<::mfem::Vector *const > outputs)
 Apply an operator to several directions; ArrayMult for SERiF actions, otherwise one Mult per direction.
 
LinearizedBlock serif::operators::backend::mfem::transpose_block (LinearizedBlock block)
 Transpose a linearized block without discarding efficient assembly and diagonal operations.
 
LinearizedBlock serif::operators::backend::mfem::compose_blocks (LinearizedBlock left, LinearizedBlock right)
 Compose linearized blocks in their written mathematical order.
 
LinearizedBlock serif::operators::backend::mfem::sum_blocks (int rows, int columns, std::vector< LinearizedBlock > blocks)
 Sum compatible linearized blocks while retaining their native diagonal and sparse assembly operations.