diff --git a/HySoP/CMakeLists.txt b/HySoP/CMakeLists.txt
index 2e056a5204eb34f65acac36efd8a9b583bcfe2fc..7fcf50c30c6d435a629a241f8148837bc419fa1a 100644
--- a/HySoP/CMakeLists.txt
+++ b/HySoP/CMakeLists.txt
@@ -1,16 +1,19 @@
-#=======================================================
-# cmake utility to compile,link and install : 
-#  - parmes library (libparmes...)
-#  - parmesscales library particular solver from scales, (libparmesscales...)
+#===============================================================================
+# cmake utility to compile and install parmepy python modules and libraries
+#
+# It includes :
+#  - high level python interface to parmes routines
+#  - parmes fortran library (libparmes...)
+#  - parmesscales (fortran library) particular solver from scales, (libparmesscales...)
 #  
-#  parmes may (optionally) depends on :
+#  parmes depends (optionally) on :
 #   - parmesscales (USE_SCALES=ON, default)
 #   - ppm-core (USE_PPM=ON, default=OFF)
 #   - ppm-numerics (USE_PPMNumerics, default=OFF)
 #
-# F. Pérignon, 17 fev 2011
+# LJK-CNRS, F. Pérignon, june 2012
 #
-#=======================================================
+#===============================================================================
 
 # ============= Global cmake Settings ============= 
 # Set minimum version for cmake
@@ -22,52 +25,25 @@ include(OutOfSourceBuild)
 # Some usefull macros
 include(MyTools)
 
-# ============= Specific settings for PPMCore =============
-# In this file (PPMCoreSettings.cmake) we set all variables
-# required to compile and install PPMCore such as the name of
-# the library to be created, the place where we can find the sources,
-# the version number of the current package ... 
-
 # User defined options
 option(VERBOSE_MODE "enable verbose mode for cmake exec. Default = on" ON)
+option(DOUBLEPREC "set precision for real numbers to double precision when this mode is enable. Default = on." ON)
 option(USE_MPI "compile and link parmes with mpi when this mode is enable. Default = on." ON)
 option(WITH_SCALES "compile/create parmesscales lib and link it with Parmes. Default = on." ON)
 option(WITH_PPM "link Parmes with PPM library (core component). Default = off." OFF)
 option(WITH_PPMNumerics "link Parmes with PPM-numerics. Default = off" OFF)
-option(DOUBLEPREC "set precision for real numbers to double precision when this mode is enable. Default = on." ON)
 option(WITH_TESTS "Enable testing. Default = off" OFF)
 option(BUILD_SHARED_LIBS "Enable dynamic library build, default = ON" ON)
 
 # cmake project name
-set(PROJECT_NAME parmes)
+set(PROJECT_NAME parmespy)
 # --- Name for the package ---
-# This name will be used to install Parmes (library, headers, ...) and when another lib or soft will need to search for Parmes.
-set(PACKAGE_NAME "Parmes")
+# This name will be used as the Python Package name
+set(PYPACKAGE_NAME "parmespy")
 # --- Set a version number for the package ---
-set(${PACKAGE_NAME}_version 1.0.0)
+set(${PYPACKAGE_NAME}_version 1.0.0)
 # --- The name (without extension) of the lib to be created ---
 set(PROJECT_LIBRARY_NAME ${PROJECT_NAME})
-# --- The name of the exe to be created (test purpose)
-# This exe will be linked with libPROJECT_LIBRARY_NAME 
-set(EXE_NAME ${PROJECT_NAME}Run)
-
-# The list of all dirs containing sources to be compiled for the Parmes lib
-# Any file in those dirs will be used to create libparmes
-set(${PROJECT_LIBRARY_NAME}_SRCDIRS 
-  src
-#  src/poisson
-  #src/interfaces/Fortran2Cpp
-  #  src/interfaces/ppm
-  )
-
-# A main file to create an executable (test purpose)
-# Any files in these dirs will be used to create Parmes exec (linked with libparmes)
-set(${EXE_NAME}_SRCDIRS src/main)
-# Matching expr for files to be compiled. 
-set(EXTS *.f90 *.f95)
-# Matching expr for headers (install purpose)
-set(EXTS_HDRS *.hpp *.h)
-# Note FP : we can also use  cmake vars ${CMAKE_Fortran_SOURCE_FILE_EXTENSIONS} ${CMAKE_C_SOURCE_FILE_EXTENSIONS} ${CMAKE_CXX_SOURCE_FILE_EXTENSIONS}
 
 # ============= The project =============
 # Set project name and project languages 
