Topic: Windows parallel version?

Hello everyone,

there is a OOFEM parallel version for Windows? It is supported?
I cannot find any information in the site or in Google; I'd like to learn how to use domain decomposition. Anyone has some stuff to start with?

Thanks

Re: Windows parallel version?

There should be no problems, other than that PETSc might be tedious/difficult to install.
I know PETSc 3.2 moved to CMake, so maybe it has gotten easier to install. And then there is configuring and installing OOFEM itself, but that is no big difference from the sequential build.

Re: Windows parallel version?

After a logn time (one year!), I'm back...
Thank you for the answer, I successfully installed PETSc in Cygwin (my machine works with VS2008 + Ifort 11.1).

I cannot find detailed instruction for what to do to compile the parallel version. I've done the installation guide for windows:

until the phrase "TinyXML2 is required to read input files ..."; I can't really understand this part.

Please help,
thanks a lot
Giovanni

Re: Windows parallel version?

The TinyXML2 library is optional, only necessary for CemHyd support. If you don't need cemhyd then just ignore that section.
Just run the "cmake" command and then the "make" command.

Re: Windows parallel version?

Thanks a lot. And where do I specify the directive USE_PARALLEL="ON" ?
To use oofem in structural analysis may I have to use also ParMETIS? Or PETSc would be enough?

Giovanni

ps.
following the previous procedure to compile oofem, I get oofem.exe with a size of 54.4MB, while the binary on hte official site is only 2.6MB. Why? Have I done something wrong?

Re: Windows parallel version?

Hi. You have likely compiled the debug version, which contains all debug symbols (very useful for developing). If you haven't specified
If you compile for the "Release" target it should be much smaller (if nothing is specified, "Debug" is default) and much much faster.
This is the value for the "CMAKE_BUILD_TYPE" parameter in cmake, which you can set from the command line, or with the graphical interface for CMake

ParMETIS isn't required. SLEPc would be required if you want to run any eigenvalue analysis (in parallel at least)

If you have managed to compile OOFEM, run the tests to see if it works properly, either with CTest directly or "make tests" or equivalent.

Re: Windows parallel version?

thank you for the explanation, now it's clear.
last thing: I tried to compile in cygwin with PETSc (which has been previously compiled with default options). I get the following error on make:

casa2@casa2-PC ~/oofem.git/target
$ mingw32-make.exe
Scanning dependencies of target sm
[  0%] Building CXX object src/sm/CMakeFiles/sm.dir/structuralelementevaluator.C
.obj
C:\cygwin\home\casa2\oofem.git\src\sm\structuralelementevaluator.C:1:0: warning:
-fPIC ignored for target (all code is position independent) [enabled by default
]
In file included from C:/cygwin/home/casa2/oofem.git/src/oofemlib/engngm.h:66:0,

                 from C:/cygwin/home/casa2/oofem.git/src/oofemlib/timestep.h:44,

                 from C:/cygwin/home/casa2/oofem.git/src/oofemlib/material.h:43,

                 from C:/cygwin/home/casa2/oofem.git/src/oofemlib/crosssection.h
:42,
                 from C:\cygwin\home\casa2\oofem.git\src\sm\structuralelementeva
luator.C:44:
C:/cygwin/home/casa2/oofem.git/src/oofemlib/petsccontext.h:41:24: fatal error: p
etscvec.h: No such file or directory
compilation terminated.
mingw32-make[2]: *** [src/sm/CMakeFiles/sm.dir/structuralelementevaluator.C.obj]
Error 1
mingw32-make[1]: *** [src/sm/CMakeFiles/sm.dir/all] Error 2
mingw32-make: *** [all] Error 2

Is the file "petscvec.h" missing?

Last thing: what file should be used for the cmake var PETSC_MPI_LIB?

Thanks again,
Giovanni

Re: Windows parallel version?

You have to specify the path to petsc, and the petsc arch and it should work.
I'm on linux so i have petsc compiled into a folder named "/home/micket/petsc-3.3-p5/arch-linux2-c-debug/"
in which case you need to specify exactly

MY_PETSC_DIR /home/micket/petsc-3.3-p5/
MY_PETSC_ARCH arch-linux2-c-debug

together with "USE_PARALLEL" and "USE_PETSC" set on (you must use version 3.3 of PETSc)
I have never done anything with PETSC_MPI_LIB

Re: Windows parallel version?

I tried with petsc-3.3-p6 and setting MY_PETSC_DIR and MY_PETSC_ARCH as you said; PETSC_MPI_LIB is still required; I set temporarly  to the same lib as in PETSC_LIB. Unfortunately the make command causes this error:

C:/cygwin/home/casa2/petsc-3.3-p6/arch-mswin-c-debug/include/petscfix.h:7:13: er
ror: conflicting declaration 'typedef int mode_t'
c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/sys/types.h:99:17: err
or: 'mode_t' has a previous declaration as 'typedef _mode_t mode_t'
mingw32-make[2]: *** [src/fm/CMakeFiles/fm.dir/cbs.C.obj] Error 1
mingw32-make[1]: *** [src/fm/CMakeFiles/fm.dir/all] Error 2
mingw32-make: *** [all] Error 2

