GithubHelp home page GithubHelp logo

precice / su2-adapter Goto Github PK

View Code? Open in Web Editor NEW
16.0 10.0 12.0 1.91 MB

preCICE-adapter for the CFD code SU2 - :heart: Maintainer needed :heart: https://github.com/precice/su2-adapter/issues/16

License: GNU Lesser General Public License v3.0

C++ 81.37% Shell 2.43% Python 16.20%
precice-adapter multi-physics fluid-structure-interaction cfd conjugate-heat-transfer co-simulation precice su2

su2-adapter's Introduction

su2-adapter's People

Contributors

arusch avatar benjaminrodenberg avatar davidscn avatar fsimonis avatar ishaandesai avatar j-signorelli avatar kyledavissa avatar makish avatar shkodm avatar uekerman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

su2-adapter's Issues

incompressible regime simulations

Hi,
I'm trying to couple SU2 to a structural solver via PreCICE. In my case the fluid part considers an incompressible fluid in laminar regime. My simulations stop at the first fluid iteration with:

preCICE:ERROR: The computed timestep length of 0.000513 exceeds the maximum timestep limit of 0.000487 for this time step!

Other simulations, like the "flap-perp" tutorial, work without problems.
I would like to know if PreCICE is able to work with incompressible simulations or it is tailored to compressible ones.
The PreCICE version I'm using is 1.5.2 and SU2 6.0.0

Thank you
Claudio

SU2 Precice Command Not Recognize

I used precice 1.6.1 but i want to use new version precice such as precice 2.3.0. I try to install to clean ubuntu, not upgrade. I think i install succesfully with instraction notes. But SU2_CFD command does not work. Issue is the precice command does not recognise. Where am i wrong. Somebody can help me this issue. Thanks.

Here my error:

PRECICE_USAGE: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_CONFIG_FILENAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_PARTICIPANT_NAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_MESH_NAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_READ_DATA_NAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_WRITE_DATA_NAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_WETSURFACE_MARKER_NAME: invalid option name. Check current SU2 options in config_template.cfg.
PRECICE_NUMBER_OF_WETSURFACES: invalid option name. Check current SU2 options in config_template.cfg.
GRID_MOVEMENT_KIND: invalid option value PRECICE_MOVEMENT. Check current SU2 options in config_template.cfg.

Here my bashrc file:

PRECICE_PREFIX="~/preCICE/precice-2.3.0/build" # set this to your selected prefix
export PATH=$PRECICE_PREFIX/bin:$PATH
export LD_LIBRARY_PATH=$PRECICE_PREFIX/lib:$LD_LIBRARY_PATH
export CPATH=$PRECICE_PREFIX/include:$CPATH
# Enable detection with pkg-config and CMake
export PKG_CONFIG_PATH=$PRECICE_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH
export CMAKE_PREFIX_PATH=$PRECICE_PREFIX:$CMAKE_PREFIX_PATH

export SU2_RUN="/home/se/preCICE/SU2-6.0.0/bin"
export SU2_HOME="/home/se/preCICE/SU2-6.0.0"
export PATH=$PATH:$SU2_RUN
export PYTHONPATH=$PYTHONPATH:$SU2_RUN

double free or corruption in SU2_CFD

Hi,
I'm trying to realize the tutorial https://github.com/precice/precice/wiki/FSI-tutorial within a dockerimage.
I could build the software without big fuzz.
When I want to simulate and run the command:

ccx_preCICE -i flap -precice-participant Calculix & SU2_CFD euler_config_coupled.cfg

the simulation finishes with a double free or corruption error. So it returns a non-zero code in docker and I can not continue building the image. Can you help me?

Error message:

Process #0/0: Done finalizing preCICE!
*** Error in SU2_CFD': double free or corruption (fasttop): 0x00000000031b7f30 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f2a88f267e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f2a88f2f37a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f2a88f3353c]
SU2_CFD[0x4ce37b]
SU2_CFD[0x42b0f3]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f2a88ecf830]
SU2_CFD[0x42a969]
======= Memory map: ========
00400000-0118a000 r-xp 00000000 08:06 944100                             /home/alice/su2-bin/bin/SU2_CFD
01389000-013ba000 r--p 00d89000 08:06 944100                             /home/alice/su2-bin/bin/SU2_CFD
013ba000-013bc000 rw-p 00dba000 08:06 944100                             /home/alice/su2-bin/bin/SU2_CFD
013bc000-01436000 rw-p 00000000 00:00 0 
02993000-03570000 rw-p 00000000 00:00 0                                  [heap]
7f2a74000000-7f2a74021000 rw-p 00000000 00:00 0 
7f2a74021000-7f2a78000000 ---p 00000000 00:00 0 
7f2a78e38000-7f2a78e39000 ---p 00000000 00:00 0 
7f2a78e39000-7f2a79639000 rw-p 00000000 00:00 0 
7f2a79639000-7f2a7964e000 r-xp 00000000 08:06 292956                     /usr/lib/openmpi/lib/openmpi/mca_osc_pt2pt.so
.... 
Job finished
The command '/bin/sh -c ccx_preCICE -i flap -precice-participant Calculix & SU2_CFD euler_config_coupled.cfg' returned a non-zero code: 255

Extend adapter to read Displacements (and allow configuration)

The adapter currently only reads DisplacementDeltas and writes Forces:

