Installation/Windows/Outdated/Cross Compiling OpenFOAM 1.7 in Linux For Windows with MinGW
NOTE: This page is still Under Construction...
The patches will only be released when they are ready and when this page is completed!
The parent page of this page is Tip Cross Compiling OpenFOAM in Linux For Windows with MinGW - please visit it for more information.
Contents
- 1 Introduction
- 2 Get OpenFOAM packages
- 3 Things needed for properly cross-compiling OpenFOAM 1.7.0
- 4 Applying patches
- 5 Getting Windows version of MPICH2 into the ThirdParty-1.7.0 folder in Linux
- 6 Tweaking environment options
- 7 Build the cross compiler
- 8 Cross-Compile OpenFOAM in Linux for Windows
- 9 Copying the files to your Windows installation
- 10 Creating a compact help file for the code documentation
- 11 Notes on what doesn't work and why
- 11.1 motorBike case and foamToVTK in Windows
- 11.2 libscotch is limited in Windows
- 11.3 Symbolic links in the tutorials
- 11.4 Open MPI in Windows
- 11.5 Cross-compiled version mingw-w64 takes longer to start applications
- 11.6 Some tutorials don't work in Windows
- 11.7 Tutorial scripts don't work in Windows
- 11.8 DOS_Mode.bat won't allow choosing which version to use
- 12 Notes on added functionalities with these patches
- 12.1 chtMultiRegionFoam and chtMultiRegionSimpleFoam slightly different in Windows
- 12.2 foamToVTK binary VTK files now functional in Windows
- 12.3 Building ccm26ToFoam
- 12.4 Keeping track of symbolic links in tutorials
- 12.5 Changes in settings.sh
- 12.6 Building locally with multiple cores
- 12.7 Building mingw cross-compilers
- 12.8 Getting MPICH2 automatically in Linux
- 12.9 Compiling HTML files into CHM and QCH/QHC
- 12.10 Creating new patches
- 12.11 Profiling OpenFOAM applications with mingw cross-compiled version
- 12.12 Backing up development folders
- 12.13 Smart library loading
- 13 History
1 Introduction
This is an exhaustive step by step guide on how to fully cross-compile OpenFOAM 1.7.0 in Linux for Windows, for both 32 and 64 bits architectures (from and to), using the patches available here. NOTE: for cross-compiling in Cygwin for Windows, see the section Using Cygwin for cross-compiling OpenFOAM.
These patches are a continuation of the ones for OpenFOAM 1.6.0 (see Cross Compiling OpenFOAM 1.6 in Linux For Windows with MinGW). These are now based on Symscape's "v11" patch for OpenFOAM 1.6.x available here. For a brief description on the differences between the patches on this page and the ones on Symscape's page, see the Introduction chapter page on the parent page.
With this guide and available patches, you should be able to cross-compile the whole and complete OpenFOAM libraries and applications, using MPICH2 instead of Open MPI for parallel computing. Currently you can cross-compile using mingw-w64 for both 32 and 64 bit versions and mingw32 for 32bit version. These enable you to build OpenFOAM 1.7.0 for Windows 32 and 64 bit versions, from Linux 32 and 64bit architectures. See the chapter Notes on what doesn't work and why, for information on things that don't work properly.
Versions these patches apply to:
Other versions and common information to all MinGW cross-compiled versions is available in the page Tip Cross Compiling OpenFOAM in Linux For Windows with MinGW.
Support for this page is available at OpenFOAM's forum here.
2 Get OpenFOAM packages
- In your Linux machine, open a terminal window (example) and create the folder $HOME/OpenFOAM:
mkdir $HOME/OpenFOAM cd $HOME/OpenFOAM
- Get OpenFOAM-1.7.0.gtgz and ThirdParty-1.7.0.gtgz from the OpenFOAM's sourceforge.net project page and copy/move them to the folder $HOME/OpenFOAM. If you want direct download from the terminal, then do:
wget http://downloads.sourceforge.net/foam/OpenFOAM-1.7.0.gtgz?use_mirror=mesh wget http://downloads.sourceforge.net/foam/ThirdParty-1.7.0.gtgz?use_mirror=mesh
- Extract both files, by running in a terminal:
tar xzf OpenFOAM-1.7.0.gtgz tar xzf ThirdParty-1.7.0.gtgz
3 Things needed for properly cross-compiling OpenFOAM 1.7.0
The following packages should allow you to both build OpenFOAM for Linux and Windows:
- The packages needed in Linux (these are Ubuntu 10.04 package names) are: w3m flex build-essential binutils-dev libreadline5-dev wget zlib1g-dev texinfo byacc bison.
- The packages required for building the code documentation are: doxygen graphviz texlive-latex-base qt4-dev-tools.
- For the x86_64 Linux platform, you might will also need: gcc-multilib
- Packages that might be useful sooner or later: git-core python-dev libqt4-dev
4 Applying patches
- Copy/move the PatchesNBatches170.tar.gz file into the $HOME/OpenFOAM folder. Then unpack it by running:
tar -xzf PatchesNBatches170.tar.gz
- A new folder is created, named pnb17. Now to apply the patches, run from the $HOME/OpenFOAM folder:
patch -p0 < pnb17/OpenFOAM-1.7.0_patch patch -p0 < pnb17/ThirdParty-1.7.0_patch
- Still have to do some chmodding, for new scripts to run properly. Run the following lines in the terminal:
chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/src/Allclean chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/applications/utilities/parallelProcessing/Allwmake chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/tutowin chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/foamDiff chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/backupSourceFolder chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/backupFullFolder chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/chtMultiRegionFixK chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/bin/fixPatchExeNames chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/tutorials/Allwmake chmod 744 $HOME/OpenFOAM/OpenFOAM-1.7.0/multiBuilder chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/AllwcleanRegEx chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/AllwcleanZLib chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/AllwmakeMinGWScotch chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/AllwmakeRegEx chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/AllwmakeZLib chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/build-mingw44 chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/build-mingw45 chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/build-pexports chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/fixSystemMingw chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/genMPICH2stubs chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/getMinGWBin chmod 744 $HOME/OpenFOAM/ThirdParty-1.7.0/makeGcc
5 Getting Windows version of MPICH2 into the ThirdParty-1.7.0 folder in Linux
With these patches there is only one way to compile OpenFOAM with MPICH2, and it's done automatically by the script Allwmake.
So this chapter is only relevant in case you want to update the headers and definition files from 1.2.1p1 to another MPICH2 version:
- Download and install in Windows the MPICH2, any other version than 1.2.1p1 from here. Install both 32 and 64bit versions, if you wish to build OpenFOAM for both architectures.
- You will also have to download the source code package from that page.
- Create the folder $HOME/OpenFOAM/ThirdParty-1.7.0/mpich2-version/source/arch/include in your Linux set up (example and depending on the architectures you may want):
mkdir -p $HOME/OpenFOAM/ThirdParty-1.7.0/mpich2-1.2.1p1/source/i686/include mkdir -p $HOME/OpenFOAM/ThirdParty-1.7.0/mpich2-1.2.1p1/source/x86_64/include
- From the installed MPICH2 in Windows, you will need to copy the following files from the include folder: mpi.h mpio.h mpicxx.h. And copy those files to the folder $HOME/OpenFOAM/ThirdParty-1.7.0/mpich2-version/source/arch/include.
- Then copy the files mpi.def mpich2.def from the source code package into the folder $HOME/OpenFOAM/ThirdParty-1.7.0/mpich2-version/source.
- Now to use a version of MPICH2 other than 1.2.1p1, then edit the file $HOME/OpenFOAM/OpenFOAM-1.7.1/etc/settings.sh and find the line that has mpi_version=mpich2-1.2.1p1 and change to the version you want, as shown here.
The Allwmake script at the folder ThirdParty-1.7.0 will take care of the rest.
6 Tweaking environment options
- Choose which version you want to use:
- Custom builds:
- mingw32: for getting a 32bit version of OpenFOAM, using gcc + mingw;
- mingw-w32: for getting a 32bit version of OpenFOAM, using gcc + mingw-w64;
- mingw-w64: for getting a 64bit version of OpenFOAM, using gcc + mingw-w64;
- Using Ubuntu's 10.04 builds of mingw-w64: (Wyldckat 17:26, 2 August 2010 (UTC) - unknown at this time if other distributions use the same nomenclature)
- i586-mingw32msvc: for getting a 32bit version of OpenFOAM, using system's gcc + mingw-w64;
- amd64-mingw32msvc: for getting a 64bit version of OpenFOAM, using system's gcc + mingw-w64;
- Using builds available at mingw-w64's sourceforge.net project page [1]:
- i686-w64-mingw32: for getting a 32bit version of OpenFOAM, using the latest pre-built gcc + mingw-w64;
- x86_64-w64-mingw32: for getting a 64bit version of OpenFOAM, using the latest pre-built gcc + mingw-w64;
Variants of the "bashrc" file that is inside the folder $HOME/OpenFOAM/OpenFOAM-1.7.0/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 custom gcc, mingw32, MPI with MPICH2, Opt, DP, 32
- bashrc-mingw-w32
- configured for custom gcc, mingw-w32, MPI with MPICH2, Opt, DP, 32
- bashrc-mingw-w32-prof
- configured for custom gcc, mingw-w32, No MPI, Prof, DP, 32 (untested)
- bashrc-mingw-w32S
- configured for custom gcc, mingw-w32, MPI with MPICH2, Opt, SP, 32
- bashrc-mingw-w64
- configured for custom gcc, mingw-w64, MPI with MPICH2, Opt, DP, 64
- bashrc-mingw-w64-prof
- configured for custom gcc, mingw-w64, No MPI, Prof, DP, 64 (untested)
- bashrc-i586-mingw32msvc
- configured for system's gcc, mingw-w32, MPI with MPICH2, Opt, DP, 32
- bashrc-i586-mingw32msvcS
- configured for system's gcc, mingw-w32, MPI with MPICH2, Opt, SP, 32
- bashrc-amd64-mingw32msvc
- configured for system's gcc, mingw-w64, MPI with MPICH2, Opt, DP, 64
- NOTE: for this last one above, you will possibly need to install the mingw-w64 version for Ubuntu 10.04 available by Pali here (currently a dead link), because Ubuntu's initial version doesn't have the compiler amd64-mingw32msvc-g++. See bug report here.
- bashrc-i686-w64-mingw32
- configured for gcc-4.5.1 (or more recent), mingw-w32, MPI with MPICH2, Opt, DP, 32
- bashrc-i686-w64-mingw32S
- configured for gcc-4.5.1 (or more recent), mingw-w32, MPI with MPICH2, Opt, SP, 32
- bashrc-x86_64-w64-mingw32
- configured for gcc-4.5.1 (or more recent), mingw-w64, MPI with MPICH2, Opt, DP, 64
- 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:
. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw-w32
WARNING: sometimes the leading dot doesn't work, so use the following instead:
source $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw-w32
Optional: in case you want to have access to all versions without having to edit again the file $HOME/.bashrc, then instead of adding that line above, add one or more of these:
alias of170-mingw32='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw32' alias of170-mingw-w32S='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw-w32S' alias of170-mingw-w32D='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw-w32' alias of170-mingw-w64='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-mingw-w64' alias of170-i586Dsys='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-i586-mingw32msvc' alias of170-i586Ssys='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-i586-mingw32msvcS' alias of170-x64sys='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/amd64-mingw32msvc' alias of170-i686Dmingw='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-i686-w64-mingw32' alias of170-i686Smingw='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-i686-w64-mingw32S' alias of170-x64mingw='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc-x86_64-w64-mingw32' alias of170-linux='export WM_ARCH_OPTION=32; . $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc' alias of170-linux64='. $HOME/OpenFOAM/OpenFOAM-1.7.0/etc/bashrc'
Now, whenever you start a new terminal, run one of the alias commands; for example:of170-i686Dmingw
NOTE: Feel free to change the alias names to something more short and to your liking!
7 Build the cross compiler
In this version of patches for OpenFOAM 1.7.0, there are three types of MinGW cross-compilers, as already mentioned in the previous section Tweaking environment options:
- Using custom built MinGW cross-compilers - the preferred method, which should provide the safest way to cross-compile OpenFOAM;
- Using system build of MinGW cross-compilers - this might require some research into your system's compilers. For example: Ubuntu's 10.04 mingw-w64 is missing the 64bit g++, and even if you get a working version, the resulting OpenFOAM 64bit build doesn't work in Windows Vista/7 x64.
- Using mingw-w64 automatic builds of MinGW cross-compilers - this requires some tweaking on the patched options, since the solution was only found after these patches were created (see section Essential Tweak for gcc 4.5.x and OpenFOAM 1.7.0). Nonetheless, it should be one of the quickest ways to get mingw-w64 to work in your system (can save 5/20min in Linux and 1-3h in Cygwin)
For all of these possibilities, start a new terminal. In case you chose to use the alias method, activate the OpenFOAM environment by running the respective alias command, as demonstrated before.
7.1 Using custom built MinGW cross-compilers
This section is only valid for WM_COMPILER: mingw32 mingw-w32 mingw-w64.
- Go to the ThirdParty-1.7.0 folder, in your new terminal:
cd $WM_THIRD_PARTY_DIR
- Now you have to build the cross-compiler. You can now choose which version of gcc you wish to build mingw(-w64) with. The two possibilities available are:
- to build with gcc 4.4.x version, run:
./build-mingw44
NOTE: 64bit builds of OpenFOAM provided by the resulting gcc-4.4.x+mingw-w64 will probably only run in Windows XP x64. - to build with gcc 4.5.x version, run:
./build-mingw45
NOTE: 64bit builds of OpenFOAM provided by the resulting gcc-4.5.x+mingw-w64 should run on any Windows x64, but it requires the tweak mentioned in the section Essential Tweak for gcc 4.5.x and OpenFOAM 1.7.0.
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:- Near the beginning of these two scripts, you will find these variables:
#GNU GCC and company GCCVERSION="gcc-4.5.0" GMPVERSION="gmp-4.3.2" MPFRVERSION="mpfr-2.4.2" MPCVERSION="mpc-0.8.2" #'''build-mingw45''' only BINUTILSVERSION="binutils-2.20.1" #MinGW versions MINGW32RTVERSION="mingwrt-3.18" W32APIVERSION="w32api-3.14"
NOTE: Mingw-w64 isn't version-ed because these scripts will always retrieve the latest stable 1.0 version directly from SVN.
Check if they those versions still exist or if newer ones exist, by browsing the links provided a few lines below the version variables:
GNU_URL="ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/${GCCVERSION}/${GCC_TARFILE}" GMP_URL="ftp://ftp.gnu.org/gnu/gmp/${GMP_TARFILE}" MPFR_URL="ftp://ftp.gnu.org/gnu/mpfr/${MPFR_TARFILE}" MPC_URL="http://www.multiprecision.org/mpc/download/${MPC_TARFILE}" BINUTILS_URL="ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/binutils/releases/${BINUTILS_TARFILE}" MINGW64_URL="http://mingw-w64.svn.sourceforge.net/viewvc/mingw-w64/branches/releases/v1.0/?view=tar" #changes here only required if new stable version is launched #MinGW versions MINGW32RT_URL="http://downloads.sourceforge.net/project/mingw/MinGW/BaseSystem/RuntimeLibrary/MinGW-RT/${MINGW32RTVERSION}/${MINGW32RT_TARFILE}?use_mirror=mesh" W32API_URL="http://downloads.sourceforge.net/project/mingw/MinGW/BaseSystem/RuntimeLibrary/Win32-API/${W32APIVERSION}/${W32API_TARFILE}?use_mirror=mesh"
The respective addresses for checking available versions:
NOTE: You can also change the URLs, in case you can find a closer server to you!
- to build with gcc 4.4.x version, run:
- If no error messages appear while running the script, then you should now be ready to go to the next chapter.
7.2 Using system build of MinGW cross-compilers
Valid for WM_COMPILER: i586-mingw32msvc amd64-mingw32msvc
As said before, if you intend to build the 64bit cross-compiler version, then first check if this file exists: amd64-mingw32msvc-g++. Reason: see bug report for Ubuntu here. If you can't get it to work, you better choose one of the other solutions.
If you do have the necessary system cross-compilers, there is only one additional step necessary to do - run this:
cd $WM_THIRD_PARTY_DIR ./fixSystemMingw
This command will check if your system compiler is somewhat properly configured for building OpenFOAM. If not, it will provide you with instructions to fix the header files in some float.h files. Without following these instructions, you will not be able to build OpenFOAM.
7.3 Using mingw-w64 automatic builds of MinGW cross-compilers
Valid for WM_COMPILER: i686-w64-mingw32 x86_64-w64-mingw32
You simply have to run the script getMinGWBin available in the folder ThirdParty-1.7.0:
cd $WM_THIRD_PARTY_DIR ./getMinGWBin
This script will search for the latest available pre-built version of the mingw-w64 compiler defined by the bashrc-compiler script for you Linux machine, whether it's i?86 or x86_64! It should also work in Cygwin. Keep in mind that you must do the Essential Tweak for gcc 4.5.x and OpenFOAM 1.7.0!
NOTE: this script getMinGWBin needs the application w3m, a text based browser, to be installed.
7.3.1 Essential Tweak for gcc 4.5.x and OpenFOAM 1.7.0
There is a tweak that is necessary to be done for OpenFOAM 1.7.0 and gcc 4.5.x (the version that usually comes from mingw-w64's project). The reason for this tweak is in the bug shown here.
With the OpenFOAM environment active (as explained in the second item of the chapter Tweaking environment options), run these commands:
cd $WM_DIR/rules sed -i -e 's=-O2 -DNDEBUG=-O2 -DNDEBUG -fno-strict-aliasing=' "$WM_ARCH$WM_COMPILER/c++Opt"
8 Cross-Compile OpenFOAM in Linux for Windows
- 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). Go to the project folder as so:
cd $WM_PROJECT_DIR
- You are now in the folder "OpenFOAM-1.7.0" and should run "Allwmake":
./Allwmake
This will build the entire OpenFOAM package. This does not include: Paraview, OpenMPI and code documentation. - Optional - If you want to build the code documentation, after OpenFOAM is built, run:
wmake all doc
This is only needs to be built once, since it's the same for all architectures.
In the chapter Creating a compact help file for the code documentation is explained how to finish this step.
- Optional - If you want to be able to run the tutorial cases that need custom applications to be built, run:
wmake all tutorials
The applications will be cross-compiled and put in the folder $HOME/OpenFOAM/$USER-1.7.0/application/bin/$WM_OPTIONS, or $FOAM_USER_APPBIN for short.
- Building the mesh conversion utility ccm26ToFoam is now done automatically, when compared with the previous patch versions. If for any reason you do not wish for it to be built, edit the file $FOAM_APP/Allwmake and remove or comment the lines that have:
wmake all utilities/mesh/conversion/Optional
- For testing MPICH2, as described in this page's parent page, chapter Using MPICH2 with OpenFOAM in Windows, the parallel test application will be built automatically. The built executable will be placed in the folder $HOME/OpenFOAM/$USER-1.7.0/application/bin/$WM_OPTIONS, or $FOAM_USER_APPBIN for short.
9 Copying the files to your Windows installation
This procedure is split into three sections in this chapter:
- Final preparations - preparing tutorials and other items for transport;
- Packing up and leaving for Windows - packing up things for transport;
- Setting up shop in Windows - instructions on what is necessary to get things going in Windows.
9.1 Final preparations
The following steps are needed for you to be able to use some of the tutorials that require a case sensitive file system:
- Make a copy of the original tutorials into your OpenFOAM dedicated user folder:
cp -r $FOAM_TUTORIALS $FOAM_RUN/..
- Fix the chtMultiRegion* tutorials:
cd $FOAM_RUN/../tutorials chtMultiRegionFixK heatTransfer/chtMultiRegionFoam/multiRegionHeater chtMultiRegionFixK heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater chtMultiRegionFixK heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeater
- Fix the STL in the motorBike case so that if you have to resort to foamToVTK in Windows, there won't be any problems:
cd $FOAM_RUN/../tutorials/incompressible/simpleFoam/motorBike chmod 744 fixForWindows ./fixForWindows
- Fix the tutorial nozzleFlow2D case:
cd $FOAM_RUN/../tutorials/multiphase/interFoam/les/nozzleFlow2D nano Allrun
Or instead of nano, you can use your favorite text editor: vi, gedit, kate, kwrite, mousepad.
Now, right after the line:runApplication blockMesh
Add these lines:if [ "$WM_PRECISION_OPTION" = "DP" ]; then firstiter=1e-008 else firstiter=1e-08 fi
Then there are two lines bellow that need changing too:cp -r 1e-08/polyMesh/* constant/polyMesh rm -rf 1e-08
Change them to this:cp -r ${firstiter}/polyMesh/* constant/polyMesh rm -rf ${firstiter}
9.2 Packing up and leaving for Windows
- The folders from $HOME/OpenFOAM that you have to copy are:
- OpenFOAM-1.7.0/applications/bin/$WM_OPTIONS
- OpenFOAM-1.7.0/etc
- OpenFOAM-1.7.0/bin
- OpenFOAM-1.7.0/lib/$WM_OPTIONS
- OpenFOAM-1.7.0/doc/Guides-a4 or OpenFOAM-1.7.0/doc/Guides-usletter (optional)
- OpenFOAM-1.7.0/doc/Doxygen/qt_qch or OpenFOAM-1.7.0/doc/Doxygen/html (optional)
- ThirdParty-1.7.0/platforms/$WM_ARCH$WM_COMPILER/mpich2-1.2.1p1 (or one of the versions you chose)
- ThirdParty-1.7.0/mpich2-1.2.1p1/source (optional)
- ThirdParty-1.7.0/platforms/$WM_OPTIONS (optional - provides additional the Scotch binaries)
- $USER-1.7.0/tutorials (optional, created in the section Final preparations)
- $USER-1.7.0/applications/bin/$WM_OPTIONS (created in step 5 of the chapter Cross-Compile OpenFOAM in Linux for Windows)
You can get all of the essentials listed above in a nice little package, by running at $HOME/OpenFOAM:tar -chjf OpenFOAM.$WM_OPTIONS.tar.bz2 OpenFOAM-1.7.0/applications/bin/$WM_OPTIONS \ OpenFOAM-1.7.0/etc OpenFOAM-1.7.0/bin OpenFOAM-1.7.0/lib/$WM_OPTIONS \ OpenFOAM-1.7.0/doc/Guides-a4 ThirdParty-1.7.0/platforms/$WM_ARCH$WM_COMPILER/mpich2-1.2.1p1 \ $USER-1.7.0/applications/bin/$WM_OPTIONS $USER-1.7.0/tutorials ThirdParty-1.7.0/mpich2-1.1.1p1/source
Or for an even smaller package:
tar --lzma -chf OpenFOAM.$WM_OPTIONS.tar.lzma OpenFOAM-1.7.0/applications/bin/$WM_OPTIONS \ OpenFOAM-1.7.0/etc OpenFOAM-1.7.0/bin OpenFOAM-1.7.0/lib/$WM_OPTIONS \ OpenFOAM-1.7.0/doc/Guides-a4 ThirdParty-1.7.0/platforms/$WM_ARCH$WM_COMPILER/mpich2-1.2.1p1 \ $USER-1.7.0/applications/bin/$WM_OPTIONS $USER-1.7.0/tutorials ThirdParty-1.7.0/mpich2-1.1.1p1/source
-
Optional - In case you have built more than one OpenFOAM version (mingw32 mingw-w32 mingw-w64 and so on), pack the whole bin and lib folders as so:
tar --lzma -chf OpenFOAM.mingw.tar.lzma OpenFOAM-1.7.0/applications/bin \ OpenFOAM-1.7.0/etc OpenFOAM-1.7.0/bin OpenFOAM-1.7.0/lib \ OpenFOAM-1.7.0/doc/Guides-a4 \ $USER-1.7.0/applications/bin $USER-1.7.0/tutorials ThirdParty-1.7.0/mpich2-1.1.1p1/source
9.3 Setting up shop in Windows
- 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 here.
- Unpack the PatchesNBatches.tar.gz file to your OpenFOAM base folder in Windows. The following files should be copied from the folder pnb17 to the base folder OpenFOAM:
- DOS_Mode.bat
- setvars.bat
- set USER=ofuser
- set USERNAME=ofuser
- rem PICK ONE: dummy or MPICH
- rem set WM_MPLIB=dummy
- set WM_MPLIB=MPICH
- In order to get MPICH2 batch file to run in this command line, you'll have to copy the file pnb\gompi.bat to the folder OpenFOAM-1.7.0\bin.
MPICH2 will only work properly if you install it in Windows. If you used get-mpich2 script in Linux (see Getting Windows version of MPICH2 into the ThirdParty-1.7.0 folder in Linux), you should have the installation file(s) in the folder ThirdParty-1.7.0\mpich2-1.1.1p1\source, that came with the compressed file that has the cross-compiled OpenFOAM.
Now, you have (at least) two possible solutions:
- Replicate the structure as in Linux - After installing MPICH2 in Windows, you can copy the binary folder to the respective version of cross-compiled OpenFOAM. For example C:\Program Files\MPICH2\bin or C:\Program Files (x86)\MPICH2\bin for the 32bit version in Windows x64.
The targeted folders to hold the contents of the MPICH2 bin folder, are:
- ThirdParty-1.7.0\mpich2-1.2.1p1\platforms\linuxmingw32DPOpt\bin
- ThirdParty-1.7.0\mpich2-1.2.1p1\platforms\linuxmingw-w32SPOpt\bin
- ThirdParty-1.7.0\mpich2-1.2.1p1\platforms\linuxmingw-w32DPOpt\bin
- ThirdParty-1.7.0\mpich2-1.2.1p1\platforms\linuxmingw-w64DPOpt\bin - this should have the 64bit version of MPICH2
- Edit the file setvars.bat and add the bin folder of your MPICH2 installation to the PATH variable near the end of the batch file. For example, add
;C:\Program Files\MPICH2\bin
to the end of line that starts with:set PATH=%PATH%;
CAUTION: on Windows x64, this solution will require additional tweaking to the setvars.bat, in case you want to run both versions (32 and 64bit) of OpenFOAM, in order to add;C:\Program Files\MPICH2\bin
or;C:\Program Files (x86)\MPICH2\bin
accordingly to the desired version.
- Replicate the structure as in Linux - After installing MPICH2 in Windows, you can copy the binary folder to the respective version of cross-compiled OpenFOAM. For example C:\Program Files\MPICH2\bin or C:\Program Files (x86)\MPICH2\bin for the 32bit version in Windows x64.
The targeted folders to hold the contents of the MPICH2 bin folder, are:
- In order to get Paraview batch file to run in this command line, you'll have to copy the file pnb\paraFoam.bat to the folder OpenFOAM-1.7.0\bin.
Paraview should be installed in, or copied to, one of the following folders, according to the versions installed:
- ThirdParty-1.7.0\paraview-3.8.0\platforms\linuxmingw32
- ThirdParty-1.7.0\paraview-3.8.0\platforms\linuxmingw-w32
- ThirdParty-1.7.0\paraview-3.8.0\platforms\linuxmingw-w64
For more information on how to build Paraview for Windows with OpenFOAM file handling, see the chapter Building Paraview in Windows. - Tip: with some tweaking of the OpenFOAM scripts in the folder OpenFOAM-1.7.0\bin, it is possible to run OpenFOAM with MSys. This way you have more functionalities and a near Linux experience with OpenFOAM. And for MPICH2, you might want to make a copy of mpiexec.exe to mpirun.exe.
10 Creating a compact help file for the code documentation
TODO...
10.1 Creating a Compiled HTML (CHM) file for the code documentation
10.2 Creating a Qt QCH/QHC files for the code documentation
11 Notes on what doesn't work and why
TODO...
11.1 motorBike case and foamToVTK in Windows
11.2 libscotch is limited in Windows
11.3 Symbolic links in the tutorials
11.4 Open MPI in Windows
11.5 Cross-compiled version mingw-w64 takes longer to start applications
11.6 Some tutorials don't work in Windows
11.7 Tutorial scripts don't work in Windows
11.8 DOS_Mode.bat won't allow choosing which version to use
12 Notes on added functionalities with these patches
12.1 chtMultiRegionFoam and chtMultiRegionSimpleFoam slightly different in Windows
12.2 foamToVTK binary VTK files now functional in Windows
12.3 Building ccm26ToFoam
12.4 Keeping track of symbolic links in tutorials
12.5 Changes in settings.sh
12.6 Building locally with multiple cores
12.7 Building mingw cross-compilers
12.8 Getting MPICH2 automatically in Linux
12.9 Compiling HTML files into CHM and QCH/QHC
12.10 Creating new patches
12.11 Profiling OpenFOAM applications with mingw cross-compiled version
12.12 Backing up development folders
12.13 Smart library loading
13 History
Wyldckat 22:39, 31 July 2010 (UTC) - Page development has stalled due to technical difficulties with existing pre-built mingw-w64 cross-compilers.
Wyldckat 15:48, 22 July 2010 (UTC) - Page created... content will be inserted periodically over the next hours...