gitextract_jxhlhlxe/ ├── .gitignore ├── .python-version ├── 0_getting_started/ │ ├── readme.md │ ├── simulator0.py │ ├── simulator1.py │ ├── simulator2.py │ └── square_mesh.py ├── 10_mpm_elasticity/ │ ├── readme.md │ └── simulator.py ├── 11_mpm_plastic/ │ ├── readme.md │ ├── simulator.py │ └── simulator_viscoplastic.py ├── 11_mpm_sand/ │ ├── readme.md │ └── simulator.py ├── 12_pbd_cloth/ │ ├── cloth_data.json │ ├── constraints/ │ │ ├── __init__.py │ │ ├── bending.py │ │ └── stretching.py │ ├── imgui.ini │ ├── main.py │ ├── utils/ │ │ ├── __init__.py │ │ ├── cloth_utils.py │ │ ├── constraint_finder.py │ │ └── mesh_loader.py │ └── xpbd_base.py ├── 13_pbd_mesh/ │ ├── constraints/ │ │ ├── __init__.py │ │ ├── edge.py │ │ └── volume.py │ ├── dragon_data.json │ ├── imgui.ini │ ├── main.py │ ├── skinning/ │ │ ├── __init__.py │ │ ├── hash_grid.py │ │ └── skinning.py │ └── xpbd_base.py ├── 14_pbf/ │ ├── constraints/ │ │ ├── __init__.py │ │ ├── density.py │ │ ├── viscosity.py │ │ └── vorticity.py │ ├── main.py │ ├── scene.py │ └── sph_base.py ├── 1_mass_spring/ │ ├── InertiaEnergy.py │ ├── MassSpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 2_dirichlet/ │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── MassSpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 3_contact/ │ ├── BarrierEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── MassSpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 4_friction/ │ ├── BarrierEnergy.py │ ├── FrictionEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── MassSpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 5_mov_dirichlet/ │ ├── BarrierEnergy.py │ ├── FrictionEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── MassSpringEnergy.py │ ├── SpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 6_inv_free/ │ ├── BarrierEnergy.py │ ├── FrictionEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── NeoHookeanEnergy.py │ ├── SpringEnergy.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 7_self_contact/ │ ├── BarrierEnergy.py │ ├── FrictionEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── NeoHookeanEnergy.py │ ├── SpringEnergy.py │ ├── distance/ │ │ ├── CCD.py │ │ ├── PointEdgeDistance.py │ │ ├── PointLineDistance.py │ │ └── PointPointDistance.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 8_self_friction/ │ ├── BarrierEnergy.py │ ├── FrictionEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── NeoHookeanEnergy.py │ ├── SpringEnergy.py │ ├── distance/ │ │ ├── CCD.py │ │ ├── PointEdgeDistance.py │ │ ├── PointLineDistance.py │ │ └── PointPointDistance.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── 9_reduced_DOF/ │ ├── BarrierEnergy.py │ ├── GravityEnergy.py │ ├── InertiaEnergy.py │ ├── NeoHookeanEnergy.py │ ├── linear.py │ ├── readme.md │ ├── simulator.py │ ├── square_mesh.py │ ├── time_integrator.py │ └── utils.py ├── LICENSE ├── pyproject.toml └── readme.md