Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 55abc56

Browse files
authoredNov 16, 2024··
Merge pull request #142 from maxpaik16/use-normal-potential
Use normal potential in tangential collisions
2 parents 86ee635 + b8bc9f1 commit 55abc56

24 files changed

+112
-108
lines changed
 

‎python/src/collisions/tangential/edge_edge.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ void define_edge_edge_tangential_collision(py::module_& m)
1414
.def(
1515
py::init<
1616
const EdgeEdgeNormalCollision&, const VectorMax12d&,
17-
const BarrierPotential&, const double>(),
17+
const NormalPotential&, const double>(),
1818
py::arg("collision"), py::arg("positions"),
19-
py::arg("barrier_potential"), py::arg("barrier_stiffness"));
19+
py::arg("normal_potential"), py::arg("normal_stiffness"));
2020
}

‎python/src/collisions/tangential/edge_vertex.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ void define_edge_vertex_tangential_collision(py::module_& m)
1414
.def(
1515
py::init<
1616
const EdgeVertexNormalCollision&, const VectorMax12d&,
17-
const BarrierPotential&, const double>(),
17+
const NormalPotential&, const double>(),
1818
py::arg("collision"), py::arg("positions"),
19-
py::arg("barrier_potential"), py::arg("barrier_stiffness"));
19+
py::arg("normal_potential"), py::arg("normal_stiffness"));
2020
}

‎python/src/collisions/tangential/face_vertex.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ void define_face_vertex_tangential_collision(py::module_& m)
1414
.def(
1515
py::init<
1616
const FaceVertexNormalCollision&, const VectorMax12d&,
17-
const BarrierPotential&, const double>(),
17+
const NormalPotential&, const double>(),
1818
py::arg("collision"), py::arg("positions"),
19-
py::arg("barrier_potential"), py::arg("barrier_stiffness"));
19+
py::arg("normal_potential"), py::arg("normal_stiffness"));
2020
}

‎python/src/collisions/tangential/tangential_collisions.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,35 +13,35 @@ void define_tangential_collisions(py::module_& m)
1313
"build",
1414
py::overload_cast<
1515
const CollisionMesh&, const Eigen::MatrixXd&,
16-
const NormalCollisions&, const BarrierPotential&, double,
16+
const NormalCollisions&, const NormalPotential&, double,
1717
double>(&TangentialCollisions::build),
1818
py::arg("mesh"), py::arg("vertices"), py::arg("collisions"),
19-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
19+
py::arg("normal_potential"), py::arg("normal_stiffness"),
2020
py::arg("mu"))
2121
.def(
2222
"build",
2323
[](TangentialCollisions& self, const CollisionMesh& mesh,
2424
const Eigen::MatrixXd& vertices,
2525
const NormalCollisions& collisions,
26-
const BarrierPotential& barrier_potential,
27-
const double barrier_stiffness, const Eigen::VectorXd& mus) {
26+
const NormalPotential& normal_potential,
27+
const double normal_stiffness, const Eigen::VectorXd& mus) {
2828
self.build(
29-
mesh, vertices, collisions, barrier_potential,
30-
barrier_stiffness, mus);
29+
mesh, vertices, collisions, normal_potential,
30+
normal_stiffness, mus);
3131
},
3232
py::arg("mesh"), py::arg("vertices"), py::arg("collisions"),
33-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
33+
py::arg("normal_potential"), py::arg("normal_stiffness"),
3434
py::arg("mus"))
3535
.def(
3636
"build",
3737
py::overload_cast<
3838
const CollisionMesh&, const Eigen::MatrixXd&,
39-
const NormalCollisions&, const BarrierPotential&, const double,
39+
const NormalCollisions&, const NormalPotential&, const double,
4040
const Eigen::VectorXd&,
4141
const std::function<double(double, double)>&>(
4242
&TangentialCollisions::build),
4343
py::arg("mesh"), py::arg("vertices"), py::arg("collisions"),
44-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
44+
py::arg("normal_potential"), py::arg("normal_stiffness"),
4545
py::arg("mus"), py::arg("blend_mu"))
4646
.def(
4747
"__len__", &TangentialCollisions::size,

‎python/src/collisions/tangential/vertex_vertex.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ void define_vertex_vertex_tangential_collision(py::module_& m)
1616
.def(
1717
py::init<
1818
const VertexVertexNormalCollision&, const VectorMax12d&,
19-
const BarrierPotential&, const double>(),
19+
const NormalPotential&, const double>(),
2020
py::arg("collision"), py::arg("positions"),
21-
py::arg("barrier_potential"), py::arg("barrier_stiffness"));
21+
py::arg("normal_potential"), py::arg("normal_stiffness"));
2222
}

