fixing the dt = 0 problem and optimize the code a bit.
changing the residual formulation so that dt has been multiplied on both sides of the equation. This is required as it is the form also in Jacobian formulation.
relax the BiCGStab solver a bit. It still does not converg. We shall check the correctness of J and r first.