I think that there is still something wrong compiling with ptesc in windows.

Re: Windows parallel version?

I've never compiled PETSc on Windows, but on linux, PETSc automatically finds my OpenMPI installation. I checked my cache and i have

//Path to a library.
PETSC_MPI_LIB:FILEPATH=/usr/lib/openmpi/lib/libmpi.so

I thought PETSc downloaded MPI itself by default, but it seems you have to specify it manually.
Either download and install som MPI library, but the most likely easier version, tell PETSc to download it for you

./configure --download-openmp=yes --download-cholmod=yes

(cholmod is an excellent direct solver for positive definite problems, so get that as well, others you can try is UMFPACK, PASTIX, SUPERLU, ...)

Re: Windows parallel version?

Hi Mikael, thank again for your support.
The command arguments:

--download-openmp=yes --download-cholmod=yes

don't work in Cygwin, but I was able to install the packages via Cygwin's setup.exe. I'm trying to recompile, using also libmpi.dll.

In the meanwhile, I'm trying to get a compiled version via VS2008. IML support is still missing, I'm trying to resolve. In the meanwhile, I kindly ask you how I can launch a parallel analysis and, if you have it, a test file for a parallel run. My final aim is to bring the parallel analysis with oofem in Windows.

Giovanni R.

Re: Windows parallel version?

I made a typo, it should have been

--download-openmpi=yes

but you should be able to specify the library manually as well.

I highly recommend using graphical, or ncurses interface for CMake, which will show you all the options, where you can enable IML support (IML is very slow in my experience).


OOFEM has plenty of tests available, including parallel tests located in test/partest/
Specify to OOFEM to run in parallel by using the "-p" flag

mpirun -np 4 ./oofem -p -f path/to/oofem/tests/partests/planestress/planestress.oofem.in

As you can see from the cmake GUI there is also support for OpenMP (not to be confused with OpenMPI), and the PastiX solver in PETSc also runs in shared memory, so for a single machine you don't need to subdivide the domain as with MPI.

Re: Windows parallel version?

Thanks again. PETSc is fine now, but the oofem make cannot ho ahead. Now the error is the following:

C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/include/petscfix.h: At global scope:
C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/include/petscfix.h:7:13: error: conflicting declaration 'typedef int mode_t'
c:\mingw\bin\../lib/gcc/mingw32/4.6.2/../../../../include/sys/types.h:99:17: error: 'mode_t' has a previous declaration as 'typedef _mode_t mode_t'
mingw32-make[2]: *** [src/sm/CMakeFiles/sm.dir/lspace.C.obj] Error 1
mingw32-make[1]: *** [src/sm/CMakeFiles/sm.dir/all] Error 2
mingw32-make: *** [all] Error 2

I attach the cmakecache:

########################
# EXTERNAL cache entries
########################

//Build the testing tree.
BUILD_TESTING:BOOL=ON

//Path to a program.
BZRCOMMAND:FILEPATH=BZRCOMMAND-NOTFOUND

//Manual CKit directory (OOFEG only)
CKIT_DIR:PATH=

//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
CMAKE_BUILD_TYPE:STRING=Release

//Enable/Disable color output during build.
CMAKE_COLOR_MAKEFILE:BOOL=ON

//CXX compiler.
CMAKE_CXX_COMPILER:FILEPATH=C:/MinGW/bin/g++.exe

//Flags used by the compiler during all build types.
CMAKE_CXX_FLAGS:STRING=

//Flags used by the compiler during debug builds.
CMAKE_CXX_FLAGS_DEBUG:STRING=-g

//Flags used by the compiler during release minsize builds.
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG

//Flags used by the compiler during release builds (/MD /Ob1 /Oi
// /Ot /Oy /Gs will produce slightly less optimized but smaller
// files).
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG

//Flags used by the compiler during Release with Debug Info builds.
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG

//Libraries linked by defalut with all C++ applications.
CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32

//C compiler.
CMAKE_C_COMPILER:FILEPATH=C:/MinGW/bin/gcc.exe

//Flags used by the compiler during all build types.
CMAKE_C_FLAGS:STRING=

//Flags used by the compiler during debug builds.
CMAKE_C_FLAGS_DEBUG:STRING=-g

//Flags used by the compiler during release minsize builds.
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG

//Flags used by the compiler during release builds (/MD /Ob1 /Oi
// /Ot /Oy /Gs will produce slightly less optimized but smaller
// files).
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG

//Flags used by the compiler during Release with Debug Info builds.
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG

//Libraries linked by defalut with all C applications.
CMAKE_C_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32

//Flags used by the linker.
CMAKE_EXE_LINKER_FLAGS:STRING=' '

//Flags used by the linker during debug builds.
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=

//Flags used by the linker during release minsize builds.
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=

