Reuse one immutable EOS in equation objects, optionally retaining shared ownership.
More...
|
| | EosReference (std::shared_ptr< const EOS > equation_of_state) |
| | Retain an owned EOS, including an aliasing handle into an immutable model.
|
| |
| | EosReference (const EOS &equation_of_state) noexcept |
| | Borrow an EOS whose model owner must outlive all equations and prepared actions using it.
|
| |
| | EosReference (EOS &&)=delete |
| | Never retain a pointer into a temporary EOS.
|
| |
| | EosReference (const EOS &&)=delete |
| | Const temporaries have the same borrowing lifetime restriction.
|
| |
template<typename Relation, typename... Values>
requires requires(const EOS& eos, Relation relation, Values... values) { eos.evaluate(relation, values...); } |
| decltype(auto) | evaluate (Relation relation, Values... values) const noexcept(noexcept(m_eos->evaluate(relation, values...))) |
| | Forward only the relations actually implemented by the underlying EOS.
|
| |
template<typename Relation, typename Input, typename... Values>
requires requires(const EOS& eos, Relation relation, Input input, Values... values) { eos.partial_derivative(relation, input, values...); } |
| decltype(auto) | partial_derivative (Relation relation, Input input, Values... values) const noexcept(noexcept(m_eos->partial_derivative(relation, input, values...))) |
| | Preserve exact derivative availability and physical return types.
|
| |
template<typename Relation, typename FirstInput, typename SecondInput, typename... Values>
requires requires(const EOS& eos, Relation relation, FirstInput first, SecondInput second, Values... values) { eos.second_partial_derivative(relation, first, second, values...); } |
| decltype(auto) | second_partial_derivative (Relation relation, FirstInput first, SecondInput second, Values... values) const noexcept(noexcept(m_eos->second_partial_derivative(relation, first, second, values...))) |
| | Forward second partials only when the underlying EOS provides them.
|
| |
| const EOS & | get () const noexcept |
| | Inspect EOS-specific physical parameters without storing another copy.
|
| |
template<typename EOS>
requires requires { typename EOS::Relations; }
class serif::model::EosReference< EOS >
Reuse one immutable EOS in equation objects, optionally retaining shared ownership.
template<typename EOS>
template<typename Relation, typename Input, typename... Values>
requires requires(const EOS& eos, Relation relation, Input input, Values... values) { eos.partial_derivative(relation, input, values...); }
Preserve exact derivative availability and physical return types.
template<typename EOS>
template<typename Relation, typename FirstInput, typename SecondInput, typename... Values>
requires requires(const EOS& eos, Relation relation, FirstInput first, SecondInput second, Values... values) { eos.second_partial_derivative(relation, first, second, values...); }
| decltype(auto) serif::model::EosReference< EOS >::second_partial_derivative |
( |
Relation | relation, |
|
|
FirstInput | first, |
|
|
SecondInput | second, |
|
|
Values... | values ) const |
|
inlinenodiscardnoexcept |
Forward second partials only when the underlying EOS provides them.