@@ -75,7 +51,6 @@ set(EXTS_HDRS *.hpp *.h)
 #   - ${PROJECT_NAME}_BINARY_DIR : where you have run cmake, i.e. the place for compilation
 #   - ${PROJECT_NAME}_SOURCE_DIR : where sources (.f and .h and this CMakeLists.txt) are located
 # Note that because of OutOfSourceBuild, binary_dir and source_dir must be different. 
-
 project(${PROJECT_NAME} Fortran)
 
 # ============= Tests =============
@@ -87,174 +62,30 @@ endif(WITH_TESTS)
 # We search for libraries Parmes depends on and 
 # set the compile/link conf (-I and -L opt)
 
-# --- Boost ---
-#set(Boost_ADDITIONAL_VERSIONS "1.49" "1.49.0")
-#set(Boost_NO_SYSTEM_PATHS ON)
-#find_package(Boost REQUIRED)
-#include_directories(${Boost_INCLUDE_DIRS})
-
-# ============= Prepare compilation =============
-
-# Force a default build type if not provided by user
-# CMAKE_BUILD_TYPE = empty, Debug, Release, RelWithDebInfo or MinSizeRel.
-if (NOT CMAKE_BUILD_TYPE)
-  set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: None, Debug, Release, RelWithDebInfo or MinSizeRel." FORCE)  
-endif (NOT CMAKE_BUILD_TYPE)
-
-# If the project uses Fortran ...
-# Set module files directory (i.e. where .mod will be created) 
-set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/Modules)
-#  Add compilation flags:
-append_Fortran_FLAGS("-Wall")
-
-# --- MPI ---
-if(USE_MPI)
-  # Find MPI for C++ and fortran.
-  find_package(MPI REQUIRED)
-  # -I
-  include_directories(${MPI_Fortran_INCLUDE_PATH})
-  # Add compilation flags
-  set(${PROJECT_NAME}_LINK_FLAGS ${${PROJECT_NAME}_LINK_FLAGS} ${MPI_Fortran_LINK_FLAGS})
-  # -I
-  # Add compilation flags
-  append_Fortran_flags(${MPI_Fortran_COMPILE_FLAGS})
-  #set(${PROJECT_NAME}_LINK_FLAGS ${${PROJECT_NAME}_LINK_FLAGS} ${MPI_Fortran_LINK_FLAGS})
-  set(LIBS ${LIBS} ${MPI_Fortran_LIBRARIES} )
-endif(USE_MPI)
-
-# --- scales ---
-if(WITH_SCALES)
-  add_subdirectory(src/scalesInterface)
-endif()
-
-# --- PPM ---
-if(WITH_PPM)
-  add_subdirectory(src/ppmInterface)
-endif()
-
-find_package(FFTW REQUIRED)
-include_directories(${FFTW_INCLUDE_DIRS})
-set(LIBS ${LIBS} ${FFTW_LIBRARIES})
-display(FFTW_LIBRARIES)
-
-# ============= Generates ParmesConfig.hpp =============
-# The file PROJECT_NAME_defines.hpp will be generated from config.hpp.cmake;
-if(EXISTS ${CMAKE_SOURCE_DIR}/config.hpp.cmake)
-  if(NOT CONFIG_H_GLOBAL_CONFIGURED)
-   set(CONFIG_H_GLOBAL_CONFIGURED 1 CACHE BOOL "Parmes_defines.hpp generation." )
-   configure_file(config.hpp.cmake ${PROJECT_NAME}_defines.hpp)
- endif()
- include_directories(${CMAKE_BINARY_DIR})
-endif()
-
-# ============= Source and header files list =============
-# We scan all files with matching extension in directories 
-# containing sources.
-
-# Source and header files list:
-foreach(_DIR ${${PROJECT_LIBRARY_NAME}_SRCDIRS})
-  set(_DIR_FILES)
-  foreach(_EXT ${EXTS}) # Source files
-    file(GLOB _DIR_FILES_EXT ${_DIR}/${_EXT})
-    if(_DIR_FILES_EXT)
-      list(APPEND ${PROJECT_LIBRARY_NAME}_SRC ${_DIR_FILES_EXT})
-    endif()
-  endforeach()
-  foreach(_EXT ${EXTS_HDRS}) # Headers
-    file(GLOB _DIR_FILES_EXT ${_DIR}/${_EXT})
-    if(_DIR_FILES_EXT)
-      list(APPEND ${PROJECT_LIBRARY_NAME}_HDRS ${_DIR_FILES_EXT})
-    endif()
-  endforeach()
-endforeach()
-# We add headers to source files
-list(APPEND ${PROJECT_LIBRARY_NAME}_SRC ${${PROJECT_LIBRARY_NAME}_HDRS})
-
-# The same for main dir ...
-foreach(_DIR ${${EXE_NAME}_SRCDIRS})
-  set(_DIR_FILES)
-  foreach(_EXT ${EXTS})
-    file(GLOB _DIR_FILES_EXT ${_DIR}/${_EXT})
-    if(_DIR_FILES_EXT)
-      list(APPEND ${EXE_NAME}_SRC ${_DIR_FILES_EXT})
-    endif()
-  endforeach()
-  foreach(_EXT ${EXTS_HDRS}) 
-    file(GLOB _DIR_FILES_EXT ${_DIR}/${_EXT})
-    if(_DIR_FILES_EXT)
-      list(APPEND ${EXE_NAME}_HDRS ${_DIR_FILES_EXT})
-    endif()
-  endforeach()
-endforeach()
-list(APPEND ${EXE_NAME}_SRC ${${EXE_NAME}_HDRS})
-
-# Add directories to those searched by compiler ...
-# -I
-include_directories(${${PROJECT_LIBRARY_NAME}_SRCDIRS})
-include_directories(${${EXE_NAME}_HDRS})
-include_directories(${CMAKE_Fortran_MODULE_DIRECTORY})
-
-# Cmake tools to handle fortran-c interface. It will generate F2CMangle.hpp, a file
-# that will contain some useful macros to deal with fortran-C name mangling.
-# See cmake doc for this module. 
-#include(FortranCInterface)
-#FortranCInterface_HEADER(${CMAKE_Fortran_MODULE_DIRECTORY}/F2CMangle.hpp
-#  MACRO_NAMESPACE "F2C_"
-#  SYMBOL_NAMESPACE "F2C_")
-
-# ============= Creates the library =============
-if(BUILD_SHARED_LIBS) # shared library
-  add_library(${PROJECT_LIBRARY_NAME} SHARED ${${PROJECT_LIBRARY_NAME}_SRC})
-else() # static library
-  add_library(${PROJECT_LIBRARY_NAME} STATIC ${${PROJECT_LIBRARY_NAME}_SRC})
+set(PARMES_LIBRARY_NAME parmes)
+set(PACKAGE_NAME Parmes)
+add_subdirectory(src)
+
+# ============= Generates setup.py =============
+# The file setup.py will be generated from setup.py.in.
+if(EXISTS ${CMAKE_SOURCE_DIR}/setup.py.in)
+#  if(NOT CONFIG_H_GLOBAL_CONFIGURED)
+    message(STATUS "Generate setup.py file ...")
+#    set(CONFIG_H_GLOBAL_CONFIGURED 1 CACHE BOOL "setup.py generation." )
+    configure_file(setup.py.in setup.py)
+#  endif()
 endif()
