TwoPhaseFlowEngine.cpp : compilation error

Asked by Luc OGER

I am using an OPENSUSE OS leap 42.3 and I have able to compile all git veriosn upt o May 15 but the last one generates error during the TwoPhaseFlowEngine.cpp.o generation; here the cmake and the error message.
I guess that some variable declaration are not made by default?
when I start from scratch : new trunk and build folder, this is the result:

cmake -Wno-error=deprecated -DCMAKE_VERBOSE_MAKEFILE=ON -DUSE_QT5=OFF -DENABLE_GTS=ON -DENABLE_VTK=ON ../trunk
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonInterp: /usr/bin/python (found version "2.7.13")
-- Try OpenMP C flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Try OpenMP CXX flag = [-fopenmp]
-- Performing Test OpenMP_FLAG_DETECTED
-- Performing Test OpenMP_FLAG_DETECTED - Success
-- Found OpenMP: -fopenmp
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found
-- Found Qt4: /usr/bin/qmake (found version "4.8.6")
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.28")
-- Version is set to 2018-05-24.git-0e4dac9
-- Found OpenGL: /usr/lib64/libGL.so
-- GTS using gts-config /usr/bin/gts-config
-- Using GTS from /usr
-- Found GL2PS: /usr/lib64/libgl2ps.so
-- Found CGAL: /usr/include, /usr/lib64/libCGAL.so
-- Found NumPy: version "1.8.0" /usr/lib64/python2.7/site-packages/numpy/core/include
-- Found Loki: /usr/include
-- GCC Version >= 4.8. Adding -ftrack-macro-expansion=0
-- GCC Version >= 4.8. Adding -save-temps
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE
-- Boost version: 1.61.0
-- Found the following Boost libraries:
-- python
-- thread
-- filesystem
-- iostreams
-- regex
-- serialization
-- system
-- date_time
-- chrono
-- atomic
-- Boost_VERSION: 106100
-- Boost_LIB_VERSION: 1_61
-- Boost_INCLUDE_DIRS: /usr/include
-- Boost_LIBRARIES: /usr/lib64/libboost_python-mt.so/usr/lib64/libboost_thread-mt.so/usr/lib64/libboost_filesystem-mt.so/usr/lib64/libboost_iostreams-mt.so/usr/lib64/libboost_regex-mt.so/usr/lib64/libboost_serialization-mt.so/usr/lib64/libboost_system-mt.so/usr/lib64/libboost_date_time-mt.so/usr/lib64/libboost_chrono-mt.so/usr/lib64/libboost_atomic-mt.so
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
-- Found BZip2: /usr/lib64/libbz2.so (found version "1.0.6")
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.8")
-- Found PythonLibs: /usr/lib64/libpython2.7.so (found version "2.7.13")
-- Found Eigen3, version: 3.2.9
-- Disable vectorization
-- Found VTK
-- Found OpenMP
-- GTS using gts-config /usr/bin/gts-config
-- Using GTS from /usr
-- Checking for one of the modules 'glib-2.0'
-- Found GLib2: glib-2.0 /usr/include/glib-2.0;/usr/lib64/glib-2.0/include
-- Looking for include file glib/gregex.h
-- Looking for include file glib/gregex.h - not found
-- Found GTS
-- Found GLUT: /usr/lib64/libglut.so
-- USE QT4
-- Found QGLVIEWER-qt4: /usr/include/QGLViewer
-- Found Qt4: /usr/bin/qmake (found version "4.8.6")
-- Found GUI-LIBS
-- GMP libs: /usr/lib64/libgmp.so /usr/lib64/libgmpxx.so
-- Found GMP: /usr/include
-- GMP libs: /usr/lib64/libgmp.so /usr/lib64/libgmpxx.so
-- Found CGAL
-- Could NOT find Cholmod (missing: CHOLMOD_LIBRARIES CHOLMOD_INCLUDE_DIR AMD_LIBRARY CAMD_LIBRARY COLAMD_LIBRARY CCOLAMD_LIBRARY)
-- Found OpenBlas: /usr/lib64/libblas.so
-- Found Metis: /usr/include
-- Missing dependency for LINSOLV, disabled
-- Found GL2PS
LBMFLOW is still experimental, building and running LBM engine are at your own risk!
Yade will be installed to /usr/local
-- Suffix is set to -2018-05-24.git-0e4dac9
-- LIBRARY_OUTPUT_PATH is set to lib64
-- runtimePREFIX is set to /usr/local
-- Could NOT find gts (missing: PY_gts)
-- Use embedded version of gts. Please, consider installing the corresponding package
-- Found minieigen: /usr/lib64/python2.7/site-packages/minieigen.so
-- Found Tkinter: /usr/lib64/python2.7/lib-tk/Tkinter.pyc
-- VTK version >5 is found
-- ===========================================================
-- Yade configured with following features: Odeint VTK OpenMP GTS GUI CGAL PFVFLOW TWOPHASEFLOW GL2PS LBMFLOW
-- Disabled features: LINSOLV SPH DEFORM LIQMIGRATION MASK_ARBITRARY PROFILING PotentialParticles PotentialBlocks
-- Optimized build
-- ===========================================================
-- Configuring done
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-- Generating done[ 78%] Building CXX object CMakeFiles/yade.dir/pkg/pfv/TwoPhaseFlowEngine.cpp.o
/usr/bin/c++ -DBOOST_MATH_DISABLE_FLOAT128=1 -DNDEBUG -DYADE_ODEINT -DYADE_VTK6 -Dyade_EXPORTS -I/home/oger/Yade/trunk -I/usr/lib64/python2.7/site-packages/numpy/core/include -I/usr/include/python2.7 -I/usr/include/eigen3 -I/usr/include/vtk-7.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/QtDesigner -I/usr/include/QtDeclarative -I/usr/include/QtScriptTools -I/usr/include/QtDBus -I/usr/include/QtXml -I/usr/include/QtSql -I/usr/include/QtOpenGL -I/usr/include/QtMultimedia -I/usr/include/QtNetwork -I/usr/include/QtXmlPatterns -I/usr/include/QtHelp -I/usr/include/QtUiTools -I/usr/include/QtTest -I/usr/include/QtScript -I/usr/include/QtSvg -I/usr/include/Qt3Support -I/usr/include/QtGui -I/usr/include/QtCore -I/usr/share/qt4/mkspecs/default -I/home/oger/Yade/build -I/home/oger/Yade/build/pkg/pfv -fPIC -O2 --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -Wall -std=c++11 -DYADE_VTK -DYADE_OPENMP -fopenmp -DYADE_GTS -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include -DQGLVIEWER_FOUND -DYADE_OPENGL -DYADE_QT4 -DYADE_CGAL -DFLOW_ENGINE -DTWOPHASEFLOW -DYADE_GL2PS -DLBM_ENGINE -fPIC -ftrack-macro-expansion=0 -save-temps -fstack-protector -DEIGEN_DONT_VECTORIZE -DEIGEN_DONT_ALIGN -DEIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT -DCGAL_DISABLE_ROUNDING_MATH_CHECK -frounding-math -o CMakeFiles/yade.dir/pkg/pfv/TwoPhaseFlowEngine.cpp.o -c /home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp
                                                                                   ^
