If you want to intersect particles you need to use setFluidAttr. For objects you can simply use the object as a fluid emitter( or use any of the the fluid emitter methods ).
The fluidValueAtPoint gets the height of the fluid(y) at the particle xz location. With that you can determine if the particle is underwater by checking if the particle y is less than this value. If so, then you emit into the fluid using setFluidAttr. Fluid voxel info can be used to find the fluid voxel at the particle location.
Duncan