solverInterface.setMeshVertices(meshID[indexMarkerWetMappingLocalToGlobal[i]], vertexSize[i], coords, vertexIDs[i]);
forceID[indexMarkerWetMappingLocalToGlobal[i]] = solverInterface.getDataID("Forces" + to_string(indexMarkerWetMappingLocalToGlobal[i]), meshID[indexMarkerWetMappingLocalToGlobal[i]]);
displDeltaID[indexMarkerWetMappingLocalToGlobal[i]] = solverInterface.getDataID("DisplacementDeltas" + to_string(indexMarkerWetMappingLocalToGlobal[i]), meshID[indexMarkerWetMappingLocalToGlobal[i]]);

We also need to be able to read Displacements, as not every structure solver we have supports DisplacementDeltas.

Moreover, the data names are currently hard-coded. We should add two options in the configuration file to configure what the adapter writes and reads:

//preCICE
/*--- options related to preCICE ---*/
/* DESCRIPTION: Activate preCICE for FSI coupling */
addBoolOption("PRECICE_USAGE", precice_usage, false);
/* DESCRIPTION: Activate high verbosity level of preCICE adapter for FSI coupling */
addBoolOption("PRECICE_VERBOSITYLEVEL_HIGH", precice_verbosityLevel_high, false);
/* DESCRIPTION: Activate preCICE load ramping procedure to stabilize simulations during the first time steps */
addBoolOption("PRECICE_LOADRAMPING", precice_loadRamping, false);
/* DESCRIPTION: preCICE configuration file name */
addStringOption("PRECICE_CONFIG_FILENAME", preciceConfigFileName, string("precice.xml"));
/* DESCRIPTION: preCICE wet surface marker name (specified in the mesh file) */
addStringOption("PRECICE_WETSURFACE_MARKER_NAME", preciceWetSurfaceMarkerName, string("wetSurface"));
/* DESCRIPTION: Number of time steps to apply the load ramping precedure of the preCICE adapter. */
addUnsignedLongOption("PRECICE_LOADRAMPING_DURATION", precice_loadRampingDuration, 1);
/* DESCRIPTION: Number of wet surfaces in the preCICE FSI simulation. */
addUnsignedLongOption("PRECICE_NUMBER_OF_WETSURFACES", precice_numberWetSurfaces, 1);

Double free or corruption (fasttop) when running tutorial

The SU2-Calculix systemtest is failing on TravisCI, the logs for the docker containers can be found here (corresponding log to the linked TravisCI build 1773.17). The log shows that the su2 participant crashes at the end of the simulation with:

Process #0/0: Finalizing preCICE...
Run finished at Tue Feb 25 07:21:54 2020
Global runtime       = 147721.000000ms / 147.721000s
Number of processors = 1
# Rank: 0

                                                                         Event |      Count |  Total[ms] |    Max[ms] |    Min[ms] |    Avg[ms] | Time Ratio |
--------------------------------------------------------------------------------------------------------------------------------------------------------------
                                                                       _GLOBAL |          1 |     147721 |     147721 |     147721 |     147721 |      1.000 |
                                                                       advance |        932 |      16926 |         91 |          6 |         18 |      0.115 |
                                                       advance/m2n.receiveData |        932 |        105 |          0 |          0 |          0 |      0.001 |
                                                          advance/m2n.sendData |        932 |        273 |          7 |          0 |          0 |      0.002 |
                    advance/map.nn.computeMapping.FromCalculix_MeshToSU2_Mesh0 |          1 |          1 |          1 |          1 |          1 |      0.000 |
 advance/map.nn.computeMapping.FromCalculix_MeshToSU2_Mesh0.getIndexOnVertices |          1 |          0 |          0 |          0 |          0 |      0.000 |
                    advance/map.nn.computeMapping.FromSU2_Mesh0ToCalculix_Mesh |          1 |          4 |          4 |          4 |          4 |      0.000 |
 advance/map.nn.computeMapping.FromSU2_Mesh0ToCalculix_Mesh.getIndexOnVertices |          1 |          1 |          1 |          1 |          1 |      0.000 |
                           advance/map.nn.mapData.FromCalculix_MeshToSU2_Mesh0 |        932 |         89 |          0 |          0 |          0 |      0.001 |
                           advance/map.nn.mapData.FromSU2_Mesh0ToCalculix_Mesh |        932 |         42 |          0 |          0 |          0 |      0.000 |
                                                                     configure |          1 |          1 |          1 |          1 |          1 |      0.000 |
                                                                      finalize |          1 |         39 |         39 |         39 |         39 |      0.000 |
                                                                    initialize |          1 |        104 |        104 |        104 |        104 |      0.001 |
                                   initialize/m2n.broadcastVertexDistributions |          1 |          0 |          0 |          0 |          0 |      0.000 |
                                          initialize/m2n.buildCommunicationMap |          1 |          0 |          0 |          0 |          0 |      0.000 |
                                           initialize/m2n.createCommunications |          1 |          9 |          9 |          9 |          9 |      0.000 |
                                     initialize/m2n.exchangeVertexDistribution |          1 |         44 |         44 |         44 |         44 |      0.000 |
                                        initialize/m2n.requestMasterConnection |          1 |          8 |          8 |          8 |          8 |      0.000 |
                                        initialize/m2n.requestSlavesConnection |          1 |         54 |         54 |         54 |         54 |      0.000 |
                                    initialize/partition.prepareMesh.SU2_Mesh0 |          1 |          0 |          0 |          0 |          0 |      0.000 |
                          initialize/partition.receiveGlobalMesh.Calculix_Mesh |          1 |         36 |         36 |         36 |         36 |      0.000 |
                                                                solver.advance |        932 |     130402 |        292 |          9 |        139 |      0.883 |
                                                             solver.initialize |          1 |        219 |        219 |        219 |        219 |      0.001 |


