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 |