Update to work with AutoDiffBlock::M now being AutoDiffMatrix.

This commit is contained in:
Atgeirr Flø Rasmussen 2015-09-08 09:57:17 +02:00
parent 6c00cddb35
commit b324606084
3 changed files with 11 additions and 10 deletions

View File

@ -81,7 +81,7 @@ namespace {
template <class GeoProps> template <class GeoProps>
AutoDiffBlock<double>::M Eigen::SparseMatrix<double>
gravityOperator(const UnstructuredGrid& grid, gravityOperator(const UnstructuredGrid& grid,
const HelperOps& ops , const HelperOps& ops ,
const GeoProps& geo ) const GeoProps& geo )
@ -123,7 +123,8 @@ namespace {
grav.push_back(Tri(i, c2, - t * dG2)); grav.push_back(Tri(i, c2, - t * dG2));
} }
M G(ni, nc); G.setFromTriplets(grav.begin(), grav.end()); Eigen::SparseMatrix<double> G(ni, nc);
G.setFromTriplets(grav.begin(), grav.end());
return G; return G;
} }
@ -661,7 +662,7 @@ namespace {
// Handling BHP and SURFACE_RATE wells. // Handling BHP and SURFACE_RATE wells.
V bhp_targets(nw); V bhp_targets(nw);
V rate_targets(nw); V rate_targets(nw);
M rate_distr(nw, np*nw); Eigen::SparseMatrix<double> rate_distr(nw, np*nw);
for (int w = 0; w < nw; ++w) { for (int w = 0; w < nw; ++w) {
const WellControls* wc = wells_.ctrls[w]; const WellControls* wc = wells_.ctrls[w];
if (well_controls_get_current_type(wc) == BHP) { if (well_controls_get_current_type(wc) == BHP) {
@ -981,7 +982,7 @@ namespace {
pm[i] = rock_comp_props_->poroMult(p.value()[i]); pm[i] = rock_comp_props_->poroMult(p.value()[i]);
dpm[i] = rock_comp_props_->poroMultDeriv(p.value()[i]); dpm[i] = rock_comp_props_->poroMultDeriv(p.value()[i]);
} }
ADB::M dpm_diag = spdiag(dpm); ADB::M dpm_diag(dpm.matrix().asDiagonal());
const int num_blocks = p.numBlocks(); const int num_blocks = p.numBlocks();
std::vector<ADB::M> jacs(num_blocks); std::vector<ADB::M> jacs(num_blocks);
for (int block = 0; block < num_blocks; ++block) { for (int block = 0; block < num_blocks; ++block) {
@ -1008,7 +1009,7 @@ namespace {
tm[i] = rock_comp_props_->transMult(p.value()[i]); tm[i] = rock_comp_props_->transMult(p.value()[i]);
dtm[i] = rock_comp_props_->transMultDeriv(p.value()[i]); dtm[i] = rock_comp_props_->transMultDeriv(p.value()[i]);
} }
ADB::M dtm_diag = spdiag(dtm); ADB::M dtm_diag(dtm.matrix().asDiagonal());
const int num_blocks = p.numBlocks(); const int num_blocks = p.numBlocks();
std::vector<ADB::M> jacs(num_blocks); std::vector<ADB::M> jacs(num_blocks);
for (int block = 0; block < num_blocks; ++block) { for (int block = 0; block < num_blocks; ++block) {

View File

@ -123,8 +123,8 @@ namespace Opm {
struct WellOps { struct WellOps {
WellOps(const Wells& wells); WellOps(const Wells& wells);
M w2p; // well -> perf (scatter) Eigen::SparseMatrix<double> w2p; // well -> perf (scatter)
M p2w; // perf -> well (gather) Eigen::SparseMatrix<double> p2w; // perf -> well (gather)
}; };
enum { Water = BlackoilPropsAdInterface::Water, enum { Water = BlackoilPropsAdInterface::Water,

View File

@ -179,7 +179,7 @@ namespace Opm {
inv_mu_w_eff(i) = im; inv_mu_w_eff(i) = im;
dinv_mu_w_eff(i) = dim; dinv_mu_w_eff(i) = dim;
} }
ADB::M dim_diag = spdiag(dinv_mu_w_eff); ADB::M dim_diag(dinv_mu_w_eff.matrix().asDiagonal());
const int num_blocks = c.numBlocks(); const int num_blocks = c.numBlocks();
std::vector<ADB::M> jacs(num_blocks); std::vector<ADB::M> jacs(num_blocks);
for (int block = 0; block < num_blocks; ++block) { for (int block = 0; block < num_blocks; ++block) {
@ -226,7 +226,7 @@ namespace Opm {
dmc(i) = dm; dmc(i) = dm;
} }
ADB::M dmc_diag = spdiag(dmc); ADB::M dmc_diag(dmc.matrix().asDiagonal());
const int num_blocks = c.numBlocks(); const int num_blocks = c.numBlocks();
std::vector<ADB::M> jacs(num_blocks); std::vector<ADB::M> jacs(num_blocks);
for (int block = 0; block < num_blocks; ++block) { for (int block = 0; block < num_blocks; ++block) {
@ -274,7 +274,7 @@ namespace Opm {
dads(i) = dc_ads; dads(i) = dc_ads;
} }
ADB::M dads_diag = spdiag(dads); ADB::M dads_diag(dads.matrix().asDiagonal());
int num_blocks = c.numBlocks(); int num_blocks = c.numBlocks();
std::vector<ADB::M> jacs(num_blocks); std::vector<ADB::M> jacs(num_blocks);
for (int block = 0; block < num_blocks; ++block) { for (int block = 0; block < num_blocks; ++block) {