*** Error in `SU2_CFD': double free or corruption (fasttop): 0x0000000002245ce0 ***
                                                                          Name |        Max |  MaxOnRank |        Min |  MinOnRank |    Min/Max |
-------------------------------------------------------------------------------------------------------------------------------------------------
                                                                       _GLOBAL | 147721.000000 |          0 | 147721.000000 |          0 |   1.000000 |
                                                                       advance |  91.000000 |          0 |   6.000000 |          0 |   0.065934 |
                                                       advance/m2n.receiveData |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                                                          advance/m2n.sendData |   7.000000 |          0 |   0.000000 |          0 |   0.000000 |
                    advance/map.nn.computeMapping.FromCalculix_MeshToSU2_Mesh0 |   1.000000 |          0 |   1.000000 |          0 |   1.000000 |
 advance/map.nn.computeMapping.FromCalculix_MeshToSU2_Mesh0.getIndexOnVertices |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                    advance/map.nn.computeMapping.FromSU2_Mesh0ToCalculix_Mesh |   4.000000 |          0 |   4.000000 |          0 |   1.000000 |
 advance/map.nn.computeMapping.FromSU2_Mesh0ToCalculix_Mesh.getIndexOnVertices |   1.000000 |          0 |   1.000000 |          0 |   1.000000 |
                           advance/map.nn.mapData.FromCalculix_MeshToSU2_Mesh0 |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                           advance/map.nn.mapData.FromSU2_Mesh0ToCalculix_Mesh |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                                                                     configure |   1.000000 |          0 |   1.000000 |          0 |   1.000000 |
                                                                      finalize |  39.000000 |          0 |  39.000000 |          0 |   1.000000 |
                                                                    initialize | 104.000000 |          0 | 104.000000 |          0 |   1.000000 |
                                   initialize/m2n.broadcastVertexDistributions |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                                          initialize/m2n.buildCommunicationMap |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                                           initialize/m2n.createCommunications |   9.000000 |          0 |   9.000000 |          0 |   1.000000 |
                                     initialize/m2n.exchangeVertexDistribution |  44.000000 |          0 |  44.000000 |          0 |   1.000000 |
                                        initialize/m2n.requestMasterConnection |   8.000000 |          0 |   8.000000 |          0 |   1.000000 |
                                        initialize/m2n.requestSlavesConnection |  54.000000 |          0 |  54.000000 |          0 |   1.000000 |
                                    initialize/partition.prepareMesh.SU2_Mesh0 |   0.000000 |          0 |   0.000000 |          0 |   0.000000 |
                          initialize/partition.receiveGlobalMesh.Calculix_Mesh |  36.000000 |          0 |  36.000000 |          0 |   1.000000 |
                                                                solver.advance | 292.000000 |          0 |   9.000000 |          0 |   0.030822 |
                                                             solver.initialize | 219.000000 |          0 | 219.000000 |          0 |   1.000000 |
Process #0/0: Done finalizing preCICE!
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f69fdfa57e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f69fdfae37a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f69fdfb253c]
SU2_CFD[0x4c24d4]
SU2_CFD[0x423f78]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f69fdf4e830]
SU2_CFD[0x423829]

======= Memory map: ========
00400000-0106d000 r-xp 00000000 08:01 1978128                            /home/precice/su2-bin/bin/SU2_CFD
0126c000-0129d000 r--p 00c6c000 08:01 1978128                            /home/precice/su2-bin/bin/SU2_CFD
0129d000-0129e000 rw-p 00c9d000 08:01 1978128                            /home/precice/su2-bin/bin/SU2_CFD
0129e000-012f3000 rw-p 00000000 00:00 0 
02231000-031eb000 rw-p 00000000 00:00 0                                  [heap]
7f69ed07f000-7f69ed080000 ---p 00000000 00:00 0 
7f69ed080000-7f69ed880000 rw-p 00000000 00:00 0 
7f69ed880000-7f69ed881000 ---p 00000000 00:00 0 
7f69ed881000-7f69ee081000 rw-p 00000000 00:00 0 
7f69f0000000-7f69f0021000 rw-p 00000000 00:00 0 
7f69f0021000-7f69f4000000 ---p 00000000 00:00 0 
7f69f6025000-7f69f6026000 ---p 00000000 00:00 0 
7f69f6026000-7f69f6826000 rw-p 00000000 00:00 0 
7f69f7652000-7f69f765d000 r-xp 00000000 08:01 1444328                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f69f765d000-7f69f785c000 ---p 0000b000 08:01 1444328                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f69f785c000-7f69f785d000 r--p 0000a000 08:01 1444328                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f69f785d000-7f69f785e000 rw-p 0000b000 08:01 1444328                    /lib/x86_64-linux-gnu/libnss_files-2.23.so
7f69f785e000-7f69f7864000 rw-p 00000000 00:00 0 
7f69f7864000-7f69f786f000 r-xp 00000000 08:01 1444332                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f69f786f000-7f69f7a6e000 ---p 0000b000 08:01 1444332                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f69f7a6e000-7f69f7a6f000 r--p 0000a000 08:01 1444332                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f69f7a6f000-7f69f7a70000 rw-p 0000b000 08:01 1444332                    /lib/x86_64-linux-gnu/libnss_nis-2.23.so
7f69f7e5e000-7f69f7e74000 r-xp 00000000 08:01 1444322                    /lib/x86_64-linux-gnu/libnsl-2.23.so
7f69f7e74000-7f69f8073000 ---p 00016000 08:01 1444322                    /lib/x86_64-linux-gnu/libnsl-2.23.so
7f69f8073000-7f69f8074000 r--p 00015000 08:01 1444322                    /lib/x86_64-linux-gnu/libnsl-2.23.so
7f69f8074000-7f69f8075000 rw-p 00016000 08:01 1444322                    /lib/x86_64-linux-gnu/libnsl-2.23.so
7f69f8075000-7f69f8077000 rw-p 00000000 00:00 0 
7f69f8077000-7f69f807f000 r-xp 00000000 08:01 1444324                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f69f807f000-7f69f827e000 ---p 00008000 08:01 1444324                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f69f827e000-7f69f827f000 r--p 00007000 08:01 1444324                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f69f827f000-7f69f8280000 rw-p 00008000 08:01 1444324                    /lib/x86_64-linux-gnu/libnss_compat-2.23.so
7f69f888b000-7f69f8894000 r-xp 00000000 08:01 1581101                    /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f69f8894000-7f69f8a93000 ---p 00009000 08:01 1581101                    /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f69f8a93000-7f69f8a94000 r--p 00008000 08:01 1581101                    /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f69f8a94000-7f69f8a95000 rw-p 00009000 08:01 1581101                    /usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1
7f69f8a95000-7f69f8a9f000 r-xp 00000000 08:01 1581131                    /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f69f8a9f000-7f69f8c9e000 ---p 0000a000 08:01 1581131                    /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f69f8c9e000-7f69f8c9f000 r--p 00009000 08:01 1581131                    /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f69f8c9f000-7f69f8ca0000 rw-p 0000a000 08:01 1581131                    /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0
7f69f8ca0000-7f69f8ca2000 r-xp 00000000 08:01 1444373                    /lib/x86_64-linux-gnu/libutil-2.23.so
7f69f8ca2000-7f69f8ea1000 ---p 00002000 08:01 1444373                    /lib/x86_64-linux-gnu/libutil-2.23.so
7f69f8ea1000-7f69f8ea2000 r--p 00001000 08:01 1444373                    /lib/x86_64-linux-gnu/libutil-2.23.so
7f69f8ea2000-7f69f8ea3000 rw-p 00002000 08:01 1444373                    /lib/x86_64-linux-gnu/libutil-2.23.so
7f69f8ea3000-7f69f8edc000 r-xp 00000000 08:01 1581030                    /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f69f8edc000-7f69f90db000 ---p 00039000 08:01 1581030                    /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f69f90db000-7f69f90dc000 r--p 00038000 08:01 1581030                    /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f69f90dc000-7f69f90dd000 rw-p 00039000 08:01 1581030                    /usr/lib/x86_64-linux-gnu/libhwloc.so.5.6.8
7f69f90dd000-7f69fa993000 r-xp 00000000 08:01 1581036                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f69fa993000-7f69fab92000 ---p 018b6000 08:01 1581036                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f69fab92000-7f69fab93000 r--p 018b5000 08:01 1581036                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f69fab93000-7f69fab94000 rw-p 018b6000 08:01 1581036                    /usr/lib/x86_64-linux-gnu/libicudata.so.55.1
7f69fab94000-7f69fade6000 r-xp 00000000 08:01 1581040                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f69fade6000-7f69fafe6000 ---p 00252000 08:01 1581040                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f69fafe6000-7f69faff5000 r--p 00252000 08:01 1581040                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f69faff5000-7f69faff6000 rw-p 00261000 08:01 1581040                    /usr/lib/x86_64-linux-gnu/libicui18n.so.55.1
7f69faff6000-7f69fb086000 r-xp 00000000 08:01 1578154                    /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f69fb086000-7f69fb286000 ---p 00090000 08:01 1578154                    /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f69fb286000-7f69fb28a000 r--p 00090000 08:01 1578154                    /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f69fb28a000-7f69fb28e000 rw-p 00094000 08:01 1578154                    /usr/lib/openmpi/lib/libopen-pal.so.13.0.2
7f69fb28e000-7f69fb293000 rw-p 00000000 00:00 0 
7f69fb293000-7f69fb308000 r-xp 00000000 08:01 1578156                    /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f69fb308000-7f69fb507000 ---p 00075000 08:01 1578156                    /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f69fb507000-7f69fb508000 r--p 00074000 08:01 1578156                    /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f69fb508000-7f69fb50b000 rw-p 00075000 08:01 1578156                    /usr/lib/openmpi/lib/libopen-rte.so.12.0.2
7f69fb50b000-7f69fb50d000 rw-p 00000000 00:00 0 
7f69fb50d000-7f69fb51a000 r-xp 00000000 08:01 1577318                    /usr/lib/libibverbs.so.1.0.0
7f69fb51a000-7f69fb71a000 ---p 0000d000 08:01 1577318                    /usr/lib/libibverbs.so.1.0.0
7f69fb71a000-7f69fb71b000 r--p 0000d000 08:01 1577318                    /usr/lib/libibverbs.so.1.0.0
7f69fb71b000-7f69fb71c000 rw-p 0000e000 08:01 1577318                    /usr/lib/libibverbs.so.1.0.0
7f69fb71c000-7f69fb73d000 r-xp 00000000 08:01 1444310                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f69fb73d000-7f69fb93c000 ---p 00021000 08:01 1444310                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f69fb93c000-7f69fb93d000 r--p 00020000 08:01 1444310                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f69fb93d000-7f69fb93e000 rw-p 00021000 08:01 1444310                    /lib/x86_64-linux-gnu/liblzma.so.5.0.0
7f69fb93e000-7f69fb957000 r-xp 00000000 08:01 1444378                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69fb957000-7f69fbb56000 ---p 00019000 08:01 1444378                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69fbb56000-7f69fbb57000 r--p 00018000 08:01 1444378                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69fbb57000-7f69fbb58000 rw-p 00019000 08:01 1444378                    /lib/x86_64-linux-gnu/libz.so.1.2.8
7f69fbb58000-7f69fbcd7000 r-xp 00000000 08:01 1581064                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f69fbcd7000-7f69fbed7000 ---p 0017f000 08:01 1581064                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f69fbed7000-7f69fbee7000 r--p 0017f000 08:01 1581064                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f69fbee7000-7f69fbee8000 rw-p 0018f000 08:01 1581064                    /usr/lib/x86_64-linux-gnu/libicuuc.so.55.1
7f69fbee8000-7f69fbeec000 rw-p 00000000 00:00 0 
7f69fbeec000-7f69fc006000 r-xp 00000000 08:01 1840512                    /usr/local/lib/libboost_regex.so.1.65.1
7f69fc006000-7f69fc205000 ---p 0011a000 08:01 1840512                    /usr/local/lib/libboost_regex.so.1.65.1
7f69fc205000-7f69fc20a000 r--p 00119000 08:01 1840512                    /usr/local/lib/libboost_regex.so.1.65.1
7f69fc20a000-7f69fc20c000 rw-p 0011e000 08:01 1840512                    /usr/local/lib/libboost_regex.so.1.65.1
7f69fc20c000-7f69fc20d000 rw-p 00000000 00:00 0 
7f69fc20d000-7f69fc214000 r-xp 00000000 08:01 1444353                    /lib/x86_64-linux-gnu/librt-2.23.so
7f69fc214000-7f69fc413000 ---p 00007000 08:01 1444353                    /lib/x86_64-linux-gnu/librt-2.23.so
7f69fc413000-7f69fc414000 r--p 00006000 08:01 1444353                    /lib/x86_64-linux-gnu/librt-2.23.so
7f69fc414000-7f69fc415000 rw-p 00007000 08:01 1444353                    /lib/x86_64-linux-gnu/librt-2.23.so
7f69fc415000-7f69fc4c7000 r-xp 00000000 08:01 1578142                    /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f69fc4c7000-7f69fc6c7000 ---p 000b2000 08:01 1578142                    /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f69fc6c7000-7f69fc6c8000 r--p 000b2000 08:01 1578142                    /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f69fc6c8000-7f69fc6d8000 rw-p 000b3000 08:01 1578142                    /usr/lib/openmpi/lib/libmpi.so.12.0.2
7f69fc6d8000-7f69fc6eb000 rw-p 00000000 00:00 0 
7f69fc6eb000-7f69fc703000 r-xp 00000000 08:01 1578144                    /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f69fc703000-7f69fc903000 ---p 00018000 08:01 1578144                    /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f69fc903000-7f69fc905000 r--p 00018000 08:01 1578144                    /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f69fc905000-7f69fc906000 rw-p 0001a000 08:01 1578144                    /usr/lib/openmpi/lib/libmpi_cxx.so.1.1.3
7f69fc906000-7f69fc91e000 r-xp 00000000 08:01 1444347                    /lib/x86_64-linux-gnu/libpthread-2.23.so
7f69fc91e000-7f69fcb1d000 ---p 00018000 08:01 1444347                    /lib/x86_64-linux-gnu/libpthread-2.23.so
7f69fcb1d000-7f69fcb1e000 r--p 00017000 08:01 1444347                    /lib/x86_64-linux-gnu/libpthread-2.23.so
7f69fcb1e000-7f69fcb1f000 rw-p 00018000 08:01 1444347                    /lib/x86_64-linux-gnu/libpthread-2.23.so
7f69fcb1f000-7f69fcb23000 rw-p 00000000 00:00 0 
7f69fcb23000-7f69fccd4000 r-xp 00000000 08:01 1581208                    /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f69fccd4000-7f69fced3000 ---p 001b1000 08:01 1581208                    /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f69fced3000-7f69fcedb000 r--p 001b0000 08:01 1581208                    /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f69fcedb000-7f69fcedd000 rw-p 001b8000 08:01 1581208                    /usr/lib/x86_64-linux-gnu/libxml2.so.2.9.3
7f69fcedd000-7f69fcede000 rw-p 00000000 00:00 0 
7f69fcede000-7f69fcee1000 r-xp 00000000 08:01 1444292                    /lib/x86_64-linux-gnu/libdl-2.23.so
7f69fcee1000-7f69fd0e0000 ---p 00003000 08:01 1444292                    /lib/x86_64-linux-gnu/libdl-2.23.so
7f69fd0e0000-7f69fd0e1000 r--p 00002000 08:01 1444292                    /lib/x86_64-linux-gnu/libdl-2.23.so
7f69fd0e1000-7f69fd0e2000 rw-p 00003000 08:01 1444292                    /lib/x86_64-linux-gnu/libdl-2.23.so
7f69fd0e2000-7f69fd109000 r-xp 00000000 08:01 1840519                    /usr/local/lib/libboost_thread.so.1.65.1
7f69fd109000-7f69fd308000 ---p 00027000 08:01 1840519                    /usr/local/lib/libboost_thread.so.1.65.1
7f69fd308000-7f69fd30a000 r--p 00026000 08:01 1840519                    /usr/local/lib/libboost_thread.so.1.65.1
7f69fd30a000-7f69fd30b000 rw-p 00028000 08:01 1840519                    /usr/local/lib/libboost_thread.so.1.65.1
7f69fd30b000-7f69fd30e000 r-xp 00000000 08:01 1840515                    /usr/local/lib/libboost_system.so.1.65.1
7f69fd30e000-7f69fd50d000 ---p 00003000 08:01 1840515                    /usr/local/lib/libboost_system.so.1.65.1
7f69fd50d000-7f69fd50e000 r--p 00002000 08:01 1840515                    /usr/local/lib/libboost_system.so.1.65.1
7f69fd50e000-7f69fd50f000 rw-p 00003000 08:01 1840515                    /usr/local/lib/libboost_system.so.1.65.1
7f69fd50f000-7f69fd58b000 r-xp 00000000 08:01 1840509                    /usr/local/lib/libboost_program_options.so.1.65.1
7f69fd58b000-7f69fd78b000 ---p 0007c000 08:01 1840509                    /usr/local/lib/libboost_program_options.so.1.65.1
7f69fd78b000-7f69fd78e000 r--p 0007c000 08:01 1840509                    /usr/local/lib/libboost_program_options.so.1.65.1
7f69fd78e000-7f69fd78f000 rw-p 0007f000 08:01 1840509                    /usr/local/lib/libboost_program_options.so.1.65.1
7f69fd78f000-7f69fd832000 r-xp 00000000 08:01 1840503                    /usr/local/lib/libboost_log_setup.so.1.65.1
7f69fd832000-7f69fda31000 ---p 000a3000 08:01 1840503                    /usr/local/lib/libboost_log_setup.so.1.65.1
7f69fda31000-7f69fda36000 r--p 000a2000 08:01 1840503                    /usr/local/lib/libboost_log_setup.so.1.65.1
7f69fda36000-7f69fda37000 rw-p 000a7000 08:01 1840503                    /usr/local/lib/libboost_log_setup.so.1.65.1
7f69fda37000-7f69fda39000 rw-p 00000000 00:00 0 
7f69fda39000-7f69fdb0b000 r-xp 00000000 08:01 1840500                    /usr/local/lib/libboost_log.so.1.65.1
7f69fdb0b000-7f69fdd0b000 ---p 000d2000 08:01 1840500                    /usr/local/lib/libboost_log.so.1.65.1
7f69fdd0b000-7f69fdd11000 r--p 000d2000 08:01 1840500                    /usr/local/lib/libboost_log.so.1.65.1
7f69fdd11000-7f69fdd13000 rw-p 000d8000 08:01 1840500                    /usr/local/lib/libboost_log.so.1.65.1
7f69fdd13000-7f69fdd2c000 r-xp 00000000 08:01 1840497                    /usr/local/lib/libboost_filesystem.so.1.65.1
7f69fdd2c000-7f69fdf2c000 ---p 00019000 08:01 1840497                    /usr/local/lib/libboost_filesystem.so.1.65.1
7f69fdf2c000-7f69fdf2d000 r--p 00019000 08:01 1840497                    /usr/local/lib/libboost_filesystem.so.1.65.1
7f69fdf2d000-7f69fdf2e000 rw-p 0001a000 08:01 1840497                    /usr/local/lib/libboost_filesystem.so.1.65.1
7f69fdf2e000-7f69fe0ee000 r-xp 00000000 08:01 1444279                    /lib/x86_64-linux-gnu/libc-2.23.so
7f69fe0ee000-7f69fe2ee000 ---p 001c0000 08:01 1444279                    /lib/x86_64-linux-gnu/libc-2.23.so
7f69fe2ee000-7f69fe2f2000 r--p 001c0000 08:01 1444279                    /lib/x86_64-linux-gnu/libc-2.23.so
7f69fe2f2000-7f69fe2f4000 rw-p 001c4000 08:01 1444279                    /lib/x86_64-linux-gnu/libc-2.23.so
7f69fe2f4000-7f69fe2f8000 rw-p 00000000 00:00 0 
7f69fe2f8000-7f69fe30e000 r-xp 00000000 08:01 1444300                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69fe30e000-7f69fe50d000 ---p 00016000 08:01 1444300                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69fe50d000-7f69fe50e000 rw-p 00015000 08:01 1444300                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f69fe50e000-7f69fe616000 r-xp 00000000 08:01 1444311                    /lib/x86_64-linux-gnu/libm-2.23.so
7f69fe616000-7f69fe815000 ---p 00108000 08:01 1444311                    /lib/x86_64-linux-gnu/libm-2.23.so
7f69fe815000-7f69fe816000 r--p 00107000 08:01 1444311                    /lib/x86_64-linux-gnu/libm-2.23.so
7f69fe816000-7f69fe817000 rw-p 00108000 08:01 1444311                    /lib/x86_64-linux-gnu/libm-2.23.so
7f69fe817000-7f69fe989000 r-xp 00000000 08:01 1447622                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f69fe989000-7f69feb89000 ---p 00172000 08:01 1447622                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f69feb89000-7f69feb93000 r--p 00172000 08:01 1447622                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f69feb93000-7f69feb95000 rw-p 0017c000 08:01 1447622                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21
7f69feb95000-7f69feb99000 rw-p 00000000 00:00 0 
7f69feb99000-7f69fff32000 r-xp 00000000 08:01 1841278                    /home/precice/precice-install/lib/libprecice.so.2.0.0
7f69fff32000-7f6a00132000 ---p 01399000 08:01 1841278                    /home/precice/precice-install/lib/libprecice.so.2.0.0
7f6a00132000-7f6a0013e000 r--p 01399000 08:01 1841278                    /home/precice/precice-install/lib/libprecice.so.2.0.0
7f6a0013e000-7f6a00188000 rw-p 013a5000 08:01 1841278                    /home/precice/precice-install/lib/libprecice.so.2.0.0
7f6a00188000-7f6a00189000 rw-p 00000000 00:00 0 
7f6a00189000-7f6a001af000 r-xp 00000000 08:01 1444259                    /lib/x86_64-linux-gnu/ld-2.23.so
7f6a00385000-7f6a003a4000 rw-p 00000000 00:00 0 
7f6a003ac000-7f6a003ae000 rw-p 00000000 00:00 0 
7f6a003ae000-7f6a003af000 r--p 00025000 08:01 1444259                    /lib/x86_64-linux-gnu/ld-2.23.so
7f6a003af000-7f6a003b0000 rw-p 00026000 08:01 1444259                    /lib/x86_64-linux-gnu/ld-2.23.so
7f6a003b0000-7f6a003b1000 rw-p 00000000 00:00 0 
7fff49f03000-7fff49f24000 rw-p 00000000 00:00 0                          [stack]
7fff49fae000-7fff49fb0000 r--p 00000000 00:00 0                          [vvar]
7fff49fb0000-7fff49fb2000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
[eb7952132262:00007] *** Process received signal ***
[eb7952132262:00007] Signal: Aborted (6)
[eb7952132262:00007] Signal code:  (-6)
[eb7952132262:00007] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x7f69fdf634b0]
[eb7952132262:00007] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f69fdf63428]
[eb7952132262:00007] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f69fdf6502a]
[eb7952132262:00007] [ 3] /lib/x86_64-linux-gnu/libc.so.6(+0x777ea)[0x7f69fdfa57ea]
[eb7952132262:00007] [ 4] /lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7f69fdfae37a]
[eb7952132262:00007] [ 5] /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f69fdfb253c]
[eb7952132262:00007] [ 6] SU2_CFD[0x4c24d4]
[eb7952132262:00007] [ 7] SU2_CFD[0x423f78]
[eb7952132262:00007] [ 8] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f69fdf4e830]
[eb7952132262:00007] [ 9] SU2_CFD[0x423829]
[eb7952132262:00007] *** End of error message ***
/bin/bash: line 3:     7 Aborted                 (core dumped) SU2_CFD Fluid/euler_config_coupled.cfg

Additional info:
TravisCI runs a Ubuntu 14.04 virtual machine
SU2 and CCX adapters run in Ubuntu 16.04 based docker containers
using SU2 adapter v6.0.0
running the develop branch of the SU2-CCX tutorial

Note that @MakisH also experienced a similar error an error when running the parallel version of the tutorial on a local machine (running Ubuntu 16.04)

Seems closely related to #3 , but only appeared recently on TravisCI. The last successful job was around Feb 17th. The test appears to be working now, failing sporadically with the same error. Unfortunately I have no idea what could be the cause of it.

Update: The same error occurs when running the adapters in Ubuntu 18.04.

Failed Compilation on Windows Linux Subsystem

I have tried to install SU2-adapter on Windows Linux Subsystem: Ubuntu 18.04LTS
And when I compiled the SU2-adapter, I got following link error message:

/usr/bin/ld: /home/hxq/preCICE/install/lib/libprecice.a(LogConfiguration.cpp.o): undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:1198: recipe for target '../bin/SU2_CFD' failed
make[1]: *** [../bin/SU2_CFD] Error 1
make[1]: Leaving directory '/home/hxq/SU2/SU2-6.0.0/SU2_CFD/obj'
Makefile:458: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

What can I do for it?
Thanks very much for any advices

SU2 Version compatibility

Hello,

i'm trying to compile SU2 5.0 with su2precice adapter already installed with su2adapterInstall.
Then i moved in Su2 root, and after that configuration end without problem, i ran make and received a series of errors like:
make[1]: Entering directory `/local/SU2/Common/lib'
CXX ../src/libSU2_a-geometry_structure.o
CXX ../src/libSU2_a-grid_adaptation_structure.o
CXX ../src/libSU2_a-grid_movement_structure.o
CXX ../src/libSU2_a-matrix_structure.o
../src/matrix_structure.cpp: In member function ‘void CSysMatrix::SetIndexes(long unsigned int, long unsigned int, short unsigned int, short unsigned int, long unsigned int*, long unsigned int*, long unsigned int, CConfig*)’:
../src/matrix_structure.cpp:240:53: error: ‘class CConfig’ has no member named ‘GetKind_Deform_Linear_Solver_Prec’
((config->GetKind_SU2() == SU2_DEF) && (config->GetKind_Deform_Linear_Solver_Prec() == ILU)) ||