//Flags used by the linker during release builds.
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=

//Flags used by the linker during Release with Debug Info builds.
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=

//Convert GNU import libraries to MS format (requires Visual Studio)
CMAKE_GNUtoMS:BOOL=OFF

//Install path prefix, prepended onto install directories.
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/oofem

//Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=C:/MinGW/bin/mingw32-make.exe

//Flags used by the linker during the creation of modules.
CMAKE_MODULE_LINKER_FLAGS:STRING=' '

//Flags used by the linker during debug builds.
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=

//Flags used by the linker during release minsize builds.
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=

//Flags used by the linker during release builds.
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=

//Flags used by the linker during Release with Debug Info builds.
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=

//Value Computed by CMake
CMAKE_PROJECT_NAME:STATIC=oofem

//RC compiler.
CMAKE_RC_COMPILER:FILEPATH=C:/MinGW/bin/windres.exe

//Flags for Fortran compiler.
CMAKE_RC_FLAGS:STRING=' '

//Path to a program.
CMAKE_SH:FILEPATH=CMAKE_SH-NOTFOUND

//Flags used by the linker during the creation of dll's.
CMAKE_SHARED_LINKER_FLAGS:STRING=' '

//Flags used by the linker during debug builds.
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=

//Flags used by the linker during release minsize builds.
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=

//Flags used by the linker during release builds.
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=

//Flags used by the linker during Release with Debug Info builds.
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=

//If set, runtime paths are not added when installing shared libraries,
// but are added when building.
CMAKE_SKIP_INSTALL_RPATH:BOOL=OFF

//If set, runtime paths are not added when using shared libraries.
CMAKE_SKIP_RPATH:BOOL=OFF

//If true, cmake will use relative paths in makefiles and projects.
CMAKE_USE_RELATIVE_PATHS:BOOL=OFF

//If this value is on, makefiles will be generated without the
// .SILENT directive, and all commands will be echoed to the console
// during the make.  This is useful for debugging only. With Visual
// Studio IDE projects all commands are done without /nologo.
CMAKE_VERBOSE_MAKEFILE:BOOL=OFF

//Path to the coverage program that CTest uses for performing coverage
// inspection
COVERAGE_COMMAND:FILEPATH=C:/MinGW/bin/gcov.exe

//Extra command line flags to pass to the coverage tool
COVERAGE_EXTRA_FLAGS:STRING=-l

//How many times to retry timed-out CTest submissions.
CTEST_SUBMIT_RETRY_COUNT:STRING=3

//How long to wait between timed-out CTest submissions.
CTEST_SUBMIT_RETRY_DELAY:STRING=5

//Path to a program.
CVSCOMMAND:FILEPATH=CVSCOMMAND-NOTFOUND

//Options passed to the cvs update command.
CVS_UPDATE_OPTIONS:STRING=-d -A -P

//Maximum time allowed before CTest will kill the test.
DART_TESTING_TIMEOUT:STRING=1500

//Graphviz Dot tool for using Doxygen
DOXYGEN_DOT_EXECUTABLE:FILEPATH=DOXYGEN_DOT_EXECUTABLE-NOTFOUND

//Doxygen documentation generation tool (http://www.doxygen.org)
DOXYGEN_EXECUTABLE:FILEPATH=DOXYGEN_EXECUTABLE-NOTFOUND

//Manual Elixir directory (OOFEG only)
ELIXIR_DIR:PATH=

//Path to a program.
GITCOMMAND:FILEPATH=GITCOMMAND-NOTFOUND

//Path to a program.
HGCOMMAND:FILEPATH=HGCOMMAND-NOTFOUND

//Name of the computer/site where compile is being run
HOST_NAME:STRING=SETTE

//Manual IML++ directory
IML_DIR:PATH=

//Manual LAPACK directory
LAPACK_DIR:PATH=

//Command to build the project
MAKECOMMAND:STRING=C:/MinGW/bin/mingw32-make.exe -i

//Path to the memory checking command, used for memory error detection.
MEMORYCHECK_COMMAND:FILEPATH=MEMORYCHECK_COMMAND-NOTFOUND

//File that contains suppressions for the memory checker
MEMORYCHECK_SUPPRESSIONS_FILE:FILEPATH=

//Executable for running MPI programs.
MPIEXEC:FILEPATH=C:/Program Files (x86)/MPICH2/bin/mpiexec.exe

//Maximum number of processors available to run MPI applications.
MPIEXEC_MAX_NUMPROCS:STRING=2

//Flag used by MPI to specify the number of processes for MPIEXEC;
// the next option will be the number of processes.
MPIEXEC_NUMPROC_FLAG:STRING=-np

//These flags will come after all flags given to MPIEXEC.
MPIEXEC_POSTFLAGS:STRING=

//These flags will be directly before the executable that is being
// run by MPIEXEC.
MPIEXEC_PREFLAGS:STRING=

