Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ipc-sim/ipc-toolkit
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.3.0
Choose a base ref
...
head repository: ipc-sim/ipc-toolkit
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref

Commits on Aug 3, 2024

  1. Update pypi.yml (#112)

    * Update pypi.yml
    
    * Downgrade upload-artifact
    
    * Switch to real pypi
    zfergus authored Aug 3, 2024
    Copy the full SHA
    342c362 View commit details
  2. Update version to 1.3.1

    zfergus committed Aug 3, 2024
    Copy the full SHA
    f55090b View commit details

Commits on Aug 5, 2024

  1. Download test data from external repo (#113)

    * Download test data from external repo
    * Add option to use existing tests data
    * Convert OBJs to PLYs
    * Python download data at test time
    zfergus authored Aug 5, 2024
    Copy the full SHA
    3f12d9e View commit details

Commits on Aug 7, 2024

  1. Copy the full SHA
    d9b6646 View commit details

Commits on Aug 8, 2024

  1. Update coverage.yml (#115)

    zfergus authored Aug 8, 2024
    Copy the full SHA
    3bf28af View commit details

Commits on Aug 9, 2024

  1. Improve Code Coverage (#116)

    * chore: Update coverage.yml to include CPU core count in build and test commands
    
    * chore: Update coverage.yml to remove unnecessary coverage exclusion
    
    * Fix coverage exclusion
    
    * Update codecov.yml
    zfergus authored Aug 9, 2024
    Copy the full SHA
    10a8180 View commit details

Commits on Aug 10, 2024

  1. Remove relative paths in coverage.yml (#117)

    * Remove relative paths in coverage.yml
    
    * Set lcov directory
    zfergus authored Aug 10, 2024
    Copy the full SHA
    ad00292 View commit details
  2. Update coverage.yml (#118)

    zfergus authored Aug 10, 2024
    Copy the full SHA
    416cdd4 View commit details

Commits on Sep 3, 2024

  1. Bump actions/download-artifact from 3 to 4.1.7 in /.github/workflows (#…

    …119)
    
    Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4.1.7.
    - [Release notes](https://github.com/actions/download-artifact/releases)
    - [Commits](actions/download-artifact@v3...v4.1.7)
    
    ---
    updated-dependencies:
    - dependency-name: actions/download-artifact
      dependency-type: direct:production
    ...
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    dependabot[bot] authored Sep 3, 2024
    Copy the full SHA
    2c7496b View commit details

Commits on Sep 8, 2024

  1. Individual convergent formulation flags (#120)

    * Add option to enable/disable only improved max approximator
    * Replace use_convergent_formulation with use_area_weighting and use_improved_max_approximator; move physical barrier into BarrierPotential
    * Update clang-format version to '18'
    * Update Python tests
    * Update convergent.rst
    zfergus authored Sep 8, 2024
    Copy the full SHA
    86f1db3 View commit details

Commits on Sep 10, 2024

  1. Copy the full SHA
    a4e59a7 View commit details
  2. Replace scalar enumerable_thread_specific with parallel_reduce (#121)

    * Replace scalar enumerable_thread_specific with parallel_reduce
    
    * Remove std::plus
    
    * Remove comments
    zfergus authored Sep 10, 2024
    Copy the full SHA
    a34c034 View commit details

Commits on Sep 25, 2024

  1. Copy the full SHA
    7b70ae3 View commit details

Commits on Sep 27, 2024

  1. Copy the full SHA
    ba24d37 View commit details

Commits on Oct 1, 2024

  1. Update filib (#122)

    * .gitignore visual studio
    
    * Add filib dependency note to cpp.rst
    zfergus authored Oct 1, 2024
    Copy the full SHA
    d443b86 View commit details

Commits on Oct 5, 2024

  1. Add faq.rst

    zfergus committed Oct 5, 2024
    Copy the full SHA
    858c0d9 View commit details

Commits on Oct 8, 2024

  1. Copy the full SHA
    2ea9bf7 View commit details

Commits on Nov 4, 2024

  1. Fix barrier docs

    zfergus committed Nov 4, 2024
    Copy the full SHA
    e792543 View commit details
  2. Copy the full SHA
    968e72d View commit details

Commits on Nov 5, 2024

  1. Sort includes using clang-format (#129)

    * Sort includes using clang-format
    
    * Update clang-format-check.yml to version 19
    
    * Update clang-format-check.yml
    
    * Update unordered_map_and_set.hpp
    zfergus authored Nov 5, 2024
    Copy the full SHA
    424896b View commit details

Commits on Nov 8, 2024

  1. Update to v1.3.1

    zfergus committed Nov 8, 2024
    Copy the full SHA
    8a2a657 View commit details
  2. Test Python 3.13 support (#131)

    Co-authored-by: zachferguson <zach.ferguson@clo3d.com>
    zfergus and zfergus authored Nov 8, 2024
    Copy the full SHA
    1f57e53 View commit details
  3. Copy the full SHA
    a317b23 View commit details
  4. Copy the full SHA
    1554126 View commit details
  5. Copy the full SHA
    fa2b642 View commit details

Commits on Nov 9, 2024

  1. Copy the full SHA
    9568030 View commit details
  2. Adhesion (#85)

    Implement the adhesion potentials from "Augmented Incremental Potential Contact for Sticky Interactions" [Fang et al. 2023].
    zfergus authored Nov 9, 2024
    Copy the full SHA
    33e5dd3 View commit details

Commits on Nov 10, 2024

  1. Add MSVC warnings (#134)

    * Add MSVC warnings
    
    * Update filib
    
    * Enable IPC_TOOLKIT_WITH_CUDA if CUDA is available
    
    * Move check_language(CUDA)
    zfergus authored Nov 10, 2024
    Copy the full SHA
    c0f2af9 View commit details

Commits on Nov 12, 2024

  1. Copy the full SHA
    ea49422 View commit details
  2. Copy the full SHA
    5573e8c View commit details
  3. Copy the full SHA
    a42bad3 View commit details

Commits on Nov 13, 2024

  1. Merge pull request #2 from ipc-sim/main

    update ipc
    maxpaik16 authored Nov 13, 2024
    Copy the full SHA
    8bf8914 View commit details

Commits on Nov 14, 2024

  1. Fix CCD documentation (#140)

    zfergus authored Nov 14, 2024
    Copy the full SHA
    86ee635 View commit details

Commits on Nov 15, 2024

  1. Merge pull request #4 from ipc-sim/main

    Fix CCD documentation (#140)
    maxpaik16 authored Nov 15, 2024
    Copy the full SHA
    c1eea44 View commit details
  2. Copy the full SHA
    5311ac5 View commit details

Commits on Nov 16, 2024

  1. Copy the full SHA
    04f0e09 View commit details
  2. Apply clang-format

    zfergus committed Nov 16, 2024
    Copy the full SHA
    b8bc9f1 View commit details
  3. Merge pull request #142 from maxpaik16/use-normal-potential

    Use normal potential in tangential collisions
    zfergus authored Nov 16, 2024
    Copy the full SHA
    55abc56 View commit details
  4. Copy the full SHA
    f4f64d3 View commit details

Commits on Nov 26, 2024

  1. Devcontainer (#136)

    * Create Dockerfile devcontainer
    
    * Create devcontainer.json
    
    * Add files via upload
    
    * Update pre-commit-config.yaml
    
    * Update pre-commit-config.yaml
    
    * Update devcontainer.json
    
    * Update Dockerfile
    
    * Update devcontainer.json
    
    * Update Dockerfile
    
    * Create CMakePresets.json
    
    * Update CMakePresets.json
    
    * Update Dockerfile
    
    * Rename pre-commit-config.yaml to .pre-commit-config.yaml
    
    * Update devcontainer.json
    
    * Update devcontainer.json
    
    * Update Dockerfile
    
    * Update devcontainer.json
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update devcontainer.json
    
    * Update Dockerfile
    
    * Update Dockerfile
    
    * Update devcontainer.json
    
    * Update .pre-commit-config.yaml
    antoinebou12 authored Nov 26, 2024
    Copy the full SHA
    e0b947c View commit details

Commits on Dec 3, 2024

  1. Copy the full SHA
    75ef144 View commit details

Commits on Dec 11, 2024

  1. Copy the full SHA
    e3d7884 View commit details
  2. Add Draft Adhesion Docs (#144)

    * Add Adhesion in refs.bib
    
    * Add Draft of Adhesion in getting_started.rst
    
    * Remove Bad Code
    
    * Remove comments
    
    * Improve docs
    
    * Remove Adhesion tutorial from getting started
    
    * Create adhesion.rst
    
    * Remove velocity here
    
    * Change displacement variable for x and not y
    antoinebou12 authored Dec 11, 2024
    Copy the full SHA
    280802d View commit details
  3. Update adhesion.rst

    zfergus committed Dec 11, 2024
    Copy the full SHA
    b28b3c0 View commit details

Commits on Dec 12, 2024

  1. Copy the full SHA
    d102375 View commit details

Commits on Jan 21, 2025

  1. Update CMakePresets.json

    zfergus committed Jan 21, 2025
    Copy the full SHA
    bc9c673 View commit details

Commits on Feb 7, 2025

  1. Update cuda.yml (#147)

    zfergus authored Feb 7, 2025
    Copy the full SHA
    203d5c6 View commit details

Commits on Feb 8, 2025

  1. Fix coverage CI (#149)

    * Add -fprofile-update=atomic
    
    * Update actions/cache version to v4 in workflow files
    
    * Ignore lcov errors
    
    * Improve lcov command to ignore gcov errors and unused data in coverage reports
    zfergus authored Feb 8, 2025
    Copy the full SHA
    c79a67a View commit details
  2. A Cubic Barrier with Elasticity-Inclusive Dynamic Stiffness (#148)

    * Add cubic barrier functions
    
    * Add compute_coefficients to CollisionStencil
    
    * Add semi_implicit_stiffness
    
    * Revert math type
    
    * Fix FaceVertexCandidate::compute_coefficients
    
    * Add semi-implicit stiffness to python
    
    * Test all coeffs cases
    
    * Test plane_vertex coeffs
    
    * Test semi-implicit stiffness
    
    * Fix index assignment in edge-vertex collision stencil coefficient tests
    zfergus authored Feb 8, 2025
    Copy the full SHA
    e12c685 View commit details
  3. Copy the full SHA
    b30785d View commit details
Showing 904 changed files with 313,314 additions and 135,802 deletions.
47 changes: 38 additions & 9 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,14 +1,43 @@
# https://clang.llvm.org/docs/ClangFormatStyleOptions.html
---
Language: Cpp
BasedOnStyle: WebKit
ColumnLimit: 80
AlignTrailingComments: true
FixNamespaceComments: true
ReflowComments: true
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: true
AlignAfterOpenBracket: AlwaysBreak
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0
BinPackParameters: false
BreakArrays: false
BreakBeforeBinaryOperators: NonAssignment
SortIncludes: false
CommentPragmas: '^@.+'
BreakStringLiterals: false
ColumnLimit: 80
CommentPragmas: '^@.+'
FixNamespaceComments: true
# Regroup includes with a priority system
IncludeBlocks: Regroup
IncludeCategories:
# by default, the main header of a cpp will get priority 0
# regex here are sorted by search pattern, not by sort priority
- Regex: "^<ipc\/[^/]*>" # this libraries
Priority: 2 # internal library group
SortPriority: 2
CaseSensitive: true
- Regex: "^<ipc\/.*\/.*>" # this libraries
Priority: 2 # internal library group
SortPriority: 3
CaseSensitive: true
- Regex: "^<(.*\\.h[px]*)|(Eigen\/.*)>"
Priority: 4 # libraries (because they end in .h)
SortPriority: 4
CaseSensitive: false
- Regex: "^<.*"
Priority: 5 # system (without .h, because that is captured by the other group)
SortPriority: 5
CaseSensitive: false
- Regex: ".*" # catch-all for internal files
Priority: 1 # internal file group
SortPriority: 1
CaseSensitive: true
PackConstructorInitializers: CurrentLine
RemoveEmptyLinesInUnwrappedLines: true
SortIncludes: CaseInsensitive
...
82 changes: 82 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
FROM ubuntu:22.04

# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive
ENV CCACHE_DIR=/home/devuser/.ccache
ENV CCACHE_MAXSIZE=1G
ENV CXX_STANDARD=17

# Update package lists
RUN apt-get update

# Install essential packages
RUN apt-get install -y --no-install-recommends \
build-essential \
git \
wget \
curl \
fish \
zsh \
ninja-build \
ccache \
libeigen3-dev \
libtbb-dev \
libspdlog-dev \
python3 \
python3-pip \
python3-dev \
libgmp-dev \
libssl-dev \
libncurses5-dev \
libncursesw5-dev \
libxml2-dev \
libjsoncpp-dev \
libz3-dev \
sudo \
software-properties-common \
lsb-release \
gnupg \
&& rm -rf /var/lib/apt/lists/*

# Create a new user with sudo privileges
RUN useradd -m devuser \
&& echo "devuser:password" | chpasswd \
&& usermod -aG sudo devuser \
&& echo "devuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
&& mkdir -p $CCACHE_DIR \
&& chown devuser:devuser $CCACHE_DIR

# Set up Python tools
RUN pip3 install --upgrade pip setuptools wheel pre-commit

# Add Kitware APT repository for CMake
RUN wget -qO- https://apt.kitware.com/keys/kitware-archive-latest.asc | \
gpg --dearmor -o /usr/share/keyrings/kitware-archive-keyring.gpg

RUN echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | \
tee /etc/apt/sources.list.d/kitware.list > /dev/null

# Update package lists and install CMake
RUN apt-get update
RUN apt-get install -y cmake

# Verify CMake installation
RUN cmake --version

# Install LLVM/Clang and Clang-Format version 18
RUN wget -q https://apt.llvm.org/llvm.sh -O /tmp/llvm.sh
RUN chmod +x /tmp/llvm.sh
RUN /tmp/llvm.sh 18 || true

RUN apt-get update && apt-get install -y clang-18 clang-tools-18 clang-format-18

RUN clang-18 --version
RUN clang++-18 --version
RUN clang-format-18 --version

# 12. Set the default user and working directory
USER devuser

WORKDIR /home/devuser/workspace

CMD ["bash"]
59 changes: 59 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.schema.json",
"name": "IPCToolkit C++ Development Container",
"build": {
"dockerfile": "Dockerfile",
"context": ".."
},
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": "/bin/fish",
"C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
"C_Cpp.default.intelliSenseMode": "gcc-x64",
"C_Cpp.default.compilerPath": "/usr/bin/clang++-18",
"C_Cpp.clang_format_path": "/usr/bin/clang-format-18",
"C_Cpp.clang_format_style": "file",
"cmake.configureOnOpen": true,
"cmake.buildDirectory": "${workspaceFolder}/build",
"python.pythonPath": "/usr/bin/python3",
"python.linting.enabled": true,
"python.linting.pylintEnabled": true,
"python.formatting.provider": "black",
"prettier.requireConfig": true
},
"extensions": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"xaver.clang-format",
"ms-python.python",
"ms-azuretools.vscode-docker",
"eamodio.gitlens",
"esbenp.prettier-vscode",
"mhutchie.git-graph",
"twxs.cmake",
"jeff-hykin.better-cpp-syntax",
"vadimcn.vscode-lldb",
"cschlosser.doxdocgen",
"ms-python.vscode-pylance",
"mutantdino.resourcemonitor",
"randomfractalsinc.vscode-data-preview",
"oderwat.indent-rainbow",
"formulahendry.code-runner",
"donjayamanne.git-extension-pack"
]
}
},
"postCreateCommand": "pre-commit install",
"remoteUser": "devuser",
"mounts": [
"source=${localWorkspaceFolder}/.ccache,target=/home/devuser/.ccache,type=bind,consistency=cached"
],
"forwardPorts": [],
"remoteEnv": {
"CCACHE_DIR": "/home/devuser/.ccache",
"CCACHE_MAXSIZE": "1G"
},
"workspaceFolder": "/home/devuser/workspace",
"workspaceMount": "source=${localWorkspaceFolder},target=/home/devuser/workspace,type=bind,consistency=cached"
}
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# These files should be ignored from GitHub's language statistics.
python/example.ipynb linguist-vendored
notebooks/*.ipynb linguist-vendored
10 changes: 5 additions & 5 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@ Fixes # (issue)
Please delete options that are not relevant.

- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Enhancement (non-breaking change which improves existing functionality)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update
@@ -21,10 +22,10 @@ Please describe the tests that you ran to verify your changes. Provide instructi
- [ ] Test B

**Test Configuration**:
* OS and version:
* Compile and version:
* OS and Version:
* Compiler and Version:

# Checklist:
# Checklist

- [ ] I have followed the project [style guide](https://ipctk.xyz/style_guide.html)
- [ ] My code follows the clang-format style guidelines of this project
@@ -34,5 +35,4 @@ Please describe the tests that you ran to verify your changes. Provide instructi
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules

- [ ] Any dependent changes have been merged and published in downstream modules
4 changes: 2 additions & 2 deletions .github/workflows/clang-format-check.yml
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: clang-format style check
uses: jidicula/clang-format-action@v4.13.0
uses: jidicula/clang-format-action@v4.15.0
with:
clang-format-version: '17'
clang-format-version: '20'
check-path: ${{ matrix.path }}
2 changes: 1 addition & 1 deletion .github/workflows/continuous.yml
Original file line number Diff line number Diff line change
@@ -66,7 +66,7 @@ jobs:

- name: Cache Build
id: cache-build
uses: actions/cache@v4.0.2
uses: actions/cache@v4
with:
path: ${{ env.CACHE_PATH }}
key: ${{ runner.os }}-${{ matrix.config }}-cache
29 changes: 18 additions & 11 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -10,6 +10,7 @@ on:
- 'src/**'
- 'tests/**'
- 'CMakeLists.txt'
- 'codecov.yml'

jobs:
Coverage:
@@ -28,9 +29,13 @@ jobs:
sudo apt-get install ccache lcov
echo 'CACHE_PATH=~/.cache/ccache' >> "$GITHUB_ENV"
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v2.0.0
id: cpu-cores

- name: Cache Build
id: cache-build
uses: actions/cache@v4.0.2
uses: actions/cache@v4
with:
path: ${{ env.CACHE_PATH }}
key: coverage-cache
@@ -51,21 +56,23 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
- name: Build
run: cd build; make -j2; ccache --show-stats
run: |
cmake --build build -j ${{ steps.cpu-cores.outputs.count }}
ccache --show-stats
- name: Run Coverage
run: |
cd build
ctest --verbose --output-on-failure
lcov --directory . --capture --output-file coverage.info
lcov --remove coverage.info '/usr/*' "${HOME}"'/.cache/*' '*tests/*' --output-file coverage.info
ctest --verbose -j ${{ steps.cpu-cores.outputs.count }}
lcov --directory . --capture --output-file coverage.info --ignore-errors inconsistent,format,gcov
lcov --remove coverage.info --ignore-errors unused '/usr/*' "$HOME/.cache/*" "*tests/*" --output-file coverage.info
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4.5.0
env:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.info
uses: codecov/codecov-action@v3.1.6
with:
fail_ci_if_error: true
files: build/coverage.info
flags: unittests
name: ipc-toolkit
fail_ci_if_error: true
verbose: true
token: ${{ secrets.CODECOV_TOKEN }}
verbose: true
77 changes: 77 additions & 0 deletions .github/workflows/cuda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: CUDA

on:
push:
branches: [main]
pull_request:
paths:
- '.github/workflows/cuda.yml'
- 'cmake/**'
- 'src/**'
- 'tests/**'
- 'python/**'
- 'CMakeLists.txt'

env:
CTEST_OUTPUT_ON_FAILURE: ON
CTEST_PARALLEL_LEVEL: 2

jobs:
Build:
name: CUDA (${{ matrix.config }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
config:
- Debug
- Release
steps:
- name: Checkout repository
uses: actions/checkout@v4.0.0
with:
fetch-depth: 10

- name: Dependencies
run: |
sudo apt-get install ccache
echo 'CACHE_PATH=~/.cache/ccache' >> "$GITHUB_ENV"
- name: cuda-toolkit
uses: Jimver/cuda-toolkit@v0.2.21
with:
sub-packages: '["nvcc"]'
method: 'network'

- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v2.0.0
id: cpu-cores

- name: Cache Build
id: cache-build
uses: actions/cache@v4
with:
path: ${{ env.CACHE_PATH }}
key: ${{ runner.os }}-${{ matrix.config }}-cache

- name: Prepare ccache
run: |
ccache --max-size=1.0G
ccache -V && ccache --show-config
ccache --show-stats && ccache --zero-stats
- name: Configure
run: |
mkdir -p build
cd build
cmake .. \
-DIPC_TOOLKIT_WITH_CUDA=ON \
-DSCALABLE_CCD_CUDA_ARCHITECTURES=75 \
-DIPC_TOOLKIT_BUILD_TESTS=ON \
-DIPC_TOOLKIT_BUILD_PYTHON=ON \
-DCMAKE_BUILD_TYPE=${{ matrix.config }}
- name: Build
run: |
cmake --build build -j ${{ steps.cpu-cores.outputs.count }}
ccache --show-stats
Loading