evaluation.cpp serif/eos/evaluation.hpp serif/eos/models/polytropic.hpp serif/model/eos_reference.hpp type_traits utility #include"serif/eos/evaluation.hpp" #include"serif/eos/models/polytropic.hpp" #include"serif/model/eos_reference.hpp" #include<type_traits> #include<utility> usingnamespaceserif::eos; usingnamespaceserif::dimensions; static_assert(std::same_as<decltype(evaluate<Pressure>(std::declval<constmodels::Polytrope&>(),DensityValue{1.0})),PressureValue>); static_assert(std::same_as<decltype(partial_derivative<MassDensity,SpecificEnthalpy>(std::declval<constmodels::Polytrope&>(),SpecificEnthalpyValue{1.0})),PartialDerivative<MassDensity, SpecificEnthalpy>>); static_assert(std::same_as<decltype(partial_derivative<Pressure,MassDensity>(std::declval<constmodels::Polytrope&>(),DensityValue{1.0})),PartialDerivative<Pressure, MassDensity>>); static_assert(!noexcept(evaluate<Pressure>(std::declval<constmodels::Polytrope&>(),DensityValue{1.0})),"Invalidthermodynamicinputsmustbeallowedtothrow"); static_assert(std::same_as<decltype(evaluate<MassDensity>(std::declval<constmodels::Polytrope&>(),PressureValue{1.0})),DensityValue>); static_assert(std::same_as<decltype(second_partial_derivative<Pressure,MassDensity,MassDensity>( std::declval<constmodels::Polytrope&>(),DensityValue{1.0})),SecondPartialDerivative<Pressure, MassDensity, MassDensity>>); static_assert(models::EOSSupportingSecondPartialDerivative<serif::model::EosReference<models::Polytrope>,relations::PressureFromDensity,MassDensity,MassDensity>); static_assert(!models::EOSSupportingSecondPartialDerivative<models::Polytrope,relations::PressureFromDensity,SpecificEnthalpy,MassDensity>); static_assert(!models::EOSSupportingSecondPartialDerivative<models::Polytrope,relations::PressureFromSpecificEnthalpy,SpecificEnthalpy,SpecificEnthalpy>); static_assert(!models::EOSSupportingSecondPartialDerivative<int,relations::PressureFromDensity,MassDensity,MassDensity>);