‎python/src/potentials/tangential_potential.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void define_tangential_potential(py::module_& m)
3232
py::overload_cast<
3333
const TangentialCollisions&, const CollisionMesh&,
3434
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
35-
const Eigen::MatrixXd&, const BarrierPotential&, const double,
35+
const Eigen::MatrixXd&, const NormalPotential&, const double,
3636
const double, const bool>(
3737
&TangentialPotential::force, py::const_),
3838
R"ipc_Qu8mg5v7(
@@ -44,8 +44,8 @@ void define_tangential_potential(py::module_& m)
4444
rest_positions: Rest positions of the vertices (rowwise).
4545
lagged_displacements: Previous displacements of the vertices (rowwise).
4646
velocities: Current displacements of the vertices (rowwise).
47-
barrier_potential: Barrier potential (used for normal force magnitude).
48-
barrier_stiffness: Barrier stiffness (used for normal force magnitude).
47+
normal_potential: Normal potential (used for normal force magnitude).
48+
normal_stiffness: Normal stiffness (used for normal force magnitude).
4949
dmin: Minimum distance (used for normal force magnitude).
5050
no_mu: whether to not multiply by mu
5151
@@ -54,14 +54,14 @@ void define_tangential_potential(py::module_& m)
5454
)ipc_Qu8mg5v7",
5555
py::arg("collisions"), py::arg("mesh"), py::arg("rest_positions"),
5656
py::arg("lagged_displacements"), py::arg("velocities"),
57-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
57+
py::arg("normal_potential"), py::arg("normal_stiffness"),
5858
py::arg("dmin") = 0, py::arg("no_mu") = false)
5959
.def(
6060
"force_jacobian",
6161
py::overload_cast<
6262
const TangentialCollisions&, const CollisionMesh&,
6363
const Eigen::MatrixXd&, const Eigen::MatrixXd&,
64-
const Eigen::MatrixXd&, const BarrierPotential&, const double,
64+
const Eigen::MatrixXd&, const NormalPotential&, const double,
6565
const TangentialPotential::DiffWRT, const double>(
6666
&TangentialPotential::force_jacobian, py::const_),
6767
R"ipc_Qu8mg5v7(
@@ -73,8 +73,8 @@ void define_tangential_potential(py::module_& m)
7373
rest_positions: Rest positions of the vertices (rowwise).
7474
lagged_displacements: Previous displacements of the vertices (rowwise).
7575
velocities: Current displacements of the vertices (rowwise).
76-
barrier_potential: Barrier potential (used for normal force magnitude).
77-
barrier_stiffness: Barrier stiffness (used for normal force magnitude).
76+
normal_potential: Normal potential (used for normal force magnitude).
77+
normal_stiffness: Normal stiffness (used for normal force magnitude).
7878
wrt: The variable to take the derivative with respect to.
7979
dmin: Minimum distance (used for normal force magnitude).
8080
@@ -83,15 +83,15 @@ void define_tangential_potential(py::module_& m)
8383
)ipc_Qu8mg5v7",
8484
py::arg("collisions"), py::arg("mesh"), py::arg("rest_positions"),
8585
py::arg("lagged_displacements"), py::arg("velocities"),
86-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
86+
py::arg("normal_potential"), py::arg("normal_stiffness"),
8787
py::arg("wrt"), py::arg("dmin") = 0)
8888
.def(
8989
"force",
9090
py::overload_cast<
9191
const TangentialCollision&, const VectorMax12d&,
9292
const VectorMax12d&, const VectorMax12d&,
93-
const BarrierPotential&, const double, const double,
94-
const bool>(&TangentialPotential::force, py::const_),
93+
const NormalPotential&, const double, const double, const bool>(
94+
&TangentialPotential::force, py::const_),
9595
R"ipc_Qu8mg5v7(
9696
Compute the friction force.
9797
@@ -100,8 +100,8 @@ void define_tangential_potential(py::module_& m)
100100
rest_positions: Rest positions of the vertices (rowwise).
101101
lagged_displacements: Previous displacements of the vertices (rowwise).
102102
velocities: Current displacements of the vertices (rowwise).
103-
barrier_potential: Barrier potential (used for normal force magnitude).
104-
barrier_stiffness: Barrier stiffness (used for normal force magnitude).
103+
normal_potential: Normal potential (used for normal force magnitude).
104+
normal_stiffness: Normal stiffness (used for normal force magnitude).
105105
dmin: Minimum distance (used for normal force magnitude).
106106
no_mu: Whether to not multiply by mu
107107
@@ -110,14 +110,14 @@ void define_tangential_potential(py::module_& m)
110110
)ipc_Qu8mg5v7",
111111
py::arg("collision"), py::arg("rest_positions"),
112112
py::arg("lagged_displacements"), py::arg("velocities"),
113-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
113+
py::arg("normal_potential"), py::arg("normal_stiffness"),
114114
py::arg("dmin") = 0, py::arg("no_mu") = false)
115115
.def(
116116
"force_jacobian",
117117
py::overload_cast<
118118
const TangentialCollision&, const VectorMax12d&,
119119
const VectorMax12d&, const VectorMax12d&,
120-
const BarrierPotential&, const double,
120+
const NormalPotential&, const double,
121121
const TangentialPotential::DiffWRT, const double>(
122122
&TangentialPotential::force_jacobian, py::const_),
123123
R"ipc_Qu8mg5v7(
@@ -128,8 +128,8 @@ void define_tangential_potential(py::module_& m)
128128
rest_positions: Rest positions of the vertices (rowwise).
129129
lagged_displacements: Previous displacements of the vertices (rowwise).
130130
velocities: Current displacements of the vertices (rowwise).
131-
barrier_potential: Barrier potential (used for normal force magnitude).
132-
barrier_stiffness: Barrier stiffness (used for normal force magnitude).
131+
normal_potential: Normal potential (used for normal force magnitude).
132+
normal_stiffness: Normal stiffness (used for normal force magnitude).
133133
wrt: Variable to differentiate the friction force with respect to.
134134
dmin: Minimum distance (used for normal force magnitude).
135135
@@ -138,6 +138,6 @@ void define_tangential_potential(py::module_& m)
138138
)ipc_Qu8mg5v7",
139139
py::arg("collision"), py::arg("rest_positions"),
140140
py::arg("lagged_displacements"), py::arg("velocities"),
141-
py::arg("barrier_potential"), py::arg("barrier_stiffness"),
141+
py::arg("normal_potential"), py::arg("normal_stiffness"),
142142
py::arg("wrt"), py::arg("dmin") = 0);
143143
}

