|
| template<typename Field, typename Equation, typename Schema, typename Visit> |
| void | serif::operators::backend::mfem::detail::for_each_field_element (const VolumeData< Equation, Schema > &data, Visit &&visit) |
| | Ignore a structurally absent field before gathering coefficients or touching contribution bases.
|
| |
| template<typename Field, typename Equation, typename Contribution> |
| void | serif::operators::backend::mfem::detail::field_integrand (const ElementData< EquationPlan< Equation >::operand_count > &element, const ::mfem::Vector &direction, ::mfem::Vector &integrand, ::mfem::Vector &samples, BasisWorkspace &workspace) |
| | Contract only the requested physical field; geometry is frozen in this accepted linearization.
|
| |
| template<typename Field, typename Equation> |
| consteval std::size_t | serif::operators::backend::mfem::detail::field_column () |
| | Locate a physical field in the equation's unique coefficient columns.
|
| |
| std::shared_ptr< const ::mfem::SparseMatrix > | serif::operators::backend::mfem::detail::make_csr (const std::vector< std::vector< int > > &row_columns, const std::vector< std::vector< double > > &row_values, const int height, const int width) |
| | Write MFEM-style CSR rows (already in Finalize() order) into an owning SparseMatrix.
|
| |
| std::shared_ptr< const ::mfem::SparseMatrix > | serif::operators::backend::mfem::detail::finalize_probed_blocks (const std::vector< ProbedElementBlock > &blocks, const int height, const int width) |
| | SparseMatrix::Add for every probed entry followed by Finalize(), built without MFEM's linked rows.
|
| |
| std::shared_ptr< const ::mfem::SparseMatrix > | serif::operators::backend::mfem::detail::finalize_constrained_blocks (const std::vector< ConstrainedElementBlock > &blocks, const int height, const int width) |
| | The constrained form of finalize_probed_blocks: SparseMatrix::Add(row_index, column_index,
row_weight * value * column_weight) for every element, column, local row, row coefficient and column coefficient in that order, followed by Finalize().
|
| |
| template<typename Field, VolumeEquation Equation, typename Schema> |
| std::shared_ptr< const ::mfem::SparseMatrix > | serif::operators::backend::mfem::assemble_volume_field (const VolumeData< Equation, Schema > &data) |
| | Assemble a selected field block from accepted weighted derivatives, never by probing the whole system.
|
| |
| template<typename Field, VolumeEquation Equation, typename Schema> |
| std::vector< double > | serif::operators::backend::mfem::volume_field_diagonal (const VolumeData< Equation, Schema > &data) |
| | Extract exact physical diagonals, retaining constraint cross terms when hanging nodes are present.
|
| |
| template<typename Field, VolumeEquation Equation, typename Schema> |
| LinearizedBlock | serif::operators::backend::mfem::volume_field_block (std::shared_ptr< const VolumeData< Equation, Schema > > data) |
| | Expose efficient physical block operations from an owning accepted dependency result.
|
| |