.TH "serif::equations::Contribution< TestOperandT, SupportT >" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*- .ad l .nh .SH NAME serif::equations::Contribution< TestOperandT, SupportT > \- A helper struct for authoring equations with fewer lines of boiler-plate\&. The idea here is that every equation must report certain members so that the backend can inspect at compile time\&. An author could certainly write these members themselves, but the \fBContribution\fP struct auto generates those members based on its template parameters\&. Therefore, by inheriting from the \fBContribution\fP struct an equation author can avoid writing those members themselves\&. Note that while this is inheritance it is still a compile-time relation\&. \fBContribution\fP does not add any runtime overhead to the equation\&. .SH SYNOPSIS .br .PP .PP \fR#include \fP .PP Inherited by \fBserif::equations::BarycenterConstraint< Axis, Row >\fP, \fBserif::operators::NodalRequest< Potential >\fP, and \fBserif::equations::BarycenterConstraint< Axis, Row >\fP\&. .SS "Public Types" .in +1c .ti -1c .RI "using \fBTest\fP = TestOperandT::term_type" .br .RI "The test type of the contribution\&. " .ti -1c .RI "using \fBTestOperand\fP = TestOperandT" .br .RI "The operand type of the contribution (associating a test function and a term) " .ti -1c .RI "using \fBSupport\fP = SupportT" .br .RI "The domain support of the contribution (which then boils down to the dofs which are supported by the term on that test function) " .in -1c .SH "Detailed Description" .PP .SS "template> .br struct serif::equations::Contribution< TestOperandT, SupportT >"A helper struct for authoring equations with fewer lines of boiler-plate\&. The idea here is that every equation must report certain members so that the backend can inspect at compile time\&. An author could certainly write these members themselves, but the \fBContribution\fP struct auto generates those members based on its template parameters\&. Therefore, by inheriting from the \fBContribution\fP struct an equation author can avoid writing those members themselves\&. Note that while this is inheritance it is still a compile-time relation\&. \fBContribution\fP does not add any runtime overhead to the equation\&. .PP \fBTemplate Parameters\fP .RS 4 \fITestOperandT\fP The test operation type, which must be a valid operand (\fBIsOperand\fP)\&. .br \fISupportT\fP The support type, which must be a valid support (\fBIsSupport\fP)\&. This defaults to the support of the test term\&. .RE .PP \fBNote\fP .RS 4 The support type is, by default, read from the test term\&. There are very few situations where you should need to override this default\&. .PP Read this as "residuals are contributed to the row(s) defined by the test operation\&. e\&.g Some density constraint function might contribute to the residuals of the overall system through some density row\&. .RE .PP .SH "Member Typedef Documentation" .PP .SS "template> using \fBserif::equations::Contribution\fP< TestOperandT, SupportT >::Support = SupportT" .PP The domain support of the contribution (which then boils down to the dofs which are supported by the term on that test function) .SS "template> using \fBserif::equations::Contribution\fP< TestOperandT, SupportT >::Test = TestOperandT::term_type" .PP The test type of the contribution\&. The terminology \fBTest\fP here comes from finite element analysis\&. Specifically, the test type is the type of the test function used in the weak formulation of the equation\&. More concretely, the test type is the type for which the residuals are computed\&. Therefore think of this as the type of the residual row that this contribution contributes to\&. There are a lot of repetitions of the word type here, which I can recognize is a bit confusing\&. Effectively, the way that we have structured much of this code is that we embed particular functions into the type system\&. Therefore when I say "the type of the test function" what I mean is the c++ type that we have defined to represent the test function\&. .PP \fBNote\fP .RS 4 The above comment would probably make any actual writer shake in their boots\&. I'm sure there is a better way to phrase that; however, I am at a loss for the moment\&. The TL;DR here is that since we encode so much information into the type system we use the word type a lot\&. If this makes you rationally upset please email me\&.\&.\&. .RE .PP .SS "template> using \fBserif::equations::Contribution\fP< TestOperandT, SupportT >::TestOperand = TestOperandT" .PP The operand type of the contribution (associating a test function and a term) .SH "Author" .PP Generated automatically by Doxygen for SERiF from the source code\&.