‎src/ipc/collisions/tangential/edge_edge.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ EdgeEdgeTangentialCollision::EdgeEdgeTangentialCollision(
1818
EdgeEdgeTangentialCollision::EdgeEdgeTangentialCollision(
1919
const EdgeEdgeNormalCollision& collision,
2020
const VectorMax12d& positions,
21-
const BarrierPotential& barrier_potential,
22-
const double barrier_stiffness)
21+
const NormalPotential& normal_potential,
22+
const double normal_stiffness)
2323
: EdgeEdgeTangentialCollision(collision)
2424
{
2525
TangentialCollision::init(
26-
collision, positions, barrier_potential, barrier_stiffness);
26+
collision, positions, normal_potential, normal_stiffness);
2727
}
2828

2929
// ============================================================================

‎src/ipc/collisions/tangential/edge_edge.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class EdgeEdgeTangentialCollision : public EdgeEdgeCandidate,
1616
EdgeEdgeTangentialCollision(
1717
const EdgeEdgeNormalCollision& collision,
1818
const VectorMax12d& positions,
19-
const BarrierPotential& barrier_potential,
20-
const double barrier_stiffness);
19+
const NormalPotential& normal_potential,
20+
const double normal_stiffness);
2121

2222
protected:
2323
EdgeEdgeDistanceType known_dtype() const override

