Hello,
In 2D and the subroutine dragfo we take into account the depth-integrated aspect, hence the depth is a parameter. In 3D energy extraction can be done locally by using local head losses, and it is simpler. The head losses are treated in an implicit way, so the arrays S1U, S1V and S1W must be changed (they are usually set to 0). If your head loss is of the form -k*U**2 the value of S1U, S1V and S1W will be -k*sqrt(U**2+V**2+W**2). I do not remember in which subroutine it is done (is it source.f ?) but the minus sign must be checked, I am not sure because this head loss could be put directly in the left hand side of momentum equation, in which case there is no need of minus sign. I have already written a post on this subject.
Sorry to be vague, I am in Antananarivo with limited connection and no Telemac package installed.
With best regards,
Jean-Michel Hervouet