//Path to a program.
MPI_CXX_COMPILER:FILEPATH=MPI_CXX_COMPILER-NOTFOUND

//MPI CXX compilation flags
MPI_CXX_COMPILE_FLAGS:STRING=

//MPI CXX include path
MPI_CXX_INCLUDE_PATH:STRING=C:/Program Files (x86)/MPICH2/include

//MPI CXX libraries to link against
MPI_CXX_LIBRARIES:STRING=C:/Program Files (x86)/MPICH2/lib/libmpi.a;C:/Program Files (x86)/MPICH2/lib/libmpicxx.a

//MPI CXX linking flags
MPI_CXX_LINK_FLAGS:STRING=

//Path to a program.
MPI_C_COMPILER:FILEPATH=MPI_C_COMPILER-NOTFOUND

//MPI C compilation flags
MPI_C_COMPILE_FLAGS:STRING=

//MPI C include path
MPI_C_INCLUDE_PATH:STRING=C:/Program Files (x86)/MPICH2/include

//MPI C libraries to link against
MPI_C_LIBRARIES:STRING=C:/Program Files (x86)/MPICH2/lib/libmpi.a

//MPI C linking flags
MPI_C_LINK_FLAGS:STRING=

//Manual MPI directory
MPI_DIR:PATH=

//Extra MPI libraries to link against
MPI_EXTRA_LIBRARY:STRING=C:/Program Files (x86)/MPICH2/lib/libmpicxx.a

//MPI library to link against
MPI_LIBRARY:FILEPATH=C:/Program Files (x86)/MPICH2/lib/libmpi.a

//Manual PETSc arch name (e.g. linux-gnu-cxx-opt)
MY_PETSC_ARCH:STRING=arch-mswin-c-debug

//Manual PETSc directory
MY_PETSC_DIR:PATH=C:/cygwin/home/Giovanni/petsc-3.3-p6/

//C++ compiler flags for OpenMP parallization
OpenMP_CXX_FLAGS:STRING=-fopenmp

//C compiler flags for OpenMP parallization
OpenMP_C_FLAGS:STRING=-fopenmp

//Path to a library.
PETSC_ADVAPI32_LIB:FILEPATH=C:/Windows/System32/advapi32.dll

//Path to a library.
PETSC_FBLAS_LIB:FILEPATH=C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libfblas.lib

//Path to a library.
PETSC_FLAPACK_LIB:FILEPATH=C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libflapack.lib

//Path to a library.
PETSC_FMPICH2G_LIB:FILEPATH=C:/Program Files (x86)/MPICH2/lib/libfmpich2g.a

//Path to a library.
PETSC_FMPICH2S_LIB:FILEPATH=C:/Program Files (x86)/MPICH2/lib/fmpich2s.lib

//Path to a library.
PETSC_FMPICH2_LIB:FILEPATH=C:/Program Files (x86)/MPICH2/lib/fmpich2.lib

//Path to a library.
PETSC_GDI32_LIB:FILEPATH=C:/Windows/System32/gdi32.dll

//Path to a library.
PETSC_KERNEL32_LIB:FILEPATH=C:/Windows/System32/kernel32.dll

//Path to a library.
PETSC_LIB:FILEPATH=C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libpetsc.lib

//Path to a library.
PETSC_MPI_LIB:FILEPATH=C:/Program Files (x86)/MPICH2/lib/libmpi.a

//Path to a library.
PETSC_USER32_LIB:FILEPATH=C:/Windows/System32/user32.dll

//Path to a library.
PETSC_WS2_32_LIB:FILEPATH=C:/Windows/System32/ws2_32.dll

//The directory containing a CMake configuration file for PETSc.
PETSc_DIR:PATH=C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/conf

//Path to a program.
PYTHON_EXECUTABLE:FILEPATH=C:/Python24/python.exe

//Path to scp command, used by CTest for submitting results to
// a Dart server
SCPCOMMAND:FILEPATH=SCPCOMMAND-NOTFOUND

//Name of the computer/site where compile is being run
SITE:STRING=SETTE

//Manual SLEPc directory
SLEPC_DIR:PATH=

//Path to the SLURM sbatch executable
SLURM_SBATCH_COMMAND:FILEPATH=SLURM_SBATCH_COMMAND-NOTFOUND

//Path to the SLURM srun executable
SLURM_SRUN_COMMAND:FILEPATH=SLURM_SRUN_COMMAND-NOTFOUND

//Manual SPOOLES directory
SPOOLES_DIR:PATH=

//Path to a program.
SVNCOMMAND:FILEPATH=SVNCOMMAND-NOTFOUND

//Manual TinyXML-2 directory
TINYXML2_DIR:PATH=

//Enable CemHyd support
USE_CEMHYD:BOOL=OFF

//Enable DSS module
USE_DSS:BOOL=OFF

//Enable fluid mechanics module
USE_FM:BOOL=ON

//Enable iml++ solvers
USE_IML:BOOL=ON

//Use LAPACK
USE_LAPACK:BOOL=OFF

