-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Doesn't use external libopenmc.so and instead installs conflicting libopenmc.so #152
Comments
Hello! ENRICO can't, in general, be run with an arbitrary version of OpenMC. This is because the OpenMC API is under active development. We update ENRICO's OpenMC submodule from upstream periodically. Could you show us how you're running CMake? In ENRICO, if |
cmake runs like this:
It's fine to use bundled OpenMC, but you can't install it's libraries or headers because they would conflict with the standalone OpenMC package. Instead you should build static library from the bundled OpenMC project and only use it locally to build your binaries and not install it. |
It’s not feasible to statically link everything into the ENRICO binaries because one of its third-party single-physics solvers is configured to use dynamic linking. I recommend setting CMAKE_INSTALL_PREFIX to something like /usr/local/enrico or /opt/local/enrico. ENRICO’s libopenmc will then be installed in /usr/local/enrico/lib or /opt/local/enrico/lib |
This would still conflict with the standalone OpenMC package because You can link static libraries into dynamic libraries fine as long as they are built with -fPIC. |
Not all our 3rd-party libraries can be configured to be built with fPIC. The rpath in the installed ENRICO binaries is set to the install path of its libraries, including libopenmc. |
What does enrico install? I don't see any enrico's own headers, only OpenMC and gsl-lite headers. If enrico only installs an executable, why does it even need to install OpenMC headers or any static libraries? |
One of our dependent CFD libraries -- nekRS and its backend OCCA -- have many header in the ENRICO installation. A nekRS case has a number of case-specific source files which the user is able to customize for things like boundary conditions, heat source, etc. These case-specific source files are just-in-time compiled at runtime. Since ENRICO's nekRS is also bundled due to versioning issues, a ENRICO installation includes those nekRS and OCCA headers. |
Are you able to successfully install via something like this?
|
I'm also a little unclear why your |
I did fresh installs of both standalone OpenMC (v0.12.2) and ENRICO (master branch), and everything looks fine on my end. I configured OpenMC with this command, using system-wide MPI and HDF5. After compiling and installing, the binaries were in
Then I configured ENRICO with this command, also using system-wide MPI and HDF5. After compiling and installing, the binaries were in
The shared object dependencies for both standalone OpenMC and ENRICO look good. Note that
And finally, I successully ran the coupled short singlerod test case for OpenMC + heat. Could you confirm that this ENRICO configuration works for you? After you confirm that the minimal configuration works, you can consider which additional configuration options are necessary for your use case. |
I am able to build and install enrico as you described above. Now it says this:
|
Which Linux distro are you using? And do you experience this issue with other MPI programs? |
@yurivict I just made a change in the |
This causes conflict with pre-installed OpenMC.
Please use external OpenMC when it is present.
The text was updated successfully, but these errors were encountered: