A general approach to nonlinear FE computations on shared-memory multiprocessors