It depends from su2 version? Thank you

Finalization of preCICE fails when coupled simulation finalizes

As discussed on discourse, the following error might occur when the simulation finalizes

ERROR: The required actions write-iteration-checkpoint are not fulfilled. Did you forget to call “markActionFulfilled”?

There is probably something wrong when isCouplingOngoing returns false and we leave the time loop.

m2n communication with files

Hi,

i'm trying to run the testcase changing m2n from socket to files, but i've got those errors on launching the two solvers:

Calculix:
ASSERTION FAILED
Location: src/com/FileCommunication.cpp:262
Rank: 0
Failed expression: _sendFile.is_open()

SU2
ASSERTION FAILED
Location: src/com/FileCommunication.cpp:379
Rank: 0
Failed expression: _receiveFile.is_open()

i've changed the config file in this way:
<m2n:files from="SU2_CFD" to="Calculix" exchange-directory="."/>

What's was wrong?

Thanks

Extend adapter to handle Quasi 2D-3D coupling

When SU2 is coupled in a quasi 2D-3D manner to other solvers, the dimensions specified by preCICE is 3 but the mesh provided to SU2 is 2. Currently there is an assertion in the adapter to prevent such a configuration from running.
For example with the perpendicular flap tutorial case for SU2-CalculiX, the only reason why SU2 uses a 3D mesh (with one dimension having a single) is that CalculiX is 3D. It would be easier for a SU2 user to just specify a 2D mesh and the adapter handle quasi 2D-3D coupling.

