21 DBUG(
"Create PermeabilityOrthotropicPowerLaw solid phase property {:s}.",
24 auto const intrinsic_permeabilities =
27 "intrinsic_permeabilities");
29 if (!((intrinsic_permeabilities.size() == 3) ||
30 (intrinsic_permeabilities.size() == 2)))
33 "The number of intrinsic permeabilities must be two or three, but "
35 intrinsic_permeabilities.size());
38 auto const exponents =
42 if (exponents.size() != 3 && exponents.size() != 2)
45 "The number of exponents must be two or three, but {:d} were "
50 if (intrinsic_permeabilities.size() != exponents.size())
53 "The number of intrinsic permeabilities and exponents must be "
54 "equal, but they are {:d} and {:d}, respectively.",
55 intrinsic_permeabilities.size(), exponents.size());
58 if (exponents.size() == 2)
60 return std::make_unique<PermeabilityOrthotropicPowerLaw<2>>(
61 std::move(property_name),
62 std::array<double, 2>{intrinsic_permeabilities[0],
63 intrinsic_permeabilities[1]},
64 std::array<double, 2>{exponents[0], exponents[1]},
65 local_coordinate_system);
67 if (exponents.size() == 3)
69 return std::make_unique<PermeabilityOrthotropicPowerLaw<3>>(
70 std::move(property_name),
71 std::array<double, 3>{intrinsic_permeabilities[0],
72 intrinsic_permeabilities[1],
73 intrinsic_permeabilities[2]},
74 std::array<double, 3>{exponents[0], exponents[1], exponents[2]},
75 local_coordinate_system);
78 "Could not create PermeabilityOrthotropicPowerLaw material model.");