Compute contacts for superquadrics

Submitted by johnr on Mon, 11/09/2020 - 17:35

I have adapted the compute conts function to make contact calculations for a model that depends on the surface contact area between contacting particles. For superquadrics however, the rsq <= radsumsq condition in compute_contact_atom.cpp overestimates the contact time when the superquadric contact point is not at the maximum radius for both particles. The correct calculation of deltan (total deformation) for superquadrics is needed to make this work properly. For particle-wall contacts this is much easier to find, see :


Superquadric particle(x_[iPart], quat_[iPart], shape_[iPart], blockiness_[iPart]);
intersectflag = particle.plane_intersection(delta, sphere_contact_point, closestPoint, point_of_lowest_potential);
deltan = -MathExtraLiggghtsNonspherical::point_wall_projection(delta, sphere_contact_point, closestPoint, closestPointProjection);

which are lines 1105, 1106 & 1117 in fix_wall_gran.cpp (though I'm not sure how to find the contact area that corresponds to deltan for superquadrics). These calculations must already exist in the code when the particle-particle collisions are resolved. Could someone point me in the right direction? And maybe indicate how to add these calculations to compute_contact_atom.cpp?

Many thanks, John