/[escript]/trunk/paso/src/Solver.c
ViewVC logotype

Diff of /trunk/paso/src/Solver.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2279 by artak, Wed Feb 4 01:17:06 2009 UTC revision 2280 by artak, Thu Feb 19 03:34:35 2009 UTC
# Line 171  void Paso_Solver(Paso_SystemMatrix* A,do Line 171  void Paso_Solver(Paso_SystemMatrix* A,do
171                r=TMPMEMALLOC(numEqua,double);                r=TMPMEMALLOC(numEqua,double);
172                Paso_checkPtr(r);                Paso_checkPtr(r);
173                if (Paso_noError()) {                if (Paso_noError()) {
174                   totIter = 0;                   totIter = 1;
175                   finalizeIteration = FALSE;                   finalizeIteration = FALSE;
176                   last_norm2_of_residual=norm2_of_b;                   last_norm2_of_residual=norm2_of_b;
177                   last_norm_max_of_residual=norm_max_of_b;                   last_norm_max_of_residual=norm_max_of_b;
# Line 210  void Paso_Solver(Paso_SystemMatrix* A,do Line 210  void Paso_Solver(Paso_SystemMatrix* A,do
210                      norm2_of_residual =sqrt(norm2_of_residual);                      norm2_of_residual =sqrt(norm2_of_residual);
211                            
212                    if (options->verbose) printf("Paso_Solver: Step %5d: l2/lmax-norm of residual is  %e/%e",totIter,norm2_of_residual,norm_max_of_residual);                    if (options->verbose) printf("Paso_Solver: Step %5d: l2/lmax-norm of residual is  %e/%e",totIter,norm2_of_residual,norm_max_of_residual);
213                    if (totIter>0 && norm2_of_residual>=last_norm2_of_residual &&  norm_max_of_residual>=last_norm_max_of_residual) {                    if (totIter>1 && norm2_of_residual>=last_norm2_of_residual &&  norm_max_of_residual>=last_norm_max_of_residual) {
214                       if (options->verbose) printf(" divergence!\n");                       if (options->verbose) printf(" divergence!\n");
215                       Paso_setError(WARNING, "Paso_Solver: No improvement during iteration. Iterative solver gives up.");                       Paso_setError(WARNING, "Paso_Solver: No improvement during iteration. Iterative solver gives up.");
216                    } else {                    } else {
# Line 269  void Paso_Solver(Paso_SystemMatrix* A,do Line 269  void Paso_Solver(Paso_SystemMatrix* A,do
269                time_iter=Paso_timer()-time_iter;                time_iter=Paso_timer()-time_iter;
270                if (options->verbose)  {                if (options->verbose)  {
271                   printf("\ntiming: Paso_Solver:  %.4e sec\n",time_iter);                   printf("\ntiming: Paso_Solver:  %.4e sec\n",time_iter);
272                   if (totIter>0) {                   if (totIter>1) {
273                      if(totIter==options->iter_max) {                      if(totIter==options->iter_max) {
274                          printf("timing: Total MAX steps, time per iteration step: %.4e sec\n",time_iter/totIter);                          printf("timing: Total MAX steps, time per iteration step: %.4e sec\n",time_iter/totIter);
275                      } else {                      } else {
# Line 277  void Paso_Solver(Paso_SystemMatrix* A,do Line 277  void Paso_Solver(Paso_SystemMatrix* A,do
277                      }                      }
278                   }                   }
279                   else {                   else {
280                      printf("timing: Total 0 step, time per iteration step: %.4e sec\n",time_iter);                      printf("timing: Total 1 step, time per iteration step: %.4e sec\n",time_iter);
281                      }                        }  
282                }                }
283             }             }

Legend:
Removed from v.2279  
changed lines
  Added in v.2280

  ViewVC Help
Powered by ViewVC 1.1.26