Avoid infinite loop with two constant operands.

This commit is contained in:
Atgeirr Flø Rasmussen 2013-10-24 13:41:55 +02:00
parent 1eec8b16d6
commit 258d8e0e24

View File

@ -197,6 +197,9 @@ namespace Opm
/// Elementwise operator + /// Elementwise operator +
AutoDiffBlock operator+(const AutoDiffBlock& rhs) const AutoDiffBlock operator+(const AutoDiffBlock& rhs) const
{ {
if (jac_.empty() && rhs.jac_.empty()) {
return constant(val_ + rhs.val_);
}
if (jac_.empty()) { if (jac_.empty()) {
return val_ + rhs; return val_ + rhs;
} }
@ -217,6 +220,9 @@ namespace Opm
/// Elementwise operator - /// Elementwise operator -
AutoDiffBlock operator-(const AutoDiffBlock& rhs) const AutoDiffBlock operator-(const AutoDiffBlock& rhs) const
{ {
if (jac_.empty() && rhs.jac_.empty()) {
return constant(val_ - rhs.val_);
}
if (jac_.empty()) { if (jac_.empty()) {
return val_ - rhs; return val_ - rhs;
} }
@ -237,6 +243,9 @@ namespace Opm
/// Elementwise operator * /// Elementwise operator *
AutoDiffBlock operator*(const AutoDiffBlock& rhs) const AutoDiffBlock operator*(const AutoDiffBlock& rhs) const
{ {
if (jac_.empty() && rhs.jac_.empty()) {
return constant(val_ * rhs.val_);
}
if (jac_.empty()) { if (jac_.empty()) {
return val_ * rhs; return val_ * rhs;
} }
@ -260,6 +269,9 @@ namespace Opm
/// Elementwise operator / /// Elementwise operator /
AutoDiffBlock operator/(const AutoDiffBlock& rhs) const AutoDiffBlock operator/(const AutoDiffBlock& rhs) const
{ {
if (jac_.empty() && rhs.jac_.empty()) {
return constant(val_ / rhs.val_);
}
if (jac_.empty()) { if (jac_.empty()) {
return val_ / rhs; return val_ / rhs;
} }