//Enable OOFEG
USE_OOFEG:BOOL=OFF

//Compile with OpenMP support (for parallel assembly)
USE_OPENMP:BOOL=ON

//Enable parallel support
USE_PARALLEL:BOOL=ON

//Enable Parmetis support
USE_PARMETIS:BOOL=OFF

//Enable PETSc support (required for parallel)
USE_PETSC:BOOL=ON

//Enable Python bidings
USE_PYTHON_BINDINGS:BOOL=OFF

//Build shared library
USE_SHARED_LIB:BOOL=OFF

//Enable SLEPc support
USE_SLEPC:BOOL=OFF

//Enable structural mechanics module
USE_SM:BOOL=ON

//Enable SPOOLES-solver
USE_SPOOLES:BOOL=OFF

//Build static library
USE_STATIC_LIB:BOOL=OFF

//Enable heat/mass transfer module
USE_TM:BOOL=ON

//Compile with Triangle bindings
USE_TRIANGLE:BOOL=OFF

//Enable VTK (for exporting binary VTU-files)
USE_VTK:BOOL=OFF

//Manual VTK directory
VTK_DIR:PATH=

//Manual X11 directory
X11_DIR:PATH=

//Dependencies for the target
liboofem_static_LIB_DEPENDS:STATIC=general;C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libpetsc.lib;general;C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libflapack.lib;general;C:/cygwin/home/Giovanni/petsc-3.3-p6/arch-mswin-c-debug/lib/libfblas.lib;general;C:/Program Files (x86)/MPICH2/lib/fmpich2.lib;general;C:/Program Files (x86)/MPICH2/lib/libfmpich2g.a;general;C:/Program Files (x86)/MPICH2/lib/fmpich2s.lib;general;C:/Program Files (x86)/MPICH2/lib/libmpi.a;general;C:/Windows/System32/gdi32.dll;general;C:/Windows/System32/user32.dll;general;C:/Windows/System32/advapi32.dll;general;C:/Windows/System32/kernel32.dll;general;C:/Windows/System32/ws2_32.dll;general;C:/Program Files (x86)/MPICH2/lib/libmpi.a;general;C:/Program Files (x86)/MPICH2/lib/libmpicxx.a;

//Value Computed by CMake
oofem_BINARY_DIR:STATIC=C:/cygwin/home/Giovanni/oofem-2.2/target

//Value Computed by CMake
oofem_SOURCE_DIR:STATIC=C:/cygwin/home/Giovanni/oofem-2.2


########################
# INTERNAL cache entries
########################

