.TH "serif::model::EosReference< EOS >" 3 "Version v0.0.1a" "SERiF" \" -*- nroff -*- .ad l .nh .SH NAME serif::model::EosReference< EOS > \- Reuse one immutable EOS in equation objects, optionally retaining shared ownership\&. .SH SYNOPSIS .br .PP .PP \fR#include \fP .SS "Public Types" .in +1c .ti -1c .RI "using \fBRelations\fP = typename EOS::Relations" .br .in -1c .SS "Public Member Functions" .in +1c .ti -1c .RI "\fBEosReference\fP (std::shared_ptr< const EOS > equation_of_state)" .br .RI "Retain an owned EOS, including an aliasing handle into an immutable model\&. " .ti -1c .RI "\fBEosReference\fP (const EOS &equation_of_state) noexcept" .br .RI "Borrow an EOS whose model owner must outlive all equations and prepared actions using it\&. " .ti -1c .RI "\fBEosReference\fP (EOS &&)=delete" .br .RI "Never retain a pointer into a temporary EOS\&. " .ti -1c .RI "\fBEosReference\fP (const EOS &&)=delete" .br .RI "Const temporaries have the same borrowing lifetime restriction\&. " .ti -1c .RI "template .br requires requires(const EOS& eos, Relation relation, Values\&.\&.\&. values) { eos\&.evaluate(relation, values\&.\&.\&.); }decltype(auto) \fBevaluate\fP (Relation relation, Values\&.\&.\&. values) const noexcept(noexcept(\fBm_eos\fP\->evaluate(relation, values\&.\&.\&.)))" .br .RI "Forward only the relations actually implemented by the underlying EOS\&. " .ti -1c .RI "template .br requires requires(const EOS& eos, Relation relation, Input input, Values\&.\&.\&. values) { eos\&.partial_derivative(relation, input, values\&.\&.\&.); }decltype(auto) \fBpartial_derivative\fP (Relation relation, Input input, Values\&.\&.\&. values) const noexcept(noexcept(\fBm_eos\fP\->partial_derivative(relation, input, values\&.\&.\&.)))" .br .RI "Preserve exact derivative availability and physical return types\&. " .ti -1c .RI "template .br requires requires(const EOS& eos, Relation relation, FirstInput first, SecondInput second, Values\&.\&.\&. values) { eos\&.second_partial_derivative(relation, first, second, values\&.\&.\&.); }decltype(auto) \fBsecond_partial_derivative\fP (Relation relation, FirstInput first, SecondInput second, Values\&.\&.\&. values) const noexcept(noexcept(\fBm_eos\fP\->second_partial_derivative(relation, first, second, values\&.\&.\&.)))" .br .RI "Forward second partials only when the underlying EOS provides them\&. " .ti -1c .RI "const EOS & \fBget\fP () const noexcept" .br .RI "Inspect EOS-specific physical parameters without storing another copy\&. " .in -1c .SS "Private Attributes" .in +1c .ti -1c .RI "std::shared_ptr< const EOS > \fBm_owner\fP" .br .ti -1c .RI "const EOS * \fBm_eos\fP" .br .in -1c .SH "Detailed Description" .PP .SS "template .br requires requires { typename EOS::Relations; } .br class serif::model::EosReference< EOS >"Reuse one immutable EOS in equation objects, optionally retaining shared ownership\&. .SH "Member Typedef Documentation" .PP .SS "template using \fBserif::model::EosReference\fP< EOS >::Relations = typename EOS::Relations" .SH "Constructor & Destructor Documentation" .PP .SS "template \fBserif::model::EosReference\fP< EOS >::EosReference (std::shared_ptr< const EOS > equation_of_state)\fR [inline]\fP, \fR [explicit]\fP" .PP Retain an owned EOS, including an aliasing handle into an immutable model\&. .SS "template \fBserif::model::EosReference\fP< EOS >::EosReference (const EOS & equation_of_state)\fR [inline]\fP, \fR [explicit]\fP, \fR [noexcept]\fP" .PP Borrow an EOS whose model owner must outlive all equations and prepared actions using it\&. .SS "template \fBserif::model::EosReference\fP< EOS >::EosReference (EOS && )\fR [delete]\fP" .PP Never retain a pointer into a temporary EOS\&. .SS "template \fBserif::model::EosReference\fP< EOS >::EosReference (const EOS && )\fR [delete]\fP" .PP Const temporaries have the same borrowing lifetime restriction\&. .SH "Member Function Documentation" .PP .SS "template template .br requires requires(const EOS& eos, Relation relation, Values\&.\&.\&. values) { eos\&.evaluate(relation, values\&.\&.\&.); }decltype(auto) \fBserif::model::EosReference\fP< EOS >::evaluate (Relation relation, Values\&.\&.\&. values) const\fR [inline]\fP, \fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Forward only the relations actually implemented by the underlying EOS\&. .SS "template const EOS & \fBserif::model::EosReference\fP< EOS >::get () const\fR [inline]\fP, \fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Inspect EOS-specific physical parameters without storing another copy\&. .SS "template template .br requires requires(const EOS& eos, Relation relation, Input input, Values\&.\&.\&. values) { eos\&.partial_derivative(relation, input, values\&.\&.\&.); }decltype(auto) \fBserif::model::EosReference\fP< EOS >::partial_derivative (Relation relation, Input input, Values\&.\&.\&. values) const\fR [inline]\fP, \fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Preserve exact derivative availability and physical return types\&. .SS "template template .br requires requires(const EOS& eos, Relation relation, FirstInput first, SecondInput second, Values\&.\&.\&. values) { eos\&.second_partial_derivative(relation, first, second, values\&.\&.\&.); }decltype(auto) \fBserif::model::EosReference\fP< EOS >::second_partial_derivative (Relation relation, FirstInput first, SecondInput second, Values\&.\&.\&. values) const\fR [inline]\fP, \fR [nodiscard]\fP, \fR [noexcept]\fP" .PP Forward second partials only when the underlying EOS provides them\&. .SH "Member Data Documentation" .PP .SS "template const EOS* \fBserif::model::EosReference\fP< EOS >::m_eos\fR [private]\fP" .SS "template std::shared_ptr \fBserif::model::EosReference\fP< EOS >::m_owner\fR [private]\fP" .SH "Author" .PP Generated automatically by Doxygen for SERiF from the source code\&.