20namespace Opm::Pybind {
22template <
class TypeTag>
23std::unique_ptr<double []>
24PyMaterialState<TypeTag>::
25getCellVolumes( std::size_t *size)
27 Model &model = ebosSimulator_->model();
28 *size = model.numGridDof();
29 auto array = std::make_unique<double []>(*size);
30 for (
unsigned dofIdx = 0; dofIdx < *size; ++dofIdx) {
31 array[dofIdx] = model.dofTotalVolume(dofIdx);
36template <
class TypeTag>
37std::unique_ptr<double []>
38PyMaterialState<TypeTag>::
39getPorosity( std::size_t *size)
41 Problem &problem = ebosSimulator_->problem();
42 Model &model = ebosSimulator_->model();
43 *size = model.numGridDof();
44 auto array = std::make_unique<double []>(*size);
45 for (
unsigned dofIdx = 0; dofIdx < *size; ++dofIdx) {
46 array[dofIdx] = problem.referencePorosity(dofIdx, 0);
51template <
class TypeTag>
53PyMaterialState<TypeTag>::
54setPorosity(
const double *poro, std::size_t size)
56 Problem &problem = ebosSimulator_->problem();
57 Model &model = ebosSimulator_->model();
58 auto model_size = model.numGridDof();
59 if (model_size != size) {
60 std::ostringstream message;
61 message <<
"Cannot set porosity. Expected array of size: "
62 << model_size <<
", got array of size: " << size;
63 throw std::runtime_error(message.str());
65 for (
unsigned dofIdx = 0; dofIdx < size; ++dofIdx) {
66 problem.setPorosity(poro[dofIdx], dofIdx);