//ADVANCED property for variable: BZRCOMMAND
BZRCOMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_BUILD_TOOL
CMAKE_BUILD_TOOL-ADVANCED:INTERNAL=1
//What is the target build tool cmake is generating for.
CMAKE_BUILD_TOOL:INTERNAL=C:/MinGW/bin/mingw32-make.exe
//This is the directory where this CMakeCache.txt was created
CMAKE_CACHEFILE_DIR:INTERNAL=c:/cygwin/home/Giovanni/oofem-2.2/target
//Major version of cmake used to create the current loaded cache
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=2
//Minor version of cmake used to create the current loaded cache
CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
//Patch version of cmake used to create the current loaded cache
CMAKE_CACHE_PATCH_VERSION:INTERNAL=10
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
//Path to CMake executable.
CMAKE_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake.exe
//Path to cpack program executable.
CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cpack.exe
//ADVANCED property for variable: CMAKE_CTEST_COMMAND
CMAKE_CTEST_COMMAND-ADVANCED:INTERNAL=1
//Path to ctest program executable.
CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/ctest.exe
//ADVANCED property for variable: CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES
CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
//Path to cache edit program executable.
CMAKE_EDIT_COMMAND:INTERNAL=C:/Program Files (x86)/CMake 2.8/bin/cmake-gui.exe
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//Name of generator.
CMAKE_GENERATOR:INTERNAL=MinGW Makefiles
//Start directory with the top level CMakeLists.txt file for this
// project
CMAKE_HOME_DIRECTORY:INTERNAL=C:/cygwin/home/Giovanni/oofem-2.2
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//number of local generators
CMAKE_NUMBER_OF_LOCAL_GENERATORS:INTERNAL=5
//ADVANCED property for variable: CMAKE_RC_FLAGS
CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1
//Path to CMake installation.
CMAKE_ROOT:INTERNAL=C:/Program Files (x86)/CMake 2.8/share/cmake-2.8
//ADVANCED property for variable: CMAKE_SH
CMAKE_SH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_SKIP_RPATH
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
//Suppress Warnings that are meant for the author of the CMakeLists.txt
// files.
CMAKE_SUPPRESS_DEVELOPER_WARNINGS:INTERNAL=FALSE
//ADVANCED property for variable: CMAKE_USE_RELATIVE_PATHS
CMAKE_USE_RELATIVE_PATHS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: COVERAGE_COMMAND
COVERAGE_COMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: COVERAGE_EXTRA_FLAGS
COVERAGE_EXTRA_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CTEST_SUBMIT_RETRY_COUNT
CTEST_SUBMIT_RETRY_COUNT-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CTEST_SUBMIT_RETRY_DELAY
CTEST_SUBMIT_RETRY_DELAY-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CVSCOMMAND
CVSCOMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: CVS_UPDATE_OPTIONS
CVS_UPDATE_OPTIONS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: DART_TESTING_TIMEOUT
DART_TESTING_TIMEOUT-ADVANCED:INTERNAL=1
//ADVANCED property for variable: DOXYGEN_DOT_EXECUTABLE
DOXYGEN_DOT_EXECUTABLE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: DOXYGEN_EXECUTABLE
DOXYGEN_EXECUTABLE-ADVANCED:INTERNAL=1
//Details about finding MPI_C
FIND_PACKAGE_MESSAGE_DETAILS_MPI_C:INTERNAL=[C:/Program Files (x86)/MPICH2/lib/libmpi.a][C:/Program Files (x86)/MPICH2/include][v()]
//Details about finding MPI_CXX
FIND_PACKAGE_MESSAGE_DETAILS_MPI_CXX:INTERNAL=[C:/Program Files (x86)/MPICH2/lib/libmpi.a;C:/Program Files (x86)/MPICH2/lib/libmpicxx.a][C:/Program Files (x86)/MPICH2/include][v()]
//Details about finding OpenMP
FIND_PACKAGE_MESSAGE_DETAILS_OpenMP:INTERNAL=[-fopenmp][-fopenmp][v()]
//Details about finding PythonInterp
FIND_PACKAGE_MESSAGE_DETAILS_PythonInterp:INTERNAL=[C:/Python24/python.exe][v2.4.4()]
//ADVANCED property for variable: GITCOMMAND
GITCOMMAND-ADVANCED:INTERNAL=1
//Have symbol access
HAVE_ACCESS:INTERNAL=1
//Have symbol cbrt
HAVE_CBRT:INTERNAL=1
//Have includes execinfo.h
HAVE_EXECINFO_H:INTERNAL=
//Have include iml/cg.h
HAVE_IML_CG_H:INTERNAL=1
//Have include iml/gmres.h
HAVE_IML_GMRES_H:INTERNAL=1
//Have symbol isnan
HAVE_ISNAN:INTERNAL=
//Test HAVE_MACRO_VA_ARGS
HAVE_MACRO_VA_ARGS:INTERNAL=1
//Have symbol M_LN2
HAVE_M_LN2:INTERNAL=1
//Have symbol M_PI
HAVE_M_PI:INTERNAL=1
//Have symbol nearest
HAVE_NEAREST:INTERNAL=
//Have include strings.h
HAVE_STRINGS_H:INTERNAL=1
//Have symbol strncasecmp
HAVE_STRNCASECMP:INTERNAL=1
//Have include sys/time.h
HAVE_SYS_TIME_H:INTERNAL=1
//Have include time.h
HAVE_TIME_H:INTERNAL=1
//Have include unistd.h
HAVE_UNISTD_H:INTERNAL=1
//ADVANCED property for variable: HGCOMMAND
HGCOMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MAKECOMMAND
MAKECOMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MEMORYCHECK_COMMAND
MEMORYCHECK_COMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MEMORYCHECK_SUPPRESSIONS_FILE
MEMORYCHECK_SUPPRESSIONS_FILE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC
MPIEXEC-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_MAX_NUMPROCS
MPIEXEC_MAX_NUMPROCS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_NUMPROC_FLAG
MPIEXEC_NUMPROC_FLAG-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_POSTFLAGS
MPIEXEC_POSTFLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPIEXEC_PREFLAGS
MPIEXEC_PREFLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILER
MPI_CXX_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_COMPILE_FLAGS
MPI_CXX_COMPILE_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_INCLUDE_PATH
MPI_CXX_INCLUDE_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_LIBRARIES
MPI_CXX_LIBRARIES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_CXX_LINK_FLAGS
MPI_CXX_LINK_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_C_COMPILER
MPI_C_COMPILER-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_C_COMPILE_FLAGS
MPI_C_COMPILE_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_C_INCLUDE_PATH
MPI_C_INCLUDE_PATH-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_C_LIBRARIES
MPI_C_LIBRARIES-ADVANCED:INTERNAL=1
//ADVANCED property for variable: MPI_C_LINK_FLAGS
MPI_C_LINK_FLAGS-ADVANCED:INTERNAL=1
//Scratch variable for MPI header detection
MPI_HEADER_PATH:INTERNAL=MPI_HEADER_PATH-NOTFOUND
//Scratch variable for MPI lib detection
MPI_LIB:INTERNAL=MPI_LIB-NOTFOUND
//ADVANCED property for variable: OpenMP_CXX_FLAGS
OpenMP_CXX_FLAGS-ADVANCED:INTERNAL=1
//ADVANCED property for variable: OpenMP_C_FLAGS
OpenMP_C_FLAGS-ADVANCED:INTERNAL=1
//Test OpenMP_FLAG_DETECTED
OpenMP_FLAG_DETECTED:INTERNAL=1
//ADVANCED property for variable: PETSC_ADVAPI32_LIB
PETSC_ADVAPI32_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_FBLAS_LIB
PETSC_FBLAS_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_FLAPACK_LIB
PETSC_FLAPACK_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_FMPICH2G_LIB
PETSC_FMPICH2G_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_FMPICH2S_LIB
PETSC_FMPICH2S_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_FMPICH2_LIB
PETSC_FMPICH2_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_GDI32_LIB
PETSC_GDI32_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_KERNEL32_LIB
PETSC_KERNEL32_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_MPI_LIB
PETSC_MPI_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_USER32_LIB
PETSC_USER32_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PETSC_WS2_32_LIB
PETSC_WS2_32_LIB-ADVANCED:INTERNAL=1
//ADVANCED property for variable: PYTHON_EXECUTABLE
PYTHON_EXECUTABLE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SCPCOMMAND
SCPCOMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SITE
SITE-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SLURM_SBATCH_COMMAND
SLURM_SBATCH_COMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SLURM_SRUN_COMMAND
SLURM_SRUN_COMMAND-ADVANCED:INTERNAL=1
//ADVANCED property for variable: SVNCOMMAND
SVNCOMMAND-ADVANCED:INTERNAL=1

