The realistic way would be to find the area of the object under the water and apply a force proportional to that area, and from the center of that area up.
As a simple example let’s look at a non rotating box.
Area = box.width * clamp(box.bottom-water.top, 0, box.height)
Apply force up with magnitude area
In the general case with any shape with rotation you could take the polygon of the object, slice it by the water level, and find the area and average center of anything below. I forget if the physics behavior
Let’s you apply a force at any point of the object but that should take care of any torque if it does. If it doesn’t then you can take the vector from the com to the point to apply the force and do a cross product with the force vector. Maybe some unit conversion would be needed, I don’t recall.
It’s an interesting enough problem I may attempt an example capx over the weekend. The bulk of it will be finding the area under the water.