These sort of problems are what is separating the sheep from the goats… Therefore you find many threads, some with good solutions and many bad solutions. Its not about Grasshopper, but also understanding modeling. And Grasshopper invites to be lazy and dirty…
Before you start I highly recommend representing your coffee cup with much lighter surfaces. This highly reduces the chances for trimming failures and improves performance
Always prefer surface split over any other method, except copy trim (which allows to work in 2d space until you apply the trim onto the 3d surface - with limited usability) .
Once you have split the surface select the ones for deletion; the detection of them is tricky, but doable. Take the cell center and measure distance to a trim (not surface) center or take length of the trim boundary.
Learn to deal with edge case, rather let them happen and fix them manually. Don‘t try to do everything in Grasshopper. Sometimes doing a bit repetitive work is much simpler.
Always prefer building a pattern in 3d space. Morphing an entire pattern is almost always an oversimplification . This is why Lunchbox and similar plugins are always pointless. Great for rapid prototyping, bad for more complex mapping problems.
Don‘t use patch, boolean intersection or any other short-cuts/workarounds if possible. Build as if you would do that manually.
But thats what I could tell you at this stage. It always depends on the shape and the pattern. There is no general solution. For concrete help provide a file…