Re: Windows parallel version?

This actually doesn't have anything to do with OOFEM.
It is a petsc header which conflicts with a mingw header.

This seems like something petsc is supposed to look for when configuring. My only guess is that you configured/compiled PETSc with different compiler suite/version, for which the fixes was missing.

Re: Windows parallel version?

I used the guide at this url:
http://www.mcs.anl.gov/petsc/documentat … ml#windows
In particular, I used the command:
"./configure --with-cc='win32fe cl' --with-fc='win32fe ifort' --with-cxx='win32fe cl' --download-f-blas-lapack"

So that's a PETSc problem (PETSc website suggests to compile it on windows using Intel Fortran and VS2005); I suppose that the "parallel" oofem hasn't tried on windows yet.

However, many thanks for your help,
Giovanni

Re: Windows parallel version?

The problem is that mingw32 and intels cl are incompatible. You probably could modify "petscfix.h" (which is automatically generated when you run ./configure) to remove this conflicts.
Though I bet you could use mingw32 to compile PETSc as well.

Since you have the Intel compilers (which are usually great), you should be able to use them to compile OOFEM as well.
To tell CMake to do use a different compiler, add the following flag

cmake -DCMAKE_CXX_COMPILER='cl'  /path/to/oofem/

1. Whenever you try to change compilers, you need to remove the cache first, so delete CMakeCache.txt
2. I'm not sure what the commands are for intels compiler suite. You might need some other command than "cl"
3. I'm not sure what that win32fe thing does either.

And you're correct, I don't think anyone has compiled a parallel version of OOFEM under windows yet, exactly because PETSc is such a big inconvenience on that platform. Any external libraries are a pain to work with under windows.

Worth pointing out is that you can actually use OpenMP (experimental support) without any external libraries, but it will only assemble the system in parallel. The actual solvers included in OOFEM (which are slower than what you can get with PETSc) run sequentially.

Re: Windows parallel version?

I tried both (compiling all with intel compiler, compiling all with mingw), there are too many errors in both cases. I report the error that I get when I try compiòling with intel. Using cmake, the following definitions are missing:

PETSC_DL_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_ESMTP_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_GCC_EH_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_GCC_S_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_GFORTRAN_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_MPI_F90_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_M_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_PTHREAD_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2
PETSC_X11_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2

Just a question: compiling petsc with mingw I get the libraries with the extension ".a" and not ".lib" as I get with intel compilers. To add petsc to oofem in windows, these libraries have to be the extension ".lib" for sure?

Thanks,
Giovanni

ps
can you provide the project files for visual studio to compile oofem? I think it will be better for me to get the petsc libraries and add them in VS. In this old topic:
http://www.oofem.org/forum/viewtopic.php?id=374
I got a compiled version using VS only, but in the version 2.2 of oofem many things have changed.

18

Re: Windows parallel version?

Hi,
under windows, when you have cmake installed, cmake can create Visual Studio solution for you.

Re: Windows parallel version?

under windows, when you have cmake installed, cmake can create Visual Studio solution for you.