Open question: Which direction does the adapter ignore when a quasi 2D-3D coupling is defined? Usually the X-dimension is always valid and either of Y- or Z- are ignored. For example, in the fenics-adapter the Z-direction is ignored. But for the SU2-CalculiX perpendicular flap case the Y-direction is ignored. A decision will help in implementation.

Maintainer needed (experience with SU2)

Dear preCICE community, dear SU2 community,

as you see, this repository is currently not actively maintained, but it is also not abandoned. As the preCICE developers have limited experience with SU2, we would very happily accept contributions to keep this project up-to-date.

If you have experience with SU2, maintaining the adapter (e.g. updating for new SU2 versions, commenting on issues, reviewing pull requests) would be quite easy and you would have all the help you need from our side. Due to the low demand for this adapter and the low frequency of SU2 releases, the time demand would be also low and, of course, on your own pace. Any help appreciated, for as long as you like.

Contribute to a quickly growing free/open-source project, be part of an enthusiastic community. Simply comment here if you can help. 🤗

su2-adapter installation failed

I'm trying to compile SU2 with the precice-su2-adapter as described on this github-page. Especially i try to build the AD-version of SU2(see https://su2code.github.io/docs/AD-Build/). Running the SU2 make install command i get the following error corresponding to parts of the replaced files:

