mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-16 20:24:48 -06:00
Merge pull request #1 from bska/master
Implement total Darcy flux calculation and minor build-system cleanup
This commit is contained in:
commit
f6b46bda8f
@ -28,8 +28,8 @@ set (${project}_DEPS
|
|||||||
"dune-common REQUIRED;
|
"dune-common REQUIRED;
|
||||||
dune-istl REQUIRED;
|
dune-istl REQUIRED;
|
||||||
opm-core REQUIRED"
|
opm-core REQUIRED"
|
||||||
# Eigen
|
# Eigen
|
||||||
"Eigen3 REQUIRED"
|
"Eigen3 REQUIRED"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Additional search modules
|
# Additional search modules
|
||||||
@ -39,8 +39,8 @@ list (APPEND CMAKE_MODULE_PATH ${${project}_MODULE_DIR})
|
|||||||
# Include special
|
# Include special
|
||||||
if (CMAKE_VERSION VERSION_LESS "2.8.5")
|
if (CMAKE_VERSION VERSION_LESS "2.8.5")
|
||||||
message (STATUS "Enabling compatibility modules for CMake 2.8.5")
|
message (STATUS "Enabling compatibility modules for CMake 2.8.5")
|
||||||
list (APPEND CMAKE_MODULE_PATH "${${project}_MODULE_DIR}/compat-2.8.5")
|
list (APPEND CMAKE_MODULE_PATH "${${project}_MODULE_DIR}/compat-2.8.5")
|
||||||
endif (CMAKE_VERSION VERSION_LESS "2.8.5")
|
endif (CMAKE_VERSION VERSION_LESS "2.8.5")
|
||||||
|
|
||||||
if (CMAKE_VERSION VERSION_LESS "2.8.7")
|
if (CMAKE_VERSION VERSION_LESS "2.8.7")
|
||||||
message (STATUS "Enabling compatibility modules for CMake 2.8.7")
|
message (STATUS "Enabling compatibility modules for CMake 2.8.7")
|
||||||
|
@ -49,6 +49,7 @@ list (APPEND EXAMPLE_SOURCE_FILES
|
|||||||
examples/find_zero.cpp
|
examples/find_zero.cpp
|
||||||
examples/sim_2p_incomp_adfi.cpp
|
examples/sim_2p_incomp_adfi.cpp
|
||||||
examples/sim_simple.cpp
|
examples/sim_simple.cpp
|
||||||
|
examples/test_impestpfa_ad.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# programs listed here will not only be compiled, but also marked for
|
# programs listed here will not only be compiled, but also marked for
|
||||||
|
@ -301,7 +301,7 @@ namespace Opm {
|
|||||||
THROW("Failed to compute converged pressure solution");
|
THROW("Failed to compute converged pressure solution");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
computeFluxes();
|
computeFluxes(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,8 +451,34 @@ namespace Opm {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
computeFluxes() const
|
computeFluxes(BlackoilState& state) const
|
||||||
{
|
{
|
||||||
|
const int nc = grid_.number_of_cells;
|
||||||
|
const int np = state.numPhases();
|
||||||
|
|
||||||
|
const V p0 = Eigen::Map<const V>(&state.pressure()[0], nc, 1);
|
||||||
|
const ADB p = ADB::constant(p0, std::vector<int>(1, nc));
|
||||||
|
|
||||||
|
const V transi = subset(geo_.transmissibility(),
|
||||||
|
ops_.internal_faces);
|
||||||
|
const V nkgradp = transi * (ops_.ngrad * p0.matrix()).array();
|
||||||
|
|
||||||
|
V flux = Eigen::Map<const V>(&state.faceflux()[0],
|
||||||
|
grid_.number_of_faces, 1);
|
||||||
|
|
||||||
|
for (int phase = 0; phase < np; ++phase) {
|
||||||
|
const ADB cell_rho = pdepfdata_.phaseDensity(phase, p);
|
||||||
|
const V head = nkgradp +
|
||||||
|
(grav_ * cell_rho.value().matrix()).array();
|
||||||
|
|
||||||
|
const UpwindSelector<double> upwind(grid_, ops_, head);
|
||||||
|
|
||||||
|
const V kr = pdepfdata_.phaseRelPerm(phase);
|
||||||
|
const ADB mu = pdepfdata_.phaseViscosity(phase, p);
|
||||||
|
const V mf = upwind.select(kr / mu.value());
|
||||||
|
|
||||||
|
flux += mf * head;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace Opm
|
} // namespace Opm
|
||||||
|
Loading…
Reference in New Issue
Block a user