-# Libs to link with PROJECT__LIBRARY_NAME
-target_link_libraries(${PROJECT_LIBRARY_NAME} ${LIBS})
-
-# ============= Creates the executable =============
-add_executable(${EXE_NAME} ${${EXE_NAME}_SRC})
-add_dependencies(${EXE_NAME} ${PROJECT_LIBRARY_NAME})
-
-# libs to link with EXE_NAME
-target_link_libraries(${EXE_NAME} ${PROJECT_LIBRARY_NAME})
-target_link_libraries(${EXE_NAME} ${LIBS})
-
-# ============== Add tests ==============
-if(WITH_TESTS)
-  message(STATUS "Enable testing ...")
-  begin_test(src/tests/F2003)
-  new_test(testAllocatedPtr userMod.f90 wrapper.f90 testAllocatedPtr.cxx)
-  new_test(testNullPtr userMod.f90 wrapper.f90 testNullPtr.cxx)
-  end_test()
-  begin_test(src/tests/Particles)
-  new_test(testCreate3D testCreate3D.f90)
-  new_test(testCreate2D testCreate2D.f90)
-  end_test()
-endif(WITH_TESTS)
-
-# ============= Prepare install =============
-
-# The library
-# The library, the headers and mod files, the cmake generated files
-# will be install in CMAKE_INSTALL_PREFIX/lib include and share
-include(InstallPackage)
-
-install_package(${PACKAGE_NAME} ${PROJECT_LIBRARY_NAME} ${${PROJECT_NAME}_HDRS})
 
-#install(TARGETS ${EXE_NAME}  
-#RUNTIME DESTINATION bin  # executables
-#  )
+set(PYTHON_EXECUTABLE python)
 
+ADD_CUSTOM_TARGET(python-build COMMAND python ${CMAKE_CURRENT_BINARY_DIR}/setup.py build --user config_fc --f90exec=${CMAKE_Fortran_COMPILER}
+   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "build parmepy package")
 
