Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
119 lines
5.4 KiB
Groff
119 lines
5.4 KiB
Groff
.TH "src/include/serif/backend/mfem/operators/volume_field_block.hpp" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
src/include/serif/backend/mfem/operators/volume_field_block.hpp
|
|
.SH SYNOPSIS
|
|
.br
|
|
.PP
|
|
\fR#include <algorithm>\fP
|
|
.br
|
|
\fR#include <concepts>\fP
|
|
.br
|
|
\fR#include <functional>\fP
|
|
.br
|
|
\fR#include <memory>\fP
|
|
.br
|
|
\fR#include <vector>\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/discretization/element_coordinates\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/operators/linearized_block\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/operators/volume_application\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/shared/parallel\&.hpp'\fP
|
|
.br
|
|
|
|
.SS "Classes"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "class \fBserif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >\fP"
|
|
.br
|
|
.RI "Retain accepted data while applying a single field coupling with reusable contraction scratch\&. "
|
|
.ti -1c
|
|
.RI "struct \fBserif::operators::backend::mfem::detail::VolumeFieldOperator< Field, Equation, Schema >::Scratch\fP"
|
|
.br
|
|
.RI "One worker's element scratch\&. "
|
|
.ti -1c
|
|
.RI "struct \fBserif::operators::backend::mfem::detail::ProbedElementBlock\fP"
|
|
.br
|
|
.RI "One element's probed block: column c's integrated values for every local row, column-major\&. "
|
|
.ti -1c
|
|
.RI "struct \fBserif::operators::backend::mfem::detail::ProbeScratch\fP"
|
|
.br
|
|
.RI "Per-worker scratch for probing element blocks\&. "
|
|
.ti -1c
|
|
.RI "struct \fBserif::operators::backend::mfem::detail::CoefficientExpansion\fP"
|
|
.br
|
|
.RI "Weighted reduced coordinates of each local coordinate, as CSR: local i owns [offsets[i], offsets[i+1])\&. "
|
|
.ti -1c
|
|
.RI "struct \fBserif::operators::backend::mfem::detail::ConstrainedElementBlock\fP"
|
|
.br
|
|
.RI "One element's probed block on constrained bindings: column-major values and both constraint expansions\&. "
|
|
.in -1c
|
|
.SS "Namespaces"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "namespace \fBserif\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "namespace \fBserif::operators\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "namespace \fBserif::operators::backend\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "namespace \fBserif::operators::backend::mfem\fP"
|
|
.br
|
|
.ti -1c
|
|
.RI "namespace \fBserif::operators::backend::mfem::detail\fP"
|
|
.br
|
|
.in -1c
|
|
.SS "Functions"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "template<typename Field, typename Equation, typename \fBSchema\fP, typename Visit> void \fBserif::operators::backend::mfem::detail::for_each_field_element\fP (const \fBVolumeData\fP< Equation, \fBSchema\fP > &data, Visit &&visit)"
|
|
.br
|
|
.RI "Ignore a structurally absent field before gathering coefficients or touching contribution bases\&. "
|
|
.ti -1c
|
|
.RI "template<typename Field, typename Equation, typename Contribution> void \fBserif::operators::backend::mfem::detail::field_integrand\fP (const \fBElementData\fP< \fBEquationPlan\fP< Equation >::operand_count > &element, const \fB::mfem::Vector\fP &direction, \fB::mfem::Vector\fP &integrand, \fB::mfem::Vector\fP &samples, \fBBasisWorkspace\fP &workspace)"
|
|
.br
|
|
.RI "Contract only the requested physical field; geometry is frozen in this accepted linearization\&. "
|
|
.ti -1c
|
|
.RI "template<typename Field, typename Equation> consteval std::size_t \fBserif::operators::backend::mfem::detail::field_column\fP ()"
|
|
.br
|
|
.RI "Locate a physical field in the equation's unique coefficient columns\&. "
|
|
.ti -1c
|
|
.RI "std::shared_ptr< const ::mfem::SparseMatrix > \fBserif::operators::backend::mfem::detail::make_csr\fP (const std::vector< std::vector< int > > &row_columns, const std::vector< std::vector< double > > &row_values, const int height, const int width)"
|
|
.br
|
|
.RI "Write MFEM-style CSR rows (already in Finalize() order) into an owning \fBSparseMatrix\fP\&. "
|
|
.ti -1c
|
|
.RI "std::shared_ptr< const ::mfem::SparseMatrix > \fBserif::operators::backend::mfem::detail::finalize_probed_blocks\fP (const std::vector< \fBProbedElementBlock\fP > &blocks, const int height, const int width)"
|
|
.br
|
|
.RI "SparseMatrix::Add for every probed entry followed by Finalize(), built without MFEM's linked rows\&. "
|
|
.ti -1c
|
|
.RI "std::shared_ptr< const ::mfem::SparseMatrix > \fBserif::operators::backend::mfem::detail::finalize_constrained_blocks\fP (const std::vector< \fBConstrainedElementBlock\fP > &blocks, const int height, const int width)"
|
|
.br
|
|
.RI "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()\&. "
|
|
.ti -1c
|
|
.RI "template<typename Field, VolumeEquation Equation, typename \fBSchema\fP> std::shared_ptr< const ::mfem::SparseMatrix > \fBserif::operators::backend::mfem::assemble_volume_field\fP (const \fBVolumeData\fP< Equation, \fBSchema\fP > &data)"
|
|
.br
|
|
.RI "Assemble a selected field block from accepted weighted derivatives, never by probing the whole system\&. "
|
|
.ti -1c
|
|
.RI "template<typename Field, VolumeEquation Equation, typename \fBSchema\fP> std::vector< double > \fBserif::operators::backend::mfem::volume_field_diagonal\fP (const \fBVolumeData\fP< Equation, \fBSchema\fP > &data)"
|
|
.br
|
|
.RI "Extract exact physical diagonals, retaining constraint cross terms when hanging nodes are present\&. "
|
|
.ti -1c
|
|
.RI "template<typename Field, VolumeEquation Equation, typename \fBSchema\fP> \fBLinearizedBlock\fP \fBserif::operators::backend::mfem::volume_field_block\fP (std::shared_ptr< const \fBVolumeData\fP< Equation, \fBSchema\fP > > data)"
|
|
.br
|
|
.RI "Expose efficient physical block operations from an owning accepted dependency result\&. "
|
|
.in -1c
|
|
.SH "Author"
|
|
.PP
|
|
Generated automatically by Doxygen for SERiF from the source code\&.
|