Running multiple CFDEM-versions simulaneously

Submitted by Finke on Tue, 01/03/2017 - 10:12

Hi all,

I am trying to run multiple versions of CFDEM on one machine. I need them to run at the same time in order to use my simulation computer as efficient as possible. My first try was to create another Ubuntu-user and install the other version there. Unfortunately, this doesn’t work. OpenFOAM and LIGGGHTS alone run without any errors. CFDEM, however, gives the error message attached.

I tested it on two machines. One also gives the message “no protocol specified” before running any operation. This might have to do with the mpi. Other than that the error messages are the same.

I can’t really isolate the origin of the problem and am therefore lacking any idea on how to solve the problem. Does anybody have an idea on this matter? I am completely open to other suggestions that allow me to run multiple CFDEM versions simultaneously on one machine. Any idea is welcome.

Thanks in advance,

Bene

Finke | Mon, 01/09/2017 - 17:54

Hi Harald,

thanks for your reply. Sorry it took me so long to answer. Your suggestion didn’t work for me, but I haven’t lost hope on it, yet. That’s because it might not be the multiple versions that let the whole thing fail, after all.

I have tried to install the CFDEM-Version on a freshly set up Ubuntu-installation with only one user where all interference of other versions can be ruled out.

OpenFOAM, LIGGGHTS and CFDEM all compile successfully and both, LIGGGGHTS and OpenFOAM, run individually. But when I start a coupled run it throws the same logic error. This is funny, because I installed the very same version on another machine just two weeks ago and that one runs perfectly.

I set the headers to the same commit versions as before (and as demanded by the versionInfo.H file). I have tested it with multiple tutorial cases and some of my cown cases.

The error occurs at the start of a parallel run. From the lines just above the error I would expect the CFDEM-built-number to be echoed onto the terminal output (global.C line 52). Probably a string, which is supposed to be read at the time, is messed up and causes the logic error.

Can anyone connect these dots? I am really at a loss to understand why it works on one machine but fails at another.

Best regards,

Bene

j-kerbl's picture

j-kerbl | Tue, 01/10/2017 - 15:09

Hi Bene,

to tackle the original problem with multiple versions on one machine: (I didn't have time for the std::logic_error yet)
I have several versions of CFDEMcoupling, LIGGGHTS and OF installed on my machine with my user.

You need two things:
an environment file for each combination with the variables you would put into the .bashrc of your $HOME
modify the OF bashrc, so your WM_PROJECT_USER_DIR is sensitive to an environment variable (this way the executables don't get overriden)
e.g. export WM_PROJECT_USER_DIR=$HOME/$WM_PROJECT/$USER-$CFDEM_MODE-$WM_PROJECT_VERSION

Now you can put the parts with setting the CFDEM_MODE, sourcing OF bashrc, setting the CFDEM variables into one environment file, each combination to be used needs one on its own. When you want to change it, simply type "source enviromentFile_1".
You can also load one file as default from you .bashrc.

Otherwise you can set up a module system on your machine. E.g. http://modules.sourceforge.net/ and http://www.admin-magazine.com/HPC/Articles/Environment-Modules

Cheers,
Josef

Finke | Tue, 01/10/2017 - 15:22

HI Joseph,

thanks for your help. I will try that as soon as the other problem disappears. Unfortunately, I haven't made any progress on the logic error so far.

Cheers,

Bene

j-kerbl's picture

j-kerbl | Mon, 01/16/2017 - 13:23

Hi Bene,

regarding your error: The string supposed to be the next output would be CFDEMversion, which should be set during compilation from GITVERSION with a compilation flag. This happens during the compilation of the cfdemparticle library.
Try to recompile this library by using cfdemCompCFDEMsrc .
Also please post an "object compilation clock" which looks about as the following:
g++ -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall ...
...
...
 -fPIC -c subModels/smoothingModel/constDiffSmoothing/constDiffSmoothing.C -o Make/linux64GccDPInt32Opt/subModels/smoothingModel/constDiffSmoothing/constDiffSmoothing.o

Cheers,
Josef

Finke | Fri, 01/20/2017 - 11:29

Hi Joseph,
I ran the compilation with the cfdemCompCFDEMsrc command. And now the program works. Thank you very much for that. Unfortunately, I did not save the old object compilation clock file. I can't find a way to attach a file to a comment. Since the file is huge I dont want to state it as code. Thats why I attached it to my original post.

I always compiled CFDEM with the command cfdemCompCFDEM without the “src”. Where is the difference between these commands?

To be honest, I don’t dare to try the compilation with the old command, since its good the compilation finally worked. However, I will try it when I try the multiple-versions-strategy you proposed. It’s currently quite busy so this might take a while.
Thank you so much for your efforts. I will keep this thread updated about the further development, when there are news.

Cheers,

Bene

Daniel Queteschiner | Tue, 01/24/2017 - 15:42

take a look at the folder src/lagrangian/cfdemParticle/etc

cfdemCompCFDEMsol compiles only solvers (given in solver-list.txt)
cfdemCompCFDEMsrc compiles only libraries (given in library-list.txt)
cfdemCompCFDEMuti compiles only utilities (given in utilities-list.txt)
cfdemCompCFDEM compiles solvers, utilities and libraries
cfdemCompLIG compiles LIGGGHTS
cfdemCompCFDEMall compiles LIGGGHTS + solvers, utilities and libraries

More shortcuts can be found in src/lagrangian/cfdemParticle/etc/bashrc