--- MITgcm/pkg/seaice/seaice_jfnk.F 2012/11/07 09:56:23 1.5 +++ MITgcm/pkg/seaice/seaice_jfnk.F 2012/11/09 12:56:00 1.7 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/seaice/seaice_jfnk.F,v 1.5 2012/11/07 09:56:23 mlosch Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/seaice/seaice_jfnk.F,v 1.7 2012/11/09 12:56:00 mlosch Exp $ C $Name: $ #include "SEAICE_OPTIONS.h" @@ -240,8 +240,9 @@ C or product of matrix (Jacobian) times vector. For iCode = 0, terminate C iteration IF (iCode.EQ.1) THEN -C Call preconditioner - CALL SEAICE_PRECONDITIONER( +C Call preconditioner + IF ( SOLV_MAX_ITERS .GT. 0 ) + & CALL SEAICE_PRECONDITIONER( U duIce, dvIce, I zetaPre, etaPre, dwatPre, pressPre, I newtonIter, krylovIter, myTime, myIter, myThid ) @@ -292,14 +293,16 @@ C C-- Output diagnostics C + IF ( SEAICE_monFreq .GT. 0. _d 0 ) THEN C Count iterations - totalJFNKtimeSteps = totalJFNKtimeSteps + 1 - totalNewtonIters = totalNewtonIters + newtonIter - totalKrylovIters = totalKrylovIters + totalKrylovItersLoc + totalJFNKtimeSteps = totalJFNKtimeSteps + 1 + totalNewtonIters = totalNewtonIters + newtonIter + totalKrylovIters = totalKrylovIters + totalKrylovItersLoc C Record failure - totalKrylovFails = totalKrylovFails + krylovFails - IF ( newtonIter .EQ. SEAICEnewtonIterMax ) THEN - totalNewtonFails = totalNewtonFails + 1 + totalKrylovFails = totalKrylovFails + krylovFails + IF ( newtonIter .EQ. SEAICEnewtonIterMax ) THEN + totalNewtonFails = totalNewtonFails + 1 + ENDIF ENDIF C Decide whether it is time to dump and reset the counter IF ( DIFFERENT_MULTIPLE(SEAICE_monFreq,myTime+deltaTClock,