Difference between revisions of "TestWyldckat"

From OpenFOAMWiki
(removed tree)
 
(73 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Introduction ==
+
This test page is mostly empty for now, to stay out of the search engines.
This is an exhaustive step by step guide on how to cross-compile OpenFOAM in Linux for Windows, for both 32 and 64 bits architectures (from and to), using the patches available [[:File:PatchesNBatches.tar.gz|here]].
+
  
These patches were based on [http://www.symscape.com Symscape's] "v3" patch for OpenFOAM 1.5.x available [http://www.symscape.com/openfoam-1-5-x-on-windows here]. These differ substantially from that patch, as well as the more recent one for 1.6.x, available [http://www.symscape.com/openfoam-1-6-x-on-windows here]. The build scripts for [http://www.mingw.org mingw] and [http://www.cadforte.com mingw-w64] were also based on the build-script available on the 1.5.x link.
+
Personal note used when creating new installation guides:
  
With this guide and available patches, you should be able to cross-compile the whole OpenFOAM library and applications, using MPICH2 instead of Open MPI for parallel computing. You can cross-compile using [http://www.mingw.org mingw32] and/or [http://www.cadforte.com mingw-w64]. These enable you to build OpenFOAM 1.6 for Windows 32 and 64 bit versions, from Linux 32 and 64bit architectures.
+
<span style="font-size:180%">'''WARNING: These instructions are currently being written and under testing!'''</span>
 
+
Versions these patches apply to:
+
{{version1.6}}
+
 
+
== Get OpenFOAM packages ==
+
<ol>
+
<li>In your Linux machine, open a terminal window and create the folder '''$HOME/OpenFOAM'''.</li>
+
<li>Get '''OpenFOAM-1.6.General.gtgz''' and '''ThirdParty-1.6.General.gtgz''' from the [http://www.opencfd.co.uk/openfoam/linux.html OpenCFD's website] and copy/move them to the folder '''$HOME/OpenFOAM'''.</li>
+
<li>Extract both files, by running in a terminal:
+
<bash>cd $HOME/OpenFOAM
+
tar xzf OpenFOAM-1.6.General.gtgz
+
tar xzf ThirdParty-1.6.General.gtgz</bash></li>
+
</ol>
+
 
+
== Optional: Using a specific gcc version for building the wmake binaries ==
+
This is optional, because the current patch will use the system's gcc for building them (more specifically '''gcc''' as compiler name).
+
 
+
#Edit $HOME/.bashrc and add the following line to the end of it:<bash>. $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc</bash>'''NOTE''': sometimes the leading dot doesn't work, so use the following instead:<bash>source $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc</bash>
+
##You might want to edit '''$HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc''' and set the Linux architecture correctly, namely '''WM_ARCH_OPTION''' to '''32''' or '''64'''.<br><br>
+
#Two possibilities are now available:
+
##Use the system's gcc - edit '''$HOME/OpenFOAM/OpenFOAM-1.6/etc/settings.sh''' and change '''compilerInstall=OpenFOAM''' to '''compilerInstall=System'''.
+
##Use the gcc that comes with the '''ThirdParty-1.6.General.gtgz''' package - again, two choices:
+
###You can compile the gcc by running the following line:<bash>(cd $HOME/OpenFOAM/ThirdParty-1.6 && makeGcc gcc-4.3.3)</bash>
+
###Or by getting the available compiled version for your Linux version ( [http://www.opencfd.co.uk/openfoam/linux.html ThirdParty-1.6.linuxGcc.gtgz] or [http://www.opencfd.co.uk/openfoam/linux64.html ThirdParty-1.6.linux64Gcc.gtgz] from [http://www.opencfd.co.uk OpenCFD's website]).
+
##launch a new terminal and run the following line, thus building '''wmkdep''' and '''dirToString''':<bash>(cd $HOME/OpenFOAM/OpenFOAM-1.6/wmake/src && make)</bash>
+
 
+
== Applying patches ==
+
<ol>
+
<li>Copy/move the [[:File:PatchesNBatches.tar.gz|PatchesNBatches.tar.gz]] file into the '''$HOME/OpenFOAM''' folder. Then unpack it by running:
+
<bash>tar -xzf PatchesNBatches.tar.gz</bash></li>
+
<li>A new folder is created, named '''pnb'''. Now to apply the patches, run from the '''$HOME/OpenFOAM''' folder:<bash>patch -p0 < pnb/OpenFOAM-1.6_patch
+
patch -p0 < pnb/ThirdParty-1.6_patch</bash></li>
+
<li>Still have to do some '''chmod'''''ding'', for new scripts to run properly. Run the following lines in the terminal:
+
<bash>chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/build-mingw32
+
chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/build-mingw-w32
+
chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/build-mingw-w64
+
chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/build-mingw-w64-45
+
chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/makeGcc44
+
chmod 744 $HOME/OpenFOAM/ThirdParty-1.6/get-mpich2
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/src/mingwFunctions
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/src/Allclean
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw32
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w32
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w32-prof
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w32S
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w64
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w64-45
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw-w64-prof
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/applications/utilities/parallelProcessing/Allwmake
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/bin/tutowin
+
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.6/bin/foamDiff
+
</bash></li>
+
</ol>
+
 
+
== Getting Windows version of MPICH2 into the '''ThirdParty-1.6''' folder in Linux ==
+
#There are two ways of getting MPICH2 into your Linux+OpenFOAM set up:
+
##Use the '''get-mpich2''' script, that requires [http://www.wine.org Wine] to be installed. With [http://www.wine.org Wine] installed and with '''msiexec''' executable from the terminal, then the '''get-mpich2''' script should work. To check whether you have '''msiexec''' accessible in the terminal, run: <bash>which msiexec</bash> If it returns the full path to the executable, then it is ready to use.
+
##Copy MPICH2 files from a Windows Installation. Three steps for this part:
+
##*Download and install in Windows the MPICH2, version 1.1.1p1 Win32 IA32 from [http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.1.1p1/ here]. Get and install the 64bit version, if you wish to build OpenFOAM for Windows x64.
+
##*Create the folder '''ThirdParty-1.6/mpich2-1.1.1p1''' in your Linux set up.
+
##*Copy the folders '''bin''', '''include''' and '''lib''' from the installed version of MPICH2 in Windows, into the folder '''ThirdParty-1.6/mpich2-1.1.1''' in Linux.
+
:::The '''Allwmake''' script at the folder '''ThirdParty-1.6''' will take care of the rest. For now, the tough part is that, this way, you can only build one version of OpenFOAM (32 or 64bit) at a time.
+
 
+
== Tweaking environment options ==
+
<ol>
+
<li>Choose which version you want to use:
+
:;mingw32 : for getting a 32bit version of OpenFOAM, that builds on Linux i?86, using mingw;
+
:;mingw-w32 : for getting a 32bit version of OpenFOAM, that builds on Linux i686 and x86_64, using mingw-w64;
+
:;mingw-w64 : for getting a 64bit version of OpenFOAM, that builds on Linux i686 and x86_64, using mingw-w64;
+
 
+
Variants of the "bashrc" file that is inside the folder "OpenFOAM-1.6/etc", have been created, to meet the most likely options. These are:
+
:;sample - <bashrc-version> : configured for <compiler>, <mingw version>, <MPI option>, <WM_COMPILE_OPTION>, <WM_ARCH_OPTION>
+
:;bashrc-mingw32 : configured for gcc-4.3.3, mingw32, MPI with MPICH2, Opt, DP, 32
+
:;bashrc-mingw-w32 : configured for gcc-4.4.2, mingw-w32, MPI with MPICH2, Opt, DP, 32
+
:;bashrc-mingw-w32-prof : configured for gcc-4.4.2, mingw-w32, No MPI, Prof, DP, 32
+
:;bashrc-mingw-w32S : configured for gcc-4.4.2, mingw-w32, MPI with MPICH2, Opt, SP, 32
+
:;bashrc-mingw-w64 : configured for gcc-4.4.2, mingw-w64, MPI with MPICH2, Opt, DP, 64
+
:;bashrc-mingw-w64-prof : configured for gcc-4.4.2, mingw-w64, No MPI, Prof, DP, 64
+
:;bashrc-mingw-w64-45 : configured for gcc-4.5.0, mingw-w64, MPI with MPICH2, Opt, DP, 64</li>
+
<li>After choosing the version you wish to build, edit the file '''$HOME/.bashrc''' and add to the end of it, a line analogous to the following line:
+
<bash>. $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw32</bash>
+
'''NOTE''': sometimes the leading dot doesn't work, so use the following instead:
+
<bash>source $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw32</bash></li>
+
<li>Before launching a new terminal, edit the picked file '''$HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-''mingw version'''''. You have two additional variables that are configurable and non standard to the original OpenFOAM version:
+
*'''WM_PSTREAMLINK''' - this variable allows control over the linking method that is with the '''Pstream''' library. Two options are available:
+
*#If set to '''DONTLINKTOPSTREAM''', then depending on the variable '''WM_MPLIB''' being set to '''"NONE"''' or '''"MPICH"''', then OpenFOAM will be statically linked with that version, being able only without MPI capabilities or only to run with MPICH2 installed, respectively.
+
*#If '''LINKTOPSTREAM''', then DLLs of the library Pstream are created, both '''dummy''' and '''MPICH2''' versions; this allows you to choose which version to use in Windows, without rebuilding OpenFOAM again, allowing one build to be used in multiple installations.
+
 
+
*'''WM_GETMPICH2''' - this variable controls whether MPICH2 is setup automatically or manually. The two options are:
+
*#If set to '''GETMPICH2''', then '''wget''' is used for downloading the MPICH2 installation packages, and Wine will be used to unpack the '''".msi"''' files.
+
*#If '''DONTGETMPICH2''', then the script will assume that the steps at 4.1.2 were taken.</li>
+
<li>Optional - If you want to use a version of MPICH2 other than '''1.1.1p1''', then edit the file '''$HOME/OpenFOAM/OpenFOAM-1.6/etc/settings.sh''' and find the line that has '''mpi_version=mpich2-1.1.1p1''' and change to the <u>version</u> you want, as show [http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/ here].</li>
+
</ol>
+
 
+
== Build the cross compiler ==
+
<ol>
+
<li>Open a new terminal window or tab, so the edited file '''$HOME/.bashrc''' is executed, thus setting up the chosen OpenFOAM development environment (see [[#Tweaking environment options|Tweaking environment options]]).</li>
+
<li>Now go to the '''ThirdParty-1.6''' folder, in your new terminal:<bash>cd $WM_THIRD_PARTY_DIR</bash></li>
+
<li>Now you have to build the cross-compiler. Accordingly to the version you picked, you have type one of the following versions:
+
*to build the '''mingw32''' version, run:<bash>./build-mingw32 gcc-4.3.3</bash>
+
*to build the '''mingw-w32''' version, run:<bash>./build-mingw-w32</bash>
+
*to build the '''mingw-w64''' version, run:<bash>./build-mingw-w64</bash>
+
*to build the '''mingw-w64-45''' version, run:<bash>./build-mingw-w64-45</bash>
+
 
+
Alternatively, you can run:<bash>./makeGcc gcc-4.3.3</bash>
+
This will launch the respective '''''build-mingw*''''' script, according to the environment settings, but '''gcc-4.3.3''' will only be used for '''mingw32'''; and the script '''build-mingw-w64-45''' isn't called from '''makeGcc'''.
+
<br>
+
'''NOTE''': updates are bound to be done to the packages that these scripts use. Therefore, you should edit the script you have chosen, and check accordingly:
+
<ul><li>mingw32 - search for:
+
<bash>BINUTILS_ARCHIVE="binutils-2.19.1-src.tar.gz"
+
MINGW_ARCHIVE="mingwrt-3.15.2-mingw32-dev.tar.gz"
+
W32API_ARCHIVE="w32api-3.13-mingw32-dev.tar.gz"
+
REGEX_ARCHIVE="mingw-libgnurx-2.5.1-bin.tar.gz"
+
REGEX2_ARCHIVE="mingw-libgnurx-2.5.1-dev.tar.gz"</bash>
+
And check if they still exist or newer exists, on their [http://sourceforge.net/projects/mingw/files/ website].</li>
+
<li>mingw-w?? - search for:
+
<bash>MINGW64PACKAGE="mingw-w64-src_4.4.1-1"</bash>
+
And check [http://sourceforge.net/projects/mingw-w64/files/ here] for new versions. Usually the package is around 80MB in size.
+
The line:
+
<bash>MINGW64PACKAGE2="mingw-w64-crt-release-1.0"</bash>
+
Relates to the stable run-time source version, available at [http://www.cadforte.com cadforte]. For the package '''mingw-w64-src_4.4.1-1''', this was necessary, because this wasn't the stable version yet. You can change both and comment '''MINGW64PACKAGE2''' and related items if you deem the package indicated in '''MINGW64PACKAGE''' stable enough.</li>
+
</ul>
+
</ol>
+
 
+
== Cross-Compile OpenFOAM in Linux for Windows ==
+
<ol><li>Open a new terminal window or tab, so it will reset environment variables and add the newly built cross-compiling gcc into the executable path variable (see [[#Tweaking environment options|Tweaking environment options]]). Go to the project folder as so:
+
<bash>cd $WM_PROJECT_DIR</bash></li>
+
<li>Go to the folder "OpenFOAM-1.6" and run "Allwmake":
+
<bash>./Allwmake</bash>
+
This will build the entire OpenFOAM package. This does not include: '''Paraview''', '''ccm26ToFoam''', '''OpenMPI''' and code documentation.</li>
+
<li>Optional - For code documentation, you should add '''doc''' to '''./Allwmake''', as such:
+
<bash>./Allwmake doc</bash>
+
 
+
Or run afterward:
+
<bash>./doc/Allwmake</bash>
+
 
+
'''NOTE''': if you want to create a '''CHM''' file in Windows, that will have the whole documentation in a single Compressed HTML '''index.chm''' file, then copy the file at the folder '''pnb''', as such:
+
<bash>cp ../pnb/Doxyfile ./doc/Doxygen/</bash>
+
 
+
In the chapter [[#Creating a Compiled HTML file for the documentation|Creating a Compiled HTML file for the documentation]] is explained how to finish this step.</li>
+
<li>Optional - To build the mesh conversion utility '''ccm26ToFoam''', just run:
+
<bash>$FOAM_APP/utilities/mesh/conversion/Optional/Allwmake</bash>
+
 
+
The rest is done automatically, including downloading the libraries used for handling '''ccm''' files, and patching where necessary.</li>
+
<li>Optional - Build the parallel test application:
+
<bash>cd $WM_PROJECT_DIR
+
wmake applications/test/parallel</bash>
+
 
+
The built executable will be placed in the folder '''OpenFOAM/$USER-1.6/application/bin/$WM_OPTIONS'''.</li>
+
</ol>
+
 
+
== Copying the files to your Windows installation ==
+
<ol><li>The folders from "$HOME/OpenFOAM" you have to copy are:
+
*'''OpenFOAM-1.6/applications/bin/$WM_OPTIONS'''
+
*'''OpenFOAM-1.6/etc'''
+
*'''OpenFOAM-1.6/bin'''
+
*'''OpenFOAM-1.6/tutorials'''
+
*'''OpenFOAM-1.6/lib/$WM_OPTIONS'''
+
*'''OpenFOAM-1.6/doc''' (optional)
+
*'''ThirdParty-1.6/mpich2-1.1.1p1/platforms/$WM_OPTIONS''' (or the version you chose)
+
*'''ThirdParty-1.6/mpich2-1.1.1p1/source''' (optional, only if "get-mpich2" is used)
+
*'''$USER-1.6/applications/bin/$WM_OPTIONS''' (created in step 5 of the chapter [[#Cross-Compile OpenFOAM in Linux for Windows|Cross-Compile OpenFOAM in Linux for Windows]])
+
 
+
You can get all of these in a nice little package, by running:
+
<bash>tar -chjf OpenFOAM.$WM_OPTIONS.tar.bz2 OpenFOAM-1.6/applications/bin/$WM_OPTIONS \
+
OpenFOAM-1.6/etc OpenFOAM-1.6/bin OpenFOAM-1.6/tutorials OpenFOAM-1.6/lib/$WM_OPTIONS \
+
OpenFOAM-1.6/doc ThirdParty-1.6/mpich2-1.1.1p1/platforms/$WM_OPTIONS \
+
$USER-1.6/applications/bin/$WM_OPTIONS ThirdParty-1.6/mpich2-1.1.1p1/source</bash>
+
 
+
Or for an even smaller package:
+
<bash>tar --lzma -chf OpenFOAM.$WM_OPTIONS.tar.lzma OpenFOAM-1.6/applications/bin/$WM_OPTIONS \
+
OpenFOAM-1.6/etc OpenFOAM-1.6/bin OpenFOAM-1.6/tutorials OpenFOAM-1.6/lib/$WM_OPTIONS \
+
OpenFOAM-1.6/doc ThirdParty-1.6/mpich2-1.1.1p1/platforms/$WM_OPTIONS \
+
$USER-1.6/applications/bin/$WM_OPTIONS ThirdParty-1.6/mpich2-1.1.1p1/source</bash>
+
 
+
'''Optional''' - In case you have built more than one OpenFOAM version ('''mingw32''' '''mingw-w32''' '''mingw-w64'''), pack the whole '''bin''' and '''lib''' folders as so:
+
<bash>tar --lzma -chf OpenFOAM.mingw.tar.lzma OpenFOAM-1.6/applications/bin OpenFOAM-1.6/etc \
+
OpenFOAM-1.6/bin OpenFOAM-1.6/tutorials OpenFOAM-1.6/lib OpenFOAM-1.6/doc \
+
ThirdParty-1.6/mpich2-1.1.1p1/platforms $USER-1.6/applications/bin</bash></li>
+
<li>In order to recreate a folder base folder similar to the Linux setup, do the following steps:
+
*Copy the resulting compressed file to your Windows installation.
+
*Create a folder named '''OpenFOAM''', wherever you wish to have OpenFOAM running in Windows.
+
*Copy/Move the file compressed file into that folder.
+
*Unpack it using a compatible application. In case you don't know or have any, a suggestion is 7zip, available [http://www.7zip.org here].
+
</li>
+
<li>Unpack the [[:File:PatchesNBatches.tar.gz|PatchesNBatches.tar.gz]] file to your OpenFOAM base folder in Windows. The following files should be copied from the folder '''pnb''' to the base folder OpenFOAM:
+
:'''DOS_Mode.bat'''
+
:'''setvars.bat'''
+
These two will help you setup the Windows Command Line environment for running OpenFOAM in Windows.
+
 
+
Edit '''setvars.bat''' and change the lines:
+
:'''set USER=ofuser'''
+
:'''set USERNAME=ofuser'''
+
To your Linux user name... Or change the '''$USER-1.6''' you have that came from Linux, to '''ofuser-1.6'''.
+
 
+
You can also choose which '''Pstream''' version to run. Find the following lines inside '''setvars.bat''':
+
:'''rem PICK ONE: dummy or MPICH'''
+
:'''rem set WM_MPLIB=dummy'''
+
:'''set WM_MPLIB=MPICH'''
+
And remove/add the comment word '''rem''' as you wish.
+
 
+
Now, to launch the command line, simply double-click on the file '''DOS_Mode.bat'''. In case you have built more than one version, a menu will show asking which version to use.</li>
+
<li>In order to get MPICH2 and Paraview batch files to run in this command line, you'll have to copy the files '''pnb\gompi.bat''' and '''pnb\paraFoam.bat''' to the folder '''OpenFOAM-1.6\bin\'''.
+
 
+
MPICH2 will only work properly if you install it in Windows. If you used '''get-mpich2''' script in Linux, you should have the installation file(s) in the folder '''ThirdParty-1.6\mpich2-1.1.1p1\source''', that came with the compressed file that has the cross-compiled OpenFOAM.
+
 
+
Paraview should be installed in, or copied to, one of the following folders, according to the versions installed:
+
:'''ThirdParty-1.6\paraview-3.6.1\platforms\linuxmingw32'''
+
:'''ThirdParty-1.6\paraview-3.6.1\platforms\linuxmingw-w32'''
+
:'''ThirdParty-1.6\paraview-3.6.1\platforms\linuxmingw-w64'''
+
The Paraview binaries themselves should be inside the folder '''bin'''. For example, for '''mingw32''' the Paraview binaries should be inside the folder '''ThirdParty-1.6\paraview-3.6.1\platforms\linuxmingw32\bin'''.
+
For more information how how to build Paraview for Windows with OpenFOAM file handling, see the chapter [[#Building Paraview in Windows|Building Paraview in Windows]].
+
 
+
'''Tip''': with some tweaking of the OpenFOAM scripts in the folder '''OpenFOAM-1.6\bin\''', it is possible to run OpenFOAM with [http://www.mingw.org/wiki/MSYS MSys]. This way you have more functionalities and a near Linux experience with OpenFOAM.
+
</li>
+
</ol>
+
 
+
[[User:Wyldckat|Wyldckat]] 18:53, 10 November 2009 (UTC)
+

Latest revision as of 12:35, 19 August 2015

This test page is mostly empty for now, to stay out of the search engines.

Personal note used when creating new installation guides:

WARNING: These instructions are currently being written and under testing!