xcfem / xc

finite element analysis package for civil engineering structures.
http://www.xcengineering.xyz/html_files/software.html
GNU General Public License v3.0
262 stars 54 forks source link

Building XC in Ubuntu Docker Image #126

Closed bjhowie closed 6 months ago

bjhowie commented 6 months ago

I've followed the installation instruction and have built xcfem in an Ubuntu Docker image on Windows. The compilation process seemed to work well and the first few verifications tests pass, but after a while the tests fail when trying to import xc with the following exception:

ImportError: /usr/local/lib/python3.10/dist-packages/xc.so: undefined symbol: _Z31export_preprocessor_build_modelv

Just wondering if I have missed something or if somebody can point me in the right direction as to how to fix the issue?

My background is in Python, so this is all new to me. Apologies if this is a stupid question.

lcpt commented 6 months ago

Hi, @bjhowie

Something went wrong when compiling the xc module (the first tests don't use it). The error message is saying that the symbol _Z31export_preprocessor_build_modelv (or export_preprocessor_build_model() according to c++filt) is not defined. This function is declared in xc/src/python_interface.cc and defined in xc/src/preprocessor/export_preprocessor_build_model.cc, maybe this can give you a clue of what his happening. Did you get any error message when compiling the c++ code (i.e., when executing make)?

bjhowie commented 6 months ago

Hi Luis,

Thanks for the response. I figured it was an issue with the module compiling.

I get the following warning when running cmake....

CMake Warning at /usr/lib/x86_64-linux-gnu/cmake/CGAL/CGALConfig.cmake:92 (message): CGAL_DATA_DIR cannot be deduced, set the variable CGAL_DATA_DIR to set the default value of CGAL::data_file_path() Call Stack (most recent call first): /root/build_xc/xc/CMake/find_packages.cmake:29 (find_package) CMakeLists.txt:76 (INCLUDE)

Also these, but unsure how severe they are. Potenitally an issue with the VTK install?

-- The imported target "vtkParseOGLExt" references the file"/usr/bin/vtkParseOGLExt-7.1"but this file does not exist. -- The imported target "vtkRenderingPythonTkWidgets" references the file "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"but this file does not exist. -- The imported target "vtk" references the file "/usr/bin/vtk" but this file does not exist -- The imported target "pvtk" references the file "/usr/bin/pvtk"but this file does not exist.

There were a couple of warnings when running make, but i cant access the logs anymore so unsure what they are. When i try to run make again, it must just use the existing builds as it finishes in a few seconds. I assume there is a way to force it to recompile?

Again, apologies for my complete lack of knowledge here!

lcpt commented 6 months ago

The warnings about the VTK install are unimportant. I never have the time to search for a way to get rid of these warnings (they complain about files that are not needed to compile XC).

I see you are compiling XC as root, I don't think this is a good idea and, maybe, this is at the origin of the problem.

Could you remove your current /root/build_xc and retry the installation process using a regular user account? You need to become root only when installing the libraries system-wide (i.e.: when you type sudo make install (install C++ libraries) and sh local_install.sh (install Python modules)).

bjhowie commented 6 months ago

OK so i deleted the image and started from scratch with a new image and a regular user account and it seems to have fixed the issue!

Still a few warnings during compilation, test_shell_mitc9_01.py failed with an OverFlow error and a couple of the modal and linear buckling tests threw errors saying "XC::SolutionStrategy::alloc_system_of_equations; system of equations: 'spectra_soe' unknown.", but otherwise all seems good!

Thanks so much for your help.

lcpt commented 6 months ago

Glad to hear that, @bjhowie

The shell_mitc9 error is an intermittent error that I never have the time to deal with :(

Concerning the spectra_soe error, you must install the Spectra libraries to get rid of this error. If you plan to use XC to solve medium to big eigenvalue problems, I strongly recommend installing those libraries.

Enjoy.