That drag formula is scalar formula. It calculates absolute drag magnitude. Drag direction is always opposite to velocity vector. You can't just plug the velocity vector into that equation. Using multiplication operator like that will multiply vector components. And doing that will most likely change its direction when multiplied by itself.
If you look closely the equation boils down to some_constant * velocity_squared
. I'd suggest you hardcode that constant for start and tweak it via trial/error for things to look decent. You can later add precise calculation based on object's apparent submerged section area.
To get the proper force vector, you need to calculate the scalar magnitude and then multiply it with normalized flipped velocity vector:
var my_drag_constant = 10.0 # calculate real drag constant here when things start working (if needed)
var drag_force_magnitude: float = my_drag_constant * velocity.length_squared()
var drag_force: Vector3 = -velocity.normalized() * drag_force_magnitude
And note that you can always use built-in velocity damping instead of this.
Second thing. No need to calculate the bounding box yourself (and it would take some work). Engine already has it. Just get it from the VisualInstance node api. And every bounding box knows how big it is :)
var bounding_box: AABB = object.get_transformed_aabb()
var bounding_box_size: Vector3 = bounding_box.size
EDIT: Have in mind that get_transformed_aabb() can't be called on physics bodies. Which is unfortunate since physics engine internally "knows" bounding boxes of everything it deals with. So you must have something visible (like MeshInstance) that coincide with physics body collider shape, and get bounding box of that.