521 lines
70 KiB
XML
521 lines
70 KiB
XML
|
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||
|
|
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
|
||
|
|
<compounddef id="views_8hpp" kind="file" language="C++">
|
||
|
|
<compoundname>views.hpp</compoundname>
|
||
|
|
<includes local="no">span</includes>
|
||
|
|
<includes refid="eos_2runtime_2concepts_8hpp" local="yes">serif/eos/runtime/concepts.hpp</includes>
|
||
|
|
<includedby refid="views_8cpp" local="yes">src/compile_time_checks/serif/eos/runtime/views.cpp</includedby>
|
||
|
|
<incdepgraph>
|
||
|
|
<node id="22">
|
||
|
|
<label>serif/dimensions/dimensions.hpp</label>
|
||
|
|
<link refid="dimensions_8hpp"/>
|
||
|
|
<childnode refid="23" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="6" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="13">
|
||
|
|
<label>serif/dimensions/partial.hpp</label>
|
||
|
|
<link refid="partial_8hpp"/>
|
||
|
|
<childnode refid="6" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="12" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="6">
|
||
|
|
<label>serif/dimensions/quantities.hpp</label>
|
||
|
|
<link refid="quantities_8hpp"/>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="8" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="9" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="10" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="11" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="12" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="27">
|
||
|
|
<label>serif/dimensions/runtime/concepts.hpp</label>
|
||
|
|
<link refid="dimensions_2runtime_2concepts_8hpp"/>
|
||
|
|
<childnode refid="23" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="6" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="28" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="28">
|
||
|
|
<label>serif/dimensions/runtime/runtime.hpp</label>
|
||
|
|
<link refid="dimensions_2runtime_2runtime_8hpp"/>
|
||
|
|
<childnode refid="23" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="2" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="29" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="33">
|
||
|
|
<label>serif/eos/evaluation.hpp</label>
|
||
|
|
<link refid="eos_2evaluation_8hpp"/>
|
||
|
|
<childnode refid="4" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="30">
|
||
|
|
<label>serif/eos/exceptions.hpp</label>
|
||
|
|
<link refid="eos_2exceptions_8hpp"/>
|
||
|
|
<childnode refid="29" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="31" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="32" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="4">
|
||
|
|
<label>serif/eos/models/concepts.hpp</label>
|
||
|
|
<link refid="eos_2models_2concepts_8hpp"/>
|
||
|
|
<childnode refid="5" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="21" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="5">
|
||
|
|
<label>serif/eos/models/traits.hpp</label>
|
||
|
|
<link refid="eos_2models_2traits_8hpp"/>
|
||
|
|
<childnode refid="6" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="13" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="14" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="16">
|
||
|
|
<label>serif/eos/relations/catalog.hpp</label>
|
||
|
|
<link refid="catalog_8hpp"/>
|
||
|
|
<childnode refid="17" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="19" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="6" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="14">
|
||
|
|
<label>serif/eos/relations/concepts.hpp</label>
|
||
|
|
<link refid="eos_2relations_2concepts_8hpp"/>
|
||
|
|
<childnode refid="15" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="21">
|
||
|
|
<label>serif/eos/relations/relations.hpp</label>
|
||
|
|
<link refid="eos_2relations_2relations_8hpp"/>
|
||
|
|
<childnode refid="16" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="22" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="15">
|
||
|
|
<label>serif/eos/relations/traits.hpp</label>
|
||
|
|
<link refid="eos_2relations_2traits_8hpp"/>
|
||
|
|
<childnode refid="16" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="3">
|
||
|
|
<label>serif/eos/runtime/concepts.hpp</label>
|
||
|
|
<link refid="eos_2runtime_2concepts_8hpp"/>
|
||
|
|
<childnode refid="4" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="24" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="24">
|
||
|
|
<label>serif/eos/runtime/details.hpp</label>
|
||
|
|
<link refid="eos_2runtime_2details_8hpp"/>
|
||
|
|
<childnode refid="25" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="10" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="26" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="27" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="30" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="33" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="16" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="34" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="1">
|
||
|
|
<label>src/include/serif/eos/runtime/views.hpp</label>
|
||
|
|
<link refid="views_8hpp"/>
|
||
|
|
<childnode refid="2" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="3" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="35">
|
||
|
|
<label>serif/meta/enums.hpp</label>
|
||
|
|
<link refid="enums_8hpp"/>
|
||
|
|
<childnode refid="36" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="37" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="34">
|
||
|
|
<label>serif/utils/error/codes.hpp</label>
|
||
|
|
<link refid="codes_8hpp"/>
|
||
|
|
<childnode refid="29" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="35" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="12">
|
||
|
|
<label>serif/utils/misc/concepts/numeric.hpp</label>
|
||
|
|
<link refid="numeric_8hpp"/>
|
||
|
|
<childnode refid="9" relation="include">
|
||
|
|
</childnode>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="17">
|
||
|
|
<label>serif/utils/misc/concepts/type_uniqueness.hpp</label>
|
||
|
|
<link refid="concepts_2type__uniqueness_8hpp"/>
|
||
|
|
<childnode refid="18" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="11">
|
||
|
|
<label>serif/utils/misc/std_helper/cleaning.hpp</label>
|
||
|
|
<link refid="cleaning_8hpp"/>
|
||
|
|
<childnode refid="7" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="19">
|
||
|
|
<label>serif/utils/misc/std_helper/variadic_cleaning.hpp</label>
|
||
|
|
<link refid="variadic__cleaning_8hpp"/>
|
||
|
|
<childnode refid="20" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="18">
|
||
|
|
<label>serif/utils/misc/traits/type_uniqueness.hpp</label>
|
||
|
|
<link refid="traits_2type__uniqueness_8hpp"/>
|
||
|
|
<childnode refid="11" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
<node id="25">
|
||
|
|
<label>array</label>
|
||
|
|
</node>
|
||
|
|
<node id="8">
|
||
|
|
<label>compare</label>
|
||
|
|
</node>
|
||
|
|
<node id="9">
|
||
|
|
<label>concepts</label>
|
||
|
|
</node>
|
||
|
|
<node id="20">
|
||
|
|
<label>cstddef</label>
|
||
|
|
</node>
|
||
|
|
<node id="29">
|
||
|
|
<label>cstdint</label>
|
||
|
|
</node>
|
||
|
|
<node id="26">
|
||
|
|
<label>expected</label>
|
||
|
|
</node>
|
||
|
|
<node id="37">
|
||
|
|
<label>magic_enum/magic_enum_all.hpp</label>
|
||
|
|
</node>
|
||
|
|
<node id="2">
|
||
|
|
<label>span</label>
|
||
|
|
</node>
|
||
|
|
<node id="31">
|
||
|
|
<label>stdexcept</label>
|
||
|
|
</node>
|
||
|
|
<node id="32">
|
||
|
|
<label>string</label>
|
||
|
|
</node>
|
||
|
|
<node id="23">
|
||
|
|
<label>string_view</label>
|
||
|
|
</node>
|
||
|
|
<node id="10">
|
||
|
|
<label>tuple</label>
|
||
|
|
</node>
|
||
|
|
<node id="7">
|
||
|
|
<label>type_traits</label>
|
||
|
|
</node>
|
||
|
|
<node id="36">
|
||
|
|
<label>unordered_map</label>
|
||
|
|
</node>
|
||
|
|
</incdepgraph>
|
||
|
|
<invincdepgraph>
|
||
|
|
<node id="2">
|
||
|
|
<label>src/compile_time_checks/serif/eos/runtime/views.cpp</label>
|
||
|
|
<link refid="views_8cpp"/>
|
||
|
|
</node>
|
||
|
|
<node id="1">
|
||
|
|
<label>src/include/serif/eos/runtime/views.hpp</label>
|
||
|
|
<link refid="views_8hpp"/>
|
||
|
|
<childnode refid="2" relation="include">
|
||
|
|
</childnode>
|
||
|
|
</node>
|
||
|
|
</invincdepgraph>
|
||
|
|
<innerclass refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view" prot="public">serif::eos::runtime::EOSView</innerclass>
|
||
|
|
<innernamespace refid="namespaceserif">serif</innernamespace>
|
||
|
|
<innernamespace refid="namespaceserif_1_1eos">serif::eos</innernamespace>
|
||
|
|
<innernamespace refid="namespaceserif_1_1eos_1_1runtime">serif::eos::runtime</innernamespace>
|
||
|
|
<briefdescription>
|
||
|
|
<para>File containing the EOSView class. This class is used to provide a runtime view of an EOS model and its relations. </para>
|
||
|
|
</briefdescription>
|
||
|
|
<detaileddescription>
|
||
|
|
<para><simplesect kind="author"><para>Emily M. Boudreaux </para>
|
||
|
|
</simplesect>
|
||
|
|
</para>
|
||
|
|
</detaileddescription>
|
||
|
|
<programlisting>
|
||
|
|
<codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="2"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="9"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="10"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/><span></highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="11"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="12"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>"<ref refid="eos_2runtime_2concepts_8hpp" kindref="compound">serif/eos/runtime/concepts.hpp</ref>"</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="13"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="14"><highlight class="normal"></highlight><highlight class="keyword">namespace<sp/></highlight><highlight class="normal"><ref refid="namespaceserif_1_1eos_1_1runtime" kindref="compound">serif::eos::runtime</ref><sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="15"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="19" refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view" refkind="compound"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">class<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a3f45f0374d5235e0747f160055344330" kindref="member">EOSView</ref><sp/>final<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="20"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">public</highlight><highlight class="normal">:</highlight></codeline>
|
||
|
|
<codeline lineno="21"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="27"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>EOS></highlight></codeline>
|
||
|
|
<codeline lineno="28"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="conceptserif_1_1eos_1_1runtime_1_1_runtime_e_o_s_model" kindref="compound">RuntimeEOSModel<std::remove_cvref_t<EOS></ref>></highlight></codeline>
|
||
|
|
<codeline lineno="29"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a3f45f0374d5235e0747f160055344330" kindref="member">EOSView</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>EOS&<sp/><ref refid="namespaceserif_1_1eos" kindref="compound">eos</ref>)<sp/>noexcept<sp/>:</highlight></codeline>
|
||
|
|
<codeline lineno="30"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ae67fc52a3a643f468fd29ea98c7bcc99" kindref="member">m_object</ref>(std::addressof(<ref refid="namespaceserif_1_1eos" kindref="compound">eos</ref>)),</highlight></codeline>
|
||
|
|
<codeline lineno="31"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a610fb623ebf86f5465c24b33b6d93276" kindref="member">m_relations</ref>(<ref refid="namespaceserif_1_1eos_1_1runtime_1a25ab7f40da798676afd459e004a8c06d" kindref="member">runtimeRelationDescriptors</ref><std::remove_cvref_t<EOS>>()),</highlight></codeline>
|
||
|
|
<codeline lineno="32"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a0f2fc4b2b534e690622cb2170b8e73c7" kindref="member">m_evaluate</ref>(&<ref refid="namespaceserif_1_1eos_1_1runtime_1af34d4e019ddbfd7eca9b4c20fddbae2f" kindref="member">RuntimeEOSAdapter</ref><std::remove_cvref_t<EOS>><ref refid="namespaceserif_1_1eos_1ade79763ef51f539b78059d8898a2d2a2" kindref="member">::evaluate</ref>),</highlight></codeline>
|
||
|
|
<codeline lineno="33"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1aac71c124de0f71a74a389a9478162f80" kindref="member">m_partialDerivative</ref>(&<ref refid="namespaceserif_1_1eos_1_1runtime_1af34d4e019ddbfd7eca9b4c20fddbae2f" kindref="member">RuntimeEOSAdapter</ref><std::remove_cvref_t<EOS>><ref refid="namespaceserif_1_1eos_1a2d0ca00b47c2dfa34d75bae9456fe390" kindref="member">::partial_derivative</ref>)<sp/>{}</highlight></codeline>
|
||
|
|
<codeline lineno="34"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="40"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>EOS></highlight></codeline>
|
||
|
|
<codeline lineno="41"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">requires</highlight><highlight class="normal"><sp/><ref refid="conceptserif_1_1eos_1_1runtime_1_1_runtime_e_o_s_model" kindref="compound">RuntimeEOSModel<std::remove_cvref_t<EOS></ref>></highlight></codeline>
|
||
|
|
<codeline lineno="42"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">explicit</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a3f45f0374d5235e0747f160055344330" kindref="member">EOSView</ref>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>EOS&&)<sp/>=<sp/></highlight><highlight class="keyword">delete</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="43"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="50"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::span<const<sp/>dimensions::runtime::RuntimeRelationDescriptor><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a279d902593a1cb878b0501731d0fae60" kindref="member">relations</ref>()<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="51"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a610fb623ebf86f5465c24b33b6d93276" kindref="member">m_relations</ref>;</highlight></codeline>
|
||
|
|
<codeline lineno="52"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="53"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="60"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af112664bb2ae972035343cd8988dc260" kindref="member">supports</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="61"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>outputQuantity,</highlight></codeline>
|
||
|
|
<codeline lineno="62"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<const<sp/>dimensions::runtime::ThermodynamicQuantityID><sp/>inputQuantities</highlight></codeline>
|
||
|
|
<codeline lineno="63"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="64"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a2b3513f65ad61ad65a26d096fc27e596" kindref="member">find_relation</ref>(outputQuantity,<sp/>inputQuantities)<sp/>!=<sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="65"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="66"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="73"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::expected<dimensions::runtime::RuntimeQuantityValue,<sp/>utils::errors::SERiFErrorCode><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af5334a909fabe22732adce64a846aabe" kindref="member">try_evaluate</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="74"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>outputQuantity,</highlight></codeline>
|
||
|
|
<codeline lineno="75"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue><sp/>inputQuantities</highlight></codeline>
|
||
|
|
<codeline lineno="76"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
||
|
|
<codeline lineno="77"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>validation<sp/>=<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a36e025ca96e5652e521cc9013f0a2cf0" kindref="member">validate_relation_request</ref>(outputQuantity,<sp/>inputQuantities);</highlight></codeline>
|
||
|
|
<codeline lineno="78"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="79"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!validation.has_value())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="80"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected{validation.error()};</highlight></codeline>
|
||
|
|
<codeline lineno="81"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="82"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="83"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>result<sp/>=<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a0f2fc4b2b534e690622cb2170b8e73c7" kindref="member">m_evaluate</ref>(<ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ae67fc52a3a643f468fd29ea98c7bcc99" kindref="member">m_object</ref>,<sp/>outputQuantity,<sp/>inputQuantities);</highlight></codeline>
|
||
|
|
<codeline lineno="84"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="85"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!result.has_value())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="86"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected{result.error()};</highlight></codeline>
|
||
|
|
<codeline lineno="87"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="88"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value" kindref="compound">dimensions::runtime::RuntimeQuantityValue</ref>{outputQuantity,<sp/>*result};</highlight></codeline>
|
||
|
|
<codeline lineno="89"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="90"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="97"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><<ref refid="conceptserif_1_1dimensions_1_1runtime_1_1_runtime_identified_thermodynamic_quantity" kindref="compound">dimensions::runtime::RuntimeIdentifiedThermodynamicQuantity</ref><sp/>OutputQuantity,<sp/><ref refid="conceptserif_1_1dimensions_1_1_thermodynamic_quantity_value_type" kindref="compound">dimensions::ThermodynamicQuantityValueType</ref>...<sp/>InputValues></highlight></codeline>
|
||
|
|
<codeline lineno="98"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::expected<dimensions::QuantityValue<OutputQuantity>,<sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346" kindref="member">utils::errors::SERiFErrorCode</ref>><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af5334a909fabe22732adce64a846aabe" kindref="member">try_evaluate</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="99"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>InputValues...<sp/>inputValues</highlight></codeline>
|
||
|
|
<codeline lineno="100"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
||
|
|
<codeline lineno="101"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>inputsHaveRuntimeIdentifiers<sp/>=<sp/>(<ref refid="conceptserif_1_1dimensions_1_1runtime_1_1_runtime_identified_thermodynamic_quantity" kindref="compound">dimensions::runtime::RuntimeIdentifiedThermodynamicQuantity<dimensions::QuantityOfT<InputValues></ref>><sp/>&&<sp/>...);</highlight></codeline>
|
||
|
|
<codeline lineno="102"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="103"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static_assert</highlight><highlight class="normal">(inputsHaveRuntimeIdentifiers,<sp/></highlight><highlight class="stringliteral">"Every<sp/>runtime<sp/>EOS<sp/>input<sp/>quantity<sp/>needs<sp/>a<sp/>stable<sp/>identifier."</highlight><highlight class="normal">);</highlight></codeline>
|
||
|
|
<codeline lineno="104"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="105"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::array<<ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value" kindref="compound">dimensions::runtime::RuntimeQuantityValue</ref>,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">...(InputValues)><sp/>runtimeInputs<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="106"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value" kindref="compound">dimensions::runtime::RuntimeQuantityValue</ref>{</highlight></codeline>
|
||
|
|
<codeline lineno="107"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>.id<sp/>=<sp/><ref refid="namespaceserif_1_1dimensions_1_1runtime_1ad1eac97b6b9f34f3be395e42d7edc4ba" kindref="member">dimensions::runtime::thermodynamicQuantityID<dimensions::QuantityOfT<InputValues></ref>>,<sp/>.value<sp/>=<sp/>inputValues.value()</highlight></codeline>
|
||
|
|
<codeline lineno="108"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}...</highlight></codeline>
|
||
|
|
<codeline lineno="109"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
||
|
|
<codeline lineno="110"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="111"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>result<sp/>=<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af5334a909fabe22732adce64a846aabe" kindref="member">try_evaluate</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="112"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1dimensions_1_1runtime_1ad1eac97b6b9f34f3be395e42d7edc4ba" kindref="member">dimensions::runtime::thermodynamicQuantityID<OutputQuantity></ref>,<sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue>{runtimeInputs}</highlight></codeline>
|
||
|
|
<codeline lineno="113"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="114"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="115"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!result.has_value())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="116"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected<utils::errors::SERiFErrorCode>{result.error()};</highlight></codeline>
|
||
|
|
<codeline lineno="117"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="118"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="119"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1_quantity_value" kindref="compound">dimensions::QuantityValue<OutputQuantity></ref>{result->value};</highlight></codeline>
|
||
|
|
<codeline lineno="120"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="121"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="129"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::expected<double,<sp/>utils::errors::SERiFErrorCode><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af29dfe9ae0ab303a05835086f5430c7d" kindref="member">try_partial_derivative</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="130"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>outputQuantity,</highlight></codeline>
|
||
|
|
<codeline lineno="131"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>withRespectTo,</highlight></codeline>
|
||
|
|
<codeline lineno="132"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue><sp/>inputValues</highlight></codeline>
|
||
|
|
<codeline lineno="133"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
||
|
|
<codeline lineno="134"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="135"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>validation<sp/>=<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a36e025ca96e5652e521cc9013f0a2cf0" kindref="member">validate_relation_request</ref>(outputQuantity,<sp/>inputValues);</highlight></codeline>
|
||
|
|
<codeline lineno="136"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="137"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!validation.has_value())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="138"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected<utils::errors::SERiFErrorCode>{validation.error()};</highlight></codeline>
|
||
|
|
<codeline lineno="139"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="140"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="141"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor" kindref="compound">dimensions::runtime::RuntimeRelationDescriptor</ref><sp/>&descriptor<sp/>=<sp/>**validation;</highlight></codeline>
|
||
|
|
<codeline lineno="142"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>derivativeAvailable<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="143"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="144"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(std::size_t<sp/>index<sp/>=<sp/>0;<sp/>index<sp/><<sp/>descriptor.<ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor_1a4e51ef144271f3e7b41593660ca993b9" kindref="member">inputQuantities</ref>.size();<sp/>++index)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="145"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.<ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor_1a4e51ef144271f3e7b41593660ca993b9" kindref="member">inputQuantities</ref>[index]<sp/>==<sp/>withRespectTo)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="146"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>derivativeAvailable<sp/>=<sp/>descriptor.<ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor_1a8d3d61d45bdf1a9d97146171308c3183" kindref="member">hasPartialDerivative</ref>(index);</highlight></codeline>
|
||
|
|
<codeline lineno="147"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="148"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="149"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="150"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="151"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!derivativeAvailable)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="152"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a80f8bde1a0d7a4bcdf82b868b2ef210b" kindref="member">runtime_failure<double></ref>(<ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346a7abb36ccb39c78eee29ad309bfc92d83" kindref="member">utils::errors::SERiFErrorCode::EOS_UNSUPPORTED_DERIVATIVE</ref>);</highlight></codeline>
|
||
|
|
<codeline lineno="153"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="154"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="155"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1aac71c124de0f71a74a389a9478162f80" kindref="member">m_partialDerivative</ref>(<ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ae67fc52a3a643f468fd29ea98c7bcc99" kindref="member">m_object</ref>,<sp/>outputQuantity,<sp/>withRespectTo,<sp/>inputValues);</highlight></codeline>
|
||
|
|
<codeline lineno="156"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="157"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="166"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><<ref refid="conceptserif_1_1dimensions_1_1runtime_1_1_runtime_identified_thermodynamic_quantity" kindref="compound">dimensions::runtime::RuntimeIdentifiedThermodynamicQuantity</ref><sp/>OutputQuantity,<sp/><ref refid="conceptserif_1_1dimensions_1_1runtime_1_1_runtime_identified_thermodynamic_quantity" kindref="compound">dimensions::runtime::RuntimeIdentifiedThermodynamicQuantity</ref><sp/>InputQuantity,<sp/><ref refid="conceptserif_1_1dimensions_1_1_quantity_value_type" kindref="compound">dimensions::QuantityValueType</ref>...<sp/>InputValues></highlight></codeline>
|
||
|
|
<codeline lineno="167"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::expected<dimensions::PartialDerivative<OutputQuantity,<sp/>InputQuantity>,<sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346" kindref="member">utils::errors::SERiFErrorCode</ref>><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af29dfe9ae0ab303a05835086f5430c7d" kindref="member">try_partial_derivative</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="168"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>InputValues...<sp/>inputValues</highlight></codeline>
|
||
|
|
<codeline lineno="169"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
||
|
|
<codeline lineno="170"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">constexpr</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>inputHaveRuntimeIdentifiers<sp/>=<sp/>(<ref refid="conceptserif_1_1dimensions_1_1runtime_1_1_runtime_identified_thermodynamic_quantity" kindref="compound">dimensions::runtime::RuntimeIdentifiedThermodynamicQuantity<dimensions::QuantityOfT<InputValues></ref>><sp/>&&<sp/>...);</highlight></codeline>
|
||
|
|
<codeline lineno="171"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">static_assert</highlight><highlight class="normal">(inputHaveRuntimeIdentifiers,<sp/></highlight><highlight class="stringliteral">"Every<sp/>runtime<sp/>EOS<sp/>input<sp/>quantity<sp/>needs<sp/>a<sp/>stable<sp/>identifier."</highlight><highlight class="normal">);</highlight></codeline>
|
||
|
|
<codeline lineno="172"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="173"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::array<<ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value" kindref="compound">dimensions::runtime::RuntimeQuantityValue</ref>,<sp/></highlight><highlight class="keyword">sizeof</highlight><highlight class="normal">...(InputValues)><sp/>runtimeInputs{</highlight></codeline>
|
||
|
|
<codeline lineno="174"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_quantity_value" kindref="compound">dimensions::runtime::RuntimeQuantityValue</ref>{.id<sp/>=<sp/><ref refid="namespaceserif_1_1dimensions_1_1runtime_1ad1eac97b6b9f34f3be395e42d7edc4ba" kindref="member">dimensions::runtime::thermodynamicQuantityID<dimensions::QuantityOfT<InputValues></ref>>,<sp/>.value<sp/>=<sp/>inputValues.value()}...</highlight></codeline>
|
||
|
|
<codeline lineno="175"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
||
|
|
<codeline lineno="176"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="177"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal"><sp/>result<sp/>=<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1af29dfe9ae0ab303a05835086f5430c7d" kindref="member">try_partial_derivative</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="178"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1dimensions_1_1runtime_1ad1eac97b6b9f34f3be395e42d7edc4ba" kindref="member">dimensions::runtime::thermodynamicQuantityID<OutputQuantity></ref>,<sp/></highlight><highlight class="comment">//<sp/>output</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="179"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1dimensions_1_1runtime_1ad1eac97b6b9f34f3be395e42d7edc4ba" kindref="member">dimensions::runtime::thermodynamicQuantityID<InputQuantity></ref>,<sp/><sp/></highlight><highlight class="comment">//<sp/>input</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="180"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue>{runtimeInputs}<sp/></highlight><highlight class="comment">//<sp/>where<sp/>to<sp/>evaluate</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="181"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="182"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="183"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!result.has_value())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="184"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected<utils::errors::SERiFErrorCode>{result.error()};</highlight></codeline>
|
||
|
|
<codeline lineno="185"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="186"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="187"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1_partial_derivative" kindref="compound">dimensions::PartialDerivative<OutputQuantity, InputQuantity></ref>{*result};</highlight></codeline>
|
||
|
|
<codeline lineno="188"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="189"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="190"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:<sp/></highlight><highlight class="comment">//<sp/>Type<sp/>aliases</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="191"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="195"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ad79bd91451b8b8c7f5e3319fe1783af1" kindref="member">RuntimeEvaluateFunction</ref><sp/>=<sp/>std::expected<double,<sp/>utils::errors::SERiFErrorCode><sp/>(*)(</highlight></codeline>
|
||
|
|
<codeline lineno="196"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*,</highlight></codeline>
|
||
|
|
<codeline lineno="197"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref>&,</highlight></codeline>
|
||
|
|
<codeline lineno="198"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue></highlight></codeline>
|
||
|
|
<codeline lineno="199"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="200"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="204"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">using<sp/></highlight><highlight class="normal"><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a1c03015dd8c41e2b6eebfb79f949c1e9" kindref="member">RuntimePartialDerivativeFunction</ref><sp/>=<sp/>std::expected<double,<sp/>utils::errors::SERiFErrorCode><sp/>(*)(</highlight></codeline>
|
||
|
|
<codeline lineno="205"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*,</highlight></codeline>
|
||
|
|
<codeline lineno="206"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref>&,</highlight></codeline>
|
||
|
|
<codeline lineno="207"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref>&,</highlight></codeline>
|
||
|
|
<codeline lineno="208"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue></highlight></codeline>
|
||
|
|
<codeline lineno="209"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="210"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:<sp/></highlight><highlight class="comment">//<sp/>Private<sp/>methods</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="211"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="220"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="structserif_1_1dimensions_1_1runtime_1_1_runtime_relation_descriptor" kindref="compound">dimensions::runtime::RuntimeRelationDescriptor</ref><sp/>*<ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a2b3513f65ad61ad65a26d096fc27e596" kindref="member">find_relation</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="221"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>outputQuantity,</highlight></codeline>
|
||
|
|
<codeline lineno="222"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<const<sp/>dimensions::runtime::ThermodynamicQuantityID><sp/>inputQuantities</highlight></codeline>
|
||
|
|
<codeline lineno="223"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">noexcept</highlight><highlight class="normal"><sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="224"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&<sp/>descriptor<sp/>:<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a610fb623ebf86f5465c24b33b6d93276" kindref="member">m_relations</ref>)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="225"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.outputQuantity<sp/>!=<sp/>outputQuantity<sp/>||<sp/>descriptor.inputQuantities.size()<sp/>!=<sp/>inputQuantities.size())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="226"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="227"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="228"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="229"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>matches<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="230"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(std::size_t<sp/>index<sp/>=<sp/>0;<sp/>index<sp/><<sp/>inputQuantities.size();<sp/>++index)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="231"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.inputQuantities[index]<sp/>!=<sp/>inputQuantities[index])<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="232"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>matches<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="233"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="234"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="235"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="236"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="237"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(matches)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="238"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::addressof(descriptor);</highlight></codeline>
|
||
|
|
<codeline lineno="239"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="240"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="241"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">nullptr</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="242"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="243"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="250"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/>std::expected<const<sp/>dimensions::runtime::RuntimeRelationDescriptor<sp/>*,<sp/>utils::errors::SERiFErrorCode><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a36e025ca96e5652e521cc9013f0a2cf0" kindref="member">validate_relation_request</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="251"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1dimensions_1_1runtime_1_1_thermodynamic_quantity_i_d" kindref="compound">dimensions::runtime::ThermodynamicQuantityID</ref><sp/>outputQuantity,</highlight></codeline>
|
||
|
|
<codeline lineno="252"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/>std::span<const<sp/>dimensions::runtime::RuntimeQuantityValue><sp/>inputValues</highlight></codeline>
|
||
|
|
<codeline lineno="253"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)</highlight><highlight class="keyword"><sp/>const<sp/></highlight><highlight class="normal">{</highlight></codeline>
|
||
|
|
<codeline lineno="254"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>outputAvailable<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="255"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>inputCountAvailable<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="256"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="257"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(</highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">auto</highlight><highlight class="normal">&<sp/>descriptor<sp/>:<sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a610fb623ebf86f5465c24b33b6d93276" kindref="member">m_relations</ref>)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="258"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.outputQuantity<sp/>!=<sp/>outputQuantity)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="259"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="260"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="261"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="262"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>outputAvailable<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="263"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.inputQuantities.size()<sp/>!=<sp/>inputValues.size())<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="264"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">continue</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="265"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="266"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="267"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>inputCountAvailable<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="268"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordtype">bool</highlight><highlight class="normal"><sp/>matches<sp/>=<sp/></highlight><highlight class="keyword">true</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="269"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="270"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">for</highlight><highlight class="normal"><sp/>(std::size_t<sp/>index<sp/>=<sp/>0;<sp/>index<sp/><<sp/>inputValues.size();<sp/>++index)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="271"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(descriptor.inputQuantities[index]<sp/>!=<sp/>inputValues[index].id)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="272"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>matches<sp/>=<sp/></highlight><highlight class="keyword">false</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="273"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">break</highlight><highlight class="normal">;</highlight></codeline>
|
||
|
|
<codeline lineno="274"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="275"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="276"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="277"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(matches)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="278"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::addressof(descriptor);</highlight></codeline>
|
||
|
|
<codeline lineno="279"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="280"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="281"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="282"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!outputAvailable)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="283"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a80f8bde1a0d7a4bcdf82b868b2ef210b" kindref="member">runtime_failure<const dimensions::runtime::RuntimeRelationDescriptor *></ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="284"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346a8e9f88cbd72f5fd2ea30e1a9fc980935" kindref="member">utils::errors::SERiFErrorCode::EOS_UNSUPPORTED_RELATION</ref></highlight></codeline>
|
||
|
|
<codeline lineno="285"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="286"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="287"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="288"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">if</highlight><highlight class="normal"><sp/>(!inputCountAvailable)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="289"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a80f8bde1a0d7a4bcdf82b868b2ef210b" kindref="member">runtime_failure<const dimensions::runtime::RuntimeRelationDescriptor *></ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="290"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346a7d6ed736cc71b74321cff4980d0b366a" kindref="member">utils::errors::SERiFErrorCode::EOS_WRONG_INPUT_COUNT</ref></highlight></codeline>
|
||
|
|
<codeline lineno="291"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="292"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="293"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="294"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a80f8bde1a0d7a4bcdf82b868b2ef210b" kindref="member">runtime_failure<const dimensions::runtime::RuntimeRelationDescriptor *></ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="295"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346ab1a09e8dbe875f5042439869cb9c1a44" kindref="member">utils::errors::SERiFErrorCode::EOS_WRONG_INPUT_QUANTITY</ref></highlight></codeline>
|
||
|
|
<codeline lineno="296"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>);</highlight></codeline>
|
||
|
|
<codeline lineno="297"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="298"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="305"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">template</highlight><highlight class="normal"><sp/><</highlight><highlight class="keyword">typename</highlight><highlight class="normal"><sp/>Value></highlight></codeline>
|
||
|
|
<codeline lineno="306"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>[[nodiscard]]<sp/></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/>std::expected<Value,<sp/>utils::errors::SERiFErrorCode><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a80f8bde1a0d7a4bcdf82b868b2ef210b" kindref="member">runtime_failure</ref>(</highlight></codeline>
|
||
|
|
<codeline lineno="307"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/><ref refid="namespaceserif_1_1utils_1_1errors_1ab04484c13887f78337c2331fb2911346" kindref="member">utils::errors::SERiFErrorCode</ref><sp/>code</highlight></codeline>
|
||
|
|
<codeline lineno="308"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>)<sp/>{</highlight></codeline>
|
||
|
|
<codeline lineno="309"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keywordflow">return</highlight><highlight class="normal"><sp/>std::unexpected{code};</highlight></codeline>
|
||
|
|
<codeline lineno="310"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>}</highlight></codeline>
|
||
|
|
<codeline lineno="311"><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="312"><highlight class="normal"><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">private</highlight><highlight class="normal">:<sp/></highlight><highlight class="comment">//<sp/>Private<sp/>members</highlight><highlight class="normal"></highlight></codeline>
|
||
|
|
<codeline lineno="313"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight><highlight class="keyword">const</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>*<ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ae67fc52a3a643f468fd29ea98c7bcc99" kindref="member">m_object</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
|
||
|
|
<codeline lineno="314"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/>std::span<const<sp/>dimensions::runtime::RuntimeRelationDescriptor><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a610fb623ebf86f5465c24b33b6d93276" kindref="member">m_relations</ref>;<sp/><sp/><sp/><sp/><sp/></highlight></codeline>
|
||
|
|
<codeline lineno="315"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1ad79bd91451b8b8c7f5e3319fe1783af1" kindref="member">RuntimeEvaluateFunction</ref><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a0f2fc4b2b534e690622cb2170b8e73c7" kindref="member">m_evaluate</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
|
||
|
|
<codeline lineno="316"><highlight class="normal"><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1a1c03015dd8c41e2b6eebfb79f949c1e9" kindref="member">RuntimePartialDerivativeFunction</ref><sp/><ref refid="classserif_1_1eos_1_1runtime_1_1_e_o_s_view_1aac71c124de0f71a74a389a9478162f80" kindref="member">m_partialDerivative</ref>;<sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/><sp/></highlight></codeline>
|
||
|
|
<codeline lineno="317"><highlight class="normal"><sp/><sp/><sp/><sp/>};</highlight></codeline>
|
||
|
|
<codeline lineno="318"><highlight class="normal">}</highlight></codeline>
|
||
|
|
</programlisting>
|
||
|
|
<location file="src/include/serif/eos/runtime/views.hpp"/>
|
||
|
|
</compounddef>
|
||
|
|
</doxygen>
|