IPC
Incremental Potential Contact (IPC) is for robust and accurate time stepping of nonlinear elastodynamics. IPC guarantees intersection- and inversion-free trajectories regardless of materials, time-step sizes, velocities, or deformation severity.
File Explorer
Download Latest Version (.zip)- continuous.yml
- FindAVX.cmake
- FindFMA.cmake
- FindPardiso.cmake
- FindSSE.cmake
- FindSuiteSparse.cmake
- ipc_cpm_cache.cmake
- ipc_warnings.cmake
- amgcl.cmake
- boost.cmake
- catch2.cmake
- ccd_wrapper.cmake
- cli11.cmake
- CPM.cmake
- eigen.cmake
- eigen_gurobi.cmake
- filesystem.cmake
- finite_diff.cmake
- libigl.cmake
- mshio.cmake
- onetbb.cmake
- osqp.cmake
- spdlog.cmake
- CMakeLists.txt
- git-cmake-format.py
- git-pre-commit-hook
- GurobiException.txt
- GurobiIncomplete.txt
- SQPMemoryIssue1.txt
- SQPMemoryIssue2.txt
- SQPMemoryIssue3.txt
- SQPMemoryIssue4.txt
- matTwist.txt
- octocatBowl.txt
- octocatPlane.txt
- pointTriangleCO.txt
- somethingPlane.txt
- torusCone.txt
- mat40x40_pointPlaneDrop.txt
- mat40x40_segPlaneDrop.txt
- mat40x40_squarePlaneDrop.txt
- octocat_pointPlaneDrop.txt
- octocat_segPlaneDrop.txt
- octocat_squarePlaneDrop.txt
- sphere5K_pointPlaneDrop.txt
- sphere5K_segPlaneDrop.txt
- sphere5K_squarePlaneDrop.txt
- 2tets.txt
- masonryArch_25.txt
- masonryArch_25_0.2.txt
- matHouse_sharp.txt
- matHouse_sharp0.2.txt
- slopeTest_highSchoolPhysics_0.49.txt
- slopeTest_highSchoolPhysics_0.5.txt
- 2matsFall.txt
- mat40x40Twist.txt
- rodsTwist.txt
- sphere1K_DCORotCylinders.txt
- sphere1K_segBedSquash.txt
- bar-test.txt
- 2_mat40x40s_fall_E1e2.txt
- 2_mat40x40s_fall_E1e4.txt
- 2_mat40x40s_fall_E1e6.txt
- 2_mat40x40s_fall_E1e8.txt
- barTwist_noCollisions.txt
- tunnel.txt
- cubeCliffCO.txt
- cubeInternalEdgesCO.txt
- spikeCrackCO.txt
- spikeHoleCO.txt
- spikePlaneCO.txt
- spikeSpikeCO.txt
- spikeWedgeCO.txt
- wedgeCrackCO.txt
- wedgePlaneCO.txt
- wedgeWedgoCO.txt
- armadillo122K_twist.txt
- armadillo13K_twist.txt
- armadillo219K_twist.txt
- armadillo28K_twist.txt
- armadillo54K_twist.txt
- mat100x100_twist.txt
- mat150x150_twist.txt
- mat225x225_twist.txt
- mat40x40_twist.txt
- 2d.mph
- 2d_tri.mph
- chain.hipnc
- vu_vellumChain.hipnc
- chain10.scn
- chain5.scn
- chain5.scn.qglviewer.view
- femRing.xml
- torus.msh
- dolphin.scn
- dolphin5K.msh
- dolphin5K.obj
- funnel.obj
- fix-mtl.sh
- mat-on-knives.scn
- mat-on-knives.scn.qglviewer.view
- mat40x40.msh
- triangle.obj
- 01_pointTriangleCO.txt
- 02_trianglePointCO.txt
- 03_edgeEdgeCO.txt
- 04_pointTriangle.txt
- 05_edgeEdge.txt
- 06_tetTet.txt
- 07_cubePlaneCO.txt
- 08_cubeCubeCO.txt
- 09_tetCube.txt
- 10_alignedTetCube.txt
- 11_cubes.txt
- 12_alignedCubes.txt
- 13_fiveCubePyramid.txt
- 14_fiveCubeStack.txt
- 15_cubesCornerCO.txt
- 16_tetsCornerCO.txt
- 17_ErlebenSpikes.txt
- 18_ErlebenSpikeWedge.txt
- 19_ErlebenWedges.txt
- 20_ErlebenSpikeHole.txt
- 21_ErlebenSpikeCrack.txt
- 22_ErlebenWedgeCrack.txt
- 23_ErlebenSlidingSpike.txt
- 24_ErlebenSlidingWedge.txt
- 25_ErlebenCliffEdges.txt
- 26_ErlebenInternalEdges.txt
- 27_chain.txt
- 28_rodPlaneCO.txt
- 29_cowHeadPlaneCO.txt
- 30_matTwist.txt
- README.md
- convert.py
- utopiaComparison.txt
- utopiaComparison39K.e
- utopiaComparison39K.msh
- utopiaComparison67K.e
- utopiaComparison67K.msh
- rodsTwist_E1e4_dt0.002.txt
- rodsTwist_E1e4_dt0.005.txt
- rodsTwist_E1e4_dt0.01.txt
- rodsTwist_E1e4_dt0.025.txt
- rodsTwist_E1e4_dt0.05.txt
- rodsTwist_E1e4_dt0.1.txt
- rodsTwist_E1e4_dt0.2.txt
- rodsTwist_E1e4_dt0.5.txt
- rodsTwist_E1e4_dt1.txt
- rodsTwist_E1e4_dt2.txt
- armaRoller_stickSlip.txt
- chain10.txt
- chain100.txt
- chain35.txt
- chain5.txt
- heavyBallHit.txt
- hitLargeCardHouse.txt
- tightFitCube.txt
- 10_cubeStack.txt
- 10_tetSlots.txt
- 10_tetTet.txt
- 12_largeMassRatio.txt
- 12_matOnBoard.txt
- 12_sphereOnMat.txt
- 13_dolphinFunnel.txt
- 14_matTwist.txt
- 15_trashComp_octocat.txt
- 15_trashComp_shapes.txt
- 16_armaRoller_E1e5.txt
- 17_pinCushionBall.txt
- 18_pointRollerBall.txt
- 18_segRollerBall.txt
- 19_golfBall.txt
- 1_squeezeOut.txt
- 20_pencilStickSlip.txt
- 22_squishyBall.txt
- 2_matKnives.txt
- 2_spherePoints.txt
- 4_rodsTwist.txt
- 5_hitCardHouse.txt
- 7_masonryArch.txt
- 8_rollerBall.txt
- README.md
- 0.seg
- 1.seg
- 10.seg
- 100.seg
- 101.seg
- 102.seg
- 103.seg
- 104.seg
- 105.seg
- 106.seg
- 107.seg
- 108.seg
- 109.seg
- 11.seg
- 110.seg
- 111.seg
- 112.seg
- 113.seg
- 114.seg
- 115.seg
- 116.seg
- 117.seg
- 118.seg
- 119.seg
- 12.seg
- 120.seg
- 121.seg
- 122.seg
- 123.seg
- 124.seg
- 125.seg
- 126.seg
- 127.seg
- 128.seg
- 129.seg
- 13.seg
- 130.seg
- 131.seg
- 132.seg
- 133.seg
- 134.seg
- 135.seg
- 136.seg
- 137.seg
- 138.seg
- 139.seg
- 14.seg
- 140.seg
- 141.seg
- 142.seg
- 143.seg
- 144.seg
- 145.seg
- 146.seg
- 147.seg
- 148.seg
- 149.seg
- 15.seg
- 150.seg
- 151.seg
- 152.seg
- 153.seg
- 154.seg
- 155.seg
- 156.seg
- 157.seg
- 158.seg
- 159.seg
- 16.seg
- 160.seg
- 161.seg
- 162.seg
- 163.seg
- 164.seg
- 165.seg
- 166.seg
- 167.seg
- 168.seg
- 169.seg
- 17.seg
- 170.seg
- 171.seg
- 172.seg
- 173.seg
- 174.seg
- 175.seg
- 176.seg
- 177.seg
- 178.seg
- 179.seg
- 18.seg
- 180.seg
- 181.seg
- 182.seg
- 183.seg
- 184.seg
- 185.seg
- 186.seg
- 187.seg
- 188.seg
- 189.seg
- 19.seg
- 190.seg
- 191.seg
- 192.seg
- 193.seg
- 194.seg
- 195.seg
- 196.seg
- 197.seg
- 198.seg
- 199.seg
- 2.seg
- 20.seg
- 200.seg
- 21.seg
- 22.seg
- 23.seg
- 24.seg
- 25.seg
- 26.seg
- 27.seg
- 28.seg
- 29.seg
- 3.seg
- 30.seg
- 31.seg
- 32.seg
- 33.seg
- 34.seg
- 35.seg
- 36.seg
- 37.seg
- 38.seg
- 39.seg
- 4.seg
- 40.seg
- 41.seg
- 42.seg
- 43.seg
- 44.seg
- 45.seg
- 46.seg
- 47.seg
- 48.seg
- 49.seg
- 5.seg
- 50.seg
- 51.seg
- 52.seg
- 53.seg
- 54.seg
- 55.seg
- 56.seg
- 57.seg
- 58.seg
- 59.seg
- 6.seg
- 60.seg
- 61.seg
- 62.seg
- 63.seg
- 64.seg
- 65.seg
- 66.seg
- 67.seg
- 68.seg
- 69.seg
- 7.seg
- 70.seg
- 71.seg
- 72.seg
- 73.seg
- 74.seg
- 75.seg
- 76.seg
- 77.seg
- 78.seg
- 79.seg
- 8.seg
- 80.seg
- 81.seg
- 82.seg
- 83.seg
- 84.seg
- 85.seg
- 86.seg
- 87.seg
- 88.seg
- 89.seg
- 9.seg
- 90.seg
- 91.seg
- 92.seg
- 93.seg
- 94.seg
- 95.seg
- 96.seg
- 97.seg
- 98.seg
- 99.seg
- edge.seg
- segPlane.seg
- largeArch.01.msh
- largeArch.02.msh
- largeArch.03.msh
- largeArch.04.msh
- largeArch.05.msh
- largeArch.06.msh
- largeArch.07.msh
- largeArch.08.msh
- largeArch.09.msh
- largeArch.10.msh
- largeArch.11.msh
- largeArch.12.msh
- largeArch.13.msh
- largeArch.14.msh
- largeArch.15.msh
- largeArch.16.msh
- largeArch.17.msh
- largeArch.18.msh
- largeArch.19.msh
- largeArch.20.msh
- largeArch.21.msh
- largeArch.22.msh
- largeArch.23.msh
- largeArch.24.msh
- largeArch.25.msh
- spike.msh
- wedge.msh
- 32770_octocat.msh
- alien.msh
- ANSYS1e-3Corner_coarse.msh
- Armadillo122K.msh
- Armadillo13K.msh
- Armadillo219K.msh
- Armadillo28K.msh
- Armadillo54K.msh
- armadillo_verschoor.msh
- bar-14114.msh
- bar-186.msh
- bar-2523.msh
- bar-6.msh
- bar-651.msh
- bunny.msh
- cow_head.msh
- cube.msh
- dolphin5K.msh
- hammer.msh
- hollowCat7.5K.msh
- mat100x100t40.msh
- mat150x150t40.msh
- mat20x20.msh
- mat225x225t40.msh
- mat40x40.msh
- monkey8K.msh
- plate1.msh
- pyramid.msh
- rod.msh
- rod300x33.msh
- sphere19K.msh
- sphere1K.msh
- sphere5K.msh
- tet-perp-edges.msh
- tet-pyramid.msh
- tet.msh
- torus.msh
- walnut.msh
- cliff.obj
- crack.obj
- hole.obj
- internal_edges.obj
- spike.obj
- wedge.obj
- roller0.obj
- roller1.obj
- roller2.obj
- roller3.obj
- roller4.obj
- roller5.obj
- bowl.obj
- cone-simple.obj
- cone.obj
- coneBox.obj
- cube.obj
- cylinder.obj
- funnel.obj
- hammer.obj
- mat20x20.obj
- mat40x40.obj
- plane.obj
- point.obj
- pointPlane.obj
- pyramid.obj
- rod.obj
- sheet100.obj
- sheet1000.obj
- sheet2000.obj
- sheet500.obj
- sheetPlane.obj
- sphere1K.obj
- tet-perp-edges.obj
- tet-pyramid.obj
- tet.obj
- torus.obj
- triangle.obj
- tube.obj
- voro_sphere.obj
- voro_walnut.obj
- wedge.obj
- YZplane.obj
- 2cubesFall_attach.txt
- 2cubesFall_BE.txt
- 2cubesFall_NM.txt
- 2cubesFall_rotateCO_meshSeq.txt
- 2cubesFall_DBC.txt
- 2cubesFall_DBC_timeRange.txt
- 2cubesFall_NBC.txt
- 2cubesFall_NBC_timeRange.txt
- 2cubesFall_initRot.txt
- 2cubesFall_initVel.txt
- 2cubesFall_rotateCO.txt
- 2cubesFall_rotateCO_closedSurface.txt
- 2cubesFall_rotateCO_edges.txt
- 2cubesFall_rotateCO_points.txt
- 2cubesFall_rotateCO_triangle.txt
- 2cubesFall_translateCO.txt
- 2cubesFall.txt
- 2cubesFall_full.txt
- 2cubesFall_heavyTop.txt
- 2cubesFall_largerDt.txt
- 2cubesFall_smallerDt.txt
- 2cubesFall_stiffer.txt
- CollisionConstraints.cpp
- CollisionConstraints.hpp
- CollisionObject.h
- FrictionUtils.hpp
- HalfSpace.cpp
- HalfSpace.hpp
- MeshCO.cpp
- MeshCO.hpp
- MeshCollisionUtils.hpp
- SelfCollisionHandler.cpp
- SelfCollisionHandler.hpp
- FixedCoRotEnergy.cpp
- FixedCoRotEnergy.hpp
- NeoHookeanEnergy.cpp
- NeoHookeanEnergy.hpp
- Energy.cpp
- Energy.hpp
- AMGCLSolver.cpp
- AMGCLSolver.hpp
- CHOLMODSolver.cpp
- CHOLMODSolver.hpp
- EigenLibSolver.cpp
- EigenLibSolver.hpp
- LinSysSolver.cpp
- LinSysSolver.hpp
- .gitignore
- CMakeLists.txt
- Diagnostic.cpp
- .gitignore
- CMakeLists.txt
- MeshProcessing.cpp
- CMakeLists.txt
- Optimizer.cpp
- Optimizer.hpp
- ImplicitQRSVD.h
- Tools.h
- AutoFlipSVD.hpp
- BarrierFunctions.hpp
- CCDUtils.cpp
- CCDUtils.hpp
- ClosedFormSVD2d.hpp
- get_feasible_steps.cpp
- get_feasible_steps.hpp
- getRSS.hpp
- GIF.hpp
- GivensQR.hpp
- IglUtils.cpp
- IglUtils.hpp
- OSQPWrapper.h
- SpatialHash.hpp
- Timer.hpp
- Triplet.hpp
- Types.hpp
- AnimScripter.cpp
- AnimScripter.hpp
- Config.cpp
- Config.hpp
- main.cpp
- Mesh.cpp
- Mesh.hpp
- CollisionConstraintTests.cpp
- CMakeLists.txt
- main.cpp
- convert_to_ipc_msh.py
- generate_chain_scene.py
- geo_to_msh.py
- hpc-job.sh
- msh_4.0_to_4.1.py
- process_IP_results.py
- process_results.sh
- process_SQP_results.py
- run-ccd-examples.sh
- run-comparison-benchmark-hpc.sh
- run-comparison-benchmark-sqp.sh
- attach.gif
- BCTimeRange.gif
- BE.gif
- diffStiff.gif
- energyPlot.png
- helloWorld.gif
- initAngVel.gif
- initLinVel.gif
- largerDt.gif
- MDBC.gif
- NBC.gif
- NM0.1.gif
- NM0.2.gif
- NM0.4.gif
- rotMCO.gif
- rotMCO_points.gif
- rotMCO_seg.gif
- rotMCO_surf.gif
- rotMCO_tri.gif
- smallerDt.gif
- stiffer.gif
- transMCO.gif
- .clang-format
- .gitignore
- batch.py
- batch_tetgen.py
- build.py
- build.sh
- CMakeLists.txt
- IPCOptions.cmake.sample
- LICENSE
- README.md
- run.sh
# Installation Guide
1. Get the code
git clone https://github.com/ipc-sim/IPC
Downloads the entire project code from GitHub to your computer.
cd IPC
Moves into the project folder you just downloaded.
2. CMake
Medium RecommendedPrerequisites
cmake -DCMAKE_BUILD_TYPE=Release ..
Type this command into your terminal and run it.
* Enabled by default, and it can be disabled using the CMake argument `-DIPC_WITH_CHOLMOD=OFF`
Type this command into your terminal and run it.
* Enabled by default, and it can be disabled using the CMake argument `-DIPC_WITH_AMGCL=OFF`
Type this command into your terminal and run it.
* [OSQP](https://osqp.org/) is downloaded through CMake automatically
Type this command into your terminal and run it.
Check that an executable was created inside the build folder, then run it directly (e.g. ./build/app_name).
Pulled directly from this repo's README.
// repository documentation
Was this content helpful?
(0 ratings)