Hi, I've already tried in 2pcs, in the former it simply doesn't work (I have visual studio 2008 pro installed and I cannot install the SDK, cmake tells me that cl.exe cannot compile); in the second pc I got the SLN file but I cannot understand (because I'm not a C++ developer) how to add the PARALLEL flags (and for PETSC and MPI too).

Giovanni

Re: Windows parallel version?

* What is this SDK you mention?
* What test did the compiler fail to compile?
* A SLN file if a visual studio project, so I guess it did work on the second PC then?
* When configuring OOFEM with the CMake GUI, it'll show you all the configuration settings for OOFEM, including "USE_PARALLEL", "USE_PETSC", "MY_PETSC_DIR", "MY_PETSC_ARCH", and many more. I don't even think it is possible to miss these. Configure once, make your choices, configure again then generate your project files.

I haven't tried VS2008, but it definitely works for VS2010 and VS2012.

The problems you pointed out before

PETSC_DL_LIB (ADVANCED)
    linked by target "liboofem_static" in directory C:/cygwin/home/s133674/oofem-2.2

doesn't actually say that anything is wrong. The only thing that comes to mind if you have cmake problems is that you might have forgotten to clear the cache what you have done something like changing compilers.
As for static libraries; the mingw linker seems to prefer lib*.a extensions instead of *.lib. If you are working with mingw, you need to use the mingw linker as well.

Re: Windows parallel version?

* The SDK is that for Windows 7 and Server 2008
* I cannot know what test fails to compile, the make test simply hangs once started
* the SLN (which is solution file, not a single project file) works on the second machine
* my difficulty is that, configuring "USE_PARALLEL", "USE_PETSC", "MY_PETSC_DIR", "MY_PETSC_ARCH", when opening the SLN file, VS tell me that "there are dependencies that cannot be loaded".

Have you tried in VS2010 to compile the parallel version?

I'll give another try and reports to you a more detailed error log...

Re: Windows parallel version?

You can find this error logs in the target directory under CMakeFiles/CmakeError.log and possibly CMakeFiles/CMakeOutput.log

And , no, I haven't tried VS2010 with parallel support, because PETSc requires cygwin.
I was under the impression that you had managed to connect PETSc with Visual Studio since you said it was easier to work with.
Technically, there is nothing from OOFEM's point of view that requires cygwin. All we do is rely on the cmake configuration file that PETSc produces.
The file is located in petsc-version/your-configured-arch/conf/PETScConfig.cmake
This is a file produces by PETSc that sets all the external libraries and such, and OOFEM will happily use those (as well as the PETSc headers of course).
CMake tends to use full paths, so I don't think it's a problem with not actually finding them, so perhaps it doesn't like the format of the libraries? I'm really just guessing at this point since I dont have a windows machine to try it out on.

Just, to confirm a few things;
1. Without parallel + petsc on, can you get OOFEM to work?
2. When entering USE_PARALLEL + etc., does configure + generate from CMake work fine (without warnings/errors) ?

Re: Windows parallel version?

To both questions:
1. yes
2. not completely, I have to trick some values to get out from "Cmake" with no errors or warnings.
When I'll have more time, I'll post a complete error report.

Re: Windows parallel version?

After a long time, I'm trying again. Now, after entering USE_PARALLEL + PETSC, CMake works fine. I get 2 different situations:
1 - when I compile in VS 2008 9.0 from the major release source (ZIP file in OOFEM site), I get a lot errors because the file "petsccontext.h" is missing. I cannot understand where to specify in the project the inclusion folder;
2 - when trying from the source downloaded via GIT (maybe not updated to the actual version), I get a lot of errors again because there are sintax errors in "petscvec.h" and "petscsysvec.h".
In both cases, I tried PETSC version 3.3-p6 and 3.4.3 (the most recent).

Any suggestion or clue?
thanks

ps.
during one of my several test with oofem source 2.3 (from ZIP file), on my laptop CMake hanged on the error "PKG_CONFIG_EXECUTABLE not found". Does it depend on the installed GNU compilers?

Re: Windows parallel version?

Hi

First, I'd like to mention that the latest version from GIT doesn't actually require PETSc to run in parallel. However(!) most problems will require a parallel solver, and there PETSc is the only option (or maybe the FETI solver could be used? I don't know anything about that one).
Building parallel without PETSc might be useful in some cases though, like for explicit dynamic simulations.

Also, shared memory computers can use OpenMP for parallel computations


PETSc support under windows has been never been tested, and I wouldn't expect it to work.
1. I don't know why that happens. petsccontext.h is included in src/oofemlib/
2. "petscvec.h" and "petscsysvec.h" are header files from PETSc. I don't know what to say about error messages there.

I use PKG_CONFIG for configuring the compilation and linking information from PETSc.
Basically two things;
1. Find the include directories ${PS_PETSC_INCLUDE_DIRS}
2. Find all the external libraries petsc was compiled with ${PS_PETSC_LIBRARIES} and ${PC_PETSC_LIBRARY_DIRS}.
You should be able to hardcode those options directly into the CMakeLists.txt file though, or you might be able to get pkg_config running under windows (i don't know how that works).
Doesn't MinGW include a pkg_config executable? Anyway, pkg_config doesn't do anything difficult.

I tried asking the PETSc developers to make generate proper cmake files that could be used, but they just started berating me for making such a "stupid suggestion", so using PKG_CONFIG was the only option.