martin.losch at awi.de
Thu Nov 22 11:18:22 EST 2012
thanks again for your answer. As I dig deeper and deeper into the LSR solver, I have more and more questions: I had a look at the convergence of the LSR in geometrically simple (but difficult to solve) problems and I found that that LSR stalls in some cases (actually in many cases) because of this line:
C SAFEGUARD AGAINST BAD FORCING ETC
S1 is the stopping criterion s1=max(u(k)-u(k-1)) (maximum difference between two iterates k and k-1), and S1A is the previous S1: S1A = S1(k-1). If s1>s1a, the omega wfav set to zero (WFAU2=0).
I have removed this safeguard and find that the residuum sqrt(sum(r^2)) of the equations (so Au-b=r) still reduces monotonically, that is, the solver still converges and the above "safeguard" makes the solver stop for the wrong reason.
- Wouldn't it be better to use the actual residual for deciding the stopping criterion? It would be a more expensive, I assume.
- Do we need this "safeguard" line at all?
On Nov 21, 2012, at 8:51 PM, Jinlun Zhang wrote:
> Hi Martin,
> You have good eyes to catch the difference. In MITgcm and other parallel models, the Zhang/Hibler solver is not LSOR, but LSUR, or simply LSR. LSOR would not work on parallel models with edges, and would work only on fixed boundaries. LSUR would work on both.
> On 11/20/2012 7:58 AM, Martin Losch wrote:
>> Hi Jinlun,
>> I have a question about LSOR. Obviously I have never worried about the "O" in LSOR, in fact all the subroutines are just called lsr or seaice_lsr, right?
>> But the O stands for overrelaxation and in your Zhang+Hibler (1997) you show that the overrelaxation parameter omega is optimally set to 1.7 or 1.8.
>> In the MITgcm this parameter is (was) hard wired to 0.95 (WFAU = WFAV = 0.95, in lsr.F and by virtue of copying seaice_lsr.F). This is clearly UNDERrelaxation.
>> Can you remember, why this value is used? Do we need omega<1 to stabilize the system?
>> What do you normally use in your model?
More information about the MITgcm-support