Hi Lawrence,
Thank you very much for your answer. Using nonlinear solvers indeed improved a lot the running speed!
I tried to profile my code but I get the following error concerning the timed_stage module:
Traceback (most recent call last):
File "3D_NL.py", line 9, in <module>
from pyop2.profiling import timed_stage
ImportError: cannot import name timed_stage
 I found online something called "timed_region", would that be the same as timed_stage
 ?
Thanks,
Floriane