In file included from /home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp:11:0:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp: In constructor ‘PhaseCluster::PhaseCluster(PhaseCluster::Tesselation&)’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:156:59: error: ‘LC’ was not declared in this scope
   PhaseCluster (Tesselation& t) : PhaseCluster() {tes=&t; LC=NULL; ex=NULL; if (not tes) LOG_WARN("invalid initialization");}
                                                           ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:156:70: error: ‘ex’ was not declared in this scope
   PhaseCluster (Tesselation& t) : PhaseCluster() {tes=&t; LC=NULL; ex=NULL; if (not tes) LOG_WARN("invalid initialization");}
                                                                      ^
In file included from /home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp:11:0:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp: In member function ‘void PhaseCluster::reset()’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:175:121: error: ‘resetSolver’ was not declared in this scope
   void reset() {label=entryPore=-1;volume=entryRadius=interfacialArea=0; pores.clear(); interfaces.clear(); resetSolver();}
                                                                                                                         ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp: In member function ‘void PhaseCluster::mergeCluster(PhaseCluster&, const CellHandle&)’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:180:10: error: ‘class PhaseCluster’ has no member named ‘resetSolver’
    this->resetSolver();
          ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp: In constructor ‘PhaseCluster::PhaseCluster()’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:113: error: class ‘PhaseCluster’ does not have any field named ‘LC’
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                 ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:126: error: class ‘PhaseCluster’ does not have any field named ‘ex’
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                              ^
In file included from /home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp:11:0:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:139: error: class ‘PhaseCluster’ does not have any field named ‘pComC’
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                                           ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:146: error: ‘comC’ was not declared in this scope
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                                                  ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:154: error: class ‘PhaseCluster’ does not have any field named ‘pLC’
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                                                          ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:159: error: ‘LC’ was not declared in this scope
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",
                                                                                                                                                               ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp: In member function ‘virtual void PhaseCluster::pyRegisterClass(boost::python::api::object)’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.hpp:211:13845: error: ‘solvePressure’ is not a member of ‘PhaseCluster’
   YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(PhaseCluster,Serializable,"Preliminary.",

/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp: At global scope:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp:26:34: error: no ‘void PhaseCluster::solvePressure()’ member function declared in class ‘PhaseCluster’
 void PhaseCluster::solvePressure()
                                  ^
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp: In member function ‘std::vector<int> TwoPhaseFlowEngine::clusterOutvadePore(unsigned int, unsigned int, int)’:
/home/oger/Yade/trunk/pkg/pfv/TwoPhaseFlowEngine.cpp:2760:11: error: ‘class PhaseCluster’ has no member named ‘resetSolver’
  cluster->resetSolver();//reset the linear system
           ^
CMakeFiles/yade.dir/build.make:3497: recipe for target 'CMakeFiles/yade.dir/pkg/pfv/TwoPhaseFlowEngine.cpp.o' failed
make[2]: *** [CMakeFiles/yade.dir/pkg/pfv/TwoPhaseFlowEngine.cpp.o] Error 1
make[2]: Leaving directory '/home/oger/Yade/build'
CMakeFiles/Makefile2:172: recipe for target 'CMakeFiles/yade.dir/all' failed
make[1]: *** [CMakeFiles/yade.dir/all] Error 2
make[1]: Leaving directory '/home/oger/Yade/build'
Makefile:130: recipe for target 'all' failed
make: *** [all] Error 2

-- Build files have been written to: /home/oger/Yade/build

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Luc OGER
Solved:
Last query:
Last reply:
Revision history for this message
Robert Caulk (rcaulk) said :
#1

Hello,

It looks like you are trying to compile TwoPhaseFlowEngine, which now requires cholmod, but your computer can't find cholmod.

You have two options.

1) If you don't need TwoPhaseFlow, just diable it with -DENABLE_TWOPHASEFLOW=OFF

2) If you need TPFE, try installing SuiteSparse (so cmake can find cholmod). Although, I am unsure how to do that on opensuse, maybe this will help [1]? If all else fails you can always compile it from sources very easily [2].

We should probably add an #ifdef to prevent this in the future.

[1]https://packagehub.suse.com/packages/suitesparse/736230/
[2]http://faculty.cse.tamu.edu/davis/SuiteSparse/

Revision history for this message
Luc OGER (luc-oger) said :
#2

thanks Robert for the answer
I have tried the solution 2:
 SuiteSparse is available as a normal package from opensuse so I have installed it and recompiled cmake then make and everything went well!!

thanks again
Luc