Files
MeanField_SERiF/docs/man/man3/serif_operators.3
Emily Boudreaux 6b57738330 docs(docs): built docs
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)
2026-11-09 14:09:44 -05:00

288 lines
11 KiB
Groff

.TH "serif::operators" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
.ad l
.nh
.SH NAME
serif::operators
.SH SYNOPSIS
.br
.PP
.SS "Namespaces"
.in +1c
.ti -1c
.RI "namespace \fBbackend\fP"
.br
.ti -1c
.RI "namespace \fBdetail\fP"
.br
.in -1c
.SS "Classes"
.in +1c
.ti -1c
.RI "struct \fBBadContributionCollection\fP"
.br
.ti -1c
.RI "struct \fBBadContributionRow\fP"
.br
.ti -1c
.RI "struct \fBContributionBinding\fP"
.br
.RI "Retain one leaf equation and the constant coefficient of its arithmetic expression\&. "
.ti -1c
.RI "struct \fBDiscontinuousScalar\fP"
.br
.ti -1c
.RI "struct \fBEquationPlan\fP"
.br
.ti -1c
.RI "struct \fBEquationPlan< EquationT, utils::types::TypeList< O\&.\&.\&. > >\fP"
.br
.ti -1c
.RI "class \fBEquationRegistry\fP"
.br
.RI "A compile-time registry of equations\&. "
.ti -1c
.RI "struct \fBGradientRequest\fP"
.br
.ti -1c
.RI "struct \fBHasScalarVolumeOperands\fP"
.br
.ti -1c
.RI "struct \fBHasScalarVolumeOperands< EquationT, utils::types::TypeList< Operands\&.\&.\&. > >\fP"
.br
.ti -1c
.RI "class \fBLinearizedBlock\fP"
.br
.RI "An accepted physical block with optional efficient diagonal and sparse assembly operations\&. "
.ti -1c
.RI "class \fBLinearizedSystemView\fP"
.br
.RI "Borrow an accepted collection of physical blocks and its independently ordered system layout\&. "
.ti -1c
.RI "struct \fBNestedBadCollection\fP"
.br
.ti -1c
.RI "struct \fBNodalRequest\fP"
.br
.ti -1c
.RI "struct \fBOperandValues\fP"
.br
.RI "A helper struct to store the values of operands\&. There is some convention here, specifically if OutputT is void then this struct represents the values of the operands, otherwise it represents the local derivatives of the operands with respect to OutputT\&. "
.ti -1c
.RI "struct \fBPhysicalBlock\fP"
.br
.RI "Identify a physical Jacobian block by its equation rows and unknown coordinates\&. "
.ti -1c
.RI "struct \fBVolumeContributions\fP"
.br
.ti -1c
.RI "struct \fBVolumeContributions< std::tuple< C\&.\&.\&. > >\fP"
.br
.ti -1c
.RI "struct \fBVolumeOperands\fP"
.br
.ti -1c
.RI "struct \fBVolumeOperands< C, utils::types::TypeList< O\&.\&.\&. > >\fP"
.br
.in -1c
.SS "Concepts"
.in +1c
.ti -1c
.RI "concept \fBScalarValueTerm\fP"
.br
.ti -1c
.RI "concept \fBScalarValueOperand\fP"
.br
.ti -1c
.RI "concept \fBScalarGradientOperand\fP"
.br
.RI "A conforming scalar gradient; discontinuous fields also require face terms\&. "
.ti -1c
.RI "concept \fBVectorGradientOperand\fP"
.br
.RI "Full vector gradients are supported for componentwise H1 fields\&. "
.ti -1c
.RI "concept \fBScalarVolumeEquation\fP"
.br
.RI "Equations executable by the current scalar-value volume operator\&. "
.ti -1c
.RI "concept \fBMappedOperand\fP"
.br
.RI "Mathematical operand combinations implemented by the current volume backend\&. "
.ti -1c
.RI "concept \fBVolumeEquation\fP"
.br
.RI "One or more supported weak volume contributions assembled into a single residual row\&. "
.in -1c
.SS "Typedefs"
.in +1c
.ti -1c
.RI "using \fBDensity\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::density::mass\fP>"
.br
.ti -1c
.RI "using \fBPotential\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::gravity::potential\fP>"
.br
.ti -1c
.RI "using \fBConstant\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::barotropic_constant::mass_normalization\fP>"
.br
.ti -1c
.RI "using \fBFirstOrder\fP = \fBequations::OperandValues\fP<\fButils::types::TypeList\fP<\fBDensity\fP, \fBPotential\fP, \fBConstant\fP>>"
.br
.ti -1c
.RI "using \fBPermutedOrder\fP = \fBequations::OperandValues\fP<\fButils::types::TypeList\fP<\fBConstant\fP, \fBDensity\fP, \fBPotential\fP>>"
.br
.ti -1c
.RI "using \fBMassPlan\fP = \fBEquationPlan\fP<\fBequations::MassNormalization\fP>"
.br
.ti -1c
.RI "using \fBBalancePlan\fP = \fBEquationPlan\fP<\fBequations::BarotropicDensityBalance\fP<\fBeos::models::Polytrope\fP>>"
.br
.ti -1c
.RI "using \fBMassPoint\fP = \fBequations::EquationPoint\fP<\fBequations::MassNormalization::Operands\fP>"
.br
.ti -1c
.RI "using \fBPotentialContributions\fP = \fBequations::ContributionsOf\fP<\fBequations::PrimalPoissonBalance\fP>"
.br
.ti -1c
.RI "using \fBBalance\fP = \fBequations::BarotropicDensityBalance\fP<\fBeos::models::Polytrope\fP>"
.br
.ti -1c
.RI "using \fBDisplacement\fP = \fBdiscretization::blocks::displacement::vector\fP"
.br
.ti -1c
.RI "using \fBSchema\fP = \fBdiscretization::domain::schema::CoreEnvelopeVacuumDomainSchema\fP"
.br
.ti -1c
.RI "using \fBBoundaryValue\fP = \fBNodalRequest\fP<\fBPotential\fP>"
.br
.ti -1c
.RI "using \fBDensityValue\fP = \fBdiscretization::forms::Operand\fP<\fBDensity\fP>"
.br
.ti -1c
.RI "using \fBPotentialValue\fP = \fBdiscretization::forms::Operand\fP<\fBPotential\fP>"
.br
.ti -1c
.RI "using \fBPotentialGradient\fP = \fBdiscretization::forms::Operand\fP<\fBPotential\fP, \fBdiscretization::forms::Operation::Gradient\fP>"
.br
.ti -1c
.RI "using \fBDisplacementDivergence\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::displacement::vector\fP, \fBdiscretization::forms::Operation::Divergence\fP>"
.br
.ti -1c
.RI "using \fBDisplacementValue\fP = \fBdiscretization::forms::Operand\fP<\fBDisplacement\fP>"
.br
.ti -1c
.RI "using \fBDisplacementGradient\fP = \fBdiscretization::forms::Operand\fP<\fBDisplacement\fP, \fBdiscretization::forms::Operation::Gradient\fP>"
.br
.ti -1c
.RI "using \fBVectorTensor\fP = \fBdiscretization::forms::MatrixValue\fP"
.br
.ti -1c
.RI "using \fBCartesianVector\fP = \fBdiscretization::forms::VectorValue\fP"
.br
.ti -1c
.RI "using \fBMixedSamples\fP = \fButils::types::TypeList\fP<\fBDisplacementValue\fP, \fBDisplacementDivergence\fP, \fBDensityValue\fP>"
.br
.ti -1c
.RI "using \fBMass\fP = \fBequations::MassNormalization\fP"
.br
.ti -1c
.RI "using \fBOmega\fP = \fBdiscretization::blocks::rotation::angular_velocity\fP"
.br
.ti -1c
.RI "using \fBMomentum\fP = \fBequations::AngularMomentumConstraint\fP"
.br
.in -1c
.SS "Functions"
.in +1c
.ti -1c
.RI "template<equations::Equation EquationT> auto \fBbind_contributions\fP (std::shared_ptr< const EquationT > equation)"
.br
.RI "Give each retained leaf a compile-time tuple position for independently cached contribution results\&. "
.ti -1c
.RI "template<equations::Equation EquationT, typename FunctionT> void \fBfor_each_contribution\fP (const EquationT &equation, FunctionT &&function)"
.br
.ti -1c
.RI "template<discretization::blocks::SystemLayoutType Layout, utils::dependencies::IsDependencyContext Blocks> \fBLinearizedSystemView\fP (const Layout &, const Blocks &) \-> LinearizedSystemView< Layout, Blocks >"
.br
.RI "Infer canonical owner types while retaining the explicit borrowing lifetime checks\&. "
.ti -1c
.RI "\fBLinearizedBlock\fP \fBlinearized_block\fP (std::shared_ptr< const ::mfem::SparseMatrix > matrix)"
.br
.RI "Retain an already assembled physical block without copying its matrix\&. "
.in -1c
.SH "Typedef Documentation"
.PP
.SS "using \fBserif::operators::Balance\fP = \fBequations::BarotropicDensityBalance\fP<\fBeos::models::Polytrope\fP>"
.SS "using \fBserif::operators::BalancePlan\fP = \fBEquationPlan\fP<\fBequations::BarotropicDensityBalance\fP<\fBeos::models::Polytrope\fP>>"
.SS "using \fBserif::operators::BoundaryValue\fP = \fBNodalRequest\fP<\fBPotential\fP>"
.SS "using \fBserif::operators::CartesianVector\fP = \fBdiscretization::forms::VectorValue\fP"
.SS "typedef \fBdiscretization::blocks::barotropic_constant::mass_normalization\fP \fBserif::operators::Constant\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::barotropic_constant::mass_normalization\fP>"
.SS "typedef \fBdiscretization::blocks::density::mass\fP \fBserif::operators::Density\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::density::mass\fP>"
.SS "using \fBserif::operators::DensityValue\fP = \fBdiscretization::forms::Operand\fP<\fBDensity\fP>"
.SS "using \fBserif::operators::Displacement\fP = \fBdiscretization::blocks::displacement::vector\fP"
.SS "using \fBserif::operators::DisplacementDivergence\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::displacement::vector\fP, \fBdiscretization::forms::Operation::Divergence\fP>"
.SS "using \fBserif::operators::DisplacementGradient\fP = \fBdiscretization::forms::Operand\fP<\fBDisplacement\fP, \fBdiscretization::forms::Operation::Gradient\fP>"
.SS "using \fBserif::operators::DisplacementValue\fP = \fBdiscretization::forms::Operand\fP<\fBDisplacement\fP>"
.SS "using \fBserif::operators::FirstOrder\fP = \fBequations::OperandValues\fP<\fButils::types::TypeList\fP<\fBDensity\fP, \fBPotential\fP, \fBConstant\fP>>"
.SS "using \fBserif::operators::Mass\fP = \fBequations::MassNormalization\fP"
.SS "using \fBserif::operators::MassPlan\fP = \fBEquationPlan\fP<\fBequations::MassNormalization\fP>"
.SS "using \fBserif::operators::MassPoint\fP = \fBequations::EquationPoint\fP<\fBequations::MassNormalization::Operands\fP>"
.SS "using \fBserif::operators::MixedSamples\fP = \fButils::types::TypeList\fP<\fBDisplacementValue\fP, \fBDisplacementDivergence\fP, \fBDensityValue\fP>"
.SS "using \fBserif::operators::Momentum\fP = \fBequations::AngularMomentumConstraint\fP"
.SS "using \fBserif::operators::Omega\fP = \fBdiscretization::blocks::rotation::angular_velocity\fP"
.SS "using \fBserif::operators::PermutedOrder\fP = \fBequations::OperandValues\fP<\fButils::types::TypeList\fP<\fBConstant\fP, \fBDensity\fP, \fBPotential\fP>>"
.SS "typedef \fBdiscretization::blocks::gravity::potential\fP \fBserif::operators::Potential\fP = \fBdiscretization::forms::Operand\fP<\fBdiscretization::blocks::gravity::potential\fP>"
.SS "using \fBserif::operators::PotentialContributions\fP = \fBequations::ContributionsOf\fP<\fBequations::PrimalPoissonBalance\fP>"
.SS "using \fBserif::operators::PotentialGradient\fP = \fBdiscretization::forms::Operand\fP<\fBPotential\fP, \fBdiscretization::forms::Operation::Gradient\fP>"
.SS "using \fBserif::operators::PotentialValue\fP = \fBdiscretization::forms::Operand\fP<\fBPotential\fP>"
.SS "using \fBserif::operators::Schema\fP = \fBdiscretization::domain::schema::CoreEnvelopeVacuumDomainSchema\fP"
.SS "using \fBserif::operators::VectorTensor\fP = \fBdiscretization::forms::MatrixValue\fP"
.SH "Function Documentation"
.PP
.SS "template<equations::Equation EquationT> auto serif::operators::bind_contributions (std::shared_ptr< const EquationT > equation)\fR [nodiscard]\fP"
.PP
Give each retained leaf a compile-time tuple position for independently cached contribution results\&.
.SS "template<equations::Equation EquationT, typename FunctionT> void serif::operators::for_each_contribution (const EquationT & equation, FunctionT && function)"
Visit leaves in declaration order, multiplying constant coefficients along each path\&. The callback receives (leaf equation, unique contribution index, coefficient)\&.
.SS "\fBLinearizedBlock\fP serif::operators::backend::mfem::linearized_block (std::shared_ptr< const ::mfem::SparseMatrix > matrix)\fR [nodiscard]\fP"
.PP
Retain an already assembled physical block without copying its matrix\&.
.SS "template<discretization::blocks::SystemLayoutType Layout, utils::dependencies::IsDependencyContext Blocks> serif::operators::LinearizedSystemView (const Layout & , const Blocks & ) \-> LinearizedSystemView< Layout, Blocks >"
.PP
Infer canonical owner types while retaining the explicit borrowing lifetime checks\&.
.SH "Author"
.PP
Generated automatically by Doxygen for SERiF from the source code\&.