| 53 |
INTEGER myIter |
INTEGER myIter |
| 54 |
INTEGER myThid |
INTEGER myThid |
| 55 |
|
|
| 56 |
#if ( (defined SEAICE_CGRID) && \ |
#ifdef SEAICE_ALLOW_JFNK |
|
(defined SEAICE_ALLOW_JFNK) && \ |
|
|
(defined SEAICE_ALLOW_DYNAMICS) ) |
|
| 57 |
C !FUNCTIONS: |
C !FUNCTIONS: |
| 58 |
LOGICAL DIFFERENT_MULTIPLE |
LOGICAL DIFFERENT_MULTIPLE |
| 59 |
EXTERNAL DIFFERENT_MULTIPLE |
EXTERNAL DIFFERENT_MULTIPLE |
| 73 |
_RL JFNKresidual |
_RL JFNKresidual |
| 74 |
_RL JFNKresidualKm1 |
_RL JFNKresidualKm1 |
| 75 |
C parameters to compute convergence criterion |
C parameters to compute convergence criterion |
| 76 |
_RL phi_e, alp_e, JFNKgamma_lin |
_RL JFNKgamma_lin |
| 77 |
_RL FGMRESeps |
_RL FGMRESeps |
| 78 |
_RL JFNKtol |
_RL JFNKtol |
| 79 |
|
|
| 167 |
JFNKgamma_lin = JFNKgamma_lin_max |
JFNKgamma_lin = JFNKgamma_lin_max |
| 168 |
IF ( newtonIter.GT.1.AND.newtonIter.LE.SEAICE_JFNK_tolIter |
IF ( newtonIter.GT.1.AND.newtonIter.LE.SEAICE_JFNK_tolIter |
| 169 |
& .AND.JFNKresidual.LT.JFNKres_t ) THEN |
& .AND.JFNKresidual.LT.JFNKres_t ) THEN |
| 170 |
C Eisenstat, 1996, equ.(2.6) |
C Eisenstat and Walker (1996), eq.(2.6) |
| 171 |
phi_e = 1. _d 0 |
JFNKgamma_lin = SEAICE_JFNKphi |
| 172 |
alp_e = 1. _d 0 |
& *( JFNKresidual/JFNKresidualKm1 )**SEAICE_JFNKalpha |
|
JFNKgamma_lin = phi_e*( JFNKresidual/JFNKresidualKm1 )**alp_e |
|
| 173 |
JFNKgamma_lin = min(JFNKgamma_lin_max, JFNKgamma_lin) |
JFNKgamma_lin = min(JFNKgamma_lin_max, JFNKgamma_lin) |
| 174 |
JFNKgamma_lin = max(JFNKgamma_lin_min, JFNKgamma_lin) |
JFNKgamma_lin = max(JFNKgamma_lin_min, JFNKgamma_lin) |
| 175 |
ENDIF |
ENDIF |
| 526 |
C This is the new residual |
C This is the new residual |
| 527 |
JFNKresidual = resLoc |
JFNKresidual = resLoc |
| 528 |
|
|
| 529 |
#endif /* SEAICE_ALLOW_DYNAMICS and SEAICE_CGRID and SEAICE_ALLOW_JFNK */ |
#endif /* SEAICE_ALLOW_JFNK */ |
| 530 |
|
|
| 531 |
RETURN |
RETURN |
| 532 |
END |
END |