27 DBUG(
"Create PermeabilityOrthotropicPowerLaw solid phase property {:s}.",
30 auto const intrinsic_permeabilities =
33 "intrinsic_permeabilities");
35 if (!((intrinsic_permeabilities.size() == 3) ||
36 (intrinsic_permeabilities.size() == 2)))
39 "The number of intrinsic permeabilities must be two or three, but "
41 intrinsic_permeabilities.size());
44 auto const exponents =
48 if (exponents.size() != 3 && exponents.size() != 2)
51 "The number of exponents must be two or three, but {:d} were "
56 if (intrinsic_permeabilities.size() != exponents.size())
59 "The number of intrinsic permeabilities and exponents must be "
60 "equal, but they are {:d} and {:d}, respectively.",
61 intrinsic_permeabilities.size(), exponents.size());
64 if (exponents.size() == 2)
66 return std::make_unique<PermeabilityOrthotropicPowerLaw<2>>(
67 std::move(property_name),
68 std::array<double, 2>{intrinsic_permeabilities[0],
69 intrinsic_permeabilities[1]},
70 std::array<double, 2>{exponents[0], exponents[1]},
71 local_coordinate_system);
73 if (exponents.size() == 3)
75 return std::make_unique<PermeabilityOrthotropicPowerLaw<3>>(
76 std::move(property_name),
77 std::array<double, 3>{intrinsic_permeabilities[0],
78 intrinsic_permeabilities[1],
79 intrinsic_permeabilities[2]},
80 std::array<double, 3>{exponents[0], exponents[1], exponents[2]},
81 local_coordinate_system);
84 "Could not create PermeabilityOrthotropicPowerLaw material model.");