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)
109 lines
5.7 KiB
Groff
109 lines
5.7 KiB
Groff
.TH "src/include/serif/backend/mfem/operators/volume_application.hpp" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
|
|
.ad l
|
|
.nh
|
|
.SH NAME
|
|
src/include/serif/backend/mfem/operators/volume_application.hpp
|
|
.SH SYNOPSIS
|
|
.br
|
|
.PP
|
|
\fR#include <algorithm>\fP
|
|
.br
|
|
\fR#include <array>\fP
|
|
.br
|
|
\fR#include <functional>\fP
|
|
.br
|
|
\fR#include <span>\fP
|
|
.br
|
|
\fR#include <tuple>\fP
|
|
.br
|
|
\fR#include <vector>\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/operators/volume_inputs\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/operators/element_evaluation\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/operators/element_transpose\&.hpp'\fP
|
|
.br
|
|
\fR#include 'serif/backend/mfem/shared/parallel\&.hpp'\fP
|
|
.br
|
|
|
|
.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
|
|
.in -1c
|
|
.SS "Functions"
|
|
|
|
.in +1c
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::validate_volume_data\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data)"
|
|
.br
|
|
.RI "Reject changes to discretization objects borrowed by an accepted linearization\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT, typename VisitT> void \fBserif::operators::backend::mfem::for_each_volume_element\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, VisitT &&visit)"
|
|
.br
|
|
.RI "Visit each contribution's own batch in equation order, without scanning other contributions\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT, typename VisitT> void \fBserif::operators::backend::mfem::for_each_volume_linearization\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, VisitT &&visit)"
|
|
.br
|
|
.RI "Visit equation data together with its graph-owned local geometry derivative matrix\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> int \fBserif::operators::backend::mfem::volume_height\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data)"
|
|
.br
|
|
.RI "Return the supported residual size\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> int \fBserif::operators::backend::mfem::volume_width\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data)"
|
|
.br
|
|
.RI "Packed directions contain unique coefficient terms followed by displacement\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> std::size_t \fBserif::operators::backend::mfem::tensor_element_count\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data)"
|
|
.br
|
|
.RI "Count contribution-elements using tensor contractions for any sampled basis\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> int \fBserif::operators::backend::mfem::integration_order\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, int element)"
|
|
.br
|
|
.RI "Return the largest contribution quadrature order on a supported mesh element\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::volume_residual\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, \fB::mfem::Vector\fP &result)"
|
|
.br
|
|
.RI "Copy the residual already assembled and checked when this result was accepted\&. "
|
|
.ti -1c
|
|
.RI "template<std::size_t Count> std::array< \fBdiscretization::backend::mfem::DofMap::Elements\fP, Count > \fBserif::operators::backend::mfem::column_elements\fP (const std::array< const \fBdiscretization::backend::mfem::DofMap\fP *, Count > &columns)"
|
|
.br
|
|
.RI "Validate coefficient bindings once before a complete element traversal\&. "
|
|
.ti -1c
|
|
.RI "template<bool Fields = true, bool Geometry = true, VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::apply_volume_direction\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, const std::array< const \fB::mfem::Vector\fP *, \fBEquationPlan\fP< EquationT >::column_count > &directions, const \fB::mfem::Vector\fP &displacement_direction, \fBWorkspace\fP &workspace, \fB::mfem::Vector\fP &result)"
|
|
.br
|
|
.RI "Apply only the requested directions and assemble their supported residual contribution\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::apply_volume_displacements\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, std::span< const \fB::mfem::Vector\fP *const > displacement_directions, std::span<\fB::mfem::Vector\fP *const > results)"
|
|
.br
|
|
.RI "apply_volume_direction<false, true> for several displacement directions in one traversal\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT, typename CoefficientsT> void \fBserif::operators::backend::mfem::apply_jacobian\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, const CoefficientsT &direction, const \fB::mfem::Vector\fP &displacement_direction, \fBWorkspace\fP &workspace, \fB::mfem::Vector\fP &result)"
|
|
.br
|
|
.RI "Apply a direction whose terms explicitly name the accepted coefficient bindings\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::apply_jacobian\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, const \fB::mfem::Vector\fP &direction, \fBWorkspace\fP &workspace, \fB::mfem::Vector\fP &result)"
|
|
.br
|
|
.RI "Unpack unique coefficient terms and displacement, then use the same numerical action\&. "
|
|
.ti -1c
|
|
.RI "template<VolumeEquation EquationT, typename SchemaT> void \fBserif::operators::backend::mfem::apply_jacobian_transpose\fP (const \fBVolumeData\fP< EquationT, SchemaT > &data, const \fB::mfem::Vector\fP &residual_dual, \fBWorkspace\fP &workspace, \fB::mfem::Vector\fP &result)"
|
|
.br
|
|
.RI "Assemble the full coordinate transpose in the same packed order as the forward action\&. "
|
|
.in -1c
|
|
.SH "Author"
|
|
.PP
|
|
Generated automatically by Doxygen for SERiF from the source code\&.
|