Tangential Collisions¶
- class ipctk.TangentialCollisions¶
Bases:
pybind11_objectPublic Data Attributes:
Public Methods:
__init__(self)build(*args, **kwargs)Overloaded function.
__len__(self)Get the number of friction collisions.
empty(self)Get if the friction collisions are empty.
clear(self)Clear the friction collisions.
Set lagged effective μ to scalar mu_s/mu_k on each collision (done automatically after build).
Refresh matchstick effective μ from lagged geometry and slip.
__getitem__(self, i)Get a reference to collision at index i.
default_blend_mu(mu0, mu1)Inherited from
pybind11_objectPrivate Methods:
-
__annotations__ =
{}¶
- __getitem__(self, i: SupportsInt) ipctk.TangentialCollision¶
Get a reference to collision at index i.
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
- build(*args, **kwargs)¶
Overloaded function.
build(self: ipctk.TangentialCollisions, mesh: ipc::CollisionMesh, vertices: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”, “flags.f_contiguous”], collisions: ipctk.NormalCollisions, normal_potential: ipc::NormalPotential, mu: typing.SupportsFloat) -> None
build(self: ipctk.TangentialCollisions, mesh: ipc::CollisionMesh, vertices: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”, “flags.f_contiguous”], collisions: ipctk.NormalCollisions, normal_potential: ipc::NormalPotential, mu_s: typing.SupportsFloat, mu_k: typing.SupportsFloat) -> None
build(self: ipctk.TangentialCollisions, mesh: ipc::CollisionMesh, vertices: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”, “flags.f_contiguous”], collisions: ipctk.NormalCollisions, normal_potential: ipc::NormalPotential, mu_s: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], mu_k: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”]) -> None
build(self: ipctk.TangentialCollisions, mesh: ipc::CollisionMesh, vertices: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”, “flags.f_contiguous”], collisions: ipctk.NormalCollisions, normal_potential: ipc::NormalPotential, mu_s: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], mu_k: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], blend_mu: collections.abc.Callable[[typing.SupportsFloat, typing.SupportsFloat], float]) -> None
- property ee_collisions : list[ipc::EdgeEdgeTangentialCollision]¶
- property ev_collisions : list[ipc::EdgeVertexTangentialCollision]¶
- property fv_collisions : list[ipc::FaceVertexTangentialCollision]¶
- reset_lagged_anisotropic_friction_coefficients(self) None¶
Set lagged effective μ to scalar mu_s/mu_k on each collision (done automatically after build).
- update_lagged_anisotropic_friction_coefficients(self: ipctk.TangentialCollisions, mesh: ipc::CollisionMesh, rest_positions: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[m, n]", "flags.f_contiguous"], lagged_displacements: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[m, n]", "flags.f_contiguous"], velocities: typing.Annotated[numpy.typing.NDArray[numpy.float64], "[m, n]", "flags.f_contiguous"]) None¶
Refresh matchstick effective μ from lagged geometry and slip. Call when mu_s_aniso is nonzero (e.g. each Newton iteration).
- property vv_collisions : list[ipc::VertexVertexTangentialCollision]¶
-
__annotations__ =
Tangential Collision¶
- class ipctk.TangentialCollision¶
Bases:
CollisionStencilPublic Data Attributes:
Get the dimension of the collision.
Get the number of degrees of freedom for the collision.
Normal force magnitude
Ratio between normal and static tangential forces (e.g., friction coefficient)
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
Tangential anisotropy scaling in the collision's tangent basis.
Static friction ellipse axes (2D, one per tangent).
Kinetic friction ellipse axes (2D, one per tangent).
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
Lagged matchstick effective kinetic μ.
Weight
Gradient of weight with respect to all DOF
Barycentric coordinates of the closest point(s)
Tangent basis of the collision (max size 3×2)
Public Methods:
__init__(*args, **kwargs)compute_tangent_basis(self, positions)Compute the tangent basis of the collision.
compute_tangent_basis_jacobian(self, positions)Compute the Jacobian of the tangent basis of the collision.
compute_closest_point(self, positions)Compute the barycentric coordinates of the closest point.
compute_closest_point_jacobian(self, positions)Compute the Jacobian of the barycentric coordinates of the closest point.
relative_velocity(self, velocities)Compute the relative velocity of the collision.
relative_velocity_jacobian(*args, **kwargs)Overloaded function.
relative_velocity_dx_dbeta(self, closest_point)Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
Inherited from
CollisionStencil__init__(*args, **kwargs)num_vertices(self)Get the number of vertices in the collision stencil.
dim(self, ndof)Get the dimension of the collision stencil.
vertex_ids(self, edges, faces)Get the vertex IDs of the collision stencil.
vertices(self, vertices, edges, faces)Get the vertex attributes of the collision stencil.
dof(self, X, edges, faces)Select this stencil's DOF from the full matrix of DOF.
compute_distance(*args, **kwargs)Overloaded function.
compute_distance_gradient(*args, **kwargs)Overloaded function.
compute_distance_hessian(*args, **kwargs)Overloaded function.
compute_coefficients(*args, **kwargs)Overloaded function.
ccd(self, vertices_t0, ], vertices_t1, ], ...)Perform narrow-phase CCD on the candidate.
print_ccd_query(self, vertices_t0, vertices_t1)Print the CCD query to cout.
compute_distance_vector(*args, **kwargs)Overloaded function.
compute_distance_vector_with_coefficients(...)Compute the distance vector and the coefficients together.
compute_distance_vector_jacobian(self, positions)Compute the Jacobian of the distance vector w.r.t.
diag_distance_vector_outer(coeffs, dim)Compute diag((dt/dx)(dt/dx)^T) efficiently (Eq.
diag_distance_vector_t_outer(coeffs, ...)Compute diag((dt/dx * t)(dt/dx * t)^T) efficiently (Eq.
contract_distance_vector_jacobian(coeffs, p, dim)Compute p^T (dt/dx) efficiently as sum(c_i * p_i) (Eqs.
Inherited from
pybind11_object
-
__annotations__ =
{}¶
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
- property closest_point : Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
Barycentric coordinates of the closest point(s)
- compute_closest_point(self, positions: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
Compute the barycentric coordinates of the closest point.
- compute_closest_point_jacobian(self, positions: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Compute the Jacobian of the barycentric coordinates of the closest point.
- compute_tangent_basis(self, positions: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Compute the tangent basis of the collision.
- compute_tangent_basis_jacobian(self, positions: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Compute the Jacobian of the tangent basis of the collision.
- property dim : int¶
Get the dimension of the collision.
- property mu_aniso : Annotated[numpy.typing.NDArray[numpy.float64], '[2, 1]']¶
Tangential anisotropy scaling in the collision’s tangent basis. (1,1) = isotropic (default). Positive entries are recommended for physically meaningful anisotropic scaling. Scales tau before evaluating friction.
- property mu_k : float¶
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
- property mu_k_aniso : Annotated[numpy.typing.NDArray[numpy.float64], '[2, 1]']¶
Kinetic friction ellipse axes (2D, one per tangent). Zero → scalar mu_k. Matchstick model (CGF 2019, DOI 10.1111/cgf.13885).
- property mu_k_effective_lagged : float¶
Lagged matchstick effective kinetic μ.
- property mu_s : float¶
Ratio between normal and static tangential forces (e.g., friction coefficient)
- property mu_s_aniso : Annotated[numpy.typing.NDArray[numpy.float64], '[2, 1]']¶
Static friction ellipse axes (2D, one per tangent). Zero → scalar mu_s. Matchstick model (CGF 2019, DOI 10.1111/cgf.13885).
- property mu_s_effective_lagged : float¶
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
- property ndof : int¶
Get the number of degrees of freedom for the collision.
- property normal_force_magnitude : float¶
Normal force magnitude
- relative_velocity(self, velocities: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']¶
Compute the relative velocity of the collision.
- relative_velocity_dx_dbeta(self, closest_point: Annotated[numpy.typing.NDArray[numpy.float64], '[m, 1]']) Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
- relative_velocity_jacobian(*args, **kwargs)¶
Overloaded function.
relative_velocity_jacobian(self: ipctk.TangentialCollision) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”]
Construct the premultiplier matrix for the relative velocity.
- Note:
Uses the cached closest point.
- Returns:
A matrix M such that relative_velocity = M * velocities.
relative_velocity_jacobian(self: ipctk.TangentialCollision, closest_point: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”]) -> typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, n]”]
Construct the premultiplier matrix for the relative velocity.
- Parameters:
closest_point: Barycentric coordinates of the closest point.
- Returns:
A matrix M such that relative_velocity = M * velocities.
- property tangent_basis : Annotated[numpy.typing.NDArray[numpy.float64], '[m, n]']¶
Tangent basis of the collision (max size 3×2)
- property weight : float¶
Weight
- property weight_gradient : scipy.sparse.csc_matrix[numpy.float64]¶
Gradient of weight with respect to all DOF
-
__annotations__ =
Vertex-Vertex Tangential Collision¶
- class ipctk.VertexVertexTangentialCollision¶
Bases:
VertexVertexCandidate,TangentialCollisionPublic Data Attributes:
Inherited from
VertexVertexCandidateID of the first vertex
ID of the second vertex
Inherited from
TangentialCollisionGet the dimension of the collision.
Get the number of degrees of freedom for the collision.
Normal force magnitude
Ratio between normal and static tangential forces (e.g., friction coefficient)
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
Tangential anisotropy scaling in the collision's tangent basis.
Static friction ellipse axes (2D, one per tangent).
Kinetic friction ellipse axes (2D, one per tangent).
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
Lagged matchstick effective kinetic μ.
Weight
Gradient of weight with respect to all DOF
Barycentric coordinates of the closest point(s)
Tangent basis of the collision (max size 3×2)
Public Methods:
__init__(*args, **kwargs)Overloaded function.
Inherited from
VertexVertexCandidate__init__(*args, **kwargs)Overloaded function.
__str__(self)__repr__(self)__eq__(self, other)__ne__(self, other)__lt__(self, other)Compare EdgeVertexCandidates for sorting.
Inherited from
TangentialCollision__init__(*args, **kwargs)compute_tangent_basis(self, positions)Compute the tangent basis of the collision.
compute_tangent_basis_jacobian(self, positions)Compute the Jacobian of the tangent basis of the collision.
compute_closest_point(self, positions)Compute the barycentric coordinates of the closest point.
compute_closest_point_jacobian(self, positions)Compute the Jacobian of the barycentric coordinates of the closest point.
relative_velocity(self, velocities)Compute the relative velocity of the collision.
relative_velocity_jacobian(*args, **kwargs)Overloaded function.
relative_velocity_dx_dbeta(self, closest_point)Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
Inherited from
CollisionStencil__init__(*args, **kwargs)num_vertices(self)Get the number of vertices in the collision stencil.
dim(self, ndof)Get the dimension of the collision stencil.
vertex_ids(self, edges, faces)Get the vertex IDs of the collision stencil.
vertices(self, vertices, edges, faces)Get the vertex attributes of the collision stencil.
dof(self, X, edges, faces)Select this stencil's DOF from the full matrix of DOF.
compute_distance(*args, **kwargs)Overloaded function.
compute_distance_gradient(*args, **kwargs)Overloaded function.
compute_distance_hessian(*args, **kwargs)Overloaded function.
compute_coefficients(*args, **kwargs)Overloaded function.
ccd(self, vertices_t0, ], vertices_t1, ], ...)Perform narrow-phase CCD on the candidate.
print_ccd_query(self, vertices_t0, vertices_t1)Print the CCD query to cout.
compute_distance_vector(*args, **kwargs)Overloaded function.
compute_distance_vector_with_coefficients(...)Compute the distance vector and the coefficients together.
compute_distance_vector_jacobian(self, positions)Compute the Jacobian of the distance vector w.r.t.
diag_distance_vector_outer(coeffs, dim)Compute diag((dt/dx)(dt/dx)^T) efficiently (Eq.
diag_distance_vector_t_outer(coeffs, ...)Compute diag((dt/dx * t)(dt/dx * t)^T) efficiently (Eq.
contract_distance_vector_jacobian(coeffs, p, dim)Compute p^T (dt/dx) efficiently as sum(c_i * p_i) (Eqs.
Inherited from
pybind11_objectPrivate Methods:
Inherited from
VertexVertexCandidateInherited from
TangentialCollisionInherited from
CollisionStencil_pybind11_conduit_v1_
-
__annotations__ =
{}¶
- __init__(*args, **kwargs)¶
Overloaded function.
__init__(self: ipctk.VertexVertexTangentialCollision, collision: ipctk.VertexVertexNormalCollision) -> None
__init__(self: ipctk.VertexVertexTangentialCollision, collision: ipctk.VertexVertexNormalCollision, positions: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], normal_potential: ipc::NormalPotential) -> None
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
-
__annotations__ =
Edge-Vertex Tangential Collision¶
- class ipctk.EdgeVertexTangentialCollision¶
Bases:
EdgeVertexCandidate,TangentialCollisionPublic Data Attributes:
Inherited from
EdgeVertexCandidateID of the edge
ID of the vertex
Inherited from
TangentialCollisionGet the dimension of the collision.
Get the number of degrees of freedom for the collision.
Normal force magnitude
Ratio between normal and static tangential forces (e.g., friction coefficient)
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
Tangential anisotropy scaling in the collision's tangent basis.
Static friction ellipse axes (2D, one per tangent).
Kinetic friction ellipse axes (2D, one per tangent).
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
Lagged matchstick effective kinetic μ.
Weight
Gradient of weight with respect to all DOF
Barycentric coordinates of the closest point(s)
Tangent basis of the collision (max size 3×2)
Public Methods:
__init__(*args, **kwargs)Overloaded function.
Inherited from
EdgeVertexCandidate__init__(*args, **kwargs)Overloaded function.
known_dtype(self)__str__(self)__repr__(self)__eq__(self, other)__ne__(self, other)__lt__(self, other)Compare EdgeVertexCandidates for sorting.
Inherited from
TangentialCollision__init__(*args, **kwargs)compute_tangent_basis(self, positions)Compute the tangent basis of the collision.
compute_tangent_basis_jacobian(self, positions)Compute the Jacobian of the tangent basis of the collision.
compute_closest_point(self, positions)Compute the barycentric coordinates of the closest point.
compute_closest_point_jacobian(self, positions)Compute the Jacobian of the barycentric coordinates of the closest point.
relative_velocity(self, velocities)Compute the relative velocity of the collision.
relative_velocity_jacobian(*args, **kwargs)Overloaded function.
relative_velocity_dx_dbeta(self, closest_point)Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
Inherited from
CollisionStencil__init__(*args, **kwargs)num_vertices(self)Get the number of vertices in the collision stencil.
dim(self, ndof)Get the dimension of the collision stencil.
vertex_ids(self, edges, faces)Get the vertex IDs of the collision stencil.
vertices(self, vertices, edges, faces)Get the vertex attributes of the collision stencil.
dof(self, X, edges, faces)Select this stencil's DOF from the full matrix of DOF.
compute_distance(*args, **kwargs)Overloaded function.
compute_distance_gradient(*args, **kwargs)Overloaded function.
compute_distance_hessian(*args, **kwargs)Overloaded function.
compute_coefficients(*args, **kwargs)Overloaded function.
ccd(self, vertices_t0, ], vertices_t1, ], ...)Perform narrow-phase CCD on the candidate.
print_ccd_query(self, vertices_t0, vertices_t1)Print the CCD query to cout.
compute_distance_vector(*args, **kwargs)Overloaded function.
compute_distance_vector_with_coefficients(...)Compute the distance vector and the coefficients together.
compute_distance_vector_jacobian(self, positions)Compute the Jacobian of the distance vector w.r.t.
diag_distance_vector_outer(coeffs, dim)Compute diag((dt/dx)(dt/dx)^T) efficiently (Eq.
diag_distance_vector_t_outer(coeffs, ...)Compute diag((dt/dx * t)(dt/dx * t)^T) efficiently (Eq.
contract_distance_vector_jacobian(coeffs, p, dim)Compute p^T (dt/dx) efficiently as sum(c_i * p_i) (Eqs.
Inherited from
pybind11_objectPrivate Methods:
Inherited from
EdgeVertexCandidateInherited from
TangentialCollisionInherited from
CollisionStencil_pybind11_conduit_v1_
-
__annotations__ =
{}¶
- __init__(*args, **kwargs)¶
Overloaded function.
__init__(self: ipctk.EdgeVertexTangentialCollision, collision: ipctk.EdgeVertexNormalCollision) -> None
__init__(self: ipctk.EdgeVertexTangentialCollision, collision: ipctk.EdgeVertexNormalCollision, positions: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], normal_potential: ipc::NormalPotential) -> None
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
-
__annotations__ =
Edge-Edge Tangential Collision¶
- class ipctk.EdgeEdgeTangentialCollision¶
Bases:
EdgeEdgeCandidate,TangentialCollisionPublic Data Attributes:
Inherited from
EdgeEdgeCandidateID of the first edge.
ID of the second edge.
Inherited from
TangentialCollisionGet the dimension of the collision.
Get the number of degrees of freedom for the collision.
Normal force magnitude
Ratio between normal and static tangential forces (e.g., friction coefficient)
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
Tangential anisotropy scaling in the collision's tangent basis.
Static friction ellipse axes (2D, one per tangent).
Kinetic friction ellipse axes (2D, one per tangent).
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
Lagged matchstick effective kinetic μ.
Weight
Gradient of weight with respect to all DOF
Barycentric coordinates of the closest point(s)
Tangent basis of the collision (max size 3×2)
Public Methods:
__init__(*args, **kwargs)Overloaded function.
Inherited from
EdgeEdgeCandidate__init__(*args, **kwargs)Overloaded function.
known_dtype(self)__str__(self)__repr__(self)__eq__(self, other)__ne__(self, other)__lt__(self, other)Compare EdgeEdgeCandidates for sorting.
Inherited from
TangentialCollision__init__(*args, **kwargs)compute_tangent_basis(self, positions)Compute the tangent basis of the collision.
compute_tangent_basis_jacobian(self, positions)Compute the Jacobian of the tangent basis of the collision.
compute_closest_point(self, positions)Compute the barycentric coordinates of the closest point.
compute_closest_point_jacobian(self, positions)Compute the Jacobian of the barycentric coordinates of the closest point.
relative_velocity(self, velocities)Compute the relative velocity of the collision.
relative_velocity_jacobian(*args, **kwargs)Overloaded function.
relative_velocity_dx_dbeta(self, closest_point)Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
Inherited from
CollisionStencil__init__(*args, **kwargs)num_vertices(self)Get the number of vertices in the collision stencil.
dim(self, ndof)Get the dimension of the collision stencil.
vertex_ids(self, edges, faces)Get the vertex IDs of the collision stencil.
vertices(self, vertices, edges, faces)Get the vertex attributes of the collision stencil.
dof(self, X, edges, faces)Select this stencil's DOF from the full matrix of DOF.
compute_distance(*args, **kwargs)Overloaded function.
compute_distance_gradient(*args, **kwargs)Overloaded function.
compute_distance_hessian(*args, **kwargs)Overloaded function.
compute_coefficients(*args, **kwargs)Overloaded function.
ccd(self, vertices_t0, ], vertices_t1, ], ...)Perform narrow-phase CCD on the candidate.
print_ccd_query(self, vertices_t0, vertices_t1)Print the CCD query to cout.
compute_distance_vector(*args, **kwargs)Overloaded function.
compute_distance_vector_with_coefficients(...)Compute the distance vector and the coefficients together.
compute_distance_vector_jacobian(self, positions)Compute the Jacobian of the distance vector w.r.t.
diag_distance_vector_outer(coeffs, dim)Compute diag((dt/dx)(dt/dx)^T) efficiently (Eq.
diag_distance_vector_t_outer(coeffs, ...)Compute diag((dt/dx * t)(dt/dx * t)^T) efficiently (Eq.
contract_distance_vector_jacobian(coeffs, p, dim)Compute p^T (dt/dx) efficiently as sum(c_i * p_i) (Eqs.
Inherited from
pybind11_objectPrivate Methods:
Inherited from
EdgeEdgeCandidateInherited from
TangentialCollisionInherited from
CollisionStencil_pybind11_conduit_v1_
-
__annotations__ =
{}¶
- __init__(*args, **kwargs)¶
Overloaded function.
__init__(self: ipctk.EdgeEdgeTangentialCollision, collision: ipctk.EdgeEdgeNormalCollision) -> None
__init__(self: ipctk.EdgeEdgeTangentialCollision, collision: ipctk.EdgeEdgeNormalCollision, positions: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], normal_potential: ipc::NormalPotential) -> None
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
-
__annotations__ =
Face-Vertex Tangential Collision¶
- class ipctk.FaceVertexTangentialCollision¶
Bases:
FaceVertexCandidate,TangentialCollisionPublic Data Attributes:
Inherited from
FaceVertexCandidateID of the face
ID of the vertex
Inherited from
TangentialCollisionGet the dimension of the collision.
Get the number of degrees of freedom for the collision.
Normal force magnitude
Ratio between normal and static tangential forces (e.g., friction coefficient)
Ratio between normal and kinetic tangential forces (e.g., friction coefficient)
Tangential anisotropy scaling in the collision's tangent basis.
Static friction ellipse axes (2D, one per tangent).
Kinetic friction ellipse axes (2D, one per tangent).
Lagged matchstick effective static μ (refresh via TangentialCollisions.update_lagged_anisotropic_friction_coefficients).
Lagged matchstick effective kinetic μ.
Weight
Gradient of weight with respect to all DOF
Barycentric coordinates of the closest point(s)
Tangent basis of the collision (max size 3×2)
Public Methods:
__init__(*args, **kwargs)Overloaded function.
Inherited from
FaceVertexCandidate__init__(*args, **kwargs)Overloaded function.
known_dtype(self)__str__(self)__repr__(self)__eq__(self, other)__ne__(self, other)__lt__(self, other)Compare FaceVertexCandidate for sorting.
Inherited from
TangentialCollision__init__(*args, **kwargs)compute_tangent_basis(self, positions)Compute the tangent basis of the collision.
compute_tangent_basis_jacobian(self, positions)Compute the Jacobian of the tangent basis of the collision.
compute_closest_point(self, positions)Compute the barycentric coordinates of the closest point.
compute_closest_point_jacobian(self, positions)Compute the Jacobian of the barycentric coordinates of the closest point.
relative_velocity(self, velocities)Compute the relative velocity of the collision.
relative_velocity_jacobian(*args, **kwargs)Overloaded function.
relative_velocity_dx_dbeta(self, closest_point)Construct the Jacobian of the relative velocity premultiplier wrt the closest points.
Inherited from
CollisionStencil__init__(*args, **kwargs)num_vertices(self)Get the number of vertices in the collision stencil.
dim(self, ndof)Get the dimension of the collision stencil.
vertex_ids(self, edges, faces)Get the vertex IDs of the collision stencil.
vertices(self, vertices, edges, faces)Get the vertex attributes of the collision stencil.
dof(self, X, edges, faces)Select this stencil's DOF from the full matrix of DOF.
compute_distance(*args, **kwargs)Overloaded function.
compute_distance_gradient(*args, **kwargs)Overloaded function.
compute_distance_hessian(*args, **kwargs)Overloaded function.
compute_coefficients(*args, **kwargs)Overloaded function.
ccd(self, vertices_t0, ], vertices_t1, ], ...)Perform narrow-phase CCD on the candidate.
print_ccd_query(self, vertices_t0, vertices_t1)Print the CCD query to cout.
compute_distance_vector(*args, **kwargs)Overloaded function.
compute_distance_vector_with_coefficients(...)Compute the distance vector and the coefficients together.
compute_distance_vector_jacobian(self, positions)Compute the Jacobian of the distance vector w.r.t.
diag_distance_vector_outer(coeffs, dim)Compute diag((dt/dx)(dt/dx)^T) efficiently (Eq.
diag_distance_vector_t_outer(coeffs, ...)Compute diag((dt/dx * t)(dt/dx * t)^T) efficiently (Eq.
contract_distance_vector_jacobian(coeffs, p, dim)Compute p^T (dt/dx) efficiently as sum(c_i * p_i) (Eqs.
Inherited from
pybind11_objectPrivate Methods:
Inherited from
FaceVertexCandidateInherited from
TangentialCollisionInherited from
CollisionStencil_pybind11_conduit_v1_
-
__annotations__ =
{}¶
- __init__(*args, **kwargs)¶
Overloaded function.
__init__(self: ipctk.FaceVertexTangentialCollision, collision: ipctk.FaceVertexNormalCollision) -> None
__init__(self: ipctk.FaceVertexTangentialCollision, collision: ipctk.FaceVertexNormalCollision, positions: typing.Annotated[numpy.typing.NDArray[numpy.float64], “[m, 1]”], normal_potential: ipc::NormalPotential) -> None
-
__module__ =
'ipctk'¶
- _pybind11_conduit_v1_()¶
-
__annotations__ =