-#configure_file(${PACKAGE_NAME}Config.cmake.in
-#  "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}Config.cmake")
-#configure_file(${PACKAGE_NAME}ConfigVersion.cmake.in
-#  "${PROJECT_BINARY_DIR}/${PACKAGE_NAME}ConfigVersion.cmake" @ONLY)
-#install(FILES
-#  "${PROJECT_BINARY_DIR}/InstallFiles/${_PACK}Config.cmake"
-#  "${PROJECT_BINARY_DIR}/InstallFiles/${_PACK}ConfigVersion.cmake"
-#  DESTINATION "${${PACKAGE_NAME}_CMAKE_DIR}" COMPONENT dev)
+ADD_CUSTOM_TARGET(python-install COMMAND python ${CMAKE_CURRENT_BINARY_DIR}/setup.py install --user config_fc --f90exec=${CMAKE_Fortran_COMPILER}
+   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "build/install parmepy package")
 
+add_dependencies(python-build ${PARMES_LIBRARY_NAME})
+add_dependencies(python-install ${PARMES_LIBRARY_NAME})
 
 # ============= RPATH =============
 # Concerning rpath see for example http://www.itk.org/Wiki/CMake_RPATH_handling
diff --git a/HySoP/setup.py.in b/HySoP/setup.py.in
new file mode 100644
index 0000000000000000000000000000000000000000..a0cac284a31eec651c2cdf5499720690a2232186
--- /dev/null
+++ b/HySoP/setup.py.in
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+setup.py file for @PYPACKAGE_NAME@
+
+"""
+from numpy.distutils.core import setup, Extension
+import os, glob
+
+# List of all directories for sources
+#os.listdir(os.path.join('ParMePy','New_ParmePy'))
+
+# Full package name
+name = '@PYPACKAGE_NAME@'
+# List of modules (directories) to be included
+packages = ['ParMePy','ParMePy.domain','ParMePy.fields']
+#            'examples']
+#            'new_ParMePy',
+#            'new_ParMePy/Domain',
+#            'new_ParMePy/Operator',
+#            'new_ParMePy/Problem',
+#            'new_ParMePy/Utils',
+#            'new_ParMePy/Variable']
+
+
+# Enable this to get debug info
+# DISTUTILS_DEBUG=1
+fortran_src = glob.glob('@CMAKE_SOURCE_DIR@/ParMePy/parmesfftw2py/*.f90')
+parmes_dir=['@CMAKE_BINARY_DIR@/Modules']
+parmes_libdir=['@CMAKE_BINARY_DIR@/src']
+parmeslib=['@PARMES_LIBRARY_NAME@']
+#,f2py_options=['-c --f90exec=/Users/Franck/Softs/install-gnu/openmpi-1.5.3/bin/mpif90'])
+#f2py_options=['skip: discretisation_init :']
+# Example with include and link :
+#include_mpi='/Users/Franck/Softs/install-gnu/openmpi-1.5.3/lib/' 
+#fortran_dir='./ParMePy/scales2py'
+#legi_dir =os.path.join(fortran_dir,'srcLegi')
+#legi_lib = [os.path.join(fortran_dir,'.')]
+#print legi_lib
+
+#parpyModule=Extension(name='ParMePy.scales2py',sources=fortran_src,include_dirs=[legi_dir],library_dirs=legi_lib,libraries=['parmeslegi'])
+#parpyModule=Extension(name='parpy',sources=fortran_src)#,f2py_options=f2py_options)
+parpyModule=Extension(name='ParMePy.fftw2py',sources=fortran_src,include_dirs=parmes_dir,library_dirs=parmes_libdir,libraries=parmeslib)
+
+#ppm_lib_dir=[os.path.join(ppm_dir,'lib')]
+#ppm_lib=['ppm_core']
+#pyParMesModule=Extension(name=name,sources=f2py_sources,include_dirs=[include_mpi],library_dirs=ppm_lib_dir,libraries=ppm_lib)
+
+setup(name=name,
+      version='1.0.0',
+      description='Particular Methods implementation in Python',
+      author='Jean-Matthieu Etancelin, Franck Pérignon, Christophe Picard',
+      author_email='parmes-devel@lists.forge.imag.fr',
+      url='https://forge.imag.fr/projects/parmes/',
+      license='GNU public license',
+      package_dir = {'': '@CMAKE_SOURCE_DIR@'},
+      ext_modules=[parpyModule],
+      packages=packages
+      #data_files=[('new_ParMePy/Utils', ['./new_ParMePy/Utils/gpu_src.cl'])]
+)