In (...) driver_structure.cpp:2981:68: error: cannot convert ‘su2double {aka codi::ActiveReal<codi::JacobiTape<codi::ChunkTapeTypes<double, codi::LinearIndexHandler > > >}’ to ‘double’ in initialization
dt = new double(config_container[ZONE_0]->GetDelta_UnstTimeND());
^
Makefile:2748: recipe for target '../src/___bin_SU2_CFD_AD-driver_structure.o' failed

The corresponding lines in the driver_structure.cpp file are:

  precice_usage = config_container[ZONE_0]->GetpreCICE_Usage();
  if (precice_usage) {
    precice = new Precice(rank, size, geometry_container, solver_container, config_container, grid_movement);
    dt = new double(config_container[ZONE_0]->GetDelta_UnstTimeND());
    precice->configure(config_container[ZONE_0]->GetpreCICE_ConfigFileName());
    max_precice_dt = new double(precice->initialize());
  }

I use SU2 version 6.0.0 and preCICE version 1.2.0 on Ubuntu 18.04.1 LTS. The preCICE tests work fine if I ignore the mpi and petsc rbf tests as suggested.

Reading absolute displacement data doesn't support extrapolation

The SU2 adapter was initially designed for displacement deltas. We extended the read data capability for absolute read data in #21 using the following logic:

        case ReadDataType::Displacement: {
          for (int iVertex = 0; iVertex < vertexSize[i]; iVertex++) {
            for (int iDim = 0; iDim < nDim; iDim++) {
              displacementDeltas_su2[iVertex][iDim] =
                  displacements[iVertex * nDim + iDim] - displacements_n[iVertex * nDim + iDim];

              if (solverInterface.isTimeWindowComplete()) {
                displacements_n[iVertex * nDim + iDim] = displacements[iVertex * nDim + iDim];
              }
            }
          }
          break;
        }