‎src/ipc/collisions/tangential/edge_vertex.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ EdgeVertexTangentialCollision::EdgeVertexTangentialCollision(
1818
EdgeVertexTangentialCollision::EdgeVertexTangentialCollision(
1919
const EdgeVertexNormalCollision& collision,
2020
const VectorMax12d& positions,
21-
const BarrierPotential& barrier_potential,
22-
const double barrier_stiffness)
21+
const NormalPotential& normal_potential,
22+
const double normal_stiffness)
2323
: EdgeVertexTangentialCollision(collision)
2424
{
2525
TangentialCollision::init(
26-
collision, positions, barrier_potential, barrier_stiffness);
26+
collision, positions, normal_potential, normal_stiffness);
2727
}
2828

2929
// ============================================================================

‎src/ipc/collisions/tangential/edge_vertex.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class EdgeVertexTangentialCollision : public EdgeVertexCandidate,
1616
EdgeVertexTangentialCollision(
1717
const EdgeVertexNormalCollision& collision,
1818
const VectorMax12d& positions,
19-
const BarrierPotential& barrier_potential,
20-
const double barrier_stiffness);
19+
const NormalPotential& normal_potential,
20+
const double normal_stiffness);
2121

2222
protected:
2323
MatrixMax<double, 3, 2>

‎src/ipc/collisions/tangential/face_vertex.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ FaceVertexTangentialCollision::FaceVertexTangentialCollision(
1818
FaceVertexTangentialCollision::FaceVertexTangentialCollision(
1919
const FaceVertexNormalCollision& collision,
2020
const VectorMax12d& positions,
21-
const BarrierPotential& barrier_potential,
22-
const double barrier_stiffness)
21+
const NormalPotential& normal_potential,
22+
const double normal_stiffness)
2323
: FaceVertexTangentialCollision(collision)
2424
{
2525
TangentialCollision::init(
26-
collision, positions, barrier_potential, barrier_stiffness);
26+
collision, positions, normal_potential, normal_stiffness);
2727
}
2828

2929
// ============================================================================

‎src/ipc/collisions/tangential/face_vertex.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class FaceVertexTangentialCollision : public FaceVertexCandidate,
1616
FaceVertexTangentialCollision(
1717
const FaceVertexNormalCollision& collision,
1818
const VectorMax12d& positions,
19-
const BarrierPotential& barrier_potential,
20-
const double barrier_stiffness);
19+
const NormalPotential& normal_potential,
20+
const double normal_stiffness);
2121

2222
protected:
2323
MatrixMax<double, 3, 2>

‎src/ipc/collisions/tangential/tangential_collision.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ void TangentialCollision::init(
1010
const NormalCollision& collision,
1111
const VectorMax12d& positions,
1212
const NormalPotential& normal_potential,
13-
const double barrier_stiffness)
13+
const double normal_stiffness)
1414
{
1515
// do this to initialize dim()
1616
const int dim = collision.dim(positions.size());
@@ -19,7 +19,7 @@ void TangentialCollision::init(
1919
closest_point = compute_closest_point(positions);
2020
tangent_basis = compute_tangent_basis(positions);
2121
normal_force_magnitude = normal_potential.force_magnitude(
22-
compute_distance(positions), collision.dmin, barrier_stiffness);
22+
compute_distance(positions), collision.dmin, normal_stiffness);
2323
}
2424

2525
} // namespace ipc

‎src/ipc/collisions/tangential/tangential_collision.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include <ipc/friction/smooth_friction_mollifier.hpp>
4-
#include <ipc/potentials/barrier_potential.hpp>
4+
#include <ipc/potentials/normal_potential.hpp>
55
#include <ipc/tangent/relative_velocity.hpp>
66
#include <ipc/utils/eigen_ext.hpp>
77

@@ -12,13 +12,13 @@ class TangentialCollision : virtual public CollisionStencil {
1212
/// @brief Initialize the collision.
1313
/// @param collision NormalCollision stencil.
1414
/// @param positions Collision stencil's vertex positions.
15-
/// @param normal_potential Barrier potential used for normal force.
16-
/// @param barrier_stiffness Barrier potential stiffness.
15+
/// @param normal_potential Normal potential used for normal force.
16+
/// @param normal_stiffness Normal potential stiffness.
1717
void init(
1818
const NormalCollision& collision,
1919
const VectorMax12d& positions,
2020
const NormalPotential& normal_potential,
21-
const double barrier_stiffness);
21+
const double normal_stiffness);
2222

2323
public:
2424
virtual ~TangentialCollision() = default;

‎src/ipc/collisions/tangential/tangential_collisions.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ void TangentialCollisions::build(
1515
const CollisionMesh& mesh,
1616
const Eigen::MatrixXd& vertices,
1717
const NormalCollisions& collisions,
18-
const BarrierPotential& barrier_potential,
19-
const double barrier_stiffness,
18+
const NormalPotential& normal_potential,
19+
const double normal_stiffness,
2020
const Eigen::VectorXd& mus,
2121
const std::function<double(double, double)>& blend_mu)
2222
{
@@ -36,8 +36,8 @@ void TangentialCollisions::build(
3636
FC_vv.reserve(C_vv.size());
3737
for (const auto& c_vv : C_vv) {
3838
FC_vv.emplace_back(
39-
c_vv, c_vv.dof(vertices, edges, faces), barrier_potential,
40-
barrier_stiffness);
39+
c_vv, c_vv.dof(vertices, edges, faces), normal_potential,
40+
normal_stiffness);
4141
const auto& [v0i, v1i, _, __] = FC_vv.back().vertex_ids(edges, faces);
4242

4343
FC_vv.back().mu = blend_mu(mus(v0i), mus(v1i));
@@ -46,8 +46,8 @@ void TangentialCollisions::build(
4646
FC_ev.reserve(C_ev.size());
4747
for (const auto& c_ev : C_ev) {
4848
FC_ev.emplace_back(
49-
c_ev, c_ev.dof(vertices, edges, faces), barrier_potential,
50-
barrier_stiffness);
49+
c_ev, c_ev.dof(vertices, edges, faces), normal_potential,
50+
normal_stiffness);
5151
const auto& [vi, e0i, e1i, _] = FC_ev.back().vertex_ids(edges, faces);
5252

5353
const double edge_mu =
@@ -69,8 +69,8 @@ void TangentialCollisions::build(
6969
}
7070

7171
FC_ee.emplace_back(
72-
c_ee, c_ee.dof(vertices, edges, faces), barrier_potential,
73-
barrier_stiffness);
72+
c_ee, c_ee.dof(vertices, edges, faces), normal_potential,
73+
normal_stiffness);
7474

7575
double ea_mu =
7676
(mus(ea1i) - mus(ea0i)) * FC_ee.back().closest_point[0] + mus(ea0i);
@@ -82,8 +82,8 @@ void TangentialCollisions::build(
8282
FC_fv.reserve(C_fv.size());
8383
for (const auto& c_fv : C_fv) {
8484
FC_fv.emplace_back(
85-
c_fv, c_fv.dof(vertices, edges, faces), barrier_potential,
86-
barrier_stiffness);
85+
c_fv, c_fv.dof(vertices, edges, faces), normal_potential,
86+
normal_stiffness);
8787
const auto& [vi, f0i, f1i, f2i] = FC_fv.back().vertex_ids(edges, faces);
8888

8989
double face_mu = mus(f0i)

0 commit comments

Comments
 (0)
Please sign in to comment.