164 lines
6.1 KiB
Groff
164 lines
6.1 KiB
Groff
|
|
.TH "serif::discretization::blocks::BlockVectorView< Kind, Layout, Scalar >" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*-
|
||
|
|
.ad l
|
||
|
|
.nh
|
||
|
|
.SH NAME
|
||
|
|
serif::discretization::blocks::BlockVectorView< Kind, Layout, Scalar > \- Build a non-owning view of a packed layout as a span\&.
|
||
|
|
|
||
|
|
.SH SYNOPSIS
|
||
|
|
.br
|
||
|
|
.PP
|
||
|
|
.PP
|
||
|
|
\fR#include <vector_view\&.hpp>\fP
|
||
|
|
.SS "Public Types"
|
||
|
|
|
||
|
|
.in +1c
|
||
|
|
.ti -1c
|
||
|
|
.RI "using \fBLayoutType\fP = std::remove_cvref_t<Layout>"
|
||
|
|
.br
|
||
|
|
.RI "Alias for the layout type, e\&.g\&. \fBSystemLayout<Values, Residuals>\fP\&. "
|
||
|
|
.in -1c
|
||
|
|
.SS "Public Member Functions"
|
||
|
|
|
||
|
|
.in +1c
|
||
|
|
.ti -1c
|
||
|
|
.RI "\fBBlockVectorView\fP (const \fBLayoutType\fP &layout, std::span< Scalar > values)"
|
||
|
|
.br
|
||
|
|
.RI "Construct one of these views from a layout and a span of coefficients\&. "
|
||
|
|
.ti -1c
|
||
|
|
.RI "\fBBlockVectorView\fP (const \fBLayoutType\fP &&, std::span< Scalar >)=delete"
|
||
|
|
.br
|
||
|
|
.RI "Reject temporary metadata whose offsets would dangle before the coefficients are accessed\&. "
|
||
|
|
.ti -1c
|
||
|
|
.RI "template<typename Range>
|
||
|
|
.br
|
||
|
|
requires (!std::is_lvalue_reference_v<Range> && !std::ranges::borrowed_range<Range>)\fBBlockVectorView\fP (const \fBLayoutType\fP &, Range &&)=delete"
|
||
|
|
.br
|
||
|
|
.RI "Prevent implicit const-span conversion from retaining a temporary owning container\&. "
|
||
|
|
.ti -1c
|
||
|
|
.RI "template<typename Coordinate>
|
||
|
|
.br
|
||
|
|
requires utils::dependencies::ContainsKey<Coordinate, typename LayoutType::template Coordinates<Kind>>std::span< Scalar > \fBget\fP () const"
|
||
|
|
.br
|
||
|
|
.RI "Access the requested physical coordinate while retaining storage constness\&. "
|
||
|
|
.in -1c
|
||
|
|
.SS "Private Attributes"
|
||
|
|
|
||
|
|
.in +1c
|
||
|
|
.ti -1c
|
||
|
|
.RI "const \fBLayoutType\fP & \fBm_layout\fP"
|
||
|
|
.br
|
||
|
|
.RI "The layout to use for the view\&. The layout must remain unchanged while the view is used\&. "
|
||
|
|
.ti -1c
|
||
|
|
.RI "std::span< Scalar > \fBm_values\fP"
|
||
|
|
.br
|
||
|
|
.RI "The span of coefficients to view\&. "
|
||
|
|
.in -1c
|
||
|
|
.SH "Detailed Description"
|
||
|
|
.PP
|
||
|
|
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double>
|
||
|
|
.br
|
||
|
|
requires (Kind == \fBRepresentedValueKind::value\fP || Kind == \fBRepresentedValueKind::residual\fP)
|
||
|
|
.br
|
||
|
|
class serif::discretization::blocks::BlockVectorView< Kind, Layout, Scalar >"Build a non-owning view of a packed layout as a span\&.
|
||
|
|
|
||
|
|
|
||
|
|
.PP
|
||
|
|
\fBTemplate Parameters\fP
|
||
|
|
.RS 4
|
||
|
|
\fIKind\fP The kind of represented values to select, e\&.g\&. RepresentedValueKind::values or RepresentedValueKind::residuals\&.
|
||
|
|
.br
|
||
|
|
\fILayout\fP The block layout type, e\&.g\&. \fBSystemLayout\fP\&.
|
||
|
|
.br
|
||
|
|
\fIScalar\fP The scalar type of the coefficients, e\&.g\&. double\&.
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
Requirements
|
||
|
|
.PD 0
|
||
|
|
.IP "\(bu" 2
|
||
|
|
Kind == \fBRepresentedValueKind::value\fP || Kind == \fBRepresentedValueKind::residual\fP
|
||
|
|
.PP
|
||
|
|
|
||
|
|
.PP
|
||
|
|
\fBNote\fP
|
||
|
|
.RS 4
|
||
|
|
The layout must remain unchanged while the view is used\&. Probably we want to, in the future, add some way to validate this; however, I am at the moment at a loss for how to do so\&.
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
|
||
|
|
.SH "Member Typedef Documentation"
|
||
|
|
.PP
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> using \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::LayoutType = std::remove_cvref_t<Layout>"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
Alias for the layout type, e\&.g\&. \fBSystemLayout<Values, Residuals>\fP\&.
|
||
|
|
.SH "Constructor & Destructor Documentation"
|
||
|
|
.PP
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::BlockVectorView (const \fBLayoutType\fP & layout, std::span< Scalar > values)\fR [inline]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
Construct one of these views from a layout and a span of coefficients\&.
|
||
|
|
.PP
|
||
|
|
\fBParameters\fP
|
||
|
|
.RS 4
|
||
|
|
\fIlayout\fP The layout to use for the view\&.
|
||
|
|
.br
|
||
|
|
\fIvalues\fP The span of coefficients to view\&.
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
\fBExceptions\fP
|
||
|
|
.RS 4
|
||
|
|
\fIstd::domain_error\fP If the span of coefficients does not match the total size of the layout\&.
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
\fBTodo\fP
|
||
|
|
.RS 4
|
||
|
|
Really this could go in many places; however, I think we should move away from throwing std exceptions and introduce our own exception hierarchy\&.
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::BlockVectorView (const \fBLayoutType\fP && , std::span< Scalar > )\fR [delete]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
Reject temporary metadata whose offsets would dangle before the coefficients are accessed\&.
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> template<typename Range>
|
||
|
|
.br
|
||
|
|
requires (!std::is_lvalue_reference_v<Range> && !std::ranges::borrowed_range<Range>)\fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::BlockVectorView (const \fBLayoutType\fP & , Range && )\fR [delete]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
Prevent implicit const-span conversion from retaining a temporary owning container\&.
|
||
|
|
.SH "Member Function Documentation"
|
||
|
|
.PP
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> template<typename Coordinate>
|
||
|
|
.br
|
||
|
|
requires utils::dependencies::ContainsKey<Coordinate, typename LayoutType::template Coordinates<Kind>>std::span< Scalar > \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::get () const\fR [inline]\fP, \fR [nodiscard]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
Access the requested physical coordinate while retaining storage constness\&.
|
||
|
|
.PP
|
||
|
|
\fBTemplate Parameters\fP
|
||
|
|
.RS 4
|
||
|
|
\fICoordinate\fP The coordinate tag to access
|
||
|
|
.RE
|
||
|
|
.PP
|
||
|
|
Requirements
|
||
|
|
.PD 0
|
||
|
|
.IP "\(bu" 2
|
||
|
|
A layout type with kind Kind must contain the requested coordinate tag\&.
|
||
|
|
.PP
|
||
|
|
|
||
|
|
.SH "Member Data Documentation"
|
||
|
|
.PP
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> const \fBLayoutType\fP& \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::m_layout\fR [private]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
The layout to use for the view\&. The layout must remain unchanged while the view is used\&.
|
||
|
|
.SS "template<\fBRepresentedValueKind\fP Kind, SystemLayoutType Layout, typename Scalar = double> std::span<Scalar> \fBserif::discretization::blocks::BlockVectorView\fP< Kind, Layout, Scalar >::m_values\fR [private]\fP"
|
||
|
|
|
||
|
|
.PP
|
||
|
|
The span of coefficients to view\&.
|
||
|
|
|
||
|
|
.SH "Author"
|
||
|
|
.PP
|
||
|
|
Generated automatically by Doxygen for SERiF from the source code\&.
|