Skip to content
This repository was archived by the owner on Sep 5, 2025. It is now read-only.

Commit 430cdf6

Browse files
authored
Merge pull request #26 from ulgltas/lacroix
Py3 and PFEM3D Support
2 parents 52b4280 + e7fac1c commit 430cdf6

File tree

165 files changed

+303434
-10231
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+303434
-10231
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,7 @@ ccupydo/*.so
1818
ccupydo/CCupydo*
1919

2020
.vscode/
21+
22+
run.bat
23+
compile.bat
24+
compile.sh

CMake/FindMpi4Py.cmake

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ IF(NOT PYTHON_EXECUTABLE)
3838

3939
ELSE(NOT PYTHON_EXECUTABLE)
4040
EXECUTE_PROCESS(
41-
COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig as cg; print cg.get_python_lib(1,0)"
41+
COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0))"
4242
OUTPUT_VARIABLE PYTHON_SITEDIR
4343
OUTPUT_STRIP_TRAILING_WHITESPACE
4444
)
@@ -54,8 +54,14 @@ ELSE(NOT PYTHON_EXECUTABLE)
5454
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Mpi4Py DEFAULT_MSG MPI4PY_INCLUDE_DIR )
5555

5656
IF(MPI4PY_FOUND)
57+
EXECUTE_PROCESS( # Find name of MPI .so
58+
COMMAND ${PYTHON_EXECUTABLE} -c "from mpi4py import MPI; from sys import stdout; from os import path; stdout.write(path.basename(MPI.__file__))"
59+
OUTPUT_VARIABLE MPI4PY_LIB_NAME
60+
RESULT_VARIABLE MPI4PY_NOT_FOUND
61+
OUTPUT_STRIP_TRAILING_WHITESPACE
62+
)
5763
EXECUTE_PROCESS(
58-
COMMAND ${PYTHON_EXECUTABLE} -c "import mpi4py; print mpi4py.__version__"
64+
COMMAND ${PYTHON_EXECUTABLE} -c "import mpi4py; print(mpi4py.__version__)"
5965
OUTPUT_VARIABLE MPI4PY_VERSION
6066
RESULT_VARIABLE MPI4PY_NOT_FOUND
6167
OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -71,7 +77,7 @@ ELSE(NOT PYTHON_EXECUTABLE)
7177
IF(NOT MPI4PY_SWIG_FILE)
7278
MESSAGE(STATUS "mpi4py.i not found !")
7379
ENDIF(NOT MPI4PY_SWIG_FILE)
74-
FIND_FILE(MPI4PY_LIBRARIES MPI.so HINTS ${MPI4PY_INCLUDE_DIR}/.. ${PYTHON_SITEDIR}/mpi4py)
80+
FIND_FILE(MPI4PY_LIBRARIES NAMES ${MPI4PY_LIB_NAME} HINTS ${MPI4PY_INCLUDE_DIR}/.. ${PYTHON_SITEDIR}/mpi4py)
7581
ELSE(MPI4PY_FOUND)
7682
IF(MPI4PY_FIND_REQUIRED)
7783
MESSAGE(FATAL_ERROR "mpi4py not found !")

CMake/FindNUMPY.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ ELSE(NOT PYTHON_EXECUTABLE)
4646

4747
IF(NUMPY_FOUND)
4848
EXECUTE_PROCESS(
49-
COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print numpy.__version__"
49+
COMMAND ${PYTHON_EXECUTABLE} -c "import numpy; print(numpy.__version__)"
5050
OUTPUT_VARIABLE NUMPY_VERSION
5151
RESULT_VARIABLE NUMPY_NOT_FOUND
5252
OUTPUT_STRIP_TRAILING_WHITESPACE

CMake/FindPETSc4Py.cmake

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ IF(NOT PYTHON_EXECUTABLE)
3838

3939
ELSE(NOT PYTHON_EXECUTABLE)
4040
EXECUTE_PROCESS(
41-
COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig as cg; print cg.get_python_lib(1,0)"
41+
COMMAND ${PYTHON_EXECUTABLE} -c "import distutils.sysconfig as cg; print(cg.get_python_lib(1,0))"
4242
OUTPUT_VARIABLE PYTHON_SITEDIR
4343
OUTPUT_STRIP_TRAILING_WHITESPACE
4444
)
@@ -54,8 +54,14 @@ ELSE(NOT PYTHON_EXECUTABLE)
5454
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PETSc4Py DEFAULT_MSG PETSC4PY_INCLUDE_DIR)
5555

5656
IF(PETSC4PY_FOUND)
57+
EXECUTE_PROCESS( # Find name of PETSc .so
58+
COMMAND ${PYTHON_EXECUTABLE} -c "from petsc4py import PETSc; from sys import stdout; from os import path; stdout.write(path.basename(PETSc.__file__))"
59+
OUTPUT_VARIABLE PETSC4PY_LIB_NAME
60+
RESULT_VARIABLE PETSC4PY_NOT_FOUND
61+
OUTPUT_STRIP_TRAILING_WHITESPACE
62+
)
5763
EXECUTE_PROCESS(
58-
COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print petsc4py.__version__"
64+
COMMAND ${PYTHON_EXECUTABLE} -c "import petsc4py; print(petsc4py.__version__)"
5965
OUTPUT_VARIABLE PETSC4PY_VERSION
6066
RESULT_VARIABLE PETSC4PY_NOT_FOUND
6167
OUTPUT_STRIP_TRAILING_WHITESPACE
@@ -71,7 +77,7 @@ ELSE(NOT PYTHON_EXECUTABLE)
7177
IF(NOT PETSC4PY_SWIG_FILE)
7278
MESSAGE(STATUS "petsc4py.i not found !")
7379
ENDIF(NOT PETSC4PY_SWIG_FILE)
74-
FIND_FILE(PETSC4PY_LIBRARIES PETSc.so HINTS ${PETSC4PY_INCLUDE_DIR}/../lib ${PETSC4PY_INCLUDE_DIR}/../lib/$ENV{PETSC_ARCH} ${PYTHON_SITEDIR}/petsc4py/lib ${PYTHON_SITEDIR}/petsc4py/lib/$ENV{PETSC_ARCH})
80+
FIND_FILE(PETSC4PY_LIBRARIES NAMES ${PETSC4PY_LIB_NAME} HINTS ${PETSC4PY_INCLUDE_DIR}/../lib ${PETSC4PY_INCLUDE_DIR}/../lib/$ENV{PETSC_ARCH} ${PYTHON_SITEDIR}/petsc4py/lib ${PYTHON_SITEDIR}/petsc4py/lib/$ENV{PETSC_ARCH})
7581
ELSE(PETSC4PY_FOUND)
7682
IF(PETSC4PY_FIND_REQUIRED)
7783
MESSAGE(FATAL_ERROR "petsc4py headers missing")

CMake/cupyMacros.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ MACRO(MACRO_AddTest srcDir)
99
#message(STATUS "tfiles=${tfiles}")
1010
foreach(tfile ${tfiles})
1111
set(spath ${srcDir}/${tfile})
12-
if(NOT IS_DIRECTORY ${spath} AND ${spath} MATCHES ".+\\fsi.py$")
12+
if((NOT IS_DIRECTORY ${spath}) AND (${spath} MATCHES ".+\\fsi.py$" OR ${spath} MATCHES ".+\\fsi_adj.py$"))
1313
string(REPLACE "${PROJECT_SOURCE_DIR}/" "" strip ${spath})
1414
message(STATUS "Adding test ${strip}")
1515
add_test(NAME ${strip}

CMakeLists.txt

Lines changed: 71 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2018 University of Liège
1+
# Copyright 2021 University of Liège
22
#
33
# Licensed under the Apache License, Version 2.0 (the "License");
44
# you may not use this file except in compliance with the License.
@@ -14,85 +14,109 @@
1414

1515
# Main CMake file.
1616
# Configure the compilation of the C++ core of CUPyDO and the Py wrapper.
17-
#
18-
# Authors : D. THOMAS.
1917

2018
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
2119
PROJECT(CUPyDO)
2220

23-
LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
24-
25-
# macros/fcts
26-
INCLUDE(cupyMacros)
21+
SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "")
22+
SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin CACHE PATH "")
23+
MARK_AS_ADVANCED(LIBRARY_OUTPUT_PATH EXECUTABLE_OUTPUT_PATH)
2724

28-
# Type of build
29-
IF( NOT CMAKE_BUILD_TYPE )
30-
SET( CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE )
25+
IF(NOT CMAKE_BUILD_TYPE)
26+
SET( CMAKE_BUILD_TYPE "Release" CACHE STRING "" FORCE)
3127
ENDIF()
32-
MESSAGE(STATUS "Build type : ${CMAKE_BUILD_TYPE}")
28+
29+
LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMake")
3330

3431
# Options
3532
OPTION(WITH_MPI "Build for parallel run" OFF)
3633

34+
# macros/fcts
35+
INCLUDE(cupyMacros)
36+
3737
# -- C++11
38-
SET(CMAKE_CXX_STANDARD 11) # newer way to set C++11 (requires cmake>=3.1)
38+
SET(CMAKE_CXX_STANDARD 11)
3939
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
4040

41-
# Add warnings during compilation when build type is Debug
42-
IF(CMAKE_BUILD_TYPE MATCHES Debug)
43-
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")
41+
# Set specific compiler flags
42+
MESSAGE(STATUS "CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}")
43+
IF(CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_BUILD_TYPE MATCHES Debug)
44+
# Add warnings during compilation when build type is Debug
45+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall - Wextra")
4446
ENDIF()
4547

48+
# -- Search for Python
49+
IF (CMAKE_VERSION VERSION_LESS 3.12.0)
50+
FIND_PACKAGE(PythonInterp 3.6 REQUIRED)
51+
FIND_PACKAGE(PythonLibs 3.6 REQUIRED)
52+
ELSE()
53+
find_package (Python3 COMPONENTS Interpreter Development)
54+
# use Python3_ROOT_DIR if wrong python found (e.g. anaconda)
55+
SET(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
56+
SET(PYTHON_LIBRARIES ${Python3_LIBRARIES})
57+
SET(PYTHON_INCLUDE_PATH ${Python3_INCLUDE_DIRS})
58+
SET(PYTHONLIBS_VERSION_STRING ${Python3_VERSION})
59+
ENDIF()
60+
MESSAGE(STATUS "PYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}")
61+
MESSAGE(STATUS "PYTHON_LIBRARIES:FILEPATH=${PYTHON_LIBRARIES}")
62+
MESSAGE(STATUS "PYTHON_INCLUDE_PATH:FILEPATH=${PYTHON_INCLUDE_PATH}")
63+
MESSAGE(STATUS "PYTHON_FRAMEWORK_INCLUDES=${PYTHON_FRAMEWORK_INCLUDES}")
64+
MESSAGE(STATUS "PYTHONLIBS_VERSION_STRING=${PYTHONLIBS_VERSION_STRING}")
65+
MESSAGE(STATUS "Python_FRAMEWORKS=${Python_FRAMEWORKS}")
66+
INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} )
67+
68+
# numpy
69+
FIND_PACKAGE(NUMPY REQUIRED)
70+
INCLUDE_DIRECTORIES( ${NUMPY_INCLUDE_DIR} )
71+
72+
# -- Search for SWIG
73+
FIND_PACKAGE(SWIG REQUIRED)
74+
IF(CMAKE_GENERATOR MATCHES "Visual Studio")
75+
# SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}/$(Configuration)/") # INSTALL does not work
76+
SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}")
77+
ELSE()
78+
SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}")
79+
ENDIF()
80+
MESSAGE(STATUS "CMAKE_SWIG_OUTDIR=${CMAKE_SWIG_OUTDIR}")
81+
4682
# Build for parallel run using MPI (default is OFF)
4783
IF(WITH_MPI)
4884
FIND_PACKAGE(MPI REQUIRED)
49-
IF(MPI_FOUND)
50-
MESSAGE(STATUS "MPI_INCLUDE_PATH=${MPI_INCLUDE_PATH}")
51-
MESSAGE(STATUS "MPI_LIBRARIES=${MPI_LIBRARIES}")
52-
ADD_DEFINITIONS(-DHAVE_MPI)
53-
FIND_PACKAGE(PETSc REQUIRED)
54-
ENDIF(MPI_FOUND)
55-
ENDIF(WITH_MPI)
85+
MESSAGE(STATUS "MPI_INCLUDE_PATH=${MPI_INCLUDE_PATH}")
86+
MESSAGE(STATUS "MPI_LIBRARIES=${MPI_LIBRARIES}")
87+
ADD_DEFINITIONS(-DHAVE_MPI)
88+
MESSAGE(STATUS "MPI_INCLUDE_PATH=${MPI_INCLUDE_PATH}")
89+
INCLUDE_DIRECTORIES( ${MPI_INCLUDE_PATH} )
90+
91+
FIND_PACKAGE(PETSc REQUIRED)
92+
MESSAGE(STATUS "PETSC_INCLUDE_PATH=${PETSC_INCLUDE_PATH}")
93+
INCLUDE_DIRECTORIES( ${PETSC_INCLUDE_PATH} )
5694

57-
# Python/SWIG
58-
FIND_PACKAGE(PythonInterp 2.7 REQUIRED)
59-
FIND_PACKAGE(PythonLibs 2.7 REQUIRED)
60-
MESSAGE(STATUS "PYTHONINTERP_FOUND=${PYTHONINTERP_FOUND}")
61-
MESSAGE(STATUS "PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}")
62-
MESSAGE(STATUS "PYTHONLIBS_FOUND=${PYTHONLIBS_FOUND}")
63-
MESSAGE(STATUS "PYTHON_LIBRARIES=${PYTHON_LIBRARIES}")
64-
MESSAGE(STATUS "PYTHON_INCLUDE_PATH=${PYTHON_INCLUDE_PATH}")
65-
FIND_PACKAGE(NUMPY REQUIRED)
66-
FIND_PACKAGE(SWIG REQUIRED)
67-
SET(CMAKE_SWIG_OUTDIR "${EXECUTABLE_OUTPUT_PATH}")
68-
MESSAGE(STATUS "SWIG_EXECUTABLE=${SWIG_EXECUTABLE}")
69-
IF(WITH_MPI)
7095
FIND_PACKAGE(PETSc4Py REQUIRED)
96+
MESSAGE(STATUS "PETSC4PY_INCLUDE_DIR=${PETSC4PY_INCLUDE_DIR}")
97+
INCLUDE_DIRECTORIES( ${PETSC4PY_INCLUDE_DIR} )
98+
7199
FIND_PACKAGE(Mpi4Py REQUIRED)
100+
MESSAGE(STATUS "MPI4PY_INCLUDE_DIR=${MPI4PY_INCLUDE_DIR}")
101+
INCLUDE_DIRECTORIES( ${MPI4PY_INCLUDE_DIR} )
72102
ENDIF(WITH_MPI)
73103

74-
INCLUDE_DIRECTORIES( ${MPI_INCLUDE_PATH} ${PETSC_INCLUDE_PATH} )
75-
76104
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
77105

78106
#-------------------------------------------------------------
79107
INCLUDE(${SWIG_USE_FILE})
80108

81-
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src
82-
${PYTHON_INCLUDE_PATH}
83-
${NUMPY_INCLUDE_DIR}
84-
${PETSC4PY_INCLUDE_DIR}
85-
${MPI4PY_INCLUDE_DIR})
109+
INCLUDE_DIRECTORIES( ${PROJECT_SOURCE_DIR}/src )
86110

87111
FILE(GLOB SRCS src/*.h src/*.cpp)
88112

89113
FILE(GLOB ISRCS _src/*.i)
90114

91115
IF(WITH_MPI)
92116
SET(CMAKE_SWIG_FLAGS "-DHAVE_MPI")
93-
ELSE(WITH_MPI)
117+
ELSE()
94118
SET(CMAKE_SWIG_FLAGS "")
95-
ENDIF(WITH_MPI)
119+
ENDIF()
96120

97121
SET_SOURCE_FILES_PROPERTIES(${ISRCS} PROPERTIES CPLUSPLUS ON)
98122

@@ -105,17 +129,18 @@ IF(${CMAKE_VERSION} VERSION_LESS "3.8.0")
105129
ELSE()
106130
SWIG_ADD_LIBRARY(CCupydo
107131
LANGUAGE python
108-
SOURCES ${ISRCS} ${SRCS})
132+
SOURCES ${PROJECT_SOURCE_DIR}/_src/CCupydo.i ${SRCS})
109133
ENDIF()
110134

111135
SWIG_LINK_LIBRARIES(CCupydo ${PYTHON_LIBRARIES} ${MPI_LIBRARIES} ${PETSC_LIBRARIES})
112136

113137
# --- Install ---
138+
# note: [RB] this is not how INSTALL is supposed to be used!
114139
SET(CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}")
115140
MESSAGE(STATUS "Installation directory : ${CMAKE_INSTALL_PREFIX}")
116141

117142
INSTALL_TARGETS(/ccupydo _CCupydo)
118-
INSTALL_FILES(/ccupydo FILES "${PROJECT_BINARY_DIR}/CCupydo.py")
143+
INSTALL_FILES(/ccupydo FILES "${CMAKE_SWIG_OUTDIR}/CCupydo.py")
119144

120145
# --- Enable CTest ---
121146
ENABLE_TESTING()

NOTICE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
=========================================================================
44

55
CUPyDO
6-
Copyright 2018-2019 University of Liège.
6+
Copyright 2018-2021 University of Liège.
77

88
This software was developed at the University of Liège (Belgium) by:
99

README.md

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,44 @@ FSI tools for partinioned coupling between generic solid and fluid solvers.
33

44
[![Apache License Version 2.0](https://img.shields.io/badge/license-Apache_2.0-green.svg)](LICENSE)
55

6-
## Features
6+
## Solvers
77
CUPyDO currently features interfaces for the following solvers:
8-
- Solid:
9-
- Metafor --> A Nonlinear Finite Element solid solver developed at the University of Liège (http://metafor.ltas.ulg.ac.be/dokuwiki/)
10-
- RBM --> A dynamic 2dof pitch/plunge solid solver developed at the University of Liège (https://github.com/ulgltas/NativeSolid)
11-
- modali -> A static/dynamic modal solver developed at the University of Liège (https://github.com/ulgltas/modali)
12-
- GetDP --> A free finite element software and a general environment for the treatment of discrete problems, developed at University of Liège (http://getdp.info/)
13-
- Fluid:
14-
- PFEM --> Particle Finite Element Method fluid solver developed at the University of Liège (https://gitlab.uliege.be/am-dept/PFEM)
15-
- SU2 --> Open-source CFD code developed at Stanford University (https://su2code.github.io/)
16-
- Flow --> A Full Potential Finite Element fluid solver, part of the waves project, developed at the University of Liège (https://gitlab.uliege.be/am-dept/waves)
17-
- VLM --> A Vortex Lattice Method, developed at the University of Liège (https://github.com/ulgltas/VLM)
8+
- **Solid**
9+
- Metafor **[v3492]** (http://metafor.ltas.ulg.ac.be/dokuwiki/start)
10+
- A Nonlinear Finite Element solid solver developed at the University of Liège.
11+
---
12+
- RBMI **[1.1]** (https://github.com/ulgltas/NativeSolid)
13+
- A dynamic 2dof pitch/plunge solid solver developed at the University of Liège.
14+
---
15+
- SU2 **[X]** (https://su2code.github.io/)
16+
- Open-source CFD code developed at Stanford University.
17+
---
18+
- Modali **[v2.0]** (https://github.com/ulgltas/modali)
19+
- A static/dynamic modal solver developed at the University of Liège.
20+
---
21+
- GetDP **[X]** (http://getdp.info/)
22+
- A free finite element software and a general environment for the treatment of discrete problems, developed at University of Liège.
23+
---
24+
- pyBeam **[0.1]** (https://github.com/pyBeam/pyBeam)
25+
- A nonlinear beam finite element solver developed for aeronautical design applications.
26+
---
27+
- **Fluid**
28+
- PFEM **[v1.19]** (https://gitlab.uliege.be/am-dept/PFEM)
29+
- Particle Finite Element Method fluid solver developed at the University of Liège.
30+
---
31+
- SU2 **[7.1.1\*]** (https://github.com/ulgltas/SU2/tree/fix_wrap_strong)
32+
- Open-source CFD code developed at Stanford University.
33+
---
34+
- Flow **[v2.1.1]** (https://gitlab.uliege.be/am-dept/waves)
35+
- A Full Potential Finite Element fluid solver, part of the waves project, developed at the University of Liège.
36+
---
37+
- VLM **[v2.0]** (https://github.com/ulgltas/VLM)
38+
- A Vortex Lattice Method, developed at the University of Liège.
39+
---
40+
- PFEM3D **[2.0.0]** (https://github.com/ImperatorS79/PFEM3D)
41+
- A 3D Particle Finite Element Method fluid solver developed at the University of Liège.
42+
43+
## Features
1844

1945
Furthermore, CUPyDO features two interpolation alogrithms:
2046
- Radial Basis Functions (RBF)

_src/CCupydo.i

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ threads="1"
3535
#include "cLinearSolver.h"
3636
%}
3737

38+
// Problem with Swig & Python 3 for np.int64
39+
%begin %{
40+
#define SWIG_PYTHON_CAST_MODE
41+
%}
42+
3843
// petite bidouille pour pouvoir compiler avec "threads=1" et iterer sur des std_vector
3944
// (sinon ca explose � la destruction de l'iterateur)
4045
%nothread swig::SwigPyIterator::~SwigPyIterator();

0 commit comments

Comments
 (0)