Windows 7 Download and Installation
From KratosWiki
Contents |
Preliminaries: Components needed to install the Kratos
- Last visit for the links: 28 March 2010
- Note that this is a specific case of possible installation of Kratos in a 64 bits computer under Windows 7, and all the different components are not compulsory for the successful use of Kratos. You can select other equivalent C++ compilers, svn, etc. or other versions of those we are presenting.
- Two examples of organization of files are provided. Of course, you should select only one of them.
C++ compiler. Microsoft Visual Studio 2008
- For developers using Windows, we recommend to use Microsoft Visual Studio 2005 or 2008. If you are working with a 64 bits machine, be sure that you include the 64 bits tools in your MSVS installation.
SVN
- It is recommended to use RapidSVN
- The latest released version: 0.12, October 2009, RapidSVN-0.12.0-8051.exe
- Download and run the file:
Kratos Source Code
- By using RapidSVN, the kratos source files can be downloaded by taking the following steps:
- Go to Repository->Checkout and enter the following path to the kratos repository:
- By using RapidSVN, the kratos source files can be downloaded by taking the following steps:
http://kratos.cimne.upc.es/svn/kratos/
- Choose a working directory where module: kratos will be created in your pc
- example A: "C:\Kratos2010"
- example B: "D:\Kratos2010"
- "recursive" option have to be signed
- this will create a folder "C:\Kratos2010\kratos" or "D:\Kratos2010\kratos" with all the required Kratos files.
- Choose a working directory where module: kratos will be created in your pc
Pre and Post Processor. GiD
- We use GiD as our favourite pre and post-processor.
- Download and install the latest version of GiD. Here we use the latest beta version for 64 bits (GiD9.2.9b-win-x64-Install.exe)
- You should have to install the GiDpost External Library too (latest version, March 2010, ::ftp://gid.cimne.upc.es/pub/gid/Tools/gidpost1.70.zip).
- Unzip the file in your kratos external libraries.
- example A: "C:\Kratos2010\kratos\external_libraries\gidpost" (already existing folder, the one by default)
- example B: "D:\external_libraries\gidpost" (independent folder outside kratos' directory tree)
- Unzip the file in your kratos external libraries.
- To build the GiD postprocess libray:
- Open a DOS console (from Start - Programs - Microsoft Visual Studio 2008 - Visual Studio Tools - System Console
- Run vcvarsall.bat
- Change to the VC Common7\Tools directory (cd ..; cd Common7; cd Tools)
- Run vcvars32.bat
- change to the "gidpost\win" directory (remember, "C:\Kratos2010\kratos\external_libraries\gidpost" or "D:\external_libraries\gidpost")
- And depending on the version you want to compile (probably both of them) invoke:
- To build the GiD postprocess libray:
nmake -f Makefile.vc CFG="Release" nmake -f Makefile.vc CFG="Debug"
- This will create two new folders "gidpost\win\Debug" and "gidpost\win\Release" with the file gidpost.lib for the Debug or Release compilation
- Very important! Finally and only if you have selected a different directory to the default one (example B), copy the existing Jamfile file from the default folder (D:\Kratos2010\kratos\external_libraries\gidpost) to the one you are using for the libraries (D:\external_libraries\gidpost)
Scripting Language Python. Python(x,y)
- Before installing Python, consider if you want to use it to plot graphics. In that case, you should check packages (python(x,y), for example) which include matplotlib or other equivalent graphic tools.
- For this example, we will describe the full package Python(x,y) installation.
- Download and run the installation file from http://www.pythonxy.com/ (latest version 2.6.2.0, March 2010, 426 MB, http://ftp.ntua.gr/pub/devel/pythonxy/Python(x,y)-2.6.2.0.exe)
- Everything by default, but it is recommended to:
- select installation for all the users
- select the destination folders (to check the full installation process)
- select all the components to be installed
- folders:
- example A:
- Everything by default, but it is recommended to:
general destination: C:\Program Files (x86)\pythonxy python(x,y) documentation: C:\Program Files (x86)\pythonxy\doc python kernel: C:\Python26 eclipse: C:\Program Files (x86)\pythonxy\eclipse eclipse workspace: C:\Documents\Python mingw: C:\Program Files (x86)\pythonxy\mingw
- example B:
general destination: D:\pythonxy python(x,y) documentation: D:\pythonxy\doc python kernel: D:\Python26 eclipse: D:\pythonxy\eclipse eclipse workspace: D:\Simulations\Python mingw: D:\pythonxy\mingw
- After the installation, you should check that Python has created a folder called "C:\Python26\libs" or "D:\Python26\libs".
Boost Library
- Kratos uses the Boost library.
- Boost provides free peer-reviewed portable C++ source libraries.
Step1 - Install the building system
- The compilation of both the Kratos and the Boost-library is performed using bjam which is a portable "make" like system and manages the compilation. Bjam has configuration files for many different compilers. This configuration files are contained in the "boost-build".
- The following steps are needed to install the build system:
- Downlodad precompiled bjam for windows ((http://www.boost.org/doc/tools/build/index.html, latest version 2007) and unzip it in the external libraries folder: "C:\Kratos2010\kratos\external_libraries\boost\boost-build" or "D:\external_libraries\boost\boost-build").
- Open a DOS console and change to the boost-build\jam_src folder
- Run build.bat
- A new folder bin.ntx86 will have been created with a bjam.exe file in it.
- Copy the bjam.exe in the kratos root ("C:\Kratos2010\kratos\external_libraries\boost\boost-build\jam_src\bin.ntx86" to "C:\Kratos2010\kratos", in the example A; "D:\external_libraries\boost\boost-build\jam_src\bin.ntx86" to "D:\Kratos2010\kratos", in the example B;)
Step2 - Install the boost library
- You can install and build manually the boost library or you can directly use an installer. As said in the boost webpage: "The easiest way to get a copy of Boost is to use an installer. The Boost website version of this Getting Started guide will have undated information on installers as they become available, or see Boost downloads or the installer provided by BoostPro Computing. We especially recommend using an installer if you use Microsoft Visual Studio, because the installer can download and install precompiled library binaries, saving you the trouble of building them yourself."
- Download and run BoostPro Installer (latest version 1.42.0, 190K, boost_1_42_setup.exe, March 2010). You should register to freely download the file.
Step3 - Environment variables
- Check your environment variables (Control Panel->System and Security->System->Advanced System Settings)
- Define the following variable:
- example A: BOOST_BUILD_PATH = C:\Kratos2010\kratos\external_libraries\boost\boost-build
- example B: BOOST_BUILD_PATH = D:\external_libraries\boost\boost-build
- Define the following variable:
- check your path. In this moment, you probably have got something like (example A):
%CommonProgramFiles%\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Python26;C:\Python26\DLLs;C:\Python26\Scripts;C:\Python26\Lib\site-packages\PyQt4;C:\Python26\gnuplot\bin;C:\Python26\Lib\site-packages\vtk;C:\Python26\OpenCV\bin;C:\Program Files (x86)\pythonxy\console;C:\Program Files (x86)\pythonxy\SciTE-2.01;C:\Program Files (x86)\pythonxy\mingw\bin
- you should add the following boost directories (\external_libraries\boost\boost_1_42; \external_libraries\boost\boost_1_42\lib; \kratos\external_libraries\boost\boost_1_42\bin; \external_libraries\boost\boost-build)
%CommonProgramFiles%\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Python26;C:\Python26\DLLs;C:\Python26\Scripts;C:\Python26\Lib\site-packages\PyQt4;C:\Python26\gnuplot\bin;C:\Python26\Lib\site-packages\vtk;C:\Python26\OpenCV\bin;C:\Program Files (x86)\pythonxy\console;C:\Program Files (x86)\pythonxy\SciTE-2.01;C:\Program Files (x86)\pythonxy\mingw\bin;C:\Kratos2010\kratos\external_libraries\boost\boost_1_42; C:\Kratos2010\kratos\external_libraries\boost\boost_1_42\lib; C:\Kratos2010\kratos\external_libraries\boost\boost_1_42\bin; C:\Kratos2010\kratos\external_libraries\boost\boost-build
Compiling Kratos
Customize Kratos Jamroot, the Kratos' main guide to compile
- In the Kratos root folder ("C:\Kratos2010\kratos" or "D:\kratos") copy the Common_Jamroot to Jamroot and then open it with a text editor: select and customize the parts marked as WINDOWS INSTALLATION, as follows (parts in red bold are those that should be modified, parts in green bold are those that probably shouldn't need be modified, but you have to take care of them):
- example A (C:\Kratos2010\kratos; C:\Kratos2010\kratos\external_libraries)
- In the Kratos root folder ("C:\Kratos2010\kratos" or "D:\kratos") copy the Common_Jamroot to Jamroot and then open it with a text editor: select and customize the parts marked as WINDOWS INSTALLATION, as follows (parts in red bold are those that should be modified, parts in green bold are those that probably shouldn't need be modified, but you have to take care of them):
using gcc ; using intel : : : <cxxflags>"-fPIC -ansi -funroll-loops -cxxlib-gcc -openmp -wd654 -wd10010" <cflags>"-fPIC -funroll-loops -cxxlib-gcc -openmp -wd654 -wd10010" ; using sun : : : <cflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" <cxxflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" <linkflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" ; using msvc ; using python ; # uncomment and specify compiler to use MPI ##using mpi : /opt/openmpi/1.2.4/bin/mpiCC ; ################################################################################# ## defining "common includes" and external libraries path-constant TOP : . ; #path to the boost library -- FUNDAMENTAL --- ATTENTION: it is IMPORTANT to set to the directory FROM WHICH the boost was installed path-constant BOOST_LIB_DIR : /usr/lib/ ; path-constant BOOST_INCLUDE_DIR : /usr/include/ ; ##blas/lapack lib dir path-constant BLAS_LIB_DIR : /usr/lib/ ; path-constant LAPACK_LIB_DIR : /usr/lib/ ; # Path to CUDA - required to compile and use GPU solvers - strictly optional ##path-constant CUDA_LIB_DIR : /usr/local/cuda/lib ; ##path-constant CUDA_INCLUDE_DIR : /usr/local/cuda/include ; ##path-constant LAPACKPP_LIB_DIR : /usr/local/lapackpp/lib ; #directory in which we installed the LAPACK++ lib ##path-constant LAPACKPP_INCLUDE_DIR : /usr/local/lapackpp/include/lapackpp ; #directory in which we installed the LAPACK++ lib ##decomment and modify for parallel ##path-constant MPI_LIB_DIR : /usr/lib/openmpi/lib/ ; ##path-constant MPI_INCLUDE_DIR : /usr/lib/openmpi/include/ ; ##path-constant TRILINOS_LIB_DIR : /compiled_libraries/trilinos-9.0.1/lib/ ; ##path-constant TRILINOS_INCLUDE_DIR : /compiled_libraries/trilinos-9.0.1/include/ ; ##path-constant METIS_LIB_DIR : /usr/lib/ ; ##path-constant METIS_INCLUDE_DIR : /usr/include/ ; ##path to the mkl library (STRICTLY OPTIONAL) ##path-constant MKL_INCLUDE_DIR : /opt/intel/mkl/10.0.1.014/include/ ; ##path-constant MKL_LIB_DIR : /opt/intel/mkl/10.0.1.014/lib/ ; project KratosProject : ############################################################################# ############### TO BE CUSTOMIZED -- LINUX VERSION EXAMPLE!! ################# ## requirements <include>$(BOOST_INCLUDE_DIR) #to be CUSTOMIZED ## <include>/usr/include/python2.5/ #to be CUSTOMIZED ## <include>$(TOP)/kratos ## <include>$(TOP)/external_libraries ############################################################################# ############################################################################# ############### TO BE CUSTOMIZED -- WINDOWS VERSION EXAMPLE!! ############### requirements <include>"C:\Kratos2010\kratos\external_libraries\boost\boost_1_42" #to be CUSTOMIZED <include>"C:\Python26\include" #to be CUSTOMIZED <include>$(TOP)/kratos <include>$(TOP)/external_libraries ############################################################################# ##omptl - necessary for parallelism <include>$(TOP)/external_libraries/omptl #basic configurations <threading>multi <define>NDEBUG ### <toolset>intel:<define>_GCC_LIMITS_H_ #compiler settings - can be CUSTOMIZED by the user #WARNING -fPIC is NEEDED to compile on 64 bit systems - it has to be specified here in order to include it in the #kratos "static" library <warnings>on #gcc settings <toolset>gcc:<cflags>"-fPIC -funroll-loops" ##settings for external libraries <toolset>gcc:<cxxflags>"-fPIC -ansi -funroll-loops -ffast-math -Wno-unknown-pragmas" #msvc settings <toolset>msvc:<linkflags>"/NODEFAULTLIB:libcmt" <toolset>msvc:<cxxflags>"/D_SCL_SECURE_NO_DEPRECATE /wd4335" #intel settings ## <toolset>intel:<cxxflags>"-fPIC -ansi -funroll-loops -ffast-math" : default-build release ; ################################################################################# ## defining "common external libraries" ## the user should adapt this depending on the installations directories on his system ############################################################################# ############### TO BE CUSTOMIZED -- LINUX VERSION EXAMPLE!! ################# ##lib pythonlib : : <name>python2.5 ; ##lib boost_python_lib : : <variant>debug <name>boost_python-mt-d <search>$(BOOST_LIB_DIR) ; ##lib boost_python_lib : : <variant>release <name>boost_python-mt <search>$(BOOST_LIB_DIR) ; ############################################################################# ############################################################################# ############### TO BE CUSTOMIZED -- WINDOWS ################# lib pythonlib : : <name>python26 <search>"C:/Python26/libs " ; lib boost_python_lib : : <variant>debug <name>boost_python-vc90-mt-gd-1_42 <search>"C:/Kratos2010/kratos/external_libraries/boost/boost_1_42/lib" ; lib boost_python_lib : : <variant>release <name>boost_python-vc90-mt-1_42 <search>"C:/Kratos2010/kratos/external_libraries/boost/boost_1_42/lib" ; ############################################################################# #blas and lapack libraries lib blaslibrary : : <name>blas <search>$(BLAS_LIB_DIR) <link>shared ; lib lapacklibrary : : <name>lapack <search>$(LAPACK_LIB_DIR) <link>shared ; #intel omp library... lib intelomp : : <name>guide ; #ATTENTION: "this requires adding threading=multi to the bjam call" alias libomp : intelomp : <toolset>intel ; alias libomp : : <toolset>gcc ; alias libomp : : <toolset>msvc ; alias libomp : : <toolset>sun ; ## MPI LIBRARIES - comment out if using mpi is not required ##lib mpilibrary : : <name>mpi <search>$(MPI_LIB_DIR) ; ##lib mpilibrary_cpp : : <name>mpi_cxx <search>$(MPI_LIB_DIR) ; ################################################################################# # IN PRINCIPLE THIS SHOULD REQUIRE NO CUSTOMARIZATION .. apart for compiling new applications ## defining "ids" for the different projects use-project /kratos-prj : . ; ##gid post library use-project /kratos-prj/gidpost : $(TOP)/external_libraries/gidpost ; ##kratos base library and python interfaces use-project /kratos-prj/kratos : kratos ; ##applications included in the compilation use-project /kratos-prj/PFEMapplication : $(TOP)/applications/PFEMapplication ; use-project /kratos-prj/incompressible_fluid_application : $(TOP)/applications/incompressible_fluid_application ; use-project /kratos-prj/structural_application : $(TOP)/applications/structural_application ; use-project /kratos-prj/convection_diffusion_application : $(TOP)/applications/convection_diffusion_application ; use-project /kratos-prj/ExternalSolversApplication : $(TOP)/applications/ExternalSolversApplication ; use-project /kratos-prj/ULFapplication : $(TOP)/applications/ULFapplication ; use-project /kratos-prj/ALEapplication : $(TOP)/applications/ALEapplication ; use-project /kratos-prj/FSIapplication : $(TOP)/applications/FSIapplication ; use-project /kratos-prj/MeshingApplication : $(TOP)/applications/MeshingApplication ; ##use-project /kratos-prj/Qcompressible_fluid_application : $(TOP)/applications/Qcompressible_fluid_application ; ## REQUIRES METIS TO BE INSTALLED ##use-project /kratos-prj/MetisApplication : $(TOP)/applications/metis_application ; ## REQUIRES TRILINOS TO BE INSTALLED ##use-project /kratos-prj/TrilinosApplication : $(TOP)/applications/trilinos_application ; ## MKL solvers: will not be compiled by default ################################################### ## this requires intel MKL library (v. 10.0.1.014) installed properly on your system ############## #use-project /kratos-prj/mkl_solvers_application : $(TOP)/applications/mkl_solvers_application ; # GPU Solvers: needs CUDA to be installed and appropriate environment variable set, a GT200 series GPU card (GTX260, GTX 280, etc.) with the *latest* driver installed # Before trying to compile this application, go to "~/kratos/applications/gpu_solvers_application/custom_external_libraries" and issue a "./build.sh" to build the "gpu_sparse.a" library use-project /kratos-prj/gpu_solvers_application : $(TOP)/applications/gpu_solvers_application ; ################################################################################################### alias libkratos_static : /kratos-prj/kratos//libkratos/<link>static ; alias gidpost : /kratos-prj/gidpost//gidpost/<link>static ; ################################################################################# ## installation alias install : /kratos-prj//kratos /kratos-prj/PFEMapplication//install /kratos-prj/incompressible_fluid_application//install /kratos-prj/structural_application//install /kratos-prj/convection_diffusion_application//install /kratos-prj/ExternalSolversApplication//install /kratos-prj/ULFapplication//install /kratos-prj/ALEapplication//install /kratos-prj/MeshingApplication//install # /kratos-prj/FSIapplication//install # /kratos-prj/mkl_solvers_application//install # /kratos-prj/Qcompressible_fluid_application//install # /kratos-prj/MetisApplication//install # /kratos-prj/TrilinosApplication//install # /kratos-prj/gpu_solvers_application//install ; ECHO $(TOP) ;
- example B (D:\kratos; D:\external_libraries)
using gcc ; using intel : : : <cxxflags>"-fPIC -ansi -funroll-loops -cxxlib-gcc -openmp -wd654 -wd10010" <cflags>"-fPIC -funroll-loops -cxxlib-gcc -openmp -wd654 -wd10010" ; using sun : : : <cflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" <cxxflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" <linkflags>" -w -DBOOST_UBLAS_UNSUPPORTED_COMPILER=0" ; using msvc ; using python ; # uncomment and specify compiler to use MPI ##using mpi : /opt/openmpi/1.2.4/bin/mpiCC ; ################################################################################# ## defining "common includes" and external libraries path-constant TOP : . ; #path to the boost library -- FUNDAMENTAL --- ATTENTION: it is IMPORTANT to set to the directory FROM WHICH the boost was installed path-constant BOOST_LIB_DIR : /usr/lib/ ; path-constant BOOST_INCLUDE_DIR : /usr/include/ ; ##blas/lapack lib dir path-constant BLAS_LIB_DIR : /usr/lib/ ; path-constant LAPACK_LIB_DIR : /usr/lib/ ; # Path to CUDA - required to compile and use GPU solvers - strictly optional ##path-constant CUDA_LIB_DIR : /usr/local/cuda/lib ; ##path-constant CUDA_INCLUDE_DIR : /usr/local/cuda/include ; ##path-constant LAPACKPP_LIB_DIR : /usr/local/lapackpp/lib ; #directory in which we installed the LAPACK++ lib ##path-constant LAPACKPP_INCLUDE_DIR : /usr/local/lapackpp/include/lapackpp ; #directory in which we installed the LAPACK++ lib ##decomment and modify for parallel ##path-constant MPI_LIB_DIR : /usr/lib/openmpi/lib/ ; ##path-constant MPI_INCLUDE_DIR : /usr/lib/openmpi/include/ ; ##path-constant TRILINOS_LIB_DIR : /compiled_libraries/trilinos-9.0.1/lib/ ; ##path-constant TRILINOS_INCLUDE_DIR : /compiled_libraries/trilinos-9.0.1/include/ ; ##path-constant METIS_LIB_DIR : /usr/lib/ ; ##path-constant METIS_INCLUDE_DIR : /usr/include/ ; ##path to the mkl library (STRICTLY OPTIONAL) ##path-constant MKL_INCLUDE_DIR : /opt/intel/mkl/10.0.1.014/include/ ; ##path-constant MKL_LIB_DIR : /opt/intel/mkl/10.0.1.014/lib/ ; project KratosProject : ############################################################################# ############### TO BE CUSTOMIZED -- LINUX VERSION EXAMPLE!! ################# ## requirements <include>$(BOOST_INCLUDE_DIR) #to be CUSTOMIZED ## <include>/usr/include/python2.5/ #to be CUSTOMIZED ## <include>$(TOP)/kratos ## <include>$(TOP)/external_libraries ############################################################################# ############################################################################# ############### TO BE CUSTOMIZED -- WINDOWS VERSION EXAMPLE!! ############### requirements <include>"D:/external_libraries/boost_1_42_0" #to be CUSTOMIZED <include>" D:/Python26/include" #to be CUSTOMIZED <include>$(TOP)/kratos <include>"D:/external_libraries" ############################################################################# ##omptl - necessary for parallelism <include>$(TOP)/external_libraries/omptl #basic configurations <threading>multi <define>NDEBUG ### <toolset>intel:<define>_GCC_LIMITS_H_ #compiler settings - can be CUSTOMIZED by the user #WARNING -fPIC is NEEDED to compile on 64 bit systems - it has to be specified here in order to include it in the #kratos "static" library <warnings>on #gcc settings <toolset>gcc:<cflags>"-fPIC -funroll-loops" ##settings for external libraries <toolset>gcc:<cxxflags>"-fPIC -ansi -funroll-loops -ffast-math -Wno-unknown-pragmas" #msvc settings <toolset>msvc:<linkflags>"/NODEFAULTLIB:libcmt" <toolset>msvc:<cxxflags>"/D_SCL_SECURE_NO_DEPRECATE /wd4335" #intel settings ## <toolset>intel:<cxxflags>"-fPIC -ansi -funroll-loops -ffast-math" : default-build release ; ################################################################################# ## defining "common external libraries" ## the user should adapt this depending on the installations directories on his system ############################################################################# ############### TO BE CUSTOMIZED -- LINUX VERSION EXAMPLE!! ################# ##lib pythonlib : : <name>python2.5 ; ##lib boost_python_lib : : <variant>debug <name>boost_python-mt-d <search>$(BOOST_LIB_DIR) ; ##lib boost_python_lib : : <variant>release <name>boost_python-mt <search>$(BOOST_LIB_DIR) ; ############################################################################# ############################################################################# ############### TO BE CUSTOMIZED -- WINDOWS ################# lib pythonlib : : <name>python26 <search>" D:/Python26/libs " ; lib boost_python_lib : : <variant>debug <name>boost_python-vc90-mt-gd-1_42 <search>"D:/external_libraries/boost_1_42_0/lib" ; lib boost_python_lib : : <variant>release <name>boost_python-vc90-mt-1_42 <search>"D:/external_libraries/boost_1_42_0/lib" ; ############################################################################# #blas and lapack libraries lib blaslibrary : : <name>blas <search>$(BLAS_LIB_DIR) <link>shared ; lib lapacklibrary : : <name>lapack <search>$(LAPACK_LIB_DIR) <link>shared ; #intel omp library... lib intelomp : : <name>guide ; #ATTENTION: "this requires adding threading=multi to the bjam call" alias libomp : intelomp : <toolset>intel ; alias libomp : : <toolset>gcc ; alias libomp : : <toolset>msvc ; alias libomp : : <toolset>sun ; ## MPI LIBRARIES - comment out if using mpi is not required ##lib mpilibrary : : <name>mpi <search>$(MPI_LIB_DIR) ; ##lib mpilibrary_cpp : : <name>mpi_cxx <search>$(MPI_LIB_DIR) ; ################################################################################# # IN PRINCIPLE THIS SHOULD REQUIRE NO CUSTOMARIZATION .. apart for compiling new applications ## defining "ids" for the different projects use-project /kratos-prj : . ; ##gid post library use-project /kratos-prj/gidpost : "D:/external_libraries/gidpost" ; ##kratos base library and python interfaces use-project /kratos-prj/kratos : kratos ; ##applications included in the compilation use-project /kratos-prj/PFEMapplication : $(TOP)/applications/PFEMapplication ; use-project /kratos-prj/incompressible_fluid_application : $(TOP)/applications/incompressible_fluid_application ; use-project /kratos-prj/structural_application : $(TOP)/applications/structural_application ; use-project /kratos-prj/convection_diffusion_application : $(TOP)/applications/convection_diffusion_application ; use-project /kratos-prj/ExternalSolversApplication : $(TOP)/applications/ExternalSolversApplication ; use-project /kratos-prj/ULFapplication : $(TOP)/applications/ULFapplication ; use-project /kratos-prj/ALEapplication : $(TOP)/applications/ALEapplication ; use-project /kratos-prj/FSIapplication : $(TOP)/applications/FSIapplication ; use-project /kratos-prj/MeshingApplication : $(TOP)/applications/MeshingApplication ; ##use-project /kratos-prj/Qcompressible_fluid_application : $(TOP)/applications/Qcompressible_fluid_application ; ## REQUIRES METIS TO BE INSTALLED ##use-project /kratos-prj/MetisApplication : $(TOP)/applications/metis_application ; ## REQUIRES TRILINOS TO BE INSTALLED ##use-project /kratos-prj/TrilinosApplication : $(TOP)/applications/trilinos_application ; ## MKL solvers: will not be compiled by default ################################################### ## this requires intel MKL library (v. 10.0.1.014) installed properly on your system ############## #use-project /kratos-prj/mkl_solvers_application : $(TOP)/applications/mkl_solvers_application ; # GPU Solvers: needs CUDA to be installed and appropriate environment variable set, a GT200 series GPU card (GTX260, GTX 280, etc.) with the *latest* driver installed # Before trying to compile this application, go to "~/kratos/applications/gpu_solvers_application/custom_external_libraries" and issue a "./build.sh" to build the "gpu_sparse.a" library use-project /kratos-prj/gpu_solvers_application : $(TOP)/applications/gpu_solvers_application ; ################################################################################################### alias libkratos_static : /kratos-prj/kratos//libkratos/<link>static ; alias gidpost : /kratos-prj/gidpost//gidpost/<link>static ; ################################################################################# ## installation alias install : /kratos-prj//kratos /kratos-prj/PFEMapplication//install /kratos-prj/incompressible_fluid_application//install /kratos-prj/structural_application//install /kratos-prj/convection_diffusion_application//install /kratos-prj/ExternalSolversApplication//install /kratos-prj/ULFapplication//install /kratos-prj/ALEapplication//install /kratos-prj/MeshingApplication//install # /kratos-prj/FSIapplication//install # /kratos-prj/mkl_solvers_application//install # /kratos-prj/Qcompressible_fluid_application//install # /kratos-prj/MetisApplication//install # /kratos-prj/TrilinosApplication//install # /kratos-prj/gpu_solvers_application//install ; ECHO $(TOP) ;
Creation of the Microsoft Visual Studio 2008 Kratos Project
- Open your MS Visual Studio
- To create the Kratos Project, select: Visual Studio - New Project - General - Makefile Project
- Name: any name you want, but avoid spaces or unusual characters, for example you can use KratosIDE2010
- Location: your kratos main folder ("C:\Kratos2010\kratos" or "D:\Kratos2010\kratos")
- Be sure that the "create directory for solution" is UNMARKED
- To create the Kratos Project, select: Visual Studio - New Project - General - Makefile Project
- Select Debug Configuration Settings (the -jN options, use N as the number of processors)
- Build command line: bjam toolset=msvc threading=multi debug –j2
- Clean command line: bjam toolset=msvc threading=multi debug clean –j2
- Rebuild command line: bjam toolset=msvc threading=multi debug -a –j2
- Delete the name of the .exe file
- Select Debug Configuration Settings (the -jN options, use N as the number of processors)
- Select Release Configuration Settings
- The "Same as debug configuration" option should be unmarked
- Build command line: bjam toolset=msvc threading=multi release –j2
- Clean command line: bjam toolset=msvc threading=multi release clean –j2
- Rebuild command line: bjam toolset=msvc threading=multi release -a –j2
- Delete the name of the .exe file
- Select Release Configuration Settings
-
- Click Finish
- Now close the MS Visual Studio and check if a new folder has been created (probably at "C:\Kratos2010\kratos\KratosIDE2010" or "D:\Kratos2010\kratos\KratosIDE2010"). This folder is not any longer necessary, so you can copy all the files in it to your Kratos root ("C:\Kratos2010\kratos" or "D:\Kratos2010\kratos") and delete it. This operation is not strictly necessary.
- Open again your MS Visual Studio 2008, and open the project KratosIDE2010 from the kratos root.
- Check the project properties:
- It should be like:
- Considering that Kratos works as a library, the program to execute the code is python, so in the Command field you have to indicate the python.exe file ("C:\Python26\python.exe" or "D:\Python26\python.exe"). The Command Arguments and Working Directory will be defined with the specific application, as we will see when we check the whole installation process.
- The NMake window for the Debug and Release options contains what we have already defined when we created the kratos project.
- The installation process has finished.
First compilation and typical errors
- Please, select Build - Build Solution
- Patience... due to the parallel development for Linux and Windows, you may find errors such as:
Error 91 error C2664: 'GiD_BeginResult' : cannot convert parameter 6 from 'const char *' to 'char *' c:\Kratos2010\kratos\applications\structural_application\custom_utilities\custom_gid_io.h 195
- en the following files custom_gid_io.h, edgedbased_gid_io.h, twofluid_gid_io.h, gid_mesh_container.h, gid_gauss_point_container.h, pfem_gid_io.h
- For each file,it is enough to make a replacement: Edit – Find and Replace – Quick Replace
- Find what: const char * Replace with: char *
- Other typical error in Windows is:
Error 57 fatal error C1083: Cannot open include file: 'sys/times.h': No such file or directory c:\Kratos2010\kratos\applications\ExternalSolversApplication\custom_external_libraries\SuperLU_3.0\SRC\superlu_timer.c 27
- This is because the SuperLU library (developed in the External Solvers Application) has been developed only for Linux. Therefore, this application should be removed from the Windows compilation.
- Open the Jamroot file again and add a comment character to the ExternalSolversApplication. The part to modify is:
##applications included in the compilation use-project /kratos-prj/PFEMapplication : $(TOP)/applications/PFEMapplication ; use-project /kratos-prj/incompressible_fluid_application : $(TOP)/applications/incompressible_fluid_application ; use-project /kratos-prj/structural_application : $(TOP)/applications/structural_application ; use-project /kratos-prj/convection_diffusion_application : $(TOP)/applications/convection_diffusion_application ; ##use-project /kratos-prj/ExternalSolversApplication : $(TOP)/applications/ExternalSolversApplication ; use-project /kratos-prj/ULFapplication : $(TOP)/applications/ULFapplication ; use-project /kratos-prj/ALEapplication : $(TOP)/applications/ALEapplication ; use-project /kratos-prj/FSIapplication : $(TOP)/applications/FSIapplication ; use-project /kratos-prj/MeshingApplication : $(TOP)/applications/MeshingApplication ; ##use-project /kratos-prj/Qcompressible_fluid_application : $(TOP)/applications/Qcompressible_fluid_application ; ## REQUIRES METIS TO BE INSTALLED ##use-project /kratos-prj/MetisApplication : $(TOP)/applications/metis_application ; ## REQUIRES TRILINOS TO BE INSTALLED ##use-project /kratos-prj/TrilinosApplication : $(TOP)/applications/trilinos_application ; ## MKL solvers: will not be compiled by default ################################################### ## this requires intel MKL library (v. 10.0.1.014) installed properly on your system ############## #use-project /kratos-prj/mkl_solvers_application : $(TOP)/applications/mkl_solvers_application ; # GPU Solvers: needs CUDA to be installed and appropriate environment variable set, a GT200 series GPU card (GTX260, GTX 280, etc.) with the *latest* driver installed # Before trying to compile this application, go to "~/kratos/applications/gpu_solvers_application/custom_external_libraries" and issue a "./build.sh" to build the "gpu_sparse.a" library use-project /kratos-prj/gpu_solvers_application : $(TOP)/applications/gpu_solvers_application ; ################################################################################################### alias libkratos_static : /kratos-prj/kratos//libkratos/<link>static ; alias gidpost : /kratos-prj/gidpost//gidpost/<link>static ; ################################################################################# ## installation alias install : /kratos-prj//kratos /kratos-prj/PFEMapplication//install /kratos-prj/incompressible_fluid_application//install /kratos-prj/structural_application//install /kratos-prj/convection_diffusion_application//install # /kratos-prj/ExternalSolversApplication//install /kratos-prj/ULFapplication//install /kratos-prj/ALEapplication//install /kratos-prj/MeshingApplication//install # /kratos-prj/FSIapplication//install # /kratos-prj/mkl_solvers_application//install # /kratos-prj/Qcompressible_fluid_application//install # /kratos-prj/MetisApplication//install # /kratos-prj/TrilinosApplication//install # /kratos-prj/gpu_solvers_application//install ; ECHO $(TOP) ;
- Now, after some time, it should work...
- Debug version
- Release version