OPM'ers Having had no major problems with compiling OPM back in january, I am now trying to upgrade to the latest version.
No problems with the first 6 modules (common, parser, material, core, grid, output) except that I had to run "make install" for the modules with dependencies to be able to find includes and libraries. When compiling opm-simulators I get the following error message error: *cannot declare variable ‘linsolve’ to be of abstract type* ‘Dune::RestartedGMResSolver<Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> Any ideas anyone? OS-version KUBUNTU 15.10 g++ (Ubuntu 5.2.1-22ubuntu2) 5.2.1 20151010 --------------------------------------------------------------- opm-simulators-build:bash$ make 2> xx [ 1%] Patching Makefile to be DUNE compatible [ 1%] Built target dune-compat [ 2%] Updating version information [ 2%] Built target update-version [ 4%] Building CXX object CMakeFiles/opmsimulators.dir/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp.o CMakeFiles/opmsimulators.dir/build.make:123: recipe for target 'CMakeFiles/opmsimulators.dir/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp.o' failed CMakeFiles/Makefile2:1540: recipe for target 'CMakeFiles/opmsimulators.dir/all' failed Makefile:126: recipe for target 'all' failed ---------------------------------------------- Some of the contents of xx: /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp: In instantiation of ‘void Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::solve(Operator&, Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector&, Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector&, ScalarProd&, Precond&, Dune::InverseOperatorResult&) const [with Operator = Dune::MatrixAdapter<Dune::BCRSMatrix<Dune::MatrixBlock<float, 1, 1>, std::allocator<Dune::MatrixBlock<float, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > > >; ScalarProd = Dune::SeqScalarProduct<Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > > >; Precond = Dune::SeqILU0<Dune::BCRSMatrix<Dune::MatrixBlock<float, 1, 1>, std::allocator<Dune::MatrixBlock<float, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, 1>; int np = 1; ScalarT = float; Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector = Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >]’: /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:231:22: required from ‘void Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::constructPreconditionerAndSolve(O&, Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector&, Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector&, const POrComm&, Dune::InverseOperatorResult&) const [with int category = 0; O = Dune::MatrixAdapter<Dune::BCRSMatrix<Dune::MatrixBlock<float, 1, 1>, std::allocator<Dune::MatrixBlock<float, 1, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > > >; POrComm = Dune::Amg::SequentialInformation; int np = 1; ScalarT = float; Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::Vector = Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >]’ /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:482:48: required from ‘Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::SolutionVector Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::computeNewtonIncrement(const Opm::LinearisedBlackoilResidual&) const [with int np = 1; ScalarT = float; Opm::NewtonIterationBlackoilInterleavedImpl<np, ScalarT>::SolutionVector = Eigen::Array<double, -1, 1>]’ /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:596:1: required from here /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:274:52:* error: cannot declare variable ‘linsolve’ to be of abstract type ‘Dune::RestartedGMResSolver<Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > > >’* Dune::RestartedGMResSolver<Vector> linsolve(opA, sp, precond, ^ In file included from /usr/include/dune/istl/schwarz.hh:23:0, from /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/CPRPreconditioner.hpp:39, from /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:28: /usr/include/dune/istl/solvers.hh:1101:9: note: because the following virtual functions are pure within ‘Dune::RestartedGMResSolver<Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >, Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > > >’: class RestartedGMResSolver : public InverseOperator<X,Y> ^ In file included from /usr/include/dune/istl/preconditioners.hh:15:0, from /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/CPRPreconditioner.hpp:38, from /home/perarnsl/Prog/OPM/opm-simulators/opm/autodiff/NewtonIterationBlackoilInterleaved.cpp:28: /usr/include/dune/istl/solver.hh:111:18: note: void Dune::InverseOperator<X, Y>::apply(X&, Y&, double, Dune::InverseOperatorResult&) [with X = Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >; Y = Dune::BlockVector<Dune::FieldVector<float, 1>, std::allocator<Dune::FieldVector<float, 1> > >] virtual void apply (X& x, Y& b, double reduction, InverseOperatorResult& res) = 0; ^ -------------------------------------------------------------- -- mvh Per Arne Slotte
_______________________________________________ Opm mailing list Opm@opm-project.org http://opm-project.org/cgi-bin/mailman/listinfo/opm