A discrete adjoint-based level set topology optimization method for stress and buckling constraints