Commit Graph
100 Commits
Author SHA1 Message Date
Bård Skaflestad 7dfcf7b0c0 Merge pull request #282 from atgeirr/fix-wellstate-init
Fix issues in WellStateFullyImplicitBlackoil::init().
2015-01-26 23:12:12 -06:00
Bård Skaflestad 18fa00b542 Merge pull request #270 from blattms/transmissibility-check-with-local
Use correct constructor of DerivedGeology used with CpGrid in test_trans...
2015-01-12 15:23:30 +01:00
Bård Skaflestad b9b2b9f520 Really catch up to file renaming.
Pointy hat: @bska
2014-12-17 11:39:51 +01:00
Bård Skaflestad c04351d4ac Merge pull request #261 from atgeirr/master
Fix call to DerivedGeology constructor.
2014-12-17 11:37:15 +01:00
Bård Skaflestad 6c7bdecd30 Catch up to file renaming
This fixes "make install" which would otherwise fail with a diagnostic
message of the form

   CMake Error at cmake_install.cmake:64 (FILE):
     file INSTALL cannot find
     opm/autodiff/ConservativeSparseSparseProduct.h

Thanks to HudsonBuildServer for highlighting the issue.
2014-12-17 11:34:08 +01:00
Bård Skaflestad 5ce5658892 Merge pull request #260 from atgeirr/add-generic-local-trans
Add a generic (throwing) tpfa_loc_trans_compute_().
2014-12-17 10:50:17 +01:00
Bård Skaflestad 9a599d0e24 Merge pull request #256 from totto82/addregionTrans
Add contribution from region multipliers
2014-12-10 17:02:08 +01:00
Bård Skaflestad 72553f314a Merge pull request #253 from joakim-hove/FindERT-update
FindERT.cmake: Look for libecl_well library
2014-12-08 13:15:18 +01:00
Bård Skaflestad c69b2fd8ed Include <config.h> to fix build on GCC 4.8
GCC 4.8 provides 'nullptr' in C++11 mode.  That capability is
detected at configuration time and stored in <config.h> and we need
it when targeting Dune 2.2.1 to avoid diagnostics of the form

  [...]/dune/common/nullptr.hh:27:1:
  error: expected ‘;’ after class definition
   } nullptr = {};              // and whose name is nullptr
    ^

  [...]/dune/common/nullptr.hh:27:1:
  error: qualifiers can only be specified for objects and functions
  [...]/dune/common/nullptr.hh:27:3:
  error: expected unqualified-id before ‘nullptr’
   } nullptr = {};              // and whose name is nullptr
2014-11-27 15:12:56 +01:00
Bård Skaflestad 9e72ea50ad Merge pull request #234 from akva2/debian_packaging
update debian packaging
2014-11-17 18:01:58 +01:00
Bård Skaflestad 7ac155531a Merge pull request #233 from atgeirr/improve-cpr-performance
Improve performance of CPR preconditioner.
2014-11-14 08:47:05 +01:00
Bård Skaflestad e4ad38ec31 Merge pull request #231 from atgeirr/modify-convergence-output
Improve convergence output.
2014-11-12 22:43:47 +01:00
Bård Skaflestad 55226c3b86 Merge pull request #220 from qilicun/fix_phase_idx
phaseIdx in this for statement is actual active phase index, should not active once again.
2014-10-11 11:14:16 +02:00
Bård Skaflestad 9124b6f56b Don't use 'typename' in non-template context
This fixes the build on GCC 4.4.

Pointy hat: @bska
2014-10-06 12:33:08 +02:00
Bård Skaflestad 9b10f7827b Merge pull request #210 from atgeirr/dune-matrix-hack
Add a horrible hack: DuneMatrix class.
2014-10-06 11:43:05 +02:00
Bård Skaflestad 7ee66047b1 Merge pull request #214 from atgeirr/fix-pressure-usage
Fix usage of result from computePressures().
2014-10-06 11:16:07 +02:00
Bård Skaflestad 3c97fa0d64 Merge pull request #212 from dr-robertk/master
separat solver parameters
2014-10-01 18:19:15 +02:00
Bård Skaflestad a0567cc887 Fix out-of-bounds indexing into PVT function table
The 'props_' table of PVT functions has one entry for each active
phase.  Fix four instances of indexing into the table using the
canonical rather than active phase indices.

This is necessary, but not sufficient, to run two-phase problems
without a "dummy" third phase.
2014-09-18 00:19:35 +02:00
Bård Skaflestad be589ba5f3 Merge pull request #189 from atgeirr/add-minpv
Add MINPV support to grid creation for fully implicit sims.
2014-08-29 09:16:55 +02:00
Bård Skaflestad d0b677920a Merge pull request #190 from atgeirr/threshold-pressure
Threshold pressure
2014-08-29 09:14:24 +02:00
Bård Skaflestad de33d39f46 Merge pull request #191 from atgeirr/fix-warnings
Suppress warnings of various kinds.
2014-08-28 16:11:27 +02:00
Bård Skaflestad 53e6bfcd3d Merge pull request #187 from osae/satFunc-eclState
Provide eclipse state to saturation property init.
2014-08-25 13:56:14 +02:00
Bård Skaflestad 077b01b767 Merge pull request #188 from OPM/support-resv
Support RESV controls
2014-08-25 13:54:30 +02:00
Bård Skaflestad d8452145ae Merge pull request #186 from atgeirr/use-pinch
Use direct deck-using version of grid construction method.
2014-08-22 20:36:26 +02:00
Bård Skaflestad 6fccb4b446 Merge pull request #179 from atgeirr/restructure-sim
Restructure fully implicit blackoil simulators
2014-08-13 10:23:41 +02:00
Bård Skaflestad a3bc595a91 Aesthetics: Turn if-else into switch()
This commit replaces an if-else-based query of the primaryVariable_
with the equivalent switch() statement for uniformity with the rest
of the implementation.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 0f663dfe9f Implement RESV control mode for producers
This commit introduces support for the RESV control mode of
prediction (WCONPROD) and history-matching (WCONHIST) alike.  The
implementation uses class SurfaceToReservoirVoidage<> to compute
coefficients that convert component rates at surface conditions
(i.e., the primary degrees of freedom in the well residual) to phase
rates at reservoir condition.  The resulting coefficients can be
entered directly into system matrix of the linearised residual.

Note: We abuse the "distr" mechanism of struct WellControls to store
the conversion coefficients.  This may require refactorisation and
clarification at a later stage.  In the meantime, it allows for
transparent assembly of well equations--irrespective of surface- or
reservoir (voidage) rates.

Note: We do not yet support injectors controlled by total reservoir
voidage rate--either in history-matching (WCONINJH) or
prediction-scenario capacity.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 23520be41a RESV: Prepare for dynamic rate distribution calculation
This commit changes the API of class SimulatorFullyImplicitBlackoil<>
in order to support wells controlled by (total) reservoir voidage
volume rates.  Specifically, we switch to holding a mutable Wells
object (backed by a std::shared_ptr<>) in class Impl rather than a
reference to a WellsManager.  This allows dynamically updating rate
distributions and targets of individual well controls.  That, in
turn, is a prerequisite to supporting ECL-style "RESV" control
modes--be it in prediction or history matching capacity.

While in the process of API changes, also prepare for the second
stage of "WCONHIST/RESV" support: Accept a ScheduleConstPtr that
holds the input deck's notion of the history matching vs. prediction
controls.  We need to distinguish the two in order to support the
exact semantics of "WCONHIST/RESV".

Update SimFIBO<> clients accordingly.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 91567a9857 Remove long-disabled parameter setup code
This was copy-pasted into the class at its inception (a94f1921) and
never used thereafter.  If we need it we can bring it back in
modified form at a later stage.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 1e7967aeb1 Prune unused header
The column-extraction feature was not used in this module.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 82fc769922 RESV: Add facility for surface-to-reservoir rate conversion
This commit adds a simple facility for converting component rates at
surface conditions to voidage rates at reservoir conditions.  It is
intentionally limited in scope and meant to be employed only in the
context of class FullyImplicitBlackoilSolver<> or something very
similar.  In particular, class SurfaceToReservoirVoidage<> assumes
that it will be used to compute conversion coefficients for
component rates to voidage rates, and that those coefficients will
typically be entered into the coefficient matrix of a linearised
residual.

Add a trivial test just to demonstrate the setup and calling
process.  This is not a feature or correctness test.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 252fdc3720 Time loop: Remove unused variable 2014-08-08 11:40:50 +02:00
Bård Skaflestad 5f7adfa341 Time loop: Remove control mode switching
The solver (class FullyImplicitBlackoilSolver<>) gained the ability
to do control mode switching/updating in commit 4a22c56 at which
point using WellsManager::conditionsMet() ceased to be useful.  This
is a preparatory step towards adding support for RESV-type control
modes.

If we need this type of behaviour in the Simulator*, we can bring it
back (in modified form) at a later time.
2014-08-08 11:40:50 +02:00
Bård Skaflestad 88bb04c72f Fix contextual misprint: face -> phase 2014-08-08 11:40:50 +02:00
Bård Skaflestad d6e29be24c Merge pull request #175 from atgeirr/remove-unused-grav
Remove unused grav_ member and function used to compute it.
2014-08-05 16:30:09 +02:00
Bård Skaflestad a612d2c96f Restore gravity effects
The refactorisation of class FullyImplicitBlackoilSolver<Grid> to
defer transmissibility and pore-volume calculation to the client in
order to support multipliers (net-to-gross &c) accidentally ended up
removing all effects of gravity.  This commit restores those effects.
2014-07-29 19:49:50 +02:00
Bård Skaflestad 167ed55b86 Merge pull request #172 from GitPaean/Fixing_including_iss170
Adding ErrorMacros.hpp to GeoProps.hpp
2014-07-29 12:43:00 +02:00
Bård Skaflestad b98b71e401 Merge pull request #166 from andlaus/implement_multipliers
Implement pore volume and permeability multipliers
2014-07-28 14:38:56 +02:00
Bård Skaflestad d2b529296f Merge pull request #169 from atgeirr/update-condition
Update phase condition vector from primary variables.

This resolves #168.
2014-07-23 18:13:30 +02:00
Bård Skaflestad 263e337136 Merge pull request #165 from andlaus/test_for_extended_std__regex
use extended regular expressions in the test for std::regex
2014-07-08 13:40:22 +02:00
Bård Skaflestad 9acd5840c3 Merge pull request #164 from andlaus/use_std__regex_if_available
FindCXX11Features: check for a usable std::regex
2014-07-07 23:02:32 +02:00
Bård Skaflestad 1257c03d26 Fix one-sided gravity potential calculation
Commit 5112b8a misinterpreted the role of index 'i' and, as a result,
installed code that would only define one-sided gravity potentials of
the first cell (roughly)--albeit eventually using the geometry of the
last active cell.

This commit restores the original, intended behaviour.
2014-07-03 00:27:39 +02:00
Bård Skaflestad a5d3017062 assemble: Fix out-of-bounds indexing
The 'material_balance_eq' is indexed by active, not canonical, phase
indices.  Replace 'Oil' and 'Gas' with the appropriate 'phase_pos'
values.
2014-07-03 00:27:18 +02:00
Bård Skaflestad 78b87b8857 variableState: Don't form objects when references suffice
There's no need to form new objects, especially for the 'xvar', when
there are existing objects to which read-only references can be
bound.
2014-07-03 00:27:17 +02:00
Bård Skaflestad eccc5c9694 variableState: Use pre-computed list of "all cells"
Class FullyImplicitBlackoilSolver<Grid> already features a list of
"all" cells, built at object construction time.  There's no need to
re-compute that list on every call to variableState() (when Gas is
active).
2014-07-03 00:27:17 +02:00
Bård Skaflestad f69530a7d4 variableState: Defer r{s,v}Sat calculation
Quantities rsSat and rvSat are not needed unless we have an active
Gas phase.  Don't calculate them until we know that they are
actually needed.
2014-07-03 00:27:17 +02:00
Bård Skaflestad 35d883319b variableState: Don't reference non-existing variable
The "xvar" exists only if Gas is active.  Therefore, we cannot
extract that variable from "vars" unless we know that Gas is an
active phase.  Failing to do so would wrongfully increment 'nextvar'
whence the final BHP variable would be an out-of-bounds access.
2014-07-03 00:27:17 +02:00
Bård Skaflestad 13d3a42448 Fix phase property references
Methods 'computeRelperm()' and 'computePressures()' *always* return
a three-element vector of phase properties.  We must therefore
translate to canonical phase indices before indexing into the
results.
2014-07-03 00:27:17 +02:00
Bård Skaflestad c5bbf19fce Disable search for Boost in parser detection
This changeset disables the effect of commit 778e87d.  There appears
to be an unforeseen interaction between the calls to

    Find_Package (Boost)

that are implied by module 'opm-parser-prereqs.cmake' and the one
that's directly invoked in 'Findopm-parser.cmake'.  Until the
situation can be fully analysed and a complete solution implemented,
this is a temporary measure to restore the build of opm-core and
downstream OPM modules.
2014-06-16 15:50:21 +02:00
Bård Skaflestad 9006824822 Merge pull request #153 from andlaus/fix_sim_fibo_ad_cp
sim_fibo_ad_cp: make it compile
2014-06-14 14:13:26 +02:00
Bård Skaflestad aecfa3ed50 Merge pull request #150 from andlaus/enable_property_modifiers
glue in support for property modifiers
2014-06-11 22:46:36 +02:00
Bård Skaflestad c834177897 Merge pull request #131 from andlaus/implement_multi-region_pvt_tables
implement multi-region PVT
2014-06-06 14:38:35 +02:00
Bård Skaflestad 3678464d51 Merge pull request #141 from atgeirr/master
Fix warnings
2014-05-21 20:02:49 +02:00
Bård Skaflestad f0d908d104 Merge pull request #140 from atgeirr/cpr-preconditioning
Cpr preconditioner
2014-05-21 15:36:12 +02:00
Bård Skaflestad 0ae44c32b1 Merge pull request #127 from andlaus/move_to_opm-parser
Move to opm parser
2014-05-02 17:01:27 +02:00
Bård Skaflestad cd24e53d85 Merge pull request #128 from atgeirr/spe9-fixes
Spe9 fixes
2014-04-28 14:47:06 +02:00
Bård Skaflestad bc279fa58f Merge pull request #125 from joakim-hove/use-parser-EclipseGrid
Using the Parser::EclipseGrid to create GridManager
2014-04-24 22:23:44 +02:00
Bård Skaflestad 15a585106b Merge pull request #124 from atgeirr/well-variable-updating
Changed well variable updating
2014-04-24 13:32:43 +02:00
Bård Skaflestad 07cbf55668 Merge pull request #122 from atgeirr/suppress-warnings
Suppress external and other warnings
2014-04-23 13:31:13 +02:00
Bård Skaflestad 81394512b4 Search for MPI support
The build system depends on knowing if MPI is available.  Explicitly
search for MPI to honour that requirement.  Don't rely on ISTL's
transitive searching for the same.
2014-04-22 13:31:08 +02:00
Bård Skaflestad 814e6fe414 Merge pull request #118 from atgeirr/cpr-preconditioning-again
Cpr preconditioning again
2014-04-15 21:47:05 +02:00
Bård Skaflestad 03218f5470 Merge pull request #100 from blattms/master-refactor-for-cpgrid-support
Adds fully implicite black oil solver working with CpGrid
2014-04-15 00:03:16 +02:00
Bård Skaflestad 3ca4a32163 Merge pull request #121 from andlaus/pvdco_to_pvcdo
fix typo: it's PVCDO, not PVDCO
2014-04-11 17:41:34 +02:00
Bård Skaflestad 1cbffa09de Fix memory leak
Function GridManager::createGrdecl() generally allocates memory
(using std::malloc()) for the MAPAXES keyword data output of the
'grdecl' structure.  Release those resources before leaving the
scope to prevent memory leak introduced in commit fdca540.
2014-04-10 12:25:28 +02:00
Bård Skaflestad fdca5404b7 Use new parser for all deck information
This commit switches to using the convenience method

    GridManager::createGrdecl()

to construct a "struct grdecl" that can be passed directly into
CpGrid::processEclipseFormat().  The practical benefit is that we
get to leverage the opm-parser that's in active development rather
than the calcifying "EclipseGridParser" that will only become less
relevant in the future.  We also don't parse the data twice.

Note: This is mostly compile tested.  In the few actual tests I ran,
I got into trouble with internal assertions in processEclipseFormat.
That problem is not yet analysed.
2014-04-10 01:01:55 +02:00
Bård Skaflestad 897a33c788 Support older versions of Dune
Retrieving the "mpihelper.hh" from <dune/common> rather than
<dune/common/parallel> means we can still support (e.g.,) Dune 2.2.1
if needed.
2014-04-10 00:59:31 +02:00
Bård Skaflestad 433be936e4 Use full path in examples_SOURCES
That's the convention used elsewhere in the build system and we
should honour that convention.  While here, remove the assignment to
PROGRAM_SOURCE_FILES because that variable is no longer referenced
once we start to run the hooks.
2014-04-10 00:56:09 +02:00
Bård Skaflestad c3bb686600 Annotate end of namespace and "#if"
This commit adds a few annotations to closing braces on namespaces
and one "#ifdef" conditional.  This is an aid to (hopefully) avoid
the problem fixed in commit 688d65e.
2014-04-09 23:53:20 +02:00
Bård Skaflestad 0f98ce7d6c Restore missing constructor argument
The 'grav' argument (gravity vector) was apparently lost in a
mis-merge.  This commit restores the missing argument.
2014-04-09 16:46:51 +02:00
Bård Skaflestad 11e6bc4ad2 Bring a definition of OPM_THROW into scope.
The template version of outputStateMatlab() uses OPM_THROW so we need
a definition of the macro.
2014-04-09 16:33:24 +02:00
Bård Skaflestad 688d65e7ef GridHelpers: Fix build when !HAVE_DUNE_CORNERPOINT
This commit fixes an incorrectly nested "#ifdef..#endif" block that
leads to build failures when opm-autodiff is being used without
dune-cornerpoint.
2014-04-09 16:07:59 +02:00
Bård Skaflestad a784d50f1e Merge branch 'master' into blattms-master-refactor-for-cpgrid-support
Conflicts:
	examples/sim_fibo_ad.cpp
	opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp

This brings the "CpGrid support" branch up to date with respect to
recent changes in opm-autodiff master.
2014-04-08 16:31:17 +02:00
Bård Skaflestad 79afd9850c Merge pull request #117 from atgeirr/fix_welleq
Fix NaNs for well equations.
2014-04-07 15:53:44 +02:00
Bård Skaflestad 1f8276b3d4 Merge pull request #115 from atgeirr/expand-selector-options
Add more options for Selector class.
2014-04-02 13:14:33 +02:00
Bård Skaflestad 1ce36d7c06 Elucidate description string for opm-parser.
The 'opm-parser' module is (currently) designed to parse ECL-type
simulation models.  Reflect that fact in its description.
2014-03-11 20:09:10 +01:00
Bård Skaflestad f482e89e48 Defer searching for opm-parser
The "opm-parser" module is expected to become dependent upon the ERT
library.  Defer searching for the parser module until we've
established whether or not ERT is availble.

Suggested by: @andlaus
2014-03-11 20:09:09 +01:00
Bård Skaflestad 6b0f7c493c Merge pull request #96 from joakim-hove/well-controls-open-close
Using well_controls_well_is_open() function
2014-03-04 21:57:14 +01:00
Bård Skaflestad b639aefaaf Merge pull request #95 from atgeirr/pure-virtual
Make BlackoilPropsAdInterface pure virtual again.
2014-03-04 14:32:36 +01:00
Bård Skaflestad 2239a494e8 Merge pull request #93 from atgeirr/fix-minor-props-issues
Fix minor props issues
2014-03-03 11:19:13 +01:00
Bård Skaflestad e63a396579 Restore C++-11 checks
While reformatting the parser-prereqs file I accidentally replaced
the feature search 'CXX11Features' with 'CXX10Features'.  This
commit fixes that blunder.
2014-02-28 22:10:41 +01:00
Bård Skaflestad 9329d652fd Fix mis-merge.
In propagating the requirements for opm-benchmarks to the other
modules I accidentally removed the 'opm-parser' prerequisite (see
commit 86439d6 for details).  This commit restores that prerequisite.
2014-02-28 20:05:55 +01:00
Bård Skaflestad dfe457624e Depend on Boost.Iostreams
The benchmark library uses Boost::iostreams to do decompression. Since
we only scan for the Boost dependency once, this submodule is added to
all of the projects in order to have a coherent dependency on Boost.
2014-02-28 19:30:06 +01:00
Bård Skaflestad 8314ea3595 Reformat prerequisite file according to convention
This commit makes a few adjustments to the white-space of file
'opm-parser-prereqs.cmake' to honour the conventions of the other
*-prereqs.cmake files within the OPM project's module suites.

No functional changes.
2014-02-28 19:30:06 +01:00
Bård Skaflestad 41032a8ee4 Uniformly raise Boost version requirement to 1.44
Commit 70505ff raised opm-core's "Boost" requirement to version 1.44
in order to reflect the requirements of the opm-parser module.  This
commit propagates that requirement to all other known modules.
2014-02-28 19:30:06 +01:00
Bård Skaflestad 9d9fed2a5f Merge pull request #84 from atgeirr/remove-unused-residual-part
Remove rs_or_sg_eq from the residual.
2014-02-08 00:29:12 +01:00
Bård Skaflestad 3aa75c5bc8 Merge pull request #83 from atgeirr/fix-warning-struct-class
Forward declare PhaseUsage as struct, not class.
2014-02-07 15:08:21 +01:00
Bård Skaflestad b43d331119 Merge pull request #81 from blattms/fix-fibs-initialization-order
Fixes warning about initialization order in FullyImpliciteBlackOilSolver...
2014-02-03 12:51:11 -08:00
Bård Skaflestad 3971862065 Merge pull request #79 from atgeirr/initial-summary-output
Initial summary output, remove dead code.
2014-01-31 03:54:49 -08:00
Bård Skaflestad f159aeaa7c Merge pull request #78 from atgeirr/seg-well-model
Segmented well model
2014-01-27 06:19:18 -08:00
Bård Skaflestad 69b74fb580 Merge pull request #73 from joakim-hove/use_well_controls_api
Use well controls api
2014-01-09 03:44:20 -08:00
Bård Skaflestad cb483e92cc Switch condition interface to phase presence facility
Commit 4aa0eaf introduced density and viscosity evaluators into the
BlackoilPropsAdInterface that accepted an externally assignable
condition to distinguish saturated from unsaturated cases.  As a
result of a few low-level technical problems with that approach,
this commit changes those affected interfaces to use the black-oil
specific 'PhasePresence' facility of opm-core's commit a033329.

Update callers accordingly.
2013-12-03 18:12:54 +01:00
Bård Skaflestad fc25415066 Merge branch 'mrst' of github.com:totto82/opm-autodiff into match-reference/properties 2013-12-02 17:00:15 +01:00
Bård Skaflestad ac74cf40bb Merge pull request #52 from andlaus/write_binary_ecl
write out the reservoir state to the eclipse binary format
2013-12-02 05:55:16 -08:00
Bård Skaflestad 56d79d1200 Merge pull request #60 from joakim-hove/require-opm-parser
Updated to require opm-parser. Identical to opm-core PR:433
2013-11-18 09:16:21 -08:00
Bård Skaflestad 22b2cc4a6b Merge pull request #49 from andlaus/fix_clang_warnings
fix a few clang 3.3 warnings
2013-11-14 05:42:26 -08:00
Bård Skaflestad 82d0ade060 Merge pull request #54 from atgeirr/allow-empty-jac
Add new AutoDiffBlock::constant() overload without block sizes.
2013-10-25 07:15:09 -07:00
Bård Skaflestad cdf30e5290 Merge pull request #53 from akva2/loosen_tolerance
loosen tolerance a bit to avoid failing tests on certain archs
2013-10-23 01:00:54 -07:00
Bård Skaflestad faa3646a52 Fix convergence failure exception message
The message was a leftover from the ImpesTPFA solver and should
reflect the actual location.

Noticed by: qilicun (Liu Ming)
Fixes: Issue #50
2013-10-22 10:11:53 +02:00
Bård Skaflestad 2c8513b760 Merge pull request #47 from atgeirr/bump-version
Bump version number and label.
2013-10-21 06:09:10 -07:00
Bård Skaflestad b3ddd940e4 Merge pull request #46 from atgeirr/fix-lackofpow
Alternative fix for Eigen versions lacking pow(Eigen::Array).
2013-10-21 04:21:42 -07:00