Add exceptional shift to fix rare convergence problems
This commit is contained in:
parent
fe71887b68
commit
856bc36533
|
@ -743,8 +743,14 @@
|
||||||
*
|
*
|
||||||
* Exceptional shift. Chosen for no particularly good reason.
|
* Exceptional shift. Chosen for no particularly good reason.
|
||||||
*
|
*
|
||||||
ESHIFT = ESHIFT + (ASCALE*H(ILAST,ILAST-1))/
|
IF( ( IITER / 20 )*20.EQ.IITER .AND.
|
||||||
$ (BSCALE*T(ILAST-1,ILAST-1))
|
$ BSCALE*ABS1(T( ILAST, ILAST )).GT.SAFMIN ) THEN
|
||||||
|
ESHIFT = ESHIFT + ( ASCALE*H( ILAST,
|
||||||
|
$ ILAST ) )/( BSCALE*T( ILAST, ILAST ) )
|
||||||
|
ELSE
|
||||||
|
ESHIFT = ESHIFT + ( ASCALE*H( ILAST,
|
||||||
|
$ ILAST-1 ) )/( BSCALE*T( ILAST-1, ILAST-1 ) )
|
||||||
|
END IF
|
||||||
SHIFT = ESHIFT
|
SHIFT = ESHIFT
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
|
|
|
@ -744,8 +744,14 @@
|
||||||
*
|
*
|
||||||
* Exceptional shift. Chosen for no particularly good reason.
|
* Exceptional shift. Chosen for no particularly good reason.
|
||||||
*
|
*
|
||||||
ESHIFT = ESHIFT + (ASCALE*H(ILAST,ILAST-1))/
|
IF( ( IITER / 20 )*20.EQ.IITER .AND.
|
||||||
$ (BSCALE*T(ILAST-1,ILAST-1))
|
$ BSCALE*ABS1(T( ILAST, ILAST )).GT.SAFMIN ) THEN
|
||||||
|
ESHIFT = ESHIFT + ( ASCALE*H( ILAST,
|
||||||
|
$ ILAST ) )/( BSCALE*T( ILAST, ILAST ) )
|
||||||
|
ELSE
|
||||||
|
ESHIFT = ESHIFT + ( ASCALE*H( ILAST,
|
||||||
|
$ ILAST-1 ) )/( BSCALE*T( ILAST-1, ILAST-1 ) )
|
||||||
|
END IF
|
||||||
SHIFT = ESHIFT
|
SHIFT = ESHIFT
|
||||||
END IF
|
END IF
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue