CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Installation (http://www.cfd-online.com/Forums/openfoam-installation/)
-   -   Moving already Installed OpenFOAM to different machine (user) (http://www.cfd-online.com/Forums/openfoam-installation/79535-moving-already-installed-openfoam-different-machine-user.html)

lokendra August 26, 2010 08:58

Moving already Installed OpenFOAM to different machine (user)
 
Hi Everyone,

How to make sure that moving an already existing OpenFOAM installation (built from source) to a different user in same machine or a user in different machine alltogether (assuming all OS, package installation to be the same), works fine (so that one needs not build it again, because its time-consuming).
I mean, just resetting the environment variables would be enough to complete the installation for a new user/machine ?

My actual problem, is that I am trying to run OpenFOAM on a grid.
And I am using my local installation for the grid-user (making sure the permission compatibility) . And I am not able to run OpenFOAM on grid as grid-user (after resetting the env variable according to grid-user)

Following error occurs on running a simple blockMesh Command:

word::stripInvalid() called for word CN=5a631e00-2cdb-4b59-861f-4580f7e05fe2
For debug level (= 2) > 1 this is considered fatal
/tmp/openfoam-test/runOpenFoam: line 23: 16241 Aborted blockMesh

"CN=5a631e00-2cdb-4b59-861f-4580f7e05fe2" is actually the grid-userId on the Grid.

wyldckat August 26, 2010 18:14

Greetings Lokendra and welcome to the forum!

I'm sorry for starting off with a rant, but I'm going to have to say this first: XtreemOS is stupid :p It's breaking a rule in user naming: No stupid characters in the user names, which should also be short by definition!

So, AFAIK, the explanation is this: OpenFOAM at the core needs to know some $HOME and user details, so it can more easily know where to tread in a multi-core environment. And the user name is also checked for "illegal" characters, to avoid some bad things to happen further down the road with the file systems.

So, I'm going to try to post some minor changes (or hacking :D) you need to do to OpenFOAM's file "src/OSspecific/POSIX/POSIX.C". Do this on your original machine/build environment! So, open that file and next I'll give the changes to be done.

... But first, some introduction to the addition needed on your grid account - a new variable in the shell environment is crucial to be defined in .bashrc or something like that:
Code:

export MYUSER="ofuser"
The name "ofuser" is more OpenFOAM friendly, but feel free to make it "lokendra" or your username in your initial build system, but stay clear from strange characters ;)
And make sure your HOME variable is defined:
Code:

echo $HOME
If it isn't defined, then you will need to define it!

Now, as for the changes in the OpenFOAM's file POSIX.C:
  1. Find the line "Foam::word Foam::userName()";
  2. Change this:
    Code:

    Foam::word Foam::userName()
    {
        struct passwd* pw = getpwuid(getuid());

        if (pw != NULL)
        {
            return pw->pw_name;
        }
        else
        {
            return word::null;
        }
    }

    To this:
    Code:

    Foam::word Foam::userName()
    {
        char* env = getenv("MYUSER");

        if (env != NULL)
        {
            return fileName(env);
        }
        else
        {
          struct passwd* pw = getpwuid(getuid());

          if (pw != NULL)
          {
              return pw->pw_name;
          }
          else
          {
              return word::null;
          }
        }
    }

  3. Now find "Foam::fileName Foam::home(const word& userName)";
  4. Change this:
    Code:

    Foam::fileName Foam::home(const word& userName)
    {
        struct passwd* pw;

        if (userName.size())
        {
            pw = getpwnam(userName.c_str());
        }
        else
        {
            char* env = getenv("HOME");

            if (env != NULL)
            {
                return fileName(env);
            }

            pw = getpwuid(getuid());
        }

        if (pw != NULL)
        {
            return pw->pw_dir;
        }
        else
        {
            return fileName::null;
        }
    }

    To this:
    Code:

    Foam::fileName Foam::home(const word& userName)
    {
        char* env = getenv("HOME");

        if (env != NULL)
        {
            return fileName(env);
        }

        struct passwd* pw;

        if (userName.size())
        {
            pw = getpwnam(userName.c_str());
        }
        else
        {
            pw = getpwuid(getuid());
        }

        if (pw != NULL)
        {
            return pw->pw_dir;
        }
        else
        {
            return fileName::null;
        }
    }

NOTE: I haven't tested this code, but the changes made shouldn't leave margin for bugs :cool:

OK, now run ./Allwmake as you've done before. It should build quite quickly, since it will only update libOpenFOAM.so :)

Keep us posted on the outcome!

Best regards,
Bruno

lokendra August 27, 2010 04:57

Hi Bruno,

Thanks a LOT for such a detailed and clear instructions.
The hack worked like a charm. :)

Thanx again for your time.

Regards
Lokendra

tH3f0rC3 November 30, 2011 13:59

Does anyone know how to solve this problem in Windows?

I try to run OpenFOAM in Windows. The same error appears when I try to run OF.
I cannot find the files you mentioned in my WIndows version, thus I don't know how to solve this problem. Maybe someone knows more.

Thanks a lot.

Best Regards,
tH3f0rC3

wyldckat December 1, 2011 03:29

Hi tH3f0rC3,

Quote:

Originally Posted by tH3f0rC3 (Post 334166)
Does anyone know how to solve this problem in Windows?

I try to run OpenFOAM in Windows. The same error appears when I try to run OF.
I cannot find the files you mentioned in my WIndows version, thus I don't know how to solve this problem. Maybe someone knows more.

Wait... you're getting the exact same error as reported on the original post?
Quote:

Originally Posted by lokendra (Post 272877)
word::stripInvalid() called for word CN=5a631e00-2cdb-4b59-861f-4580f7e05fe2
For debug level (= 2) > 1 this is considered fatal
/tmp/openfoam-test/runOpenFoam: line 23: 16241 Aborted blockMesh

If you are getting a similar error but with a different word, then it would be easier to help you if you showed said error and tell us with which application it crashed with!

Best regards,
Bruno

tH3f0rC3 December 1, 2011 03:41

Hi,

it is the nearly the same error:

word::stripInvalid() called for word ***
For debug level (= 2) > 1 this is considered fatal

*** is another word. It is my full name. Maybe because I named the computer like that, I don't know.
When I switch off all debug options in the controldict file OF runs. I haven't found out if OF really runs without a mistake.

This error message occurs no matter which command I have typed in (laplacianFoam, chtMultiRegionFoam, blockMesh...)

Best Regards

wyldckat December 1, 2011 03:51

Hi tH3f0rC3,

Ah, that makes it a lot clearer :D

The solution for that and some other issues are described at openfoamwiki.net, on this section: Setting up shop in Windows

:eek: I didn't even remember that I briefly wrote some tips on how to use MSys there! A year flies by in an instant... (check the history link at the top of the page) and parts of my memory goes with it... :rolleyes:

Good luck!
Bruno

tH3f0rC3 December 1, 2011 04:19

Hi,

thanks, now it works.:)

Best Regards

tH3f0rC3 December 1, 2011 05:11

I Don't know exactly what have done, but OF works now.
I think the paths have not been set correct and now they are.

New problem:
I want to have a look at the simulated results with paraView. I have paraView installed but in WIndows paraView needs VTK files, as far as I know. Thus I have tried to foamToVTK the calculated files.
The VTK files are created but paraView can't read. The following error message appears in paraView when opening the vtk-files:

ERROR: In ..\..\..\..\source\VTK\IO\vtkUnstructuredGridReade r.cxx, line 349 vtkUnstructuredGridReader (10C74FD8): Unrecognized keyword: u


Another error message appears when starting foamToVTK :
From function IOstream::compressionEnum(const word&)
in file db/IOstreams/IOstreams/IOstreams.C at line 75
bad compression specifier 'off', using 'uncompressed'


And then the foamToVTK starts.
Do you think this causes the error in paraView? I don't think so, but I can't think off another mistake why paraView can't read the vtk files.


Best Regards

wyldckat December 1, 2011 05:24

Hi tH3f0rC3,

Wasn't there a "parafoam.bat" file in the patch files!? Read step #4 of the previous link ;)

If you use a version of ParaView 3.8.0 or newer, you can open files of type ".foam, which what "parafoam.bat" does.

If you still want to use VTK files, try:
Code:

foamToVTK -help
Best regards,
Bruno

tH3f0rC3 December 1, 2011 06:02

There was such a file.

I use paraview 3.10.1 -> But how can I open the "normal" results of my solver without foamToVTK these results?

I have copied the parafoam.bat to the bin directory of OpenFoam.
Now I think I have to move the still installed paraView to another directory that the parafoam.bat can find the paraview.exe
This step doesn't work, because I haven't the same directory files described in the link you've posted.
I have tried to modify the parafoam.bat from


echo.>case.foam
start paraview.exe --data="case.foam"

to


echo.>case.foam
start D:\programs\paraview3.10.1\bin\paraview.exe --data="case.foam"

BUt this doesn't work.

->
Or how can I create the .foam file myself?

tH3f0rC3 December 1, 2011 09:10

An extract from the link you posted:

Paraview should be installed in, or copied to, one of the following folders, according to the versions installed (these are only some of the possible versions):
ThirdParty-1.7.0\platforms\linuxmingw32\paraview-3.8.0
ThirdParty-1.7.0\platforms\linuxmingw-w32\paraview-3.8.0

ThirdParty-1.7.0\platforms\linuxmingw-w64\paraview-3.8.0

This is exactly the thing I havn't done up to now, because I don't have such directories. And I can't find out where the parafoam.bat searches for the paraview.exe


The source code of parafoam.bat:
echo.>case.foam
start paraview.exe --data="case.foam"


Best Regards

wyldckat December 1, 2011 15:47

Hi tH3f0rC3,

Quote:

Originally Posted by tH3f0rC3 (Post 334257)
echo.>case.foam
start D:\programs\paraview3.10.1\bin\paraview.exe --data="case.foam"

BUt this doesn't work.

->
Or how can I create the .foam file myself?

Uhm... it was right in front of you!?
Code:

echo.>case.foam
Run that on the command line at your simulation case and then you can open in ParaView!

It doesn't matter what the file contains, because ParaView only uses the file as a marker of the case to be opened.

Best regards,
Bruno

tH3f0rC3 December 2, 2011 09:36

Perfect, thanks!


All times are GMT -4. The time now is 18:23.