i.e. we compute the delta from the absolute displacement of the previous time window. The motivation was given due to the tutorial restructuring precice/tutorials#125. However, this approach does not allow to use an extrapolation in the precice configuration, see #21 (comment), since we would store extrapolated data.

Duplicated coupling nodes in parallel runs

When working a bit with samples created from SU2, I realized that SU2/ our adapter implementation currently duplicates interface nodes at rank boundaries. This poses ill-defined mapping problems for preCICE and might lead to (rather) undefined behavior in the solver (although I'm not familiar with the details here in SU2).

We did not notice it so far because the perpendicular-flap tutorial executes all mappings on the fluid side, i.e., the fluid mesh constitutes the output mesh. However, switching the mapping to the solid participant (write->read) and making the Force mapping (physically wrong, only for the experiment here) a consistent mapping, leads to a RBF divergence in parallel, while it works in serial. Looking at the number of vertices in our exports confirms the duplicate definition across multiple ranks.

SU2 wrapper and SU2 adapter could be pip-installable

The current installation procedure is the following:

  • Modify two SU2 source files and build SU2
  • Modify the PATH and PYTHONPATH to point to the directories of the SU2 Python wrapper and the SU2 adapter

Setting environment variables is often complicated in CI and various provisioning scripts. Being able to do a pip install would simplify things a lot.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.