12#include "detray/definitions/algebra.hpp"
13#include "detray/material/material.hpp"
14#include "detray/utils/ratio.hpp"
25 :
public material<scalar_t, typename ratio_sum<
26 typename material_types::ratio...>::ratio> {
32 "Sumation of ratios should be equal to 1");
38 auto sum_Ar = [](material_types... M)
constexpr ->
decltype(
auto) {
39 return ((M.Ar() * M.fraction()) + ...);
42 this->
set_Ar(std::apply(sum_Ar, std::tuple<material_types...>()));
46 auto sum_Z = [](material_types... M)
constexpr ->
decltype(
auto) {
47 return ((M.Z() * M.fraction()) + ...);
50 this->
set_Z(std::apply(sum_Z, std::tuple<material_types...>()));
53 auto sum_rho = [](material_types... M)
constexpr ->
decltype(
auto) {
54 return ((M.mass_density() * M.fraction()) + ...);
58 std::apply(sum_rho, std::tuple<material_types...>()));
67 auto sum_rho_over_X0 = [](material_types... M)
constexpr ->
decltype(
auto) {
68 return ((M.fraction() / M.X0()) + ...);
71 std::apply(sum_rho_over_X0, std::tuple<material_types...>()));
75 auto sum_rho_over_L0 = [](material_types... M)
constexpr ->
decltype(
auto) {
76 return ((M.fraction() / M.L0()) + ...);
80 std::apply(sum_rho_over_L0, std::tuple<material_types...>()));
Scalar concept: Elements of vectors/matrices (can be simd vectors).
Definition concepts.hpp:40
Detray include(s).
Definition array_operators.hpp:18
constexpr bool is_ratio_one_v
True when the supplied ratio is exactly one.
Definition ratio.hpp:63
constexpr void set_Ar(scalar_type ar)
Definition material.hpp:238
constexpr void set_Z(scalar_type z)
Definition material.hpp:242
constexpr scalar_type mass_density() const
Definition material.hpp:130
constexpr void set_molar_density(scalar_type molar_rho)
Definition material.hpp:252
constexpr scalar_type mass_to_molar_density(double ar, double mass_rho)
Definition material.hpp:260
constexpr scalar_type Ar() const
Definition material.hpp:124
constexpr void set_mass_density(scalar_type mass_rho)
Definition material.hpp:246
constexpr void set_L0(scalar_type l0)
Definition material.hpp:234
constexpr void set_X0(scalar_type x0)
Definition material.hpp:230
typename ratio_sum< typename material_types::ratio... >::ratio ratio
Ratio type used for material-component fractions.
Definition mixture.hpp:29
constexpr mixture()
Constructor.
Definition mixture.hpp:35
Struct to sum over variadic std::ratio.
Definition ratio.hpp:47