Hi,
That should be possible and in fact, I think you are almost doing that. The current Chrono::GPU can only output the total force experienced by a mesh, which means you have to do some pre-processing to split the mesh into two (near-tip region and the rest of the cone body), however you don't have to split the Chrono body into two. After splitting the mesh (maybe with a CAD software), you should have 2 meshes, which are both non-closed surface meshes, but it is fine, because Chrono::GPU treats a mesh as a collection of triangle facets anyway; just make sure when put together, these 2 meshes form an almost-watertight cone surface. Then you can load them in your script via two AddMesh calls (or add AddMeshes, if you would). Then, these two meshes can be managed by one Chrono body. It's just like before, get position and velocity of that Chrono body, and apply that information to both meshes. Then, you can use CollectMeshContactForces to collect the force and torque information from whichever mesh you are interested in. Note however, before you Accumulate_force and Accumulate_torque to that Chrono body, you need to add cone_force and cone_torque of the two partial meshes together, because obviously they are both parts of the cone body and the forces they experience stack, from the perspective of the Chrono body.
One thing that is a bit weird to me is that splitting the cone causes the simulation time to increase significantly for you. The Chrono side of simulation should only take a fraction of the total runtime, for a reasonably sized DEM problem. Either the mesh got some issues or the problem size is extremely small. But it's perhaps not a big show-stopper.
Finally, I hear you, I'll consider adding more explicit control/query methods to mesh objects in our upcoming new-generation Chrono DEM solver.
Thank you,
Ruochun