Continuing openfoam adapter installation issue

Continuing the discussion from Problem with installation of openfoam-adapter:

I have similar issue with installation of openfoam adapter, but the error seem to be with preciceSolverInterface. Attached log file shows error with undefined symbols ldd.log (11.9 KB) . Also attached are the relevant log files Allwmake.log (8.4 KB) wmake.log (68.9 KB).

As I don’t have admin rights, I installed precice using spack. For this I installed gcc 8.4 using spack on centos7. Are the errors as a result of different gcc and openmpi compilers used for openfoam and precice or something else?

(As a side note, I have also compiled OpenFOAM 18.12 with gcc 8.4 and openmpi 3.1.6 versions that are installed via spack for precice purpose. However, the openfoam tutorial fails to run in parallel. But the OpenFOAM version compiled with default gcc 4.8.5 runs perfectly fine in parallel.)

In the ldd.log I read:

undefined symbol: _ZN7precice15SolverInterfaceC1ERKSsS2_ii	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZN7precice9constants22actionWriteInitialDataEv	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZN7precice9constants29actionReadIterationCheckpointEv	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZNK7precice15SolverInterface9getMeshIDERKSs	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZN7precice9constants30actionWriteIterationCheckpointEv	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZNK7precice15SolverInterface16isActionRequiredERKSs	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZN7precice15SolverInterface19markActionFulfilledERKSs	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)
undefined symbol: _ZNK7precice15SolverInterface9getDataIDERKSsi	(/scratch/user/OpenFOAM/user-v1812/platforms/linux64GccDPInt32Opt/lib/libpreciceAdapterFunctionObject.so)

This means that at the runtime linker cannot link to preCICE.

However, there was no linking error in the wmake.log, which confuses me. If you built preCICE with Spack and loaded the module, both should work.

You say that the parallel tutorials don’t run. Let’s take a step back: do the serial tutorials run? If yes, then the error at the ldd.log could simply be a false alarm and I should improve the check.

Then, regarding the parallel tests, what is the error there?

Thanks for your reply @Makis .

Guess my explanation caused confusion. So let me explain steps in detail here:

  1. I installed Gcc 8.4 using Spack and installed precice. I have also installed Calculix adapter. For the openfoam adapter, I was sourcing already installed version OpenFOAM 18.12 that was compiled using default version on CentOS7 which is Gcc 4.8. This OpenFOAM version works fine in serial and parallel. To the best of my knowledge, I followed all the steps given in preCICE wiki. So, I am not sure why runtime linker is failing to link preCICE.

  2. I then decided to compile OpenFOAM 18.12 using GCC 8.4 and openMPI 3.1.6 that were installed in spack thinking that this may eliminate above linking issues. However I noticed that the channelFoam tutorial runs fine in serial, but not parallel. The error message is

> --------------------------------------------------------------------------
> While trying to create a regular expression of the node names
> used in this application, the regex parser has detected the
> presence of an illegal character in the following node name:
> 
>   node:  sc00_ws
> 
> Node names must be composed of a combination of ascii letters,
> digits, dots, and the hyphen ('-') character. See the following
> for an explanation:
> 
>   https://en.wikipedia.org/wiki/Hostname
> 
> Please correct the error and try again.
> --------------------------------------------------------------------------
> --------------------------------------------------------------------------
> An internal error has occurred in ORTE:
> 
> [[588,0],0] FORCE-TERMINATE AT (null):1 - error base/plm_base_launch_support.c(552)
> 
> This is something that should be reported to the developers.
> --------------------------------------------------------------------------

Then what is happening points indeed to a mixture of compilers, which could be incompatible (4.8 and 8.4 have a few major version changes in between and 4.8 is very very old, not even supporting C++11 completely).

When you build the OpenFOAM adapter, it is actually OpenFOAM that builds it using the compiler it was built with (in this case, GCC 4.8).

I guess the easiest way to resolve the issue is to also build OpenFOAM with Spack, which should use the same compiler. I understand this is what you did in your 2., correct?

The MPI error you list seems to have nothing to do with preCICE or OpenFOAM, but I think your cluster admins may be able to help.

@Titan did you manage to solve this somehow? It would be very interesting for the future reader. :slight_smile:

Ah, sorry for not replying to your previous message. You were correct to say that I built OpenFOAM with Spack. But the MPI error is related to the cluster and it’s unlikely that the system name will be changed by the admin as that indirectly affects many other stuff. So, I decided to put this